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

时间:2016-02-11 04:34:56

标签: java parsing expression grammar cup

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

例如,在我的语法中我有

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

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

我试图制作一个替代的gramar,但是扩展为我尝试解析而没有空转的语言

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

1 个答案:

答案 0 :(得分:0)

有关杯语法示例,您可以访问站点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