antlrworks

    5热度

    1回答

    我有一个antlr词法分析规则的一个奇怪的副作用,我创建了一个(几乎)最小的工作示例来演示它。 在这个例子中,我想匹配字符串[0..1]例如。但是当我调试语法时,到达解析器的令牌流只包含[..1]。第一个整数,无论​​它包含多少个数字总是被消耗,我不知道如何发生。如果我删除FLOAT规则,一切都很好,所以我猜这个错误在某个地方。但由于它不应该匹配[0..1]中的任何内容,所以我很困惑。 我很乐意为

    2热度

    2回答

    我正在使用^和!运营商分别设置根节点和不包含在AST中。但是,ANTLRWorks生成的树没有什么区别。所以我不确定我的语法是否不正确,或者ANTLRWorks是不是创建一个正确的树。 这里是我的语法的一个片段 expr : '('! logExpr ')'!; 这些括号不应该被包含在AST。 addExpr : multExpr ((PLUS|MINUS)^ multExpr)*;

    3热度

    1回答

    对于question和@BartKiers建议的语法(谢谢!),我增加了options块指定输出为 options{ language=Java; output=AST; ASTLabelType=CommonTree; } 但是,我不能图了解如何访问输出即AST。我需要遍历树并处理输入中指定的每个操作。 使用您的示例here,我试图实现返回值的规则。但是,我遇到了以下错误: rela

    0热度

    2回答

    当调试在ANTLRWorks 3.4它给我folloing错误语法, javax.swing.text.BadLocationException: Position not represented by view 语法其中上述错误给出在下面列出。 grammar CMinusMinus; program : (vardeclaration | fundeclaration)* EOF

    1热度

    1回答

    ,如果我尝试在解释器中运行“___sad”以下语法 grammar identTest; options { language = Java; output=AST; } goal: identifier; fragment Letter: (('a'..'z') | ('A'..'Z')); fragment Digit : '0' .. '9'; i

    0热度

    1回答

    我尝试用ANTLR制作一个具有以下特征的文法。 它可以解析像的标识符: foo > bar > 67 其中foo>栏是标识符,因为如果>后跟一个字母它包含识别符和它的其他操作者相比更大。 我应该解析之类的东西 ((a = 1) AND (b = 2)) OR (c = 3) ,其中()是必要的。 我对这个话题和ANTLR真的很陌生,希望有人能帮忙。 我目前有这个语法 grammar tes

    1热度

    1回答

    我试图建立一个AST使用ANTLR condition_in : column_identifier ('NOT')? 'IN' (sql_element_list | LPAREN select_stmt RPAREN) ; 对于上述如何建立在NOT IN或IN取决于输入根树下面的语法?或者有没有更好的办法? 而且像类型的字典,我怎么构建一个AST,树MAP为根本,为每个

    0热度

    1回答

    我正在使用ANTLR 3,我有一个问题是如何在输入中发生任何错误时如何找到下一个预期的标记。我试图覆盖解析器的getErrorMessage(RecognitionException e,String [] tokenNames),我可以得到错误,但我无法获得下一个预期的标记。如果有人可以帮忙。 在此先感谢。

    2热度

    2回答

    我创建了解析数学表达式的ANTLR语法和用于评估它们的第二个语法。正如我认为构建一个AST然后重新解析以实际评估它只是一种操作,我想重构我的语法以产生表示表达式的“Term”对象的层次结构,包括执行该特定的逻辑操作。根术语对象然后可以简单地评估为具体的结果。 我不得不重写很多我的语法,最后摆脱了最后的错误信息。不幸的是,现在ANTLR似乎陷入了无限循环。 有人可以帮我解决这个问题吗?我认为语法对于

    2热度

    1回答

    我有一个问题,建立一个语法,它能够解析Python 3的AST转储格式,并将其转换为AST格式,我更容易玩弄。我决定编写一个ANTLR语法来完成这项工作,但我在处理关键字块(但由于某些原因只能使用关键字块)时遇到问题。余中分离出来的关键字语法,如下所示: grammar kwds; options {output=AST;} keywords: 'keywords=['((', '?)key