huanxuan163 2016-06-06 14:16 采纳率: 0%
浏览 1512
已采纳

求大神帮我讲解下这个yacc关于后缀表达式的输出

%{
#include
#include
#include

%}

 %token NUM
 %left'-''+'
 %left'*''/'

 %%
 input:   
         | input line
 ;

 line:   '\n'
         | exp '\n' { }
 ;

 exp:   texp              
    | exp '+' texp        { printf("+ ");   }
    | exp '-' texp       { printf("- ");   }
 ;
 texp: fexp
  |texp '*' fexp {printf("* ");}
  |texp '/' fexp {printf("/ ");}
 ;
 fexp: NUM {printf("%d ",$1);}
  | '('exp')'
;
 %%

main()
{
printf("\nPlease input your the calculation:\n");
yyparse();
}
yyerror(char *s)

{
printf("error=%s",s);
}
yylex ()
{
int c;

   while ((c = getchar ()) == ' ' || c == '\t');

   if (isdigit (c))
     {
       ungetc (c, stdin);
       scanf ("%d", &yylval);
       return NUM;
     }

   if (c == EOF)
     return 0;

   return c;
 }
    就是不知道 比如我输入5*6+9 他输出是5 6 * 9 +
    这个过程具体是怎么样的
  • 写回答

1条回答 默认 最新

  • devmiao 2016-06-06 15:53
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分