ANTLR 4 令牌规则匹配任何字符,直到遇到 XYZ

2024-01-11

我想要一个标记规则,它会吞噬所有字符,直到它到达字符XYZ.

因此,如果输入是这样的:

helloXYZ

那么令牌规则应该返回这个令牌:

hello

如果输入是这样的:

Blah Blah XYZ

那么令牌规则应该返回这个令牌:

Blah Blah

如何定义令牌规则来执行此操作?


根据特伦斯在回答中给出的暗示,我认为这就是罗杰正在寻找的:

grammar UseLookahead;

parserRule : LexerRule;

LexerRule : .+? { (_input.LA(1) == 'X') &&
                  (_input.LA(2) == 'Y') &&
                  (_input.LA(3) == 'Z') 
                }?
          ;

这给出了所需的答案,hello and Blah Blah分别。我承认我不明白决赛的意义?.

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

ANTLR 4 令牌规则匹配任何字符,直到遇到 XYZ 的相关文章

  • ANTLR 嵌套函数

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

    我有类似于 markdown 和 SO 使用的标记语言 遗留解析器基于正则表达式 维护起来简直是噩梦 因此我提出了自己的基于 EBNF 语法的解决方案 并通过 mxTextTools SimpleParse 实现 但是 某些令牌可能存在相互
  • 如何识别 Antlr 语法中的行首?

    在我使用的语言中 某些关键字必须位于行的开头 这主要是因为语言中的字符串值可以跨越多行 并且字符串可以轻松包含这些关键字 我可以轻松处理旧的 yacc lex 语法实现 因为词法分析器使用普通的正则表达式来匹配文本模式 例如 descrip
  • [“03C0”]如何匹配附件P中的语法?

    我正在编写一个工具来使用 2005 年附录 P 中提供的语法来解析 Ada 源文件 通过下面的代码 我知道 03C0 代表 希腊字母Pi 但它是合法的变量名吗 01 package Ada Numerics is 02 Pi constan
  • ANTLR语法的迁移工具

    假设我有以下简单语法 查询 DSL grammar TestGrammar term textTerm textTerm Text T VALUE STRING T VALUE value STRING WS t r n gt skip 然
  • ANTLR4性能问题

    关于 ANTL4 解析的性能已经有一些讨论 例如 Antlr 4 解析大型 c 文件需要很长时间 https stackoverflow com questions 19311864 antlr 4 parsing large c file
  • 问题 - 序言中的形式语言

    我正在尝试构建一个 DCG 它可以识别与此形式匹配的所有列表 a n b 2m c 2m d n 我写下了以下规则 s gt s gt ad ad gt a ad d ad gt bc bc gt b b bc c c bc gt a gt
  • 实现词法分析器时,DFA 与正则表达式?

    我刚刚学习如何编写编译器 所以如果我有任何错误的说法 请纠正我 当人们可以简单地使用正则表达式时 为什么还要在代码中实现 DFA goto 语句 表驱动实现 据我了解 词法分析器接收一串字符并生成一个标记列表 这些标记在语言的语法定义中是终
  • 编程语言语法中尾随逗号的历史

    许多编程语言允许在其语法中在列表中的最后一项后面使用尾随逗号 据说这样做是为了简化自动代码生成 这是可以理解的 作为示例 以下是 Java 中完全合法的数组初始化 JLS 10 6 数组初始值设定项 http java sun com do
  • Lucene,索引已经/外部标记化的标记并定义自己的分析过程

    在使用Lucene的过程中 我有点失望 我不明白或不明白我应该如何继续为任何 Lucene 分析器提供已经可直接索引的东西 或者我应该如何继续创建我自己的分析器 例如 如果我有一个List
  • 自动解析 PHP,将 PHP 代码与 HTML 分离

    我正在开发一个大型 PHP 代码库 我想将 PHP 代码与 HTML 和 JavaScript 分开 我需要对 PHP 代码进行多次自动搜索和替换 对 HTML 进行不同的搜索和替换 对 JS 进行不同的自动搜索和替换 有没有一个好的解析器
  • 在 Python 中对非英语文本进行分词

    我有一个波斯语文本文件 其中包含如下几行 6 7 10 11 我想从这一行生成一个单词列表 对我来说 单词边框是数字 比如上面一行中的 6 7 等 还有 特点 所以列表应该是 我想在 Python 3 3 中执行此操作 最好的方法是什么 我
  • 使用 Python NLTK 对大型 (>70MB) TXT 文件进行标记。连接并将数据写入流错误

    首先 我是 python nltk 的新手 所以如果问题太基本 我深表歉意 我有一个大文件 我正在尝试对其进行标记 我遇到内存错误 我读过的一种解决方案是一次一行读取文件 这是有道理的 但是 在这样做时 我收到错误cannot concat
  • 用PLY解析python,如何编码缩进和缩进部分

    我试图用 PLY 解析 python 语言的函数定义 我遇到了与缩进相关的问题 例如 对于 for 语句 我希望能够知道块何时结束 我在这里阅读了python语法 http docs python org 2 reference gramm
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 举例解释bpe(字节对编码)?

    有人可以帮忙解释一下背后的基本概念吗BPE模型 除了这张纸 https arxiv org abs 1508 07909 目前还没有那么多解释 到目前为止我所知道的是 它通过将罕见和未知的单词编码为子词单元序列来实现开放词汇表上的 NMT
  • 我正在尝试为 Antlr4 Python3.g4 语法文件生成解析树,以解析 python3 代码

    我正在使用 ANTLR4 并尝试为我拥有的 python 文件生成解析树 我使用了 ANTLR4 文档中的语法文件 python3 g4 我安装了antlr4 python3 runtime 并且运行了以下命令 antlr4 Dlangua
  • Antlr 词法分析器标记匹配相似的字符串,如果贪婪的词法分析器出错怎么办?

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

    我正在尝试自学 Ruby 的 Treetop 语法生成器 我发现 对于 最好的 文档来说 不仅文档非常稀疏 而且它的工作方式似乎并不像我希望的那样直观 从高层次上来说 我真的很喜欢比现场文档或视频更好的教程 如果有的话 在较低的层面上 这是
  • ANTLR 不匹配输入“

    给出以下 ANTLR 4 1 语法 有意注释掉一行 grammar Foobar whyDoesThisRuleHelp expression expression operand binaryOperation binaryOperati

