0

我在 yacc 中使用递归,我想检查递归规则解析的所有值。我的 yacc 规则是

%{

#include<stdio.h>

.

.

.

%}

%%

abc:ABC expr

;

expr:VALUE','expr

|VALUE

;


%%

如果我有这样的声明

ABC 1,2,3,4 

它被解析。
我想检查通过expr解析的所有数字 的总和是否等于某个值,比如 10
我该如何检查?

4

1 回答 1

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++; }

;


%%
于 2012-11-19T19:44:04.993 回答