普通网友 2016-02-28 15:11 采纳率: 20%
浏览 2220

bison简易计算器 新手问题

最近看了flex bison,然后这个计算器结果一直是0,为什么。

这是1.l:
%{
# include "2.tab.h"
%}
%%
"+"         { return ADD; }
"-"         { return SUB; }
"*"         { return MUL; }
"/"         { return DIV; }
"|"         { return ABS; }
[0-9]+  {yylval=atoi(yytext); return NUMBER;}
 \t     {/* ignore whitespace */}
.       {printf("character %c\n",*yytext);}
\n      {return EOL;}

%%
int yywrap(void){
   return 0;
}


%{
#include <stdio.h>
int yylex (void);
void yyerror (char const *);
%}
/* declare tokens */
%token NUMBER
%token ADD SUB MUL DIV ABS
%token EOL
%%
calclist: /* nothing */ 
| calclist exp EOL { printf("= %d\n", $1); } 
;
exp: factor 
| exp ADD factor { $$ = $1 + $3; }
| exp SUB factor { $$ = $1 - $3; }
;
factor: term 
| factor MUL term { $$ = $1 * $3; }
| factor DIV term { $$ = $1 / $3; }
;
term: NUMBER 
| ABS term { $$ = $2 >= 0? $2 : - $2; }
;
%%
main(int argc, char **argv)
{
yyparse();
}
void yyerror(char const *s)
{
fprintf(stderr, "error: %s\n", s);
}


图片说明

  • 写回答

1条回答

  • devmiao 2016-02-28 15:23
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?