Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在 yacc 中使用递归,我想检查递归规则解析的所有值。我的 yacc 规则是
%{ #include<stdio.h> . . . %} %% abc:ABC expr ; expr:VALUE','expr |VALUE ; %%
如果我有这样的声明
ABC 1,2,3,4
它被解析。 我想检查通过expr解析的所有数字 的总和是否等于某个值,比如 10 我该如何检查?
编辑:
您可以计算解析的值并使用如下代码保持它们的运行总数:
%{ #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++; } ; %%