如何在jflex中创建lambda符号



我正在用jflex+javacup进行语法分析。在.cup留声机上,我有这个部分:

   SUBPPARAMLIST ::= lambda | "(" EXPLIST ")"

其中lambda无意义(SUBPPARMLIST可以为空)

嗯,我设法在.flex中正确地创建了所有的令牌,但我不知道如何创建lambda符号。我希望你们能帮助我,如果你们不理解我的问题,请告诉我


WhatDoIWriteHere{return symbol(sym.lambda);}

空产品(您称之为"lambda")不需要符号,因为它是空的。你可以用一个生产规则来表达这一点:

SUBPPARAMLIST ::= lambda | "(" EXPLIST ")" ;
lambda ::=  ;

引号:语法中的每个生成都有一个左手边的非终结符,后面跟着符号"::=",然后是一系列零个或多个操作、终结符或非终结符符号,后面跟着可选的上下文优先级分配,并以分号(;)结束注意"…零或更多…"

语法解析器可能也能够处理这个问题:

SUBPPARAMLIST ::= "(" EXPLIST ")" | ;

最新更新