JavaScript的Yacc/Jay语法文件?

12
4个回答

2
我认为你需要自己构建它,但是一路上有提示。
完整的JavaScript语法应该可以在某个地方找到;快速搜索给我展示了一个JavaScript LL(1) Grammar(JavaScript LL(1)语法)。 (还有一个JavaScript的BNF模式在RPA Toolkit: Parse JavaScript中。)
由于你只询问解析器,我假设你已经有了词法分析器。
将该语法转换为Yacc文件看起来并不那么可怕。例如,这里有一个C grammar for Yacc(用于Yacc的C语法)作为示例。

2
你真的做到了吗?构建一个对于真实语言来说完全可用的解析器比看上去更困难。人们似乎认为把语法乱凑一下就能运行,祝你好运(是的,我已经为几种完整的语言做到了这一点)。 - Ira Baxter

0

我使用COCO/R为C#编写解析器http://ssw.jku.at/coco/,因为它可以直接使用而无需配置。但是,它与Yacc、Flex、Bison等不兼容。然而,它的语法更简单。此外,COCO/R支持一些不同于C#的.NET语言。 ANTLR适用于C#,具有更多功能,但需要花费更多时间阅读文档和设置工具。


0
为什么不尝试使用antlr - 它似乎有一个专门用于ecmascript的语法:

http://www.antlr.org/grammar/list

Antlr 显然也有 C# 运行时,尽管我只从 Java 中使用过它。


0

你真的需要从头开始实现吗?一些类库,如Jint,可以更快、更安全地完成同样的工作。Jint是.NET中的JavaScript解释器——我个人认可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接