1

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

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

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

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

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

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

4

1 回答 1

0

对于杯子语法示例,您可以在此处查看该站点。

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

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

于 2018-08-01T18:07:38.403 回答