java将EBNF语法转换为上下文无关语法
我必须编写一个JavaCUP规范,并且我已经得到了一个EBNF语法。然而,我不知道如何在两者之间转换。我已经听到了基本的想法,但我真的不明白我需要改变什么,什么是“终端”,等等
有谁能解释一下如何从一个转换到另一个,或者是否有我可以阅读的地方
你可以在下面搜索框中键入要查询的问题!
我必须编写一个JavaCUP规范,并且我已经得到了一个EBNF语法。然而,我不知道如何在两者之间转换。我已经听到了基本的想法,但我真的不明白我需要改变什么,什么是“终端”,等等
有谁能解释一下如何从一个转换到另一个,或者是否有我可以阅读的地方
# 1 楼答案
EBNF语法类似于普通BNF,但有一些额外的特性(类似于正则表达式运算符)作为语法糖。由于您没有显示语法,我只能猜测您需要对哪些部分进行desugar以转换为正常的BNF,但以下是最常见的部分(对于JavaCUP这样的LALR生成器):
然而,这里的
epsilon
标识符表示空字符串