1 Star 0 Fork 68

codeblack/compiler-homework6

forked from zren/compiler-homework6 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
calc.y 727 Bytes
一键复制 编辑 原始数据 按行查看 历史
codeblack 提交于 2016-06-16 20:00 . git commit
%{
#include <stdio.h>
#include <stdlib.h>
extern int yylex();
extern int yyparse();
extern FILE* yyin;
void yyerror(const char* s);
%}
%union {
int ival;
}
%token<ival> T_INT
%token T_PLUS T_MINUS T_LEFT T_RIGHT
%token T_END
%left T_PLUS T_MULT;
%type<ival> E
%type<ival> T
%type<ival> F
%start calculation
%%
calculation: E T_END {printf("%d\n", $1);exit(0);}
;
E: E T_PLUS T {$$ = $1 + $3;}
| T {$$ = $1;}
| E T_MINUS T {$$ = $1 - $3;}
;
T: T T_MULT F {$$ = $1 * $3;}
| F {$$ = $1;}
;
F: T_INT {$$ = $1;}
|T_LEFT E T_RIGHT {$$ = $2;}
;
%%
int main() {
yyin = stdin;
do {
yyparse();
} while(!feof(yyin));
return 0;
}
void yyerror(const char* s) {
fprintf(stderr, "Parse error: %s\n", s);
exit(1);
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/blackland/compiler-homework6.git
git@gitee.com:blackland/compiler-homework6.git
blackland
compiler-homework6
compiler-homework6
master

搜索帮助