随机推荐

  • 通过双击文件将参数传递给 JavaFx 应用程序

    我创建了一个 JavaFX 应用程序 部署了 app 文件 它工作正常 然后 我将操作系统设置为使用我的应用程序打开具有特定扩展名的所有文件 我的问题是 当我双击文件时 我的应用程序打开 但我不知道打开它的文件是哪个 我尝试使用该函数检查应
  • EXCEPTION_ACCESS_VIOLATION (0xc0000005) 来自 JNI 的 JVM?

    我在 vc 中用 JNI 编写了一些本机方法 以便从 java 访问 我的三种方法中有两种工作得很好 没有任何问题 然而 当我在运行时调用我的最后一个方法时 它会导致以下错误消息 A fatal error has been detecte
  • 如何使 GTFS 查询运行得更快?

    我正在尝试使用 GTFS 数据库 即 RATP 为巴黎及其郊区提供的数据库 数据集是huge The stop times表有 1400 万行 这是表架构 https github com mauryquijada gtfs mysql b
  • python 中的范围函数

    for n in range 2 5 for x in range 2 n print n x 输出如下 3 2 4 2 4 3 为什么n的值从3开始而不是从2开始 n三点开始因为range 2 2 是空的 也许你真的想要 for n in
  • iPhone 是否支持传入彩信中的 SMIL?

    在我开发的一项服务中 我向用户发送一条彩信 其中包含 6 个静态顺序的图像 为了正确排序图像并添加格式 我使用了 SMIL 它在多种设备上运行良好 然而 iPhone 似乎根本不识别 SMIL 图像按文件名字母顺序排序 更糟糕的是 它们不是
  • 如何向独立的异步任务添加进度条?

    我有一个处于其自己的活动中的异步任务 我向它传递一个字符串值 它连接到我的 Web 服务并根据我传入的名称下载 Json 数据 返回 Json 结果集 效果很好 我想向异步任务添加一个进度旋转器 但我不知道如何做到这一点 我已经仔细阅读了这
  • 属性检测:使用“in”与尝试访问属性

    不得不提的是 我了解一点 JavaScript 但还不是很深入 始终认为这是检查对象上的属性是否可用的正确方法 if window console doSomething 昨天我看到了使用这种技术的代码 if console in wind
  • 由于属性名称规范化,AngularJS 链接函数未调用

    我已经按照自定义验证下的文档定义了一个验证器https docs angularjs org guide forms https docs angularjs org guide forms 但由于某种原因link函数没有被调用 我可以看出
  • Grails select 将不会返回正确的数据

    这是一个延续this https stackoverflow com questions 6959777 grails chained drop down问题 我有一个Address包含基本街道地址信息的类 我也有一个User具有属性的类p
  • 复制 SQL 表中的 3B 行?

    我必须复制一个表 该表在同一数据库中有大约 3B 行 没有 TEXT NTEXT 或其他 LOB 列 最大限度减少停机时间的最快方法是什么 我尝试过 bcp 导入 导出和 SELECT INTO 我收集了每个项目的时间统计数据 它至少需要
  • Rails 请求伪造保护设置

    请帮助 Rails 新手 我有protect from forgery调用 默认情况下给出 我的中没有属性ApplicationController class 基本上这是代码 class ApplicationController lt
  • 如何用vue js绑定组件?

    我有表单和选择组件 事实上事情很简单 我需要两个绑定模型 父组件 Vue component some form template some form data function return countryNameParent 带有项目的
  • 了解 WebRTC 中的 SFU、TURN 服务器

    如果我正在构建 WebRTC 应用程序并使用选择性转发单元媒体服务器 这是否意味着我不需要 STUN TURN 服务器 据我了解 STUN 服务器用于客户端发现其公共 IP 端口 而 TURN 服务器用于当客户端无法通过 STUN 直接相互
  • 将值数组插入 SQL Server 中表的列中

    我有一个数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 我想将这个值数组插入到表中 例如 Column1 Column2 Column3 Column4 1 2 3 4 5 6 7 8 9 10 11 1
  • 如何在 Windows 中的特定显示器上打开窗口?

    我的任务是修改我们的一款 C 产品 以便在 Windows 操作系统的特定显示器上生成一个新窗口 这适用于需要能够配置平铺多显示器可视化的客户 其中每个显示器由单台计算机上的单独显卡驱动 在 Linux 中 我可以通过在每个显示器上启动 X
  • Vue DOM 对计算属性没有反应

    我有一个按钮 如果计算属性的有效属性为 false 则该按钮设置为禁用 如果为 true 则应启用该按钮并允许用户移至当前流程中的下一步 我的 currentStep 计算属性正在根据当前步骤输入的更改完美更新 但按钮 disabled c
  • 摘自 Django 1.5 中的 QueryDict/json

    From self request body I have changes 5B0 5D 5B 5D 1 changes 5B0 5D 5B 5D query changes 5B0 5D 5B 5D first changes 5B0 5
  • 如何使用 spring-data-elasticsearch 在 elasticsearch 中进行集成测试?

    我正在使用 spring data elasticsearch v3 2 4 RELEASE 它可以通过 spring boot starter data elasticsearch v2 2 4 RELEASE 获得 我想为此进行集成测试
  • SQLAlchemy 按字段唯一约束

    我在现场有 UniqueConstraint 但它不允许我添加多个条目 最多两个 from sqlalchemy import Column Integer String Boolean UniqueConstraint class Car
  • ANTLR 4 令牌规则匹配任何字符,直到遇到 XYZ

    我想要一个标记规则 它会吞噬所有字符 直到它到达字符XYZ 因此 如果输入是这样的 helloXYZ 那么令牌规则应该返回这个令牌 hello 如果输入是这样的 Blah Blah XYZ 那么令牌规则应该返回这个令牌 Blah Blah