普通网友 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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题