[BUG] Parser skipped following token.

[BUG] Const being declared could be used in its init expression
This commit is contained in:
2021-05-03 19:09:30 +02:00
parent 36caa0b651
commit c99d5ab781
2 changed files with 5 additions and 6 deletions

View File

@@ -294,7 +294,7 @@ static void parse_expr_atom() {
return; return;
} else { } else {
// [RZC 03/05/2021] TODO: Revisar funcions // [RZC 03/05/2021] TODO: Revisar funcions
parser_finished = true; error_raise("Syntax error"); parser_finished = true; error_raise("Unknown identifier");
return; return;
} }
// [RZC 27/04/2021] Per ara llevem les constants // [RZC 27/04/2021] Per ara llevem les constants
@@ -413,18 +413,19 @@ static void parse_const() {
EXPECT(TOKEN_IDENTIFIER, "Expected identifier"); EXPECT(TOKEN_IDENTIFIER, "Expected identifier");
char const_name[40]; char const_name[40];
strcpy(const_name, tkn_get_string()); strcpy(const_name, tkn_get_string());
if (scope_variable_exists(const_name)) HALT("Identifier already exists");
tkn_next(); EXPECT(TOKEN_AS, "Expected 'as'"); tkn_next(); EXPECT(TOKEN_AS, "Expected 'as'");
tkn_next(); EXPECT(TOKEN_IDENTIFIER, "Expected type identifier"); tkn_next(); EXPECT(TOKEN_IDENTIFIER, "Expected type identifier");
char type_name[40]; char type_name[40];
strcpy(type_name, tkn_get_string()); strcpy(type_name, tkn_get_string());
const int type_num = types_exist(type_name); const int type_num = types_exist(type_name);
if (type_num == -1) HALT("Unknown type"); if (type_num == -1) HALT("Unknown type");
const int var_address = scope_declare_variable(const_name, type_num, 0);
tkn_next(); EXPECT(TOKEN_EQ, "Expected '='"); tkn_next(); EXPECT(TOKEN_EQ, "Expected '='");
tkn_next(); parse_expression(); tkn_next(); parse_expression();
const int var_address = scope_declare_variable(const_name, type_num, 0);
emmit(scope_is_local() ? OP_STL : OP_ST); emmit(scope_is_local() ? OP_STL : OP_ST);
emmit_dw(var_address); emmit_dw(var_address);
tkn_next(); //tkn_next();
} }
/*static void parse_dim() { /*static void parse_dim() {

View File

@@ -1,4 +1,2 @@
' Esto es un comentario ' Esto es un comentario
const perico as number = 4-perico
const perico as number = 4-2