简单的Bison文件,不断收到语法1.1错误

时间:2016-10-19 00:41:15

标签: bison yacc

一个简单的野牛程序,在编译时,我得到错误1.1:语法错误,意外的文件结束。野牛:输入/输出错误。我用bison -d hw3.y

编译它

代码如下:

 %{
    #include <stdio.h>
 %}
 %token NUMBER
 %left '+' '-'
 %left '*' '/'

 %%
 input
     : /* allow empty input */
     | input line
     ;
 line
     : expr '\n' { printf("Result is %f\n", $1); }
 expr
     : expr '+' term { $$ = $1 + $3; }
     | expr '-' term { $$ = $1 - $3; }
     |    term { $$ = $1; }
     ;
 term
     : term '*' factor { $$ = $1 * $3; }
     |   term '/' factor { $$ = $1 / $3; }
     | factor { $$ = $1; }
     ;
 factor
     : '(' expr ')' { $$ = $2; }
     | NUMBER { $$ = $1; }
     | '-' NUMBER { $$ = -$2; }
     ; 
  %%


   /* display error message */
   int yyerror( char *errmsg ) { printf("%s\n", errmsg); }
   /* main */
    int main() {
     printf("type an expression:\n");
    yyparse( );
   }

1 个答案:

答案 0 :(得分:0)

;的制作中缺少line。请注意这种格式化这些文件的更好方法,它会立即暴露此错误。检查大括号和注释是否正确关闭,还引用字符串和字符。