|
|
1
7
我建议你 ANTLR 作为解析器生成器。它的功能非常完整,支持C语言以及许多其他目标语言。 对于IDES,有一个Eclipse插件叫做 ANTLR IDE 一个独立的IDE ANTLRWorks 两种方法都很有效。 但是,请注意,antlr使用的是ll(*)算法而不是lr(k)算法。尽管如此,这是非常好的和AntlWorks可以做大部分必要的左因子分解。 |
|
2
5
当“使用一种新语言”并试图正确地获取一个引用BNF时,您可能不希望将引用语法偏向于任何特定的解析器生成器。为bison(lalr(1))或antlr(ll*)编写测试语法有一个问题,那就是您要做到这一点。您也不想被挂在“我如何以使BNF规则真正解析的方式对其进行编码”上,这大概是因为您对语法感兴趣,而不是对解析器生成器感兴趣。 所以我建议使用一个完整的上下文无关的解析器生成器。这将使您以最自然的形式尽可能地编写语法。这可能意味着放弃“文本编辑器”、“编辑器测试窗口”…但是在我的经验中(检查我的堆栈溢出bio),使用一个上下文无关的解析器生成器完全压倒了这些细节。编辑保存解析不需要太多的工作。 我知道Bison有一个GLR选项,可以提供上下文无关的解析器生成,并且是开放源代码的,因此它可能只用于测试语法。 我们的 DMS Software Reengineering Toolkit 是商业化的,并且还提供了一个GLR解析器,它已经被用于实现一些30个+完整的语言,包括C、C++、COBOL等多种方言,以及更现代的语言,如Python、Ruby、PHP、……。 DMS和BISON的区别在于,DMS的设计支持全语言分析器/转换器构造的各个方面(Unicode词法分析、带错误报告和恢复的GLR解析、自动树构造、符号表构造、控制和数据流分析、转换、预打印…)。如果你想认真地评价你的“新朗格”,你最终需要做所有这些事情,而野牛只是这条路的一小步。DMS将带你走完全程。 |
|
|
3
1
也许你会发现这个工具很有用: Gold Parser Builder 不幸的是,它只是一个窗口。 |
|
|
4
0
看看BNFC,它可以从标记的BNF生成工作代码和MaFo文件,用于许多目标语言,如Haskell、OCaml、C、C++和Java。您可以得到一个漂亮的打印机、抽象语法检查器/打印机、自己的编译器或解释器的框架代码以及后记语言文档。 |
|
dallin · 数组中的逗号运算符是否有名称? 11 年前 |