gpt4 book ai didi

javascript - 如何从 bison 文件生成带有 JISON 的解析器

转载 作者:行者123 更新时间:2023-12-03 08:25:05 25 4
gpt4 key购买 nike

我正在尝试用 JavaScript 为音乐符号的 Lilypond 语言编写一个解析器。我的第一次手动尝试有效,但只能处理该语言的一小部分。由于 Lilypond 使用 bison 文件来定义其语法[1],并且 JISON 声称能够从 bison 文件中工作,因此我的想法是也许使用这些定义来生成 JavaScript 中的解析器。

我在任何地方都找不到任何这样的示例,并且尝试将这些文件直接输入 JISON 只会引发错误。

解决这个问题的最佳方法是什么?

[1]:参见https://github.com/lilypond/lilypond/blob/master/lily/lexer.llhttps://github.com/lilypond/lilypond/blob/master/lily/parser.yy ),

最佳答案

解析器相对(!)简单:剥离 C 代码(您应该首先保留 AST 构造以了解它们是如何做到的),保持优先级不变(JISON 在某种程度上理解 Bison 语法)并填写代码来填充AST。相比之下,词法分析器相当复杂,我不知道 JISON 是否支持所有的 Flex 特性,但除此之外:按照上面描述的解析器部分进行操作。

但是这仍然需要大量工作,这是肯定的;-)

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

The LilyPond grammar does a lot of weird things…

https://lwn.net/Articles/561990/ 中名为“dakas”的 Lilypond 开发者提供

我同意。

关于javascript - 如何从 bison 文件生成带有 JISON 的解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33588526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com