updated lexer_lex and ir
[henge/webcc.git] / src / apc / lexer_lex.rl
index cb068d6..e1f9669 100644 (file)
@@ -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;
 }%%