X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=blobdiff_plain;f=src%2Flexer.rl;h=ff2fa144030048677fc53b985315e3b48def596f;hp=c7600aecdeb93be1d9603eda873b9b9dfcb0d545;hb=ee18200a9d3817728d6d09745cd29900649d4508;hpb=7896cfff4745b3999850dd301a296de71f7356eb diff --git a/src/lexer.rl b/src/lexer.rl index c7600ae..ff2fa14 100644 --- a/src/lexer.rl +++ b/src/lexer.rl @@ -113,7 +113,7 @@ uint8_t lval_offs; tok = (name | val | ref | dimensions | map | link | SS | direction); - main := (tok tok_delimiter)* tok [\0]; + main := (tok tok_delimiter)* tok ; write data nofinal noerror noprefix; @@ -141,18 +141,11 @@ int lexer_lexstring { uint8_t* p, * ts, * pe, * eof; int cs, ntok; YYSTYPE lval; - ntok = 0; p = ts = str; - pe = eof = p + size + 1; - - dprintf("\n|---Begin lexstring on p = %U, pe = %p.---|\n",p, pe); - + pe = eof = p + size; %%write init; %%write exec; - - dprintf("\n|---Ending lexstring of file %U, pushed %d tokens.---|\n",str, ntok); - return ntok; } @@ -177,14 +170,17 @@ int lexer_lexfile // Mark the end of the filename filename_end = iter; // Lex from either the last period, if present, or filename end + dprintf("%U\n\t",filename); ntok = (last_period) ? lexer_lexstring(filename, (int)(last_period - filename)) : lexer_lexstring(filename, (int)(iter - filename)); + // Replace nulls with their original '_' for (iter = filename; iter < filename_end; iter++) if (*iter == '\0') *iter = '_'; PUSHPATH(filename); + dprintf("\n\t[%i Token%s]\n", ntok, (ntok > 1) ? "s" : ""); return ntok + 1; } @@ -192,14 +188,18 @@ int lexer_lexdir ( uint8_t* dirname ) { int ntok; ntok = 0; + if (DEBUG) putchar('\t'); PUSHNAME(dirname); PUSHOP(CLOPEN); + if (DEBUG) putchar('\n'); return ntok; } int lexer_closedir ( void ) { int ntok = 0; + if (DEBUG) putchar('\t'); PUSHOP(CLCLOSE); + if (DEBUG) putchar('\n'); return ntok; }