如何在 jflex 中创建 lambda 符号?

How to create a lambda symbol at jflex?

我正在用 jflex + javacup 做句法 Analixer。在 .cup 语法中,我有这部分:

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

其中 lambda 没有任何意义(SUBPPARAMLIST 可以为空)

好吧,我设法在我的 .flex 中正确创建了所有标记,但我不知道如何创建 lambda 符号。我希望你们能帮助我,如果你不明白我的问题,请告诉我


WhatDoIWriteHere{return symbol(sym.lambda);}

空产生式(你所说的"lambda")不需要符号,因为它是空的。你用生产规则来表达这个:

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

Quote: 语法中的每个产生式都有一个左侧非终结符,后跟符号“::=”,然后是一系列零个或多个动作,终结符,或非终结符号,后跟可选的上下文优先级分配,并以分号 (;) 结束。 请注意“...零个或多个...”

可能语法分析器也能处理这个:

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