将EBNF语法转换为无上下文语法

我必须编写一个JavaCUP规范,并且我已经获得了EBNF语法。但是,我不知道如何在两者之间进行转换。我听说过基本的想法,但我真的不明白我需要改变什么,什么是“终端”等等。 任何人都可以解释如何从一个转换为另一个,或者是否有某个地方我可以阅读它?     
已邀请:
EBNF语法与普通BNF类似,但具有一些额外的功能(类似于正则表达式运算符)作为语法糖。既然你没有显示你的语法,我只能猜测你需要哪些部分来转换为普通的BNF,但这里最常见的(对于像JavaCUP这样的LALR生成器):
B*    becomes Bstar, defined as Bstar ::= epsilon; Bstar ::= Bstar B
B+    becomes Bplus, defined as Bplus ::= B; Bplus ::= Bplus B
B?    becomes Bquestion, defined as Bquestion ::= epsilon; Bquestion ::= B
B | C becomes BorC, defined as BorC ::= B; BorC ::= C
这里的
epsilon
标识符是你的解析器生成器表示空字符串。     

要回复问题请先登录注册