【发布时间】:2014-02-22 01:31:14
【问题描述】:
我一直在使用 Flex 和 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();
}
【问题讨论】:
标签: calculator bison flex-lexer