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 に答える