0

我回来了,现在正在编写自己的语言和操作系统,但是由于我现在开始开发自己的开发语言,所以在使用 Bison 时遇到了一些错误,我不知道如何解决它们。这是我的 *.y 文件代码:

input:
        | input line
;

line:     '\n'
        | exp '\n'  { printf ("\t%.10g\n", $1); }
;

exp:      NUM             { $$ = $1;         }
        | exp exp '+'     { $$ = $1 + $2;    }
        | exp exp '-'     { $$ = $1 - $2;    }
        | exp exp '*'     { $$ = $1 * $2;    }
        | exp exp '/'     { $$ = $1 / $2;    }
      /* Exponentiation */
        | exp exp '^'     { $$ = pow ($1, $2); }
      /* Unary minus    */
        | exp 'n'         { $$ = -$1;        }
;
%%

当我尝试将 Bison 与此源代码一起使用时,我收到此错误:

calc.y:1.1-5:语法错误,意外标识符:

4

2 回答 2

7

在规则之前和之后都需要一个 '%%' (或者,严格来说,相反;如果在第二个 '%%' 之后没有代码,则可以省略该行)。

在第一个“%%”之前,您还需要一个“%token NUM”;然后语法通过 Bison。

于 2009-10-11T15:45:04.403 回答
0

存在另一种替代解决方案,即升级到bisonversion 3.0.4。我猜在 version2.x和之间3.x,他们改变了文件语法。

于 2016-10-13T11:13:48.957 回答