编程语言
首页 > 编程语言> > java – 将EBNF语法转换为无上下文语法

java – 将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标识符是你的解析器生成器表示空字符串.

标签:java,parsing,context-free-grammar,ebnf
来源: https://codeday.me/bug/20190626/1296840.html