编写一个yacc描述文件,实现具有加法和乘法功能的计算器。
时间: 2024-02-09 12:10:55 浏览: 281
可以计算可编程的加法和乘法的程序
下面是一个简单的 yacc 描述文件,实现具有加法和乘法功能的计算器。
```
%{
#include <stdio.h>
%}
%token NUMBER
%left '+' '-'
%left '*' '/'
%%
expression: /* 空规则 */
| expression '+' expression
| expression '-' expression
| expression '*' expression
| expression '/' expression
| NUMBER
;
%%
int main()
{
yyparse();
return 0;
}
int yyerror(char *s)
{
printf("%s\n", s);
return 0;
}
int yylex()
{
int c = getchar();
if (c == EOF) {
return 0;
}
if (isdigit(c)) {
ungetc(c, stdin);
scanf("%d", &yylval);
return NUMBER;
}
return c;
}
```
使用该 yacc 描述文件生成语法分析器,可以通过以下命令:
```
yacc -d parser.yacc
gcc y.tab.c -o parser
```
然后,运行生成的语法分析器,输入表达式,就可以计算出其值了。例如,输入表达式 `2+3*4`,输出结果为 `14`。
阅读全文