要求
下载bison
https://sourceforge.net/projects/unxutils/
- 下载之后解压即可
配置环境变量
- ①在系统变量Path中新增如下变量
- \user\local\wbin可以在刚才解压的文件夹里找到
- ②在系统变量中新增变量BISON_SIMPLE和BISON_HAIRY,变量值如下图
生成.c文件
- ①找到bison.exe,并复制到桌面
- ②写.y文件
- 新建文本文档,保存为aa.y,并输入以下代码:
%{
#include <ctype.h> /* 常量、变量的声明*/
#include<stdio.h>
#include<stdlib.h>
int yylex(void);
int yyerror(char*);
%}
%token DIGIT
%%
line : expr '\n' {printf("%d\n", $1);}
;
expr : expr '+' term {$$ = $1+$3;}
| term
;
term : term '*' factor {$$ = $1 * $3;}
| factor
;
factor : '(' expr ')' {$$ = $2;}
| DIGIT
;
%%
int yylex(){
int c;
c = getchar();
if (isdigit(c)){
yylval =c-'0';
return DIGIT;
}
return c;
}
int yyerror(char *s){
printf("%s\n",s);
return 1;
}
int main() {
int y=yyparse();
if(y!=0){
printf("输入错误!\n");
system("pause");
}
return 0;
}
- ③生成.c文件
- 拖动刚才的.y文件到bison.exe即可
生成.exe文件
- ①新建文件夹,把刚才的.c文件放进来
- ②用vc打开这个.c文件
- ③找到yyerrhandle(大概在850行的位置)
- ④添加代码 if (yystate==13) goto yyacceptlab;如下图所示
- ⑤编译即可
- ⑥发现刚才新建的文件夹多了一个Debug文件夹,打开即可找到.exe文件
输入输出
- 双击.exe文件
- 输入输出