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;
}%%