Antlr3:无法匹配词法分析器规则中使用的解析器规则中的标记

2024-04-02

我在 Antlr3 中的词法分析器规则为:

HYPHEN : '-';

TOKEN : HYPHEN CHARS;

CHARS : 'a' ..'z';

解析器规则如下:

exp : CHARS | some complex expression;
parser_rule : exp HYPHEN exp;

如果我尝试将“abc-abc”与 parser_rule 匹配,则会失败。因为词法分析器为 HYPHEN exp 创建 TOKEN。如何将其与 parser_rule 正确匹配。


在ANTLR词法分析器中,使用可以匹配输入的最长子序列的词法分析器规则。所以你的输入

abc-abc

将被标记为

CHARS("abc")
TOKEN("-abc")

因此与预期不符CHARS HYPHEN CHARS.

你应该考虑制作TOKEN解析器规则而不是词法分析器规则。

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

Antlr3:无法匹配词法分析器规则中使用的解析器规则中的标记 的相关文章

  • 如何获取 URL 中最后一个斜杠之后的所有内容?

    如何在 Python 中提取 URL 中最后一个斜杠后面的内容 例如 这些 URL 应返回以下内容 URL http www test com TEST1 returns TEST1 URL http www test com page T
  • 使用 Tabula 从 PDF 中提取表格

    我遇到了一个名为 Tabula 的很棒的图书馆 它几乎成功了 不幸的是 第一页上有很多无用的区域 我不希望 Tabula 提取这些区域 根据文档 您可以指定要从中提取的页面区域 但是 无用区域仅位于 PDF 文件的第一页 因此 对于所有后续
  • 如何阻止 parseFloat() 将零剥离到小数点右侧

    我有一个函数 用于从字符串中删除不需要的字符 定义为货币符号 然后将值作为数字返回 返回值时 我进行以下调用 return parseFloat x 我遇到的问题是 当 x 0 00 时 我期望得到 0 00 带有两位小数的浮点数 我得到的
  • 使用正则表达式解析 select 语句(用于自定义 SQL 解析器)

    我这样做是为了教学目的 构建一个教学数据库 构建它的一部分 就像成熟的数据库一样 这是一个非常简单的查询解析器 我正在尝试使用正则表达式解析简单的 选择 语句 它适用于大多数简单的情况 但我在选择表格之间留有空格的平衡中失去了它 从a b
  • CSV 解析返回“未加引号的字段不允许 \r 或 \n”,但在源文件中找不到错误?

    我在 Rails 应用程序中使用 Ruby 中的内置 CSV 函数 我正在调用一个 URL 通过 HTTParty 来解析它 并尝试将结果保存到我的数据库中 问题是 我收到错误Unquoted fields do not allow r o
  • 使用 VB.NET 循环遍历 XML 文件

    我在处理 XMl 文件时遇到问题 我想循环 使用 VB NET 该文件并提取 OrderID 元素的所有值
  • C 没那么难: void ( *( *f[] ) () ) ()

    我今天刚看到一张照片 希望得到解释 所以这是图片 抄写 C 并不那么难 void f 定义f作为未指定大小的数组 包含指向函数的指针 该函数返回指向返回的函数的指针void 我发现这令人困惑 并想知道这样的代码是否实用 我用谷歌搜索了这张照
  • 在Python中解析.iso文件[重复]

    这个问题在这里已经有答案了 我想用 python 解析 iso 文件 我想从 iso 获取信息和数据 例如有一个 iso 文件 其名称为 xyz iso 但实际上它是一个 ubuntu 映像 并且包含 Readme txt deb pacg
  • 在 R 中解析和评估字符串表达式的列?

    如何将 R 中的一列字符串表达式作为管道的一部分进行解析和求值 在下面的示例中 我生成了所需的列 evaluated 但我知道这不是正确的做法 我尝试采取 tidyverse 方法 但我只是很困惑 library tidyverse df
  • 在 python 中将 Latex 代码转换为 mathml 或 svg 代码

    是否有任何 python 代码允许获取乳胶代码 用于方程 并将其解析为 mathml 或 svg 代码 一个以字符串 latex 代码 作为参数并输出字符串 svg 或 mathml 代码 的简单函数将是完美的 附言 我找到了这个http
  • 在Android中解析HTML

    我正在尝试从网页解析 android 中的 HTML 由于该网页格式不正确 我得到SAXException Android 有没有办法解析 HTML 我刚刚遇到这个问题 我尝试了一些东西 但决定使用JSoup http jsoup org
  • 使用 Json.net 解析 JSON

    我正在尝试使用 JSon Net 库解析一些 JSON 该文档似乎有点稀疏 我对如何完成我需要的内容感到困惑 这是我需要解析的 JSON 格式 displayFieldName OBJECT NAME fieldAliases OBJECT
  • PHP 解析包含

    我包括一个文件init php它定义路径常量 所以如果我包括init php在一个文件中 索引 php 然后在另一个文件中 布局 header php is init php在添加到这些文件之前进行解析 还是添加到父文件中 然后将父文件作为
  • pyparsing:示例 JSON 解析器对于字典列表失败

    All 我试图了解如何使用 pyparsing 处理字典列表 我已经回到了JSON 解析器示例 http pyparsing wikispaces com file view jsonParser py 30308858 jsonParse
  • HtmlAgilityPack 设置节点 InnerText

    我想用其他文本替换 HTML 标签的内部文本 我正在使用 HtmlAgilityPack我使用这段代码来提取所有文本 HtmlDocument doc new HtmlDocument doc Load some path foreach
  • 如何解析kotlin代码?

    我需要分析 kotlin 文件代码 以检测关键字 data 和 问题是我没有找到任何像 JavaParser 这样的库 我不需要强大的工具 只需要能够返回行数的东西 任何想法 我使用antlr4来做到这一点 我创建了一个开源库 https
  • 将 python NLTK 解析树保存到图像文件[重复]

    这个问题在这里已经有答案了 这可能会复制这个 stackoverflowquestion https stackoverflow com questions 23429117 saving nltk drawn parse tree to
  • 使用 ANTLR 解析时忽略输入的某些部分

    我正在尝试通过 ANTLR ANTLRWorks 3 5 2 解析语言 目标是输入完整的输入 但 Antlr 给出语法中定义部分的解析树并忽略其余输入 例如这是我的语法 grammar asap project begin PROJECT
  • 使用 Python 2.7 解析 msg/eml 文件

    有没有可以解析msg或eml文件的库 我编写了一个脚本 一旦将电子邮件转换为 txt 文件 就会对其进行解析 但是我找不到一个电子邮件客户端 可以让我轻松地将电子邮件从 gui 拖放到文件夹中作为 txt 文件 如果有人知道这一点 我会很高
  • 为什么这个 SimpleDateFormat 无法解析这个日期字符串?

    简单日期格式 SimpleDateFormat pdf new SimpleDateFormat MM dd yyyy hh mm ss SSSaa 抛出的异常pdf parse Mar 30 2010 5 27 40 140PM java

