如何从bison文件中使用JISON生成解析器



我正在尝试用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相当复杂,我不知道是否所有的flex特性都得到了JISON的支持,但除此之外:按照上面对解析器部分的描述进行。

但这仍然是一项艰巨的工作,这是肯定的;-)

编辑:在摆弄了Lilypond的语法并在网上搜索了更多信息后,我偶然发现了以下引文:

LilyPond语法做了很多奇怪的事情…

由Lilypond开发商命名为"dakas"https://lwn.net/Articles/561990/

我同意。

相关内容

  • 没有找到相关文章

最新更新