我正在用jflex+javacup进行语法分析。在.cup留声机上,我有这个部分:
SUBPPARAMLIST ::= lambda | "(" EXPLIST ")"
其中lambda无意义(SUBPPARMLIST可以为空)
嗯,我设法在.flex中正确地创建了所有的令牌,但我不知道如何创建lambda符号。我希望你们能帮助我,如果你们不理解我的问题,请告诉我
WhatDoIWriteHere{return symbol(sym.lambda);}
空产品(您称之为"lambda")不需要符号,因为它是空的。你可以用一个生产规则来表达这一点:
SUBPPARAMLIST ::= lambda | "(" EXPLIST ")" ;
lambda ::= ;
引号:语法中的每个生成都有一个左手边的非终结符,后面跟着符号"::=",然后是一系列零个或多个操作、终结符或非终结符符号,后面跟着可选的上下文优先级分配,并以分号(;)结束注意"…零或更多…"
语法解析器可能也能够处理这个问题:
SUBPPARAMLIST ::= "(" EXPLIST ")" | ;