YACC 错误 "is untyped"

YACC error "is untyped"

我正在创建一个使用波兰表示法(前缀)的 YACC 程序。实现起来似乎很简单,但我收到一个似乎没有意义的错误。错误是:

yacc: e - "calculator.y" 的第 33 行,$1 ('-') 未键入

这是表达式的代码。错误发生在“-”规则上。它停在那里,因为我想先解决这个问题:

exp:  NUMBER                  { $$ = ; }
       | NAME                  { $$ = ->value; }
       | NAME '=' exp         { ->value = ; $$ = ; }
       | exp EQ exp      { $$ =  == ; }
       | '-' exp exp        { $$ =  - ; }
;

奇怪的是,当我尝试使用中缀表示法时它工作正常。我知道这个错误通常在标记输入不正确时发生,但它们是因为它们使用中缀表示法。知道为什么这会随着前缀突然改变吗?

    | '-' exp exp        { $$ =  - ; }

此处您试图从 - 标记中减去第二个表达式,该标记未类型化且没有任何意义。你可能想要

    | '-' exp exp        { $$ =  - ; }

从第一个表达式中减去第二个表达式...