From 5119a6c1f3d7a6db4bcb4f60b76bab5a11deab7c Mon Sep 17 00:00:00 2001 From: "jordan@hack_attack" Date: Fri, 7 Oct 2016 13:48:22 -0700 Subject: [PATCH] lexer_lex now returns the number of tokens it pushed --- src/apc/lexer_lex.rl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/apc/lexer_lex.rl b/src/apc/lexer_lex.rl index d27c40b..d87f47d 100644 --- a/src/apc/lexer_lex.rl +++ b/src/apc/lexer_lex.rl @@ -24,15 +24,18 @@ char* ttos(const char* str, int); action set_ref { tok_t = REF; \ yylval.ref = ttor(ts, p-ts); \ - lexer_pushtok(tok_t, yylval); } + lexer_pushtok(tok_t, yylval); \ + num_tokens++; } action set_val { tok_t = NUM; \ yylval.val = ttov(ts, p-ts); \ - lexer_pushtok(tok_t, yylval); } + lexer_pushtok(tok_t, yylval); \ + num_tokens++; } action set_name { tok_t = NAME; \ yylval.str = ttos(ts, p-ts); \ - lexer_pushtok(tok_t, yylval); } + lexer_pushtok(tok_t, yylval); \ + num_tokens++; } action set_ts { ts = p; } @@ -54,17 +57,18 @@ char* ttos(const char* str, int); int lexer_lex (const char* str) { const char *p, *pe, *ts, *eof; - int cs, tok_t ; //tok_t == token type + int cs, tok_t, num_tokens; //tok_t == token type + + num_tokens = 0; p = ts = str; pe = p + strlen(str) + 1; %%write init; %%write exec; - lexer_pushtok(tok_t, yylval); printf (str); - return 1; + return num_tokens; } int ipow(int base, int exp) -- 2.18.0