diff options
| -rw-r--r-- | asm/lexer.c | 110 | ||||
| -rw-r--r-- | asm/parser.c | 12 | 
2 files changed, 61 insertions, 61 deletions
| diff --git a/asm/lexer.c b/asm/lexer.c index 73859c3..baa5e92 100644 --- a/asm/lexer.c +++ b/asm/lexer.c @@ -165,149 +165,149 @@ token_t tokenise_symbol(buffer_t *buffer, size_t *column)      offset = 4;      type   = TOKEN_HALT;    } -  else if (sym_size >= 8 && strncmp(opcode, "PUSH.REG", 8) == 0) +  else if (sym_size > 9 && strncmp(opcode, "PUSH.REG.", 9) == 0)    { -    offset = 8; +    offset = 9;      type   = TOKEN_PUSH_REG;    } -  else if (sym_size >= 4 && strncmp(opcode, "PUSH", 4) == 0) +  else if (sym_size > 5 && strncmp(opcode, "PUSH.", 5) == 0)    { -    offset = 4; +    offset = 5;      type   = TOKEN_PUSH;    } -  else if (sym_size >= 3 && strncmp(opcode, "POP", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "POP.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_POP;    } -  else if (sym_size >= 3 && strncmp(opcode, "MOV", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "MOV.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_MOV;    } -  else if (sym_size >= 3 && strncmp(opcode, "DUP", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "DUP.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_DUP;    } -  else if (sym_size >= 12 && strncmp(opcode, "MALLOC.STACK", 12) == 0) +  else if (sym_size > 13 && strncmp(opcode, "MALLOC.STACK.", 13) == 0)    { -    offset = 12; +    offset = 13;      type   = TOKEN_MALLOC_STACK;    } -  else if (sym_size >= 6 && strncmp(opcode, "MALLOC", 6) == 0) +  else if (sym_size > 7 && strncmp(opcode, "MALLOC.", 7) == 0)    { -    offset = 6; +    offset = 7;      type   = TOKEN_MALLOC;    } -  else if (sym_size >= 10 && strncmp(opcode, "MSET.STACK", 10) == 0) +  else if (sym_size > 11 && strncmp(opcode, "MSET.STACK.", 11) == 0)    { -    offset = 10; +    offset = 11;      type   = TOKEN_MSET_STACK;    } -  else if (sym_size >= 4 && strncmp(opcode, "MSET", 4) == 0) +  else if (sym_size > 5 && strncmp(opcode, "MSET.", 5) == 0)    { -    offset = 4; +    offset = 5;      type   = TOKEN_MSET;    } -  else if (sym_size >= 10 && strncmp(opcode, "MGET.STACK", 10) == 0) +  else if (sym_size > 11 && strncmp(opcode, "MGET.STACK.", 11) == 0)    { -    offset = 10; +    offset = 11;      type   = TOKEN_MGET_STACK;    } -  else if (sym_size >= 4 && strncmp(opcode, "MGET", 4) == 0) +  else if (sym_size > 5 && strncmp(opcode, "MGET.", 5) == 0)    { -    offset = 4; +    offset = 5;      type   = TOKEN_MGET;    } -  else if (sym_size >= 7 && strncmp(opcode, "MDELETE", 7) == 0) +  else if (sym_size == 7 && strncmp(opcode, "MDELETE", 7) == 0)    {      offset = 7;      type   = TOKEN_MDELETE;    } -  else if (sym_size >= 5 && strncmp(opcode, "MSIZE", 5) == 0) +  else if (sym_size == 5 && strncmp(opcode, "MSIZE", 5) == 0)    {      offset = 5;      type   = TOKEN_MSIZE;    } -  else if (sym_size >= 3 && strncmp(opcode, "NOT", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "NOT.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_NOT;    } -  else if (sym_size >= 2 && strncmp(opcode, "OR", 2) == 0) +  else if (sym_size > 3 && strncmp(opcode, "OR.", 3) == 0)    { -    offset = 2; +    offset = 3;      type   = TOKEN_OR;    } -  else if (sym_size >= 3 && strncmp(opcode, "AND", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "AND.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_AND;    } -  else if (sym_size >= 3 && strncmp(opcode, "XOR", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "XOR.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_XOR;    } -  else if (sym_size >= 2 && strncmp(opcode, "EQ", 2) == 0) +  else if (sym_size >= 3 && strncmp(opcode, "EQ.", 3) == 0)    { -    offset = 2; +    offset = 3;      type   = TOKEN_EQ;    } -  else if (sym_size >= 3 && strncmp(opcode, "LTE", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "LTE.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_LTE;    } -  else if (sym_size >= 2 && strncmp(opcode, "LT", 2) == 0) +  else if (sym_size > 3 && strncmp(opcode, "LT.", 3) == 0)    { -    offset = 2; +    offset = 3;      type   = TOKEN_LT;    } -  else if (sym_size >= 3 && strncmp(opcode, "GTE", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "GTE.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_GTE;    } -  else if (sym_size >= 2 && strncmp(opcode, "GT", 2) == 0) +  else if (sym_size > 3 && strncmp(opcode, "GT.", 3) == 0)    { -    offset = 2; +    offset = 3;      type   = TOKEN_GT;    } -  else if (sym_size >= 3 && strncmp(opcode, "SUB", 3) == 0) +  else if (sym_size > 4 && strncmp(opcode, "SUB.", 4) == 0)    { -    offset = 3; +    offset = 4;      type   = TOKEN_SUB;    } -  else if (sym_size >= 4 && strncmp(opcode, "PLUS", 4) == 0) +  else if (sym_size > 5 && strncmp(opcode, "PLUS.", 5) == 0)    { -    offset = 4; +    offset = 5;      type   = TOKEN_PLUS;    } -  else if (sym_size >= 4 && strncmp(opcode, "MULT", 4) == 0) +  else if (sym_size > 5 && strncmp(opcode, "MULT.", 5) == 0)    { -    offset = 4; +    offset = 5;      type   = TOKEN_MULT;    } -  else if (sym_size >= 5 && strncmp(opcode, "PRINT", 5) == 0) +  else if (sym_size > 6 && strncmp(opcode, "PRINT.", 6) == 0)    { -    offset = 5; +    offset = 6;      type   = TOKEN_PRINT;    } -  else if (sym_size >= 8 && strncmp(opcode, "JUMP.ABS", 8) == 0) +  else if (sym_size == 8 && strncmp(opcode, "JUMP.ABS", 8) == 0)    {      offset = 8;      type   = TOKEN_JUMP_ABS;    } -  else if (sym_size >= 10 && strncmp(opcode, "JUMP.STACK", 10) == 0) +  else if (sym_size == 10 && strncmp(opcode, "JUMP.STACK", 10) == 0)    {      offset = 10;      type   = TOKEN_JUMP_STACK;    } -  else if (sym_size >= 7 && strncmp(opcode, "JUMP.IF", 7) == 0) +  else if (sym_size > 8 && strncmp(opcode, "JUMP.IF.", 8) == 0)    { -    offset = 7; +    offset = 8;      type   = TOKEN_JUMP_IF;    }    else @@ -344,7 +344,7 @@ token_t tokenise_symbol(buffer_t *buffer, size_t *column)      }      ret.str_size = sym_size - offset;    } -  *column += sym_size; +  *column += sym_size - 1;    buffer->used += sym_size;    return ret;  } diff --git a/asm/parser.c b/asm/parser.c index 44c09b4..4f76fe5 100644 --- a/asm/parser.c +++ b/asm/parser.c @@ -157,17 +157,17 @@ enum Type    T_WORD,  } parse_details_to_type(token_t details)  { -  if (details.str_size == 5 && strncmp(details.str, ".BYTE", 5) == 0) +  if (details.str_size == 4 && strncmp(details.str, "BYTE", 4) == 0)      return T_BYTE; -  else if (details.str_size == 5 && strncmp(details.str, ".CHAR", 5) == 0) +  else if (details.str_size == 4 && strncmp(details.str, "CHAR", 4) == 0)      return T_CHAR; -  else if (details.str_size == 6 && strncmp(details.str, ".HWORD", 6) == 0) +  else if (details.str_size == 5 && strncmp(details.str, "HWORD", 5) == 0)      return T_HWORD; -  else if (details.str_size == 4 && strncmp(details.str, ".INT", 4) == 0) +  else if (details.str_size == 3 && strncmp(details.str, "INT", 3) == 0)      return T_INT; -  else if (details.str_size == 5 && strncmp(details.str, ".LONG", 5) == 0) +  else if (details.str_size == 4 && strncmp(details.str, "LONG", 4) == 0)      return T_LONG; -  else if (details.str_size == 5 && strncmp(details.str, ".WORD", 5) == 0) +  else if (details.str_size == 4 && strncmp(details.str, "WORD", 4) == 0)      return T_WORD;    else      return T_NIL; | 
