28得票3回答
如何在ParserVisitor中获取行号?

我正在尝试在我的ParserVisitor(访问antlr生成的语法树)中获取行号以获得更具体的错误信息。然而,在这个类中我只有上下文ctx,我可以使用ctx.getText()这样的方式,但无法使用getLine()。有没有方法可以做到这一点? ctx.getPayload() 能在这里使...

10得票5回答
为简单的数学运算生成语法树

我正在尝试生成一个语法树,用于给定包含简单数学运算符(+,-,*,/和括号)的字符串。给定字符串为“1 + 2 * 3”: 它应该返回类似于这样的数组: ["+", [1, ["*", [2,3] ] ] ] 我写了一个函数,可以将"1 + 2 * 3"转换为[...

8得票2回答
ANTLR v4,JavaLexer和JavaParser返回null作为解析树

我正在使用antlr v4提取Java程序的解析树以进行其他用途。我已经从这个示例开始:ANTLR v4访问者示例 我已经测试了给定链接上的步骤以检查其是否有效,并且一切都顺利进行。 java Run a = 1+2 b = a^2 c = a+b*(a-1) a+b+c ^Z Resul...

8得票4回答
Javascript语法测试案例

我正在创建一个文本编辑器,刚刚编写了高亮算法,使每个语法出现在不同的颜色中,并使用正确的解析树在正确的位置呈现。 我想知道是否有人可以提供测试用例或一系列测试用例的位置,以确保没有问题。测试案例应涵盖Web上使用的所有JavaScript语法,包括边缘情况(即包括语法,如throw,尽管很少...

15得票2回答
在C++中表示多次经过的抽象语法树(AST)?

我目前在探索设计一个编译器,该编译器将其AST转换为多个阶段。这个想法是从解析树开始,每个阶段都会转换树,直到生成的AST被优化并且包含树中每个节点所需的所有信息,以便生成中间代码(在本例中为LLVM IR)。对树进行一次遍历可能会显着改变其结构,例如通过operator precedence...

8得票2回答
从语法中提取标记

我今年一直在使用Perl6解决Advent of Code问题,试图使用语法来解析第3天的输入。 给出这种形式的输入:#1 @ 1,3: 4x4和我创建的这个语法: grammar Claim { token TOP { '#' <id> \s* '@' \s* &...

18得票1回答
在斯坦福的解析树表示中,标签SBAR是什么意思?

当将原始句子 "After she ate the cake, Emma visited Tony in his room." 输入到Online Stanford Parser 工具中时,它会输出以下语法树表示形式:(ROOT (S (SBAR (IN After) ...

8得票1回答
使用递归下降分析器既能验证语法又能同时构建解析树,这种做法可行吗?

在使用递归下降解析器检查数据是否符合语法的同时,生成解析树是否可能? 如果可以,我应该使用什么方法来构建解析树呢? 谢谢,Boda Cydo。 注意:我是新手。 (已在SO上提出了几个问题,并且我正在变得更加熟练。)

7得票2回答
TurboParser 的依存分析输出是什么意思?

我一直在尝试使用CMU's TurboParser生成的依赖解析树。它运行无误。然而,存在非常少的文档资料。我需要精确地理解他们的解析器输出。例如,句子“I solved the problem with statistics.”会生成以下输出: 1 I _ PR...

7得票1回答
解析树中的一元负号和二元负号

我正在创建一个解析树,其中包含类似于 3 - 4 * 8 或 8 * -5 或 -(10 * 1) 的表达式。我需要一种方法来区分一元和二元减号。按照我的语法规则,二元减号先被执行,但我考虑改变这一点,并添加一个标志变量来保存最后一个变量。 例如:如果是 5 - 6 那...