1 Star 0 Fork 68

赵嘉慧/compiler-homework6

forked from zren/compiler-homework6 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
calc.y 710 Bytes
一键复制 编辑 原始数据 按行查看 历史
赵嘉慧 提交于 2016-06-16 20:17 . cala
%{
#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", $1);exit(0);}
;
E: E T_PLUS T {$$ = $1 + $3;}
|E T_MINUS T {$$ = $1 - $3;}| T {$$ = $1;}
;
;
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, "error: %s\n", s);
exit(1);
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xiaoyueliang/compiler-homework6.git
git@gitee.com:xiaoyueliang/compiler-homework6.git
xiaoyueliang
compiler-homework6
compiler-homework6
master

搜索帮助