我一直在Flex和Bison的計算器上工作。我可以指定單個變量如多變量計算器Bison
m = 5
m * 5
25
,但現在我希望能夠分配多個變量,如m = n = 5
這裏就是我有我的野牛文件現在。我將如何修改它到上面?
%{
#include <stdio.h>
void yyerror(char *);
int yylex(void);
int sym[26];
%}
%token INTEGER VARIABLE
%left '+' '-' '*'
%%
program:
program statement '\n'
| /* NULL */
;
statement:
expression { printf("%d\n", $1); }
| VARIABLE '=' expression { sym[$1] = $3; }
;
expression:
INTEGER
| VARIABLE { $$ = sym[$1]; }
| '-' expression { $$ = -$2; }
| expression '+' expression { $$ = $1 + $3; }
| expression '-' expression { $$ = $1 - $3; }
| expression '*' expression { $$ = $1 * $3; }
| '(' expression ')' { $$ = $2; }
;
%%
void yyerror(char *s) {
fprintf(stderr, "%s\n", s);
}
int main(void) {
yyparse();
}
一個小調 - 這會改變程序的行爲,導致它打印賦值語句後分配的值。 –
@chrisDodd:是的。我要提到的是,但最後我不得不去做別的事情。我會添加一個註釋。 – rici