我不确定Nearley.js library,Moo tokenizer/lexer或我自己的代码是否存在问题。所以我可能需要将此作为一个问题提交给Nearley回购。所有引用的文件都可以在this Gist中找到。
我正在尝试编写一个Nearley语法,它将解析我的一个班级的作业问题列表。问题出现在problems.txt中,如下所示:
Section 5.2 (Due 4/23)- #3, 5*, 8*, 9, 11, 14*, 15, 17*, 18*, 20, 21*, 22*, 24*, 25 (see example 5, not discussed in class)
Section 5.3 (Due 4/30)- #1, 3*, 4, 5, 6*, 7, 9*, 11, 13*, 16, 20*, 21*, 22*, 23, 24*, 25*, 27, 28*, 31, 32
这只是两行作为例子,整个文件更大。
我写的Nearley语法是problems-grammar.ne
here,我还没完成。我在Nearley文档中根据these instructions使用Moo tokenizer / lexer。
我正在使用nearley-unparse
命令测试我的语法,使用此命令解释here,其中problems-grammar.js
是由Nearley编译的解析器。
nearley-unparse problems-grammar.js -o test.txt
不幸的是,除了新行令牌之外,notarser似乎没有正确生成带有令牌示例的语法。 Here是nearley-unparse
的一个输出:
Section (Due )- #*, ,
Section (Due )- #, *,
Section (Due )- #*, , , *,
Section (Due )- #*, *
Section (Due )- #*, *, *, *
我想知道这是我的语法中的缺陷还是与Nearley / Moo本身的缺陷。如果我的代码出现问题,我该如何解决?
答案 0 :(得分:0)
由于我没有从这里得到答案,我继续asked in the Nearley GitHub repo。
根据维护者的说法,nearley-unparse
当前无法生成与正则表达式匹配的字符串。也没有任何计划添加该功能,因为它本身就是一个项目。
以下是他们的完整回复:
你好!感谢您首先发布StackOverflow问题, 对不起,没有人能够帮助那里: - )
这是unparser的限制:它不知道如何生成 随机字符串满足正则表达式,我们也不打算这样做(那 本身就是一个项目!)。
你的语法看起来很好,简短一瞥;如果你测试它 nearley-test,希望你会发现你得到了解析树 期望的。