要求

编译原理:用Yacc实现简易计算器(小白篇)

下载bison

https://sourceforge.net/projects/unxutils/

  • 下载之后解压即可

配置环境变量

  • ①在系统变量Path中新增如下变量
    编译原理:用Yacc实现简易计算器(小白篇)
  • \user\local\wbin可以在刚才解压的文件夹里找到
  • ②在系统变量中新增变量BISON_SIMPLE和BISON_HAIRY,变量值如下图
    编译原理:用Yacc实现简易计算器(小白篇)
    编译原理:用Yacc实现简易计算器(小白篇)

生成.c文件

  • ①找到bison.exe,并复制到桌面
    编译原理:用Yacc实现简易计算器(小白篇)
  • ②写.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即可
    编译原理:用Yacc实现简易计算器(小白篇)

生成.exe文件

  • ①新建文件夹,把刚才的.c文件放进来
  • ②用vc打开这个.c文件
  • ③找到yyerrhandle(大概在850行的位置)
  • ④添加代码 if (yystate==13) goto yyacceptlab;如下图所示
    编译原理:用Yacc实现简易计算器(小白篇)
  • ⑤编译即可
  • ⑥发现刚才新建的文件夹多了一个Debug文件夹,打开即可找到.exe文件

输入输出

  • 双击.exe文件
    编译原理:用Yacc实现简易计算器(小白篇)
  • 输入输出
    编译原理:用Yacc实现简易计算器(小白篇)
    编译原理:用Yacc实现简易计算器(小白篇)

相关文章:

  • 2022-12-23
  • 2021-12-02
  • 2021-09-25
  • 2021-06-08
  • 2021-04-10
  • 2022-02-14
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-04
  • 2022-12-23
  • 2021-12-02
  • 2021-06-07
  • 2022-12-23
相关资源
相似解决方案