java - cup 解析器允许我在语法 LALR 中进行空转换吗?

java - cup parser allow me to do empty transitions in a grammar LALR?

大家好,我是 cup 解析器的新手,我的问题是在语法中的 trans 定义中我有空 trans,我的问题是,这样正确吗?

例如,在我的语法中我有

INIT -> A B -c-   
A -> A -a-  
| empty  
B -> B -b-  
| empty  

A、B为无终端,a、b、c为终端

我试图制作一个替代语法,但扩展了我尝试在没有空 trans 的情况下解析的语言

我如何在 cup 中编写程序来制作解析器?感谢您的所有贡献和帮助...

关于 cup 语法示例,您可以查看站点 here

关于你的语法,你必须首先定义你的终结符和非终结符

Terminal: a, b, c, EMPTY;

Non-Terminal: init, A,B;

然后开始你的语法

start with: init

init ::= A:e | B:e;
A    ::= A:e | A:e -a- | EMPTY;
B    ::= B:e | B:e -b- | EMPTY;
a    ::= a:e {: RESULT = e:}
b    ::= b:e {: RESULT = e:}

等等。请记住使用此方法,您将必须有一些方法来定义您的终端和符号。如果您正在寻找用作词法分析器的东西,我建议您 jflex.