我在yacc中使用递归,我想检查递归规则解析的所有值。我的yacc规则是
%{
#include<stdio.h>
.
.
.
%}
%%
abc:ABC expr
;
expr:VALUE','expr
|VALUE
;
%%
如果我有像
这样的陈述ABC 1,2,3,4
它被解析。
我想检查通过 expr 解析的所有数字
总和等于某个值说10
我怎么检查这个?
答案 0 :(得分:1)
修改强>
您可以对已解析的值进行计数,并使用类似以下代码保持其运行总计:
%{
#include<stdio.h>
int count;
.
.
.
%}
%%
abc: { count = 0; } ABC expr { printf("count: %d; sum: %d\n", count, $2); }
;
expr: VALUE ',' expr { $$ = $1 + $3; }
| VALUE { $$ = $1; count++; }
;
%%