ANTLR 是否允许在 locals 子句中定义多个变量?

2024-01-04

在解析器语法中,我想在中定义几个变量locals clause.

一个简化的示例如下所示:

body
locals [
    Map<String, String> bodyContent = new HashMap<String, String>();
    long counter = 0;
]
            :   BODY_CAPTION NEWLINE line ;
line        :   key='MyKey' TAB value='MyValue' NEWLINE
                {
                    $body::bodyContent.put($key.text, $value.text);
                    $body::counter++;
                } ;

这给出了错误:

unknown attribute 'counter' for rule 'body' in '$body::counter'

如果我交换中的行locals像这样的条款

locals [
    long counter = 0;
    Map<String, String> bodyContent = new HashMap<String, String>();
]

它给出了错误:

unknown attribute 'bodyContent' for rule 'body' in '$body::bodyContent'

显然,ANTLR 只识别第一个局部变量定义locals clause.

有没有办法在下面定义多个局部变量locals?


是的,但它们像参数列表一样以逗号分隔returns clause.

locals [
    Map<String, String> bodyContent = new HashMap<String, String>(),
    long counter = 0
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ANTLR 是否允许在 locals 子句中定义多个变量? 的相关文章

  • 如何获得有关 antlr4-maven-plugin 的帮助

    antlr4 maven plugin 似乎不是 Antlr4 网站上的文档 这可能不会给你带来任何好处 就像对我一样 尝试这个 mvn org antlr antlr4 maven plugin help Ddetail true 生产
  • ANTLR4:如何读取字符串中的双引号转义双引号?

    在ANTLR v4中 我们如何像VBA中那样解析这种带有双引号转义双引号的字符串 对于文本 some string with john doe in it 目标是识别字符串 some string with john doe in it 是
  • 解析字符串antlr

    我将字符串作为解析器规则而不是词法分析器 因为字符串可能包含带有表达式的转义符 例如 The variable is variable string character character escapeSequence escapeSequ
  • 如何消除带括号的表达式中的子选择的歧义?

    我有以下表达式符号 expr OpenParen expr Comma expr Comma CloseParen parenExpr OpenParen simpleSelect CloseParen subSelectExpr 不幸的是
  • ANTLR4 解析树简化

    有没有办法让 ANTLR4 自动删除生成的解析树中的冗余节点 更具体地说 我一直在尝试 GLSL 的语法 由于自动处理运算符优先级所需的规则转发 您最终会在解析树中得到长线性 表达式 序列 大多数生成的树节点只是 转发到下一个优先级 因此不
  • 如何在ANTLR4中实现错误处理

    我有以下语法用于解析应用于图形的一阶逻辑公式 grammar Graph PARSER RULES input formula EOF formula TRUE FALSE formula AND formula formula OR fo
  • 否定内部词法分析器和解析器规则

    否定元字符如何 在 ANTLR 的词法分析器和解析器规则中使用吗 否定可以发生在内部词法分析器和解析器规则 https stackoverflow com questions 4297770 practical difference bet
  • 修改表达式,由 Antlr 生成?

    我想用 Antlr4 读取表达式并对它们执行一些修改 例如 如果语法是算术 我会修改表达式 表示 2 3 1 with 2 4 然后与 8 这就是 计算 或 简化 为了执行此操作 我将创建一些树结构 第一个想法是使用由 Antlr 创建的完
  • 在侦听器中使用 ParserRuleContext 遍历令牌 - ANTLR4

    在使用侦听器迭代令牌时 我想知道如何使用 ParserRuleContext 来查看令牌流中的下一个令牌或接下来的几个令牌 在下面的代码中 我试图查看当前标记之后直到 EOF 的所有标记 Override public void enter
  • 在antlr中获取纯文本而不是令牌

    我正在尝试使用 antlr 创建一个解析器 我的语法如下 code codeBlock EOF codeBlock text tag1Ops tag2Ops tag1Ops START 1 TAG ID END 2 TAG tag2Ops
  • antlr4:如何知道在给定上下文的情况下选择了哪个替代方案

    假设有一个关于 类型 的规则 它可以是预定义类型 由 IDENTIFIER 引用 或 typeDescriptor type IDENTIFIER typeDescriptor 在我的程序中 我有一个 typeContext ctx 的实例
  • ANTLR4 语法中第一个解析器规则的返回声明出现问题

    我在用returns对于我的解析器规则 它适用于除第一个之外的所有解析器规则 如果我的语法中的第一个解析器规则使用returns声明 ANTLR4 抱怨如下 匹配规则时期待 ARG ACTION 如果我在上面添加另一个不使用 返回 的解析器
  • ANTLR4 中是否有相当于“片段”标记的解析器?

    有没有办法告诉 ANTLR4 内联解析器规则 拥有这样的功能似乎是合理的 读完关于 ANTLR 的书后 权威的 ANTLR 4 参考 我还没有发现这种可能性 但是这四年可能已经发生了变化 既然这本书已经出版了 所以我想最好在这里问一下 考虑
  • ANTLR 4 - 树模式匹配

    我试图理解 ANTLR 4 中的解析树匹配 所以为此 我有以下java代码 package sampleCodes public class fruits public static void main String args int a
  • python 2.7中没有名为antlr4的模块

    我想将 ANTLR4 与 Python 2 7 一起使用 为此我执行了以下操作 我安装了这个包antlr4 4 6 1在 Arch Linux 上sudo pacman S antlr4 我写了一个MyGrammar g4文件并成功生成了词
  • ANTLR 语法也可以识别数字键和整数

    我正在尝试创建一个 ANTLR 语法来解析可选地具有重复计数的键序列 例如 a b c r5 表示 重复键 a b 和 c 五次 我有语法工作KEYS a z A Z 但是当我尝试添加数字键时KEYS a z A Z 0 9 输入表达式如
  • ANTLR4性能问题

    关于 ANTL4 解析的性能已经有一些讨论 例如 Antlr 4 解析大型 c 文件需要很长时间 https stackoverflow com questions 19311864 antlr 4 parsing large c file
  • 在 ANTLR4 中如何检查行的第一个字符是否为“*”?

    我正在尝试为一种相对简单但特殊的语言编写一个解析器 简单地说 规则之一是注释行用星号表示only如果该星号是该行的第一个字符 我如何在 ANTLR4 中正式化这样的规则 我考虑过使用 START LINE COMMENT n n gt sk
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • ANTLR4 词法分析器无法解决语法顺序中的歧义

    使用 ANTLR 4 2 我尝试对此测试数据进行非常简单的解析 RRV0 ABC 使用最小语法 grammar Tiny thing RRV N HASH ID RRV RRV N 0 9 HASH ID a zA Z0 9 WS t r

随机推荐

  • JDBC SQL 别名不起作用

    我正在尝试在我的 java web 应用程序中运行以下查询 SELECT platform AS Platform FROM edb cases 该网络应用程序工作正常并且能够执行所有查询 但是每当我使用别名 通过 AS 时 生成的数据集都
  • Chain React setState 回调

    我需要按顺序加载三个不同的 json 文件并使用 fetch 原因是我正在使用 nextjs 导出 并且我需要动态读取这些文件 所以我在需要时获取它们 即使在出口 第一个文件包含用于创建第二个文件的 url 的数据 依此类推 因此每次获取都
  • 如何使 $(document).ready() 函数全局可用?

    我这里有一个有趣的问题 可能听起来很愚蠢 但就是这样 使用 jQuery 的 Ready 函数 我定义了一些函数 如下所示 function var function1 function data do something var func
  • javascript_include_tag Rails 4 在生产中生成“/javascripts/”而不是“/assets”

    我有一个 Rails 4 应用程序 在头脑中 在开发中 呈现以下 HTML 并加载 Modernizr 在生产中 呈现以下 HTML modernizr 是not已加载 404 未找到 在生产中 assets modernizr j
  • 将参数包转换为向量

    我试图理解 C 中的可变参数模板 但我迷失在以下示例中 想象一个函数富 T T T T 它采用相同类型 T 的可变数量参数并将它们转换为向量 知道如何实施吗 它应该像这样工作 foo
  • 副本上的 VBA 事件触发器?

    VBA 中是否有一种方法 当我在 Excel 中复制单元格的值时 它会触发我的函数 或者有什么解决方法吗 或者我可以阅读按键并听 Ctrl C 吗 或者VBA可以读取复制文本的内容吗 原因是 我将一些条目从 Excel 工作表复制到另一个程
  • 如何使 REDIS 中的映射键过期?

    我使用redis来存储用户信息 我在 user 键下设置了许多用户的信息 如下所示 hset user userid1234 如何使用户中的密钥 userid1234 在几秒钟后过期 有一些命令如 expire 只能设置用户的超时时间 但我
  • 读取两个关键字之间的行

    如果我必须在两个关键字之间进行阅读 有人可以建议该怎么做吗 System Power 1 1 2 1 8 2 System Terminate 在这种情况下 答案是 1 1 2 1 8 2 我尝试使用 awk 像 awk 0 System
  • php artisan migrate 抛出 [PDO 异常] 找不到驱动程序 - 使用 Laravel

    我在安装 Laravel 时遇到了不好的经历 然而 我能够做到这一点并进入下一个阶段 我使用了生成器并创建了我的迁移 但是当我输入最后一个命令时 php artisan migrate 它抛出 PDOException 找不到驱动程序 my
  • R:使用地图工具绘制邻国

    假设我正在使用地图工具在世界地图上绘制国家 如果我要绘制一个国家 是否有办法以不同的颜色绘制与该国家接壤的国家 我正在使用形状文件wrld simpl地图工具附带的 所以说我绘制了中国 plot wrld simpl wrld simpl
  • CSS 中的 HTML colspan

    我正在尝试构建类似于以下内容的布局 底部填充上排的空间 如果这是一个实际的表 我可以轻松地完成此操作 td 但因为我只是创建一个类似表格的layout 我不能使用 table 标签 使用 CSS 可以实现这一点吗 没有简单 优雅的 CSS
  • 有或没有美元符号反应[重复]

    这个问题在这里已经有答案了 我在反应函数返回语句中阅读了以下代码 return span charge span span amount span 我的问题是有或没有 它们只是代表要渲染的动态变量 对吗 我看到 和 有时散布在代码中 并且非
  • 如何在sqlite IPHONE中获取像列一样的rowNum

    我有一个像这样的 Sqlite 数据库表 没有上升 但我需要检索表按名称升序排列 当我将其设置为升序时 rowId 按混乱顺序更改如下 但我需要找回一些联系人数量有限 5每次都按升序排列 like 啊啊 Eeee and 然后 Ffff J
  • 如何使用reportlab将png添加到PDF

    我正在与报告实验室合作 我无法找到用鸭嘴兽添加 png 图像的方法 这是这里的一些示例代码http www tylerlesmann com 2009 jan 28 writing pdfs python adding images htt
  • 项目类型“PackageReference”缺少必需的属性“OutputPath”

    我正在尝试通过 Jenkins Pipeline 运行以下命令 bat nuget restore mySolution sln MSBuildPath C Program Files x86 MSBuild 14 0 Bin 但我收到错误
  • C# 使用 EPPLUS 更改 Excel 图表轴格式

    是否有办法更改图表 X 或 Y 轴以设置自定义标签格式 例如 在 XAxis 中 我的标签是日期时间 但格式是 yyyy mm dd hh mm ss 我想将其更改为 yyyy mm dd 想知道在 EPPLUS 中是否可以不使用互操作 对
  • 如何使用PDO的持久连接? [复制]

    这个问题在这里已经有答案了 我有以下代码并在 Firefox 中刷新该网页 5 次 然后 MySQL 显示了 5 个连接 根据 PDO 手册 持久连接未关闭 在脚本的末尾 但是 缓存并在另一个脚本时重新使用 使用相同的方式请求连接 证书 持
  • 如何决定使用哪个运行时 ID?

    我习惯了 dot net 框架构建一个可以发布的 exe 文件 但是在 Net Core 2 0 中 我需要在创建 exe 时指定运行时 ID 例如 dotnet publish runtime win7 x84 其中运行时 ID 是 wi
  • Shiny - 绘制列的右边框

    假设我有以下 Shiny ui 代码 fluidRow column width 4 column width 8 如何绘制第一列的右边框 您可以使用以下命令将 CSS 添加到列中style争论 因此 一种方法是 library shiny
  • ANTLR 是否允许在 locals 子句中定义多个变量?

    在解析器语法中 我想在中定义几个变量locals clause 一个简化的示例如下所示 body locals Map