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

求大神帮我讲解下这个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 怎么获取下面的: glove_word2id.json和 glove_numpy.npy 这两个文件
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug