antlr4相关内容

ANTLR4处理所有数据的续订

我需要创建的语法基于以下内容: 命令行以斜杠开头 命令行可以使用连字符作为最后一个字符 (不包括空格) 对于某些命令,我想解析它们的参数 对于其他命令,我对其参数不感兴趣 使用以下(简化的)词法分析器几乎可以很好地工作 lexer grammar T1Lexer; NewLine : [ ]+ -> skip ; CommandStart : '/' -> pu ..
发布时间:2022-04-17 23:59:21 其他开发

ANTLR4-更改令牌文本

考虑以下词法分析器规则: TRUE : 'true' | 'TRUE' | '1'; 我希望将所有TRUE令牌转换为‘true’。 我使用antlr4ts。我该怎么做? 推荐答案 这只能通过使用特定于目标的代码来完成。例如,在Java中,它将如下所示: TRUE : ( 'true' | 'TRUE' | '1' ) {setText("true");} ; ..
发布时间:2022-04-17 23:57:28 其他开发

使用ANTLR4生成的访问器生成AST

我正在将ANTLR3语法转换为ANTLR4语法,这意味着我必须删除所有树重写规则,因为它们现在必须在代码中实现,并且通过使用自定义Visitor访问ParseTree可以生成AST。 旧的语法重写了规则,防止了歧义,并自动生成了想要的树。我在网上找不到任何有用的资源来说明如何使用访问者/侦听器范例来实现这一点。 AVisitor需要用作所有visit*函数的返回类型的类型。如果我需要生成A ..
发布时间:2022-04-12 19:05:11 其他开发

Antlr4 C# 目标和生成文件的输出路径

我有一个带有 Antlr3 语法文件的 C# 解决方案,我正在尝试升级到 Anltr4.事实证明,语法是最简单的部分(它变得更好,而且大小只有三分之一!).生成解析器原来是棘手的部分. 在旧解决方案中,我只是在语法文件更改时运行 AntlrWorks 来更新词法分析器和解析器 .cs 文件.词法分析器和解析器与语法直接包含在同一个项目中,因此解析器周围的框架可以直接使用它们. 对于 C ..
发布时间:2022-01-08 15:49:48 C#/.NET

如何编写一个 antlr4 访问者

我正在尝试为简单的 antlr4 语法编写访问者 - 我正在改编书中的以下示例: * 目录导览* 示例:LabeledExpr.g4、EvalVisitor.java、Calc.java 基于java代码,我编写了以下go代码: 包主进口 (“操作系统"“./解析器"“github.com/antlr/antlr4/runtime/Go/antlr")类型 evalVisitor 结构 {* ..
发布时间:2021-11-28 18:07:34 其他开发

ANTLR4 访问者模式简单算术示例

我是一个完整的 ANTLR4 新手,所以请原谅我的无知.我遇到了这个演示文稿,其中定义了一个非常简单的算术表达式语法.看起来像: 语法表达;开始:expr;expr : left=expr op=('*'|'/') right=expr #opExpr|left=expr op=('+'|'-') right=expr #opExpr|原子=INT #atomExpr;INT : ('0'..' ..
发布时间:2021-11-28 18:05:42 Java开发

什么是 ANTLR 中的“语义谓词"?

什么是 ANTLR 中的语义谓词? 解决方案 ANTLR 4 对于 ANTLR 4 中的谓词,请查看这些堆栈溢出问答: Antlr4 中语义谓词的语法 ANTLR4 中的语义谓词? ANTLR 3 语义谓词是一种在语法上强制执行额外(语义)规则的方法使用纯代码操作. 语义谓词有3种类型: 验证语义谓词; 门控语义谓词; 消除歧义语义谓词. 示 ..
发布时间:2021-11-28 18:04:59 其他开发

来自 ANTLR 解析树的 Python AST?

我发现了一个 ANTLRv4 Python3 语法,但它生成了一个解析树,它通常有许多无用的节点. 我正在寻找一个已知的包来从该解析树中获取 Python AST. 这样的东西存在吗? 编辑:关于使用 Python ast 包的说明:我的项目使用 Java,我需要解析 Python 文件. 编辑 2:“AST"是指 http://docs.python.org/2/libr ..
发布时间:2021-11-26 18:01:37 Python

在 antlr4 中构建 AST

我想知道我们是否可以使用 Antlr 版本 4 构建 AST.我找不到关于使用 antlr4 构建它的任何参考.一个 SO 答案说使用仅生成解析树的 antlr4 会很容易,但我的问题是效率怎么样? 它迫使我们爬取整个解析树而不是抽象语法树,这不是遍历整个树并使用访问者执行任务的有效方法. 解决方案 我想首先指出两个关键事项: 效率不仅仅是简单的执行速度.它还可以应用于内存开销 ..
发布时间:2021-11-26 17:43:07 其他开发

如何使用 ANTLR4 构建 AST?

我有一个构建抽象语法树的 ANTLR3 语法.我正在考虑升级到 ANTLR4.但是,ANTLR4 似乎只构建解析树,而不是抽象语法树.例如,不再识别 output=AST 选项.此外“AST"和“抽象语法"都没有出现在“权威ANTLR4参考"的文本中. 我想知道我是否遗漏了什么. 我的应用程序目前知道如何抓取 ANTLR3 生成的 AST.更改它以处理解析树并非不可能,但需要一些工作. ..
发布时间:2021-11-26 17:38:30 其他开发

如何使用 ANTLR4 创建 AST?

我一直在搜索有关此内容的大量内容,但找不到任何真正可以帮助我构建 AST 的有用信息.我已经知道 ANTLR4 不像以前的 ANTLR3 那样构建 AST.每个人都说:“嘿,使用访问者!",但我找不到任何示例或更详细的说明来说明如何执行此操作... 我的语法必须像 C,但每个命令都是用葡萄牙语(葡萄牙语编程语言)编写的.我可以使用 ANTLR4 轻松生成解析树.我的问题是:我现在需要做什么来 ..

ANTLR 中的 if/else 语句使用监听器

我正在为学校项目创建一种简单的编程语言.我正在使用 ANTLR 4 从我的语法中生成一个词法分析器和一个解析器.到目前为止,我一直在使用 ANTLR 的侦听器模式来应用编程语言的实际功能. 现在我想实现 if/else 语句,但我不确定在使用侦听器模式时是否可以实现这些语句,因为 ANTLR 决定在使用侦听器时以何种顺序遍历解析树,我想实现的 if/else 语句将需要根据语句中的哪个条件被 ..
发布时间:2021-11-25 16:05:28 Java开发

如何使用 ANTLR4 创建 AST?

我一直在搜索有关此内容的大量内容,但找不到任何真正可以帮助我构建 AST 的有用信息.我已经知道 ANTLR4 不像以前的 ANTLR3 那样构建 AST.每个人都说:“嘿,使用访问者!",但我找不到任何示例或更详细的说明来说明如何执行此操作... 我的语法必须像 C,但每个命令都是用葡萄牙语(葡萄牙语编程语言)编写的.我可以使用 ANTLR4 轻松生成解析树.我的问题是:我现在需要做什么来 ..

ANTLR:有简单的例子吗?

我想开始使用 ANTLR,但在花了几个小时查看 antlr.org 站点,我仍然无法清楚地了解 Java 过程的语法. 有没有一些简单的例子,比如用 ANTLR 实现的四运算计算器,通过解析器定义,一直到 Java 源代码? 解决方案 注意:此答案适用于 ANTLR3!如果您正在寻找 ANTLR4 示例,那么这个 Q&A 演示了如何使用 ANTLR4 创建简单的表达式解析器和评估器. ..
发布时间:2021-11-25 13:25:37 Java开发

用于代码生成的 ANTLR 工具版本 4.5.3 与当前运行时版本 4.7.1 不匹配

我在 DataBindingMapperImpl.java 中收到一个特定数据绑定的错误,导致在构建项目时出现以下错误. 用于代码生成的 ANTLR 工具版本 4.5.3 与当前运行时版本 4.7.1 不匹配. 用于解析器编译的 ANTLR 运行时版本 4.5.3 与当前运行时版本 4.7.1 不匹配 用于代码生成的 ANTLR 工具版本 4.5.3 与当前运行时版本 4.7.1 不 ..
发布时间:2021-11-21 20:30:52 移动开发