ANTLR4:TokenStreamRewriter 输出没有正确的格式(删除空格)

2023-11-22

我正在使用 Antlr4 和 java7 语法(source)用于修改输入 Java 源文件。更具体地说,我使用 TokenStreamRewriter 类来修改一些标记。以下代码是显示如何修改令牌的示例:

public class TestListener extends JavaBaseListener {    
   private TokenStreamRewriter rewriter;
   rewriter = new TokenStreamRewriter(tokenStream);
   rewriter.replace(ctx.getStart(), ctx.getStop(), "someText");
}

当我打印更改后的源代码时,空格和制表符将被删除,新源文件的格式如下:

导入 java.util.ArrayList;publicclassMain{publicstatic void main(String[]args{MyTimertimer=newMyTimer();}}

我正在使用 extractor.getText() 将其打印回来。

这是所使用语法的问题还是我应该使用 TokenStreamRewriter 类中的其他方法?


问题是词法分析器没有向解析器发送空格,这意味着重写流也无法访问令牌。这是因为跳过词法分析器命令:

WS : [ \t\r\n\u000C]+ -> skip ;

你必须将所有这些更改为-> channel(HIDDEN)这会将它们发送到不同通道上的解析器,使它们在令牌流中可用,但对解析器不可见。

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

ANTLR4:TokenStreamRewriter 输出没有正确的格式(删除空格) 的相关文章

  • JavaScript 中的小数点分隔符是什么?

    当我正在编写一段处理一些浮点值的 JavaScript 代码时 我突然想到了一个想法 JavaScript 中的小数点符号是什么 是不是总是 或者它是特定于文化的 那么呢 toFixed and parseFloat 如果我正在处理用户输入
  • 语法问题

    我需要解析一个表达式 并且我正在使用 boost spirit 表达式必须具有以下形式 字符串 PV 后面除了 之外的任何内容 我正在使用以下语法 P S gt gt gt gt V S ch p gt gt ch p V str p PV
  • 无法使用 NSDateFormatter 解析日期

    我正在获取 RSS 其中我收到以下日期戳 2010 05 10T06 11 14 000Z 现在我正在使用 NSDateFormatter 来解析这个日期时间戳 parseFormatter setDateFormat yyyy MM dT
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • HTML 解析 - 从 div 内的表格获取数据?

    我对 HTML 解析 抓取的整个想法还比较陌生 我希望我能来这里获得我需要的帮助 基本上我想要做的 我认为 是指定我希望从中获取数据的页面的 url 在这种情况下 http www epgpweb com guild us Caelestr
  • Antlr 词法分析器标记匹配相似的字符串,如果贪婪的词法分析器出错怎么办?

    似乎有时 Antlr 词法分析器在标记字符流时对使用哪个规则做出了错误的选择 我试图找出如何帮助 Antlr 做出对人类来说显而易见的正确选择 我想像这样解析文本 d dt x a a d dt d 3 dt 4 这是现有语言使用的不幸语法
  • 如何增加使用 SAX 解析 XML 文件的entityExpansionLimit

    我正在尝试使用 Java 中的 SAX 解析器解析一个 1 23 GB 的 XML 文件 我使用的是 Mac 操作系统和 JDK 1 7 0 51 不幸的是 我收到以下错误 The pasrser has encountered more
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • D3 删除千位的逗号分隔符

    我有一个包含 3 列的 json 其中一列是 年份 该列仅包含年份 没有日期 当我在 x 轴上绘制它时 年份会以逗号分隔符表示数千 所以在 json 中 日期的格式是 Year 1990 在 x 轴上 结果是 1 990 我一直在试图弄清楚
  • 从电话号码确定国际电话代码的算法

    我可以使用 iOS 上的地址簿框架从设备中检索联系人的电话号码 如何区分或识别哪个是国家 地区代码 哪个是实际电话号码 是否可以 国家 地区代码是一个相当混乱的主题 但足够标准 通过一些程序员维护就可以解决它 您可以通过其初始子序列来识别国
  • 元素可以包含由 ANTLR 生成的解析器解析的属性吗?如果是这样,怎么办?

    我正在关注本教程 https tomassetti me antlr and the web 并成功复制了它的行为 只是我使用的是 Antlr 4 7 而不是教程使用的 4 5 我正在尝试构建一个用于费用跟踪器的 DSL 想知道每个元素是否
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 从 HTML 文件中获取 jpg 图像

    我正在尝试使用 grep 获取 HTML 文件中 jpg 图像的完整 url 地址 一个问题是其中没有很多换行符 所以当我使用 grep 时 它会获取路径 但也会获取很多我不感兴趣的其他内容 我怎样才能获取 jpg 图像的 url 一张单人
  • 使用 Python ast 模块访问语法树中的节点

    我正在玩 python ast 抽象语法树 我编写了以下内容 它访问了 AST 的所有节点 import ast class Py2Neko ast NodeVisitor def generic visit self node print
  • 如何在 Android Lollipop 中使用注释修复 Android Jackson 解析期间的 IncompleteClassChangeError?

    在我们的 Android 应用程序中 我们在模型中使用 Jackson Annotations JsonTypeInfo use JsonTypeInfo Id NAME include JsonTypeInfo As PROPERTY p
  • XAML解析异常

    我有一个简单的 XAML 页面 当它作为 Visual Studio 中任何应用程序的一部分加载时 加载效果良好 但是 当我使用 ClickOnce 部署此应用程序时 出现以下异常 Type System Windows Markup Xa
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 解析 (yyyy-MM-dd) 格式的字符串日期

    我有一个 2013 09 18 形式的字符串 我想将其转换为 java util Date 我正在做这个 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd Date converted
  • SimpleDateFormat.parse() 忽略模式中的字符数

    我正在尝试解析一个可以具有不同格式的日期字符串 尽管字符串不应与第二个模式匹配 但它却以某种方式匹配 因此返回错误的日期 这是我的代码 import java text ParseException import java text Sim
  • 在 Delphi 中使用 XML(将特定数据返回到变量)

    过去几天我一直在尝试使用 Delphi 2010 和 MSXML 我是一个极端的新手 需要一点指导 var MemoryStream TMemoryStream XMLPath String sName String XMLDoc vari

随机推荐