随机推荐

  • ORA-01840: 输入值对于 Oracle Insert 使用 Select 中的日期格式来说不够长

    我有以下查询 其中出现错误ORA 01840 input value not long enough for date format The C DATE列是日期数据类型 INSERT INTO CS LOG NAME ID C DATE
  • React.PropTypes.func.isRequired 的问题

    我是 React 新手 正在尝试定义 PropTypes 但似乎它不再起作用 以下是我如何使用它 React PropTypes func isRequired Below is the error am getting 那么这就是我所缺少
  • 是否可以检查 CSS 变量是否已定义?

    我想知道是否可以仅在定义了 css 变量的情况下应用 CSS 规则 我已经看到可以定义默认值 例如 background color var bgColor red 但我认为这不会在我的项目中起作用 因为我想要的是 当未定义变量来获取该行在
  • Conda - 从防火墙后面的 .whl 文件安装tensorflow

    我有一个Anaconda3 与 Python 3 6 Spyder 环境 正在尝试安装tensorflow但是 由于公司防火墙的原因 无法使用标准的 pip 安装 此外 出于同样的原因 我无法创建 anaconda 环境 我想做的是直接从安
  • Levene 检验的多重比较事后检验

    我想在 R 中对 Levene 的测试进行成对比较事后测试 我知道如何使用 PROC GLM 在 SAS 中执行此操作 但我似乎不知道如何在 R 中执行此操作 有人有吗主意 在下面的示例中 我希望能够测试所有 猫 级别 即 A B A C
  • Scala 中的无符号变量

    我正在将一些 C 代码转换为 Scala 因为我们正在 据称 进入企业大厦的现代世界 至少我是被告知的 某些 C 代码使用无符号变量 这些变量对其执行了大量位级 移位 操作 我对如何将它们转换为 Scala 完全处于停滞状态 因为我相信 S
  • PrimeFaces。渲染后更新数据表

    我有一个数据表并想要保留过滤器 我可以保存过滤器值并通过调用数据表将它们放回 我将过滤器值放回到渲染中 现在我想要过滤表 是的 我想调用服务并从中获取所有数据 然后我想使用保留在过滤字段中的值来过滤表 我找不到在渲染表格后启动过滤的解决方案
  • 线程可以处理很长的 I/O 进程吗

    我在这里开始一个新主题 该主题将与这个问题 https stackoverflow com questions 47250025 qthreadpool how to interrupt how to use wisely the wait
  • 将 Psyco 移植到 64 位可能存在哪些陷阱?

    心理医生说 仅供参考 Psyco 不 可以在任何 64 位系统上工作 这个事实值得再次注意 现在最新的 Mac OS X 10 6 雪豹 自带默认 64 位上的 64 位 Python 机器 使用 Psyco 的唯一方法 OS X 10 6
  • 在 CSS 中将文本垂直和水平居中在圆圈中(如 iphone 通知徽章)

    我正在寻找一种在 CSS3 中制作类似 iphone 的跨浏览器徽章的方法 我显然想使用一个 div 来实现这一点 但其他解决方案也可以 重要的因素是它需要在所有浏览器中水平和垂直居中 关于这些通知的一个有趣的设计问题是它们不能具有指定的宽
  • 如何解析/proc/pid/cmdline

    我试图在 Linux 上拆分进程的命令行 但似乎我不能依赖它用 0 字符分隔 你知道为什么有时 0 字符用作分隔符而有时它是常规空格吗 您知道检索可执行文件名称及其路径的其他方法吗 我一直在尝试使用 ps 获取此信息 但它总是返回完整的命令
  • C++11 嵌套宏调用?

    它在 C std 16 3 4 中说 生成的预处理标记序列 来自宏调用替换 与源文件的所有后续预处理标记一起重新扫描 以获取更多宏名称 代替 如果在替换列表扫描期间找到了被替换的宏的名称 不包括 源文件的其余预处理标记 它不会被替换 此外
  • Lua 中的“主”函数?

    在 python 中 通常会定义一个 main 函数 以便允许脚本用作模块 如果需要 def main print Hello world return 0 if name main sys exit main 在Lua中 这个习语if n
  • 用于改造响应代码处理的自定义 rx Func1

    我是 rxjava 的新手 所以请不要严格 我请求虱子下一个 Observable
  • 当我使用大量数据发出大量请求后,Volley 出现内存不足异常

    我有一个页面查看器 在每个页面内都有列表视图 该列表视图将使用 Web 服务有 10 条记录 因此页面查看器使用 Web 服务的三个调用来填充三个页面 当前页面 左侧页面和右侧页面 页 但在我进行了多次滑动后 我得到了这个异常 java l
  • PostgreSQL ORDER BY 问题 - 自然排序

    我有一个 PostgresORDER BY下表的问题 em code name EM001 AAA EM999 BBB EM1000 CCC 要将新记录插入表中 我选择最后一条记录SELECT FROM employees ORDER BY
  • mongo 数据库中的可尾游标超时

    我正在尝试用 ruby 创建一个 oplog 观察器 到目前为止 我想出了下面的一个小脚本 require rubygems require mongo db Mongo Connection new localhost 5151 db l
  • glsl 双精度顶点缓冲区

    如果我创建一个双精度顶点缓冲区 例如 GLuint vertBuffer spanBuffer spanCount patchSize program already setup glUseProgram program glEnableC
  • 无法使用“adb shell settings put”设置 location_providers_allowed 的值

    我正在尝试使用以下命令打开位置 adb shell settings put secure location providers allowed gps wifi network adb reboot 但它既不改变变量的值允许的位置提供者重
  • Antlr3:无法匹配词法分析器规则中使用的解析器规则中的标记

    我在 Antlr3 中的词法分析器规则为 HYPHEN TOKEN HYPHEN CHARS CHARS a z 解析器规则如下 exp CHARS some complex expression parser rule exp HYPHE