projects
/
henge
/
webcc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cf2b421
)
lexer_lex now returns the number of tokens it pushed
author
jordan@hack_attack
<jordanlavatai@gmail.com>
Fri, 7 Oct 2016 20:48:22 +0000
(13:48 -0700)
committer
jordan@hack_attack
<jordanlavatai@gmail.com>
Fri, 7 Oct 2016 20:48:22 +0000
(13:48 -0700)
src/apc/lexer_lex.rl
patch
|
blob
|
history
diff --git
a/src/apc/lexer_lex.rl
b/src/apc/lexer_lex.rl
index
d27c40b
..
d87f47d
100644
(file)
--- 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); \
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); \
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); \
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; }
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 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;
p = ts = str;
pe = p + strlen(str) + 1;
%%write init;
%%write exec;
- lexer_pushtok(tok_t, yylval);
printf (str);
printf (str);
- return
1
;
+ return
num_tokens
;
}
int ipow(int base, int exp)
}
int ipow(int base, int exp)