ANTLR4 相当于什么!在词法分析器规则中?

2024-04-08

我正在努力将旧的 ANTLR 2 语法转换为 ANTLR 4,但我在字符串规则方面遇到了问题。

STRING :
    '\''!
    (
        ~('\'' | '\\' | '\r' | '\n')
    )*
    '\''!
    ;

这创建了一个STRING其文本包含字符串内容的标记,但是不含开始和结束引号,因为!引号文字后面的符号。

ANTLR 4 扼流圈!象征, ('!' came as a complete surprise to me (AC0050))但如果​​我将其关闭,我最终会得到包含引号的标记,这不是我想要的。将其移植到 ANTLR 4 的正确方法是什么?


Antlr4 通常将标记视为不可变的,至少在不支持语言中立等价物的意义上!.

也许实现同等效果的最简单方法是:

string : str=STRING { Strings.unquote($str); } ; 
STRING : SQuote ~[\r\n\\']* SQuote ;
fragment SQuote : '\'' ;

where Strings.unquote is:

public static void unquote(Token token) {
    CommonToken ct = (CommonToken) token;
    String text = ct.getText();
    text = .... unquote it ....
    ct.setText(text);
}

使用解析器规则的原因是因为词法分析器(当前)不支持属性引用。尽管如此,它仍然可以根据词法分析器规则来完成 - 只是需要稍微多一点努力来挖掘令牌。

修改令牌文本的另一种方法是使用自定义字段和方法实现自定义令牌。看这个答案 https://stackoverflow.com/questions/32520813/using-antlr4-to-generate-modified-code如果有兴趣的话。

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

ANTLR4 相当于什么!在词法分析器规则中? 的相关文章

  • 使用 ANTLR 解析循环

    我想使用 ANTLR 解析一个简单的类似 matlab 的 for 循环 循环就像 for i 1 8 y i a i i end 我想解析循环并解析8次y i a i i语句 以便对每个语句执行一些操作 我的规则如下 操作在 C 中描述
  • 使用 ANTLR 通过 Python 解析一些 Java 代码

    我想在 Python 中使用 ANTLR 构建一个 Java 解析器 我从 ANTLR 存储库下载了语法 Lexer https github com antlr grammars v4 blob master java java Java
  • Antlr4-JS 语法中的操作:如何访问令牌和定义函数? (直接在java中,而不是在JS中)

    我正在努力适应 JS 目标本书的Expr g4 https pragprog com titles tpantlr2 source code 在这个例子中 动作直接在语法中 它们包括 parser members 中定义的实用函数 这些函数
  • 如何修复 antlr4 词法分析器规则中的“不允许多字符文字”错误?

    我想写的规则是 Character u0000 u10FFF 但是 当尝试针对定义它的词法分析器文件运行 antlr 工具时 出现以下错误 multi character literals are not allowed in lexer
  • ANTLR:乘法省略“*”符号

    我正在尝试创建一个用于乘法和除法的语法 其中不需要包含 符号 我需要它来输出 AST 所以对于这样的输入 1 2 3 4 我希望 AST 是 1 2 3 4 我发现了以下内容 它使用 java 代码来创建适当的节点 grammar Test
  • ANTLR4 不报告歧义

    给出以下语法 grammar ReportAmbiguity unit statements statements callStatement lt uncomment this line callStatement CALL ID arg
  • 即使不匹配,ANTLR 词法分析器规则也会消耗字符吗?

    我有一个 antlr 词法分析器规则的奇怪副作用 并且我创建了一个 几乎 最小的工作示例来演示它 在这个例子中我想匹配字符串 0 1 例如 但是当我调试语法时 到达解析器的令牌流仅包含 1 第一个整数 无论 它包含多少位数字 总是会被消耗
  • 语义词法分析器谓词性能

    我有一个词法分析器为传递给词法分析器的宏字符串的动态列表创建 MACRO 标记 我在最顶层的词法分析器规则中使用了语义谓词来实现此功能 MACRO macros null tryMacro Where tryMacro 只是检查是否有任何宏
  • ANTLR 4 - 树模式匹配

    我试图理解 ANTLR 4 中的解析树匹配 所以为此 我有以下java代码 package sampleCodes public class fruits public static void main String args int a
  • ANTLR4:隐式或显式标记定义

    在 ANTLR4 中使用显式标记定义有哪些优点和缺点 我发现单括号中的文本比创建单独的标记并使用它代替文本更具描述性且更易于使用 E g grammar SimpleTest top library module library libra
  • ANTLR“无法启动调试器。等待连接到远程解析器超时。”

    我在 AntlrWorks 中运行的 ANTLR 语法之一抛出 无法启动调试器 等待连接到远程解析器超时 过去 此消息通常会消失 但此消息会持续存在 在搜索 ANTLR 列表时 例如http www antlr org pipermail
  • ANTLR 嵌套函数

    ANTLR 适合这个项目吗 我正在寻找处理和转换用户输入的字符串 其中可能包含自定义函数 例如 用户可能会在字符串中写入类似 CAPITALIZE word 的内容 而我想执行 使用 StringUtils 在后台进行实际转换 我想用户有时
  • 使用 ANTLR 解析时忽略输入的某些部分

    我正在尝试通过 ANTLR ANTLRWorks 3 5 2 解析语言 目标是输入完整的输入 但 Antlr 给出语法中定义部分的解析树并忽略其余输入 例如这是我的语法 grammar asap project begin PROJECT
  • 两个基本的 ANTLR 问题

    我正在尝试使用 ANTLR 来获取简单的语法并生成汇编输出 我在 ANTLR 中选择的语言是 Python 许多教程看起来非常复杂或详细阐述与我无关的事情 我真的只需要一些非常简单的功能 所以我有两个问题 将值从一个规则 返回 到另一规则
  • 有没有使用 ANTLR 或类似语言实现的简单语言?

    我正在尝试构建一种简单的解释语言以用于学习目的 我读过无数关于 ANTLR 和 JavaCC 的理论和教程 但我不知道如何真正让它做一些有用的事情 我通过 把东西拆开然后重新组合起来 来学得最好 那么 是否有任何在 ANTLR 或类似工具的
  • 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
  • Antlr3 匹配没有空格的标记

    给定输入 term gt 1 数字 1 和比较运算符 gt 应该在 AST 中生成单独的节点 如何才能实现这一目标 在我的测试中 仅当 c 和 1 用空格分隔时才会发生匹配 如下所示 term lt 1 当前语法 startExpressi
  • ANTLR 不匹配输入“

    给出以下 ANTLR 4 1 语法 有意注释掉一行 grammar Foobar whyDoesThisRuleHelp expression expression operand binaryOperation binaryOperati
  • 来自 ANTLR 解析树的 Python AST?

    我找到了一个ANTLR4 Python3 语法 https github com bkiers python3 parser 但它会生成一个解析树 该树通常有许多无用的节点 我正在寻找一个已知的包来从该解析树获取 Python AST 这样
  • 返回当前标记的最后一个字符的行号

    ANTLR 4 中有没有办法能够返回当前标记的最后一个字符的行号 我提到Antlr 从令牌中获取最后一行 https stackoverflow com questions 7903021 antlr get last line from

随机推荐

  • @MainActor 类是对主要参与者的扩展吗?

    如果正在上课 MainActor MainActor class MyClass NSObject 这是否将其所有扩展放在 MainActor还有 extension MyClass Yes As SE 0316 全球演员 https gi
  • 无法更改购物车总计中的 WooCommerce 优惠券标签

    事实证明 这是一个我无法解决的挑战 我几乎在其他地方都处理过将 优惠券 重命名为 促销 的工作 然而 调用优惠券名称和LABEL的WC LABEL的重命名就困难了很多 这是我正在谈论的内容的屏幕截图 我几乎已将站点范围内 优惠券 的所有用途
  • 为什么预期的字符串变成元组[重复]

    这个问题在这里已经有答案了 我预计变量output format成为一个字符串 但是当我运行脚本时它给了我一个tuple类型并抛出异常 如果我在 Python 解释器中运行 它会给我一个预期的字符串 sout standard access
  • 使用 PHP 内置 Web 服务器进行无脂路由

    我正在学习 fatfree 的路线 发现它的表现出乎意料 这是我在index php中的代码 f3 require once dirname dirname FILE lib base php f3 Base instance echo r
  • 如何将 UIView 出口连接到自定义子视图

    我还是 xcode iOS 新手 并且有以下问题 为了显示一些移动调试信息 我将 UIview 作为出口属性添加 连接到我的视图控制器之一 该视图是 UIview 的自定义子类 现在 我添加了一些 UIlabels 作为子视图到该视图中 并
  • 在 Java 中从 XML 生成/获取 Xpath

    我对建议 伪代码代码 解释而不是实际实现感兴趣 我想浏览 XML 文档及其所有节点 检查节点属性是否存在 如果节点没有属性 get generate String with value of its xpath如果节点确实有属性 则迭代属性
  • 使用编辑器/显示模板中的部分

    我想将所有 JavaScript 代码保留在一个部分中 就在收盘前body在我的主布局页面中标记 只是想知道最好的方法 MVC 风格 例如 如果我创建一个DisplayTemplate DateTime cshtml文件使用 jQuery
  • ARKit 的相机空间朝向是什么?

    我想更好地理解 ARKit AR Camera 变换所在的相机坐标空间 在文档中 https developer apple com documentation arkit arcamera 2866108 transform 它说 此变换
  • 使用 JWI 和 Wordnet 获取词干

    我该如何正确使用词干分析法 http projects csail mit edu jwi api edu mit jwi morph WordnetStemmer html为了获取单词的词干 在 MIT 的 JWI Java API fo
  • 具有多对多关系模型的 Flask-Admin 视图

    我有一个带有用户和用户角色的基本 Flask admin 设置 class Role db Model RoleMixin id db Column db Integer primary key True name db Column db
  • OSError - Errno 13 权限被拒绝

    我试图通过管理页面上传图像 但它一直说 Errno 13 Permission denied path to my site media userfolder 2014 05 26 文件夹userfolder 2014 05 26上传时动态
  • 将 GPUJPEG 项目移植到 Windows

    我目前正在尝试移植 GPUJPEG 在 Sourceforge 上 http sourceforge net projects gpujpeg 库 基于 CUDA 从 Unix 到 Windows 现在我被卡住了 我不知道发生了什么或为什么
  • 如何将音频添加到我的 ffmpeg 流中

    我想将音频添加到我的 ffmpeg cli 中 ffmpeg framerate 25 video size 1920x1080 f x11grab i 0 0 vf format yuv420p http localhost 8080 f
  • 如何优雅地关闭 Spring JMS MessageListenerAdapter

    我有一个消息处理程序 它从 JMS 队列中使用并将结果发送到另一个 JMS 队列 消息处理程序位于 Spring DefaultMessageListenerContainer 中 当容器关闭时 我希望它完成处理它已经消耗的任何请求并发送结
  • 由 ECS 集群容量提供商管理的 AWS AutoScaling 组由于保护而无法扩展

    我有一个由自动扩展组中的 EC2 计算机支持的 ECS 集群 该集群使用 CloudFormation 中描述的容量提供程序 代码如下 CapacityProvider Type AWS ECS CapacityProvider Condi
  • 阻止父级仅获取某些视图的触摸事件?

    我有一个ScrollView以及里面的线性布局 在线性布局内我有多个视图 多个视图之一 DrawView 可以说 用于绘制东西 所以我必须覆盖onTouchEvent那种方法并画东西 目前 当我拖动或移动DrawView the Scrol
  • javac数据流分析的奇怪误报

    我有以下形式的代码 class Test private final A t public Test for final A u null t new A private class A 编译器说 variable t might alre
  • offsetof 可以与从 decltype 获得的结构类型一起使用吗?

    Can offsetof与通过获得的类型一起使用decltype 这两种情况中的任何一种都有效 C 11 吗 struct S int i int j offsetof decltype this i case 1 S i offsetof
  • 如何使用 ImageSharp 调整中心大小并裁剪图像

    我需要转换一些基于 System Drawing 的代码以使用此 NET Core 兼容库 https github com SixLabors ImageSharp https github com SixLabors ImageShar
  • ANTLR4 相当于什么!在词法分析器规则中?

    我正在努力将旧的 ANTLR 2 语法转换为 ANTLR 4 但我在字符串规则方面遇到了问题 STRING r n 这创建了一个STRING其文本包含字符串内容的标记 但是不含开始和结束引号 因为 引号文字后面的符号 ANTLR 4 扼流圈