X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=assembler%2Fscanner.l;h=b135552a31a389259fc25c3c6b669c93f613c4f1;hb=762043b61e46c1b4d61d18931c702b77bcc86067;hp=bb866a93d1c7d302959d1e3617274dfb8a574414;hpb=80d4431cde7dec47d2cd549ec581cc98dab67d5d;p=b43-tools.git diff --git a/assembler/scanner.l b/assembler/scanner.l index bb866a9..b135552 100644 --- a/assembler/scanner.l +++ b/assembler/scanner.l @@ -51,6 +51,7 @@ NEWLINE ((\r)|(\n)|(\r\n)) ^{WS}*"%"{WS}*arch { update_lineinfo(); return ASM_ARCH; } ^{WS}*"%"{WS}*start { update_lineinfo(); return ASM_START; } +"%"{WS}*assert { update_lineinfo(); return ASM_ASSERT; } ^{WS}*\.text{WS}*$ { update_lineinfo(); return SECTION_TEXT; } ^{WS}*\.initvals/\({IDENTIFIER}\) { update_lineinfo(); return SECTION_IVALS; } @@ -67,6 +68,10 @@ lr/[0-3] { update_lineinfo(); return LR; } \( { update_lineinfo(); return PAREN_OPEN; } \) { update_lineinfo(); return PAREN_CLOSE; } +== { update_lineinfo(); return EQUAL; } +!= { update_lineinfo(); return NOT_EQUAL; } +\|\| { update_lineinfo(); return LOGICAL_OR; } +\&\& { update_lineinfo(); return LOGICAL_AND; } \+ { update_lineinfo(); return PLUS; } \- { update_lineinfo(); return MINUS; } \* { update_lineinfo(); return MULTIPLY; } @@ -137,6 +142,7 @@ phy { update_lineinfo(); return IVAL_PHY; } radio { update_lineinfo(); return IVAL_RADIO; } shm16 { update_lineinfo(); return IVAL_SHM16; } shm32 { update_lineinfo(); return IVAL_SHM32; } +tram { update_lineinfo(); return IVAL_TRAM; } @[0-9a-fA-F]{3,3} { update_lineinfo(); return RAW_CODE; } @@ -149,6 +155,7 @@ shm32 { update_lineinfo(); return IVAL_SHM32; } %% struct lineinfo cur_lineinfo; +//FIXME The linenumber sometimes is wrong. static void interpret_cppinfo(const char *str) { @@ -175,7 +182,7 @@ static void interpret_cppinfo(const char *str) memset(tmp, 0, sizeof(tmp)); memcpy(tmp, str, min(sizeof(tmp) - 1, (int)(found - str))); - cur_lineinfo.lineno = strtoul(tmp, NULL, 10); + cur_lineinfo.lineno = strtoul(tmp, NULL, 10) - 1; str = found; str++;