antlr4相关内容
我看了这些,它们似乎没有解决问题: Is there a way to know which alternative rule ANTLR parser is currently in? How to know which alternative rule ANTLR parser is currently in during visit 例如: oC_ListOperat
..
文件Hello.g4: grammar Hello; entry : headword EOF ; headword : LETTER (LETTER)* ; LETTER : [a-zA-Z] ; 上述语法与abc.txt: 文件中的输入apple匹配 apple C:Codeantlrhello>antlr4 Hello.g4 -encoding u
..
我需要创建的语法基于以下内容: 命令行以斜杠开头 命令行可以使用连字符作为最后一个字符 (不包括空格) 对于某些命令,我想解析它们的参数 对于其他命令,我对其参数不感兴趣 使用以下(简化的)词法分析器几乎可以很好地工作 lexer grammar T1Lexer; NewLine : [ ]+ -> skip ; CommandStart : '/' -> pu
..
考虑以下词法分析器规则: TRUE : 'true' | 'TRUE' | '1'; 我希望将所有TRUE令牌转换为‘true’。 我使用antlr4ts。我该怎么做? 推荐答案 这只能通过使用特定于目标的代码来完成。例如,在Java中,它将如下所示: TRUE : ( 'true' | 'TRUE' | '1' ) {setText("true");} ;
..
所以我尝试解析以下文本文件: 555 5555 使用此语法: grammar PEntry; entry : Tab Number Nl; Tab : ' '; Nl : ' '; Number : Num RSp Num RSp; //Name : (RWord RSp)+; fragment RWor
..
如果我们查看bash源代码,特别是yacc语法,我们可以看到所有重定向都是这样定义的: redirection : GREATER WORD | LESS WORD | NUMBER GREATER WORD | NUMBER LESS WORD | REDIR_WORD GREATER WO
..
在我的Java程序中,我分析了许多代码行,并使用了: ParseTreeWalker walker = new ParseTreeWalker (); if (!(lexerErrorListener.hasError() || parserErrorListener.hasError ())) walker.walk (listener, tree); else lin
..
我正在将ANTLR3语法转换为ANTLR4语法,这意味着我必须删除所有树重写规则,因为它们现在必须在代码中实现,并且通过使用自定义Visitor访问ParseTree可以生成AST。 旧的语法重写了规则,防止了歧义,并自动生成了想要的树。我在网上找不到任何有用的资源来说明如何使用访问者/侦听器范例来实现这一点。 AVisitor需要用作所有visit*函数的返回类型的类型。如果我需要生成A
..
我有一个带有 Antlr3 语法文件的 C# 解决方案,我正在尝试升级到 Anltr4.事实证明,语法是最简单的部分(它变得更好,而且大小只有三分之一!).生成解析器原来是棘手的部分. 在旧解决方案中,我只是在语法文件更改时运行 AntlrWorks 来更新词法分析器和解析器 .cs 文件.词法分析器和解析器与语法直接包含在同一个项目中,因此解析器周围的框架可以直接使用它们. 对于 C
..
我正在尝试为简单的 antlr4 语法编写访问者 - 我正在改编书中的以下示例: * 目录导览* 示例:LabeledExpr.g4、EvalVisitor.java、Calc.java 基于java代码,我编写了以下go代码: 包主进口 (“操作系统"“./解析器"“github.com/antlr/antlr4/runtime/Go/antlr")类型 evalVisitor 结构 {*
..
我是一个完整的 ANTLR4 新手,所以请原谅我的无知.我遇到了这个演示文稿,其中定义了一个非常简单的算术表达式语法.看起来像: 语法表达;开始:expr;expr : left=expr op=('*'|'/') right=expr #opExpr|left=expr op=('+'|'-') right=expr #opExpr|原子=INT #atomExpr;INT : ('0'..'
..
什么是 ANTLR 中的语义谓词? 解决方案 ANTLR 4 对于 ANTLR 4 中的谓词,请查看这些堆栈溢出问答: Antlr4 中语义谓词的语法 ANTLR4 中的语义谓词? ANTLR 3 语义谓词是一种在语法上强制执行额外(语义)规则的方法使用纯代码操作. 语义谓词有3种类型: 验证语义谓词; 门控语义谓词; 消除歧义语义谓词. 示
..
我发现了一个 ANTLRv4 Python3 语法,但它生成了一个解析树,它通常有许多无用的节点. 我正在寻找一个已知的包来从该解析树中获取 Python AST. 这样的东西存在吗? 编辑:关于使用 Python ast 包的说明:我的项目使用 Java,我需要解析 Python 文件. 编辑 2:“AST"是指 http://docs.python.org/2/libr
..
我想知道我们是否可以使用 Antlr 版本 4 构建 AST.我找不到关于使用 antlr4 构建它的任何参考.一个 SO 答案说使用仅生成解析树的 antlr4 会很容易,但我的问题是效率怎么样? 它迫使我们爬取整个解析树而不是抽象语法树,这不是遍历整个树并使用访问者执行任务的有效方法. 解决方案 我想首先指出两个关键事项: 效率不仅仅是简单的执行速度.它还可以应用于内存开销
..
我有一个构建抽象语法树的 ANTLR3 语法.我正在考虑升级到 ANTLR4.但是,ANTLR4 似乎只构建解析树,而不是抽象语法树.例如,不再识别 output=AST 选项.此外“AST"和“抽象语法"都没有出现在“权威ANTLR4参考"的文本中. 我想知道我是否遗漏了什么. 我的应用程序目前知道如何抓取 ANTLR3 生成的 AST.更改它以处理解析树并非不可能,但需要一些工作.
..
我一直在搜索有关此内容的大量内容,但找不到任何真正可以帮助我构建 AST 的有用信息.我已经知道 ANTLR4 不像以前的 ANTLR3 那样构建 AST.每个人都说:“嘿,使用访问者!",但我找不到任何示例或更详细的说明来说明如何执行此操作... 我的语法必须像 C,但每个命令都是用葡萄牙语(葡萄牙语编程语言)编写的.我可以使用 ANTLR4 轻松生成解析树.我的问题是:我现在需要做什么来
..
我正在为学校项目创建一种简单的编程语言.我正在使用 ANTLR 4 从我的语法中生成一个词法分析器和一个解析器.到目前为止,我一直在使用 ANTLR 的侦听器模式来应用编程语言的实际功能. 现在我想实现 if/else 语句,但我不确定在使用侦听器模式时是否可以实现这些语句,因为 ANTLR 决定在使用侦听器时以何种顺序遍历解析树,我想实现的 if/else 语句将需要根据语句中的哪个条件被
..
我一直在搜索有关此内容的大量内容,但找不到任何真正可以帮助我构建 AST 的有用信息.我已经知道 ANTLR4 不像以前的 ANTLR3 那样构建 AST.每个人都说:“嘿,使用访问者!",但我找不到任何示例或更详细的说明来说明如何执行此操作... 我的语法必须像 C,但每个命令都是用葡萄牙语(葡萄牙语编程语言)编写的.我可以使用 ANTLR4 轻松生成解析树.我的问题是:我现在需要做什么来
..
我想开始使用 ANTLR,但在花了几个小时查看 antlr.org 站点,我仍然无法清楚地了解 Java 过程的语法. 有没有一些简单的例子,比如用 ANTLR 实现的四运算计算器,通过解析器定义,一直到 Java 源代码? 解决方案 注意:此答案适用于 ANTLR3!如果您正在寻找 ANTLR4 示例,那么这个 Q&A 演示了如何使用 ANTLR4 创建简单的表达式解析器和评估器.
..
我在 DataBindingMapperImpl.java 中收到一个特定数据绑定的错误,导致在构建项目时出现以下错误. 用于代码生成的 ANTLR 工具版本 4.5.3 与当前运行时版本 4.7.1 不匹配. 用于解析器编译的 ANTLR 运行时版本 4.5.3 与当前运行时版本 4.7.1 不匹配 用于代码生成的 ANTLR 工具版本 4.5.3 与当前运行时版本 4.7.1 不
..