
[英]How can I generate a parser with Jison which deals with grammar ambiguity?
[英]How to generate a parser with JISON from a bison file
我正在尝试用JavaScript为音乐符号的Lilypond语言编写一个解析器。 我的第一本手册尝试了,但是只能处理一小部分语言。 由于Lilypond使用bison文件定义其语法[1],而JISON声称能够使用bison文件工作,因此我的想法也许是使用这些定义在JavaScript中生成解析器。
我在任何地方都找不到任何示例,尝试将这些文件直接输入JISON只会引发错误。
解决此问题的最佳方法是什么?
[1]:参见https://github.com/lilypond/lilypond/blob/master/lily/lexer.ll和https://github.com/lilypond/lilypond/blob/master/lily/parser.yy ),
解析器相对容易(!):剥离C代码(首先应保留AST构造以了解其工作方式),保持优先级不变(JISON在某种程度上可以理解Bison语法)并填写填充AST的代码。 相比之下,Lexer相当复杂,我不知道JISON是否支持所有的flex特殊功能,但否则:像上面解析器部分所述。
但这仍然是很多工作,这是肯定的;-)
编辑:在与Lilypond的语法作了些细微的比较之后,并在网上搜索了更多信息,我偶然发现了以下引文:
LilyPond语法做了很多奇怪的事情……
由Lilypond开发人员在https://lwn.net/Articles/561990/中命名为“ dakas”
我同意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.