我使用的JavaCC上的Java 8.需要或不是一个参数
我有以下BNF形式:
Program -> (Definition)* EOF
Definition -> (FUNCTION_DEF) (FUNCTION_NAME) (PARAMATER_NAME) (OPEN_B) (FUNCTION_BODY) (CLOSE_B)
随着以下词法分析器
TOKEN : { < EOL : "\n" | "\r" | "\r\n" > }
TOKEN : { < FUNCTION_DEF : "DEF" > }
TOKEN : { < FUNCTION_NAME : (["A"-"Z"])+ > }
TOKEN : { < PARAMATER_NAME : (["a"-"z"])+ > }
TOKEN : { < OPEN_B : "{" > }
TOKEN : { < CLOSE_B : "}" > }
TOKEN : { < SPACE : " " > }
作为输入,我有以下几种:
DEF ABC x { x+1 }
DEF MAIN { ABC(1) }
我的解析器抛出一个解析错误,因为它需要一个参数名称。如果函数名称不是MAIN,我怎么可能只需要一个参数名称?
由于
谢谢! 现在,我怎样才能定义一个程序:先定义主函数的程序,最后定义主函数的程序,主函数定义在开始和结束之间的程序? –
我编辑了我的答案 –