Fixes
This commit is contained in:
48
parser.cpp
48
parser.cpp
@@ -346,9 +346,10 @@ static void parse_expr_mul() {
|
||||
tkn_next();
|
||||
parse_expr_atom();
|
||||
switch (operat) {
|
||||
case TOKEN_ASTERISC: emmit(OP_MUL); break;
|
||||
case TOKEN_SLASH: emmit(OP_DIV); break;
|
||||
case TOKEN_MOD: emmit(OP_MOD); break;
|
||||
case TOKEN_ASTERISC: emmit(OP_MUL); break;
|
||||
case TOKEN_SLASH: emmit(OP_DIV); break;
|
||||
case TOKEN_MOD: emmit(OP_MOD); break;
|
||||
default: /* Impossible */ break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -359,9 +360,10 @@ static void parse_expr_sum() {
|
||||
tkn_next();
|
||||
parse_expr_mul();
|
||||
switch (operat) {
|
||||
case TOKEN_PLUS: emmit(OP_ADD); break;
|
||||
case TOKEN_MINUS: emmit(OP_SUB); break;
|
||||
}
|
||||
case TOKEN_PLUS: emmit(OP_ADD); break;
|
||||
case TOKEN_MINUS: emmit(OP_SUB); break;
|
||||
default: /* Impossible */ break;
|
||||
}
|
||||
}
|
||||
}
|
||||
static void parse_expr_bool() {
|
||||
@@ -371,9 +373,10 @@ static void parse_expr_bool() {
|
||||
tkn_next();
|
||||
parse_expr_sum();
|
||||
switch (operat) {
|
||||
case TOKEN_AND: emmit(OP_AND); break;
|
||||
case TOKEN_OR: emmit(OP_OR); break;
|
||||
}
|
||||
case TOKEN_AND: emmit(OP_AND); break;
|
||||
case TOKEN_OR: emmit(OP_OR); break;
|
||||
default: /* Impossible */ break;
|
||||
}
|
||||
}
|
||||
}
|
||||
static void parse_expression() {
|
||||
@@ -383,12 +386,13 @@ static void parse_expression() {
|
||||
tkn_next();
|
||||
parse_expr_bool();
|
||||
switch (operat) {
|
||||
case TOKEN_EQ: emmit(OP_EQ); break;
|
||||
case TOKEN_LT: emmit(OP_LT); break;
|
||||
case TOKEN_GT: emmit(OP_GT); break;
|
||||
case TOKEN_LEQ: emmit(OP_LEQ); break;
|
||||
case TOKEN_GEQ: emmit(OP_GEQ); break;
|
||||
}
|
||||
case TOKEN_EQ: emmit(OP_EQ); break;
|
||||
case TOKEN_LT: emmit(OP_LT); break;
|
||||
case TOKEN_GT: emmit(OP_GT); break;
|
||||
case TOKEN_LEQ: emmit(OP_LEQ); break;
|
||||
case TOKEN_GEQ: emmit(OP_GEQ); break;
|
||||
default: /* Impossible */ break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -409,7 +413,7 @@ static void parse_dim() {
|
||||
strcpy(varname, tkn_get_string());
|
||||
tkn_next(); EXPECT(TOKEN_LPAR, "Expected array size");
|
||||
tkn_next(); EXPECT(TOKEN_NUMBER, "Expected integer constant as array size");
|
||||
int ivar = get_variable_index(varname, tkn_get_value());
|
||||
get_variable_index(varname, tkn_get_value()); // register variable with size, no need to keep ival
|
||||
tkn_next(); EXPECT(TOKEN_RPAR, "Expected ')'");
|
||||
tkn_next();
|
||||
}
|
||||
@@ -893,9 +897,15 @@ void parser_parse(const char* buffer, byte* mem) {
|
||||
parse_statements();
|
||||
append_strings();
|
||||
|
||||
FILE *f = fopen("test.bin", "wb");
|
||||
fwrite(mem, codepos, 1, f);
|
||||
fclose(f);
|
||||
if (error_raised()) {
|
||||
codepos = 0xA000;
|
||||
emmit(OP_JMP);
|
||||
emmit_w(0xA000);
|
||||
}
|
||||
|
||||
//FILE *f = fopen("test.bin", "wb");
|
||||
//fwrite(mem, codepos, 1, f);
|
||||
//fclose(f);
|
||||
|
||||
//return code;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user