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



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

例如,在我的语法中,我有

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

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

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

如何在 CUP 中对其进行编程以制作解析器? 感谢您的所有贡献和帮助...

有关杯子语法示例,您可以在此处查看网站。

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

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。