如何修复 antlr4 词法分析器规则中的“不允许多字符文字”错误?

2024-03-07

我想写的规则是:

Character : '\u0000'..'\u10FFF';

但是,当尝试针对定义它的词法分析器文件运行 antlr 工具时,出现以下错误:

multi-character literals are not allowed in lexer sets: '\u10FFF'

如何解决这个问题?


尝试用以下方法包装多字符文字{ and },并使用v4样式字符集[...]:

Character : [\u0000-\u{10FFF}];

From https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexer-rule-elements https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexer-rule-elements:

[...] 匹配字符集中指定的字符之一。解释x-y作为范围之间的字符集x and y,包含在内。以下转义字符被解释为单个特殊字符:\n, \r, \b, \t, \f, \uXXXX, and \u{XXXXXX}。要得到], \, or -你必须逃脱他们\.

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

如何修复 antlr4 词法分析器规则中的“不允许多字符文字”错误? 的相关文章

  • Antlr4 从错误中恢复并继续解析直到 EOF

    我正在使用 Antlr 4 5 用 Ja va 编写 C 语法 当我处理具有预处理器指令的 C 源代码时 示例代码 using System using System Collections Generic using System Lin
  • IntelliJ IDEA Gradle 项目无法识别/定位 Antlr 生成的源

    我在一个简单的 Kotlin Gradle 项目中使用 Antlr 虽然我的 Gradle 构建正在生成 Antlr 源 但它们不可用于导入到项目中 正如您所看到的 在左侧 正在生成类 Lexer Parser 等 我也配置了这个gener
  • ANTLR 4 和 AST 访客

    我正在尝试将 AST 与 ANTLR4 一起使用 并使用以下文件 生成器 java import org antlr v4 runtime ANTLRInputStream import org antlr v4 runtime CharS
  • 如何在ANTLR4中实现错误处理

    我有以下语法用于解析应用于图形的一阶逻辑公式 grammar Graph PARSER RULES input formula EOF formula TRUE FALSE formula AND formula formula OR fo
  • 我将如何实现一种简单的基于堆栈的编程语言

    我有兴趣通过实现基于堆栈的编程语言来扩展我的计算机编程知识 我正在寻求从哪里开始的建议 因为我打算让它具有类似 pushint 1 会将值为 1 的整数推送到堆栈顶部 并通过诸如 之类的标签进行流量控制L01 jump L01 到目前为止
  • 使用 ANTLR4 解析公式

    我正在尝试使用 ANTLR4 将数学公式解析为 LaTeX 的子集 例如它应该解析 a 4 b 10 to frac a 4 b cdot 10 我的简单语法创建了一棵这样的树 现在我正在尝试实现解析树侦听器 以在遍历树时以某种方式构造 L
  • Antlr4:如何在语法中隐藏和使用令牌

    我正在解析一种定义两种类型的语句的脚本语言 控制语句和非控制语句 非控制语句总是以 而控制语句可能以以下结尾 or EOL n 语法的一部分如下所示 script statement EOF statement control statem
  • 使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程

    我想为简单的 Java 逻辑创建一个自动的类似流程图的可视化 为此我需要解析 Java 源代码 我有 2 个候选者 ANTLR http www antlr org and javax lang model http download or
  • 在侦听器中使用 ParserRuleContext 遍历令牌 - ANTLR4

    在使用侦听器迭代令牌时 我想知道如何使用 ParserRuleContext 来查看令牌流中的下一个令牌或接下来的几个令牌 在下面的代码中 我试图查看当前标记之后直到 EOF 的所有标记 Override public void enter
  • AnTLR4 C# 中的解析树

    我目前正在使用针对 C 的 AnTLR4 创建语法 但在开发访问者时遇到问题 我找不到书中提到的 ParseTree 类 书中我们有 LabeledExprLexer lexer new LabeledExprLexer input Com
  • 编写对空格敏感的解析器规则,同时从词法分析器中跳过 WS

    我在处理空白时遇到一些麻烦 在以下语法摘录中 我设置了词法分析器 以便解析器跳过空格 ENTITY VAR user resource INT DIGIT DIGIT ID LETTER LETTER DIGIT SPECIAL ENTIT
  • 在哪里可以找到 MATLAB 的形式语法?

    我想编写一个词法分析器生成器 将 MATLAB 语言的基本子集转换为 C C 等 为了帮助我做到这一点 我想找到一个包含 MATLAB 形式语法的文档 花了一些时间调查这一点 Mathworks 似乎没有提供这一点 有谁知道我在哪里可以找到
  • Antlr4 - 有使用 ParseTree Walker 的简单示例吗?

    Antlr4 有一个新类 ParseTreeWalker 但我该如何使用它呢 我正在寻找一个最小的工作示例 我的语法文件是 gram g4 我想解析文件 program txt 到目前为止 这是我的代码 这假设 ANTLR 已经运行了我的语
  • 当使用像 Parsec 这样的解析器组合器库时,我应该使用词法分析器吗?

    当在像 Haskell 的 Parsec 这样的解析器组合器库中编写解析器时 您通常有 2 个选择 编写一个词法分析器来分割你的String输入token 然后进行解析 Token 直接编写解析器组合器String 第一种方法通常似乎是有意
  • Antlr4中有哪些加速解析的方法?

    我对Antlr4的性能有些怀疑 我目前正在使用 Python 和 Antlr4 与 Java 相比 它非常慢 使用 Antlr4 IntelliJ 插件验证 由于我需要使用更大的代码进行解析 因此我计划切换到 Antlr 最快的语言 例如
  • ANTLR4:隐式或显式标记定义

    在 ANTLR4 中使用显式标记定义有哪些优点和缺点 我发现单括号中的文本比创建单独的标记并使用它代替文本更具描述性且更易于使用 E g grammar SimpleTest top library module library libra
  • ANTLR4 Lexer 错误报告(违规字符的长度)

    我正在使用 ANTLR4 为某些语言开发一个小型 IDE 并且需要在词法分析器无法匹配错误字符时给它们下划线 内置的org antlr v4 runtime ANTLRErrorListener http www antlr org api
  • 如何识别 Antlr 语法中的行首?

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

    假设我有以下简单语法 查询 DSL grammar TestGrammar term textTerm textTerm Text T VALUE STRING T VALUE value STRING WS t r n gt skip 然
  • 我正在尝试为 Antlr4 Python3.g4 语法文件生成解析树,以解析 python3 代码

    我正在使用 ANTLR4 并尝试为我拥有的 python 文件生成解析树 我使用了 ANTLR4 文档中的语法文件 python3 g4 我安装了antlr4 python3 runtime 并且运行了以下命令 antlr4 Dlangua

随机推荐