繁体   English   中英

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

[英]Convert EBNF Grammar to Context-Free Grammar

我必须编写一个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标识符是你的解析器生成器表示空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM