X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fwebcc.git;a=blobdiff_plain;f=src%2Fapc%2Flexer_lex.rl;h=e1f9669fd33c1baad137a847a2a1838aeaaef455;hp=cb068d6e237e2bd23cf884c9ad4d659660c30455;hb=c5aa6d0763078cf697ecb8c2b561a2cc521dfbd6;hpb=e5054c6c4d93c47e798ee59d73e232e436a00855 diff --git a/src/apc/lexer_lex.rl b/src/apc/lexer_lex.rl index cb068d6..e1f9669 100644 --- a/src/apc/lexer_lex.rl +++ b/src/apc/lexer_lex.rl @@ -24,26 +24,26 @@ char* ttos(const char* str, int); action set_ref { tok_t = REF; \ yylval.ref = ttor(ts, p-ts); \ - lexer_pushtok(tok_t, yylval); \ - ts = p; } + lexer_pushtok(tok_t, yylval); } action set_val { tok_t = NUM; \ yylval.val = ttov(ts, p-ts); \ - lexer_pushtok(tok_t, yylval); \ - ts = p; } + lexer_pushtok(tok_t, yylval); } action set_name { tok_t = NAME; \ yylval.str = ttos(ts, p-ts); \ - lexer_pushtok(tok_t, yylval); \ - ts = p; } + lexer_pushtok(tok_t, yylval); } + + action set_ts { ts = p; } # instantiate machines for each possible token ref = '0x' xdigit+ %set_ref; val = digit+ %set_val; name = alpha+ %set_name; tok = ref | val | name; + segment = (tok . '_') %set_ts; - main := (tok . '_')* . tok; + main := segment* . tok; }%%