如何获取编译器的语法树?我们被分配了一个需要访问TypeScript语法树的项目(它是开源的,因此我们可以看到整个编译器的代码)。但是我们不知道如何获取它。我已经在互联网上阅读了一些文章,但我无法找到一个用户友好或用通俗易懂的语言写的文章。我相信有些人提到了我们需要做的第一步是找到解析步骤。但...
我正在编写一个GLR解析器生成器,希望能够得到一些关于该算法的资源建议,包括互联网和纸质书籍(对于不熟悉极客术语的人来说是指书籍)。 我知道Bison可以生成GLR解析器,并且由于它是根据GPL发布的,我可以查看其代码,但最好还是有完整的算法描述。 那么,有没有人知道哪里有好的资源可以供我...
我被分配了一个任务,需要为一个简单的类C语言创建一个解析器。我可以使用任何编程语言和工具来创建解析器,但是我同时也在学习Python,所以它是我的首选。 我的解析器必须满足一些限制。首先,它必须能够读取包含以下信息的文本文件:kind1 : spelling1 kind2 : spelling...
我刚接触到一个非常好的工具Xtext,可以创建DSL以及用于编辑的IDE。在网上做了一些搜索,发现有人说它不能提供ANTLR的所有功能。我正在使用ANTLR作为我的解析器生成器。 我甚至不确定我需要使用ANTLR的哪些功能来编写完整的语言解析器,但ANTLR已经存在了很长时间,可能支持比Xt...
我看到有些说法声称一般情况下,优化的PEG解析器无法比优化的LALR(1)或LL(k)解析器更快。(当然,解析性能取决于特定语法。) 我想知道是否存在任何PEG解析器的特定限制,无论是普遍有效还是针对某些PEG语法子集,这些限制会使它们在性能方面劣于LALR(1)或LL(k)。 尤其是,我...
我注意到在创建函数式语言的LL分析器方面缺乏选项。我一直在寻找理想的解决方案,即使用类似ANTLR的LL(*)语法(稍微修改一下)生成Haskell分析器。然而,令人惊讶的是,我找到的每一个函数式语言目标的分析器生成器都是某种LR分析器。 我想将我正在开发的语言中的解析器从ANTLR转换为自...
我想写一个真值表生成器作为个人项目。 这里有几个基于网页的在线工具 这里 和 这里。 (现有真值表生成器的示例截图) 我有以下问题: 如何解析诸如: ((P => Q) & (Q => R)) => (P => R) 这样的表达式? 我应该使用像 ANTLr 或 YACC ...