标签:java parsing context-free-grammar 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。