ANTLRWorks 1.4.3 无法正确读取扩展 ASCII 字符

2024-03-19

我正在开发一个相当标准的编译器项目,我选择 ANTLR 作为解析器生成器。在将现有语法从 v2 更新到 v3 时,我注意到 ANTLRWorks(ANTLR 的官方 IDE)无法正确显示文件中的任何扩展 ASCII 字符。即使使用 Notepad++ 将文件从 ASCII 转换为 UTF8 后,它仍然将这些字符显示为正方形。在 Notepad++ 中它们显示得很好。

由于这个故障意味着 ANTLRWorks 在我保存文件时会损坏该文件,因此我无法再将其用作编辑器,这相当烦人。这里还有其他人遇到过这个问题并且可能已经解决了吗?多谢。

[edit]:特定问题出现在最新版本的 ANTLRWorks(昨天下载的)和我从 获取的 vams.g 语法文件中http://www.antlr.org/grammar/1086696923011/vhdlams/index.html http://www.antlr.org/grammar/1086696923011/vhdlams/index.html


我无法使用 ANTLRWorks 1.4.3 重现此内容。

如果我创建一个虚拟语法:

grammar T;
parse : . ;
Any   : . ;

并将完整的扩展 ASCII 集粘贴到多行注释中:

grammar T;

/*
€

‚
ƒ

...

ÿ
*/

parse : . ;
Any   : . ;

这里没有问题。如果我使用 ANTLRWorks 复制字符,或者使用普通编辑器复制字符,然后使用 ANTLRWorks 编辑现有语法,这并不重要:保存在 ANTLRWorks 中后,字符全部保持不变。

相关说明:ANTLR 3.0 到 3.3 版本仍然与 ANTLR 2.7 类存在一些依赖关系,这可能会导致org.antlr.Tool绊倒 ASCII 集之外的某些字符。在这种情况下请使用 ANTLR 3.4,它不再具有这些旧的依赖项。

EDIT

我怀疑原始语法中的某个地方有一些奇怪的字节导致了所有的混乱。我很快只复制了原始语法中的规则,将所有 v2.7 语法更改为 v3 语法(将双引号文字更改为单引号文字,protected became fragment并评论了一些自定义代码)并将其保存在新文件中。该文件可以由 ANTLRWorks 或纯文本编辑器打开(并保存),而不会导致其损坏扩展 ASCII 字符。

这是该语法的 ANTLR v3 版本:http://pastebin.com/zU4xcvXt http://pastebin.com/zU4xcvXt(语法太大,无法发布在SO上......)

EDIT II

除了给它一个标签之外,语法名称还有其他用处吗?

不,这不对。正如您所提到的,它仅用于为解析器或词法分析器提供名称。

ANTLR中有4种语法:

  • 组合语法,看起来像grammar T;,生成TLexer.java and TParser.java源文件;
  • 解析器语法,看起来像parser grammar TP;,生成一个TP.java源文件;
  • 词法分析器语法,看起来像lexer grammar TL;,生成一个TL.java源文件;
  • 树语法,看起来像tree grammar TWalker,生成一个TWalker.java源文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ANTLRWorks 1.4.3 无法正确读取扩展 ASCII 字符 的相关文章

  • Antlr 外部输入

    我有一个语法文件 BoardFile g4 其中包含 仅相关部分 grammar Board Tokens GADGET squareBumper circleBumper triangleBumper leftFlipper rightF
  • ANTLR:自定义语法示例的词法错误帮助

    什么方法可以让我最大限度地报告词法错误 举一个简单的例子 我想为以下文本编写语法 为了简单起见 空格被忽略 字符串常量中不能有 myvariable 2 myvariable hello world Group myvariablegrou
  • ANTLR 解析器生成器最适合内存有限的 C++ 应用程序吗?

    我正在寻找一个好的解析器生成器 我可以用它来读取我们的大型商业应用程序中的自定义文本文件格式 目前 这种特定的文件格式是使用手工递归解析器读取的 但该格式已经发展和复杂化到该方法变得难以管理的程度 看来最终的解决方案是为这种格式构建正确的语
  • 如果双引号字符串以转义反斜杠结尾,则词法分析器规则会保持匹配字符,就好像它们是带引号字符串的一部分一样

    如果双引号字符串以转义的反斜杠结尾 则词法分析器规则会变得贪婪并保持匹配字符 就好像它们是带引号的字符串的一部分一样 然后词法分析器认为实际开始下一个带引号的字符串的双引号正在结束第一个字符串 并在后面的字符上给出语法错误 我们需要调整词法
  • 我们什么时候使用ANTLR

    谁能指导我在 ASP Net C 项目中使用 ANTLR dll 的目的 我刚刚注意到antlr 运行时 Antlr3 运行时 Antlr3 实用程序某些项目中引用的程序集 如果能引用一些现实世界的例子或者任何指向网页的链接都会有用 那就太
  • 我如何解释这个输入?

    我目前使用 ANTLR 在 Java 中实现了一种可用的 简单的语言 我想做的是将其嵌入纯文本中 与 PHP 类似 例如 Lorem ipsum dolor sit amet Phasellus volutpat dignissim sap
  • 来自 bison 的 ANTLR 语法

    我正在尝试将语法从 bison 翻译为 ANTLR 野牛的语法本身非常简单 但我找不到简单的方法来做到这一点 野牛语法 expr expr or expr expr and expr expr 欢迎任何提示 链接 指针 谢谢 尤利安 在AN
  • 为什么 ANTLR4 不匹配单词“of”和标点符号“,”?

    我有一个Hello g4带有语法定义的语法文件 definition wordsWithPunctuation words WORD wordsWithPunctuation word word punctuation word word
  • 编写对空格敏感的解析器规则,同时从词法分析器中跳过 WS

    我在处理空白时遇到一些麻烦 在以下语法摘录中 我设置了词法分析器 以便解析器跳过空格 ENTITY VAR user resource INT DIGIT DIGIT ID LETTER LETTER DIGIT SPECIAL ENTIT
  • 在线验证antlr语法[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道是否存在某种用于antlr语法的在线测试环境 我可以在其中针对某些输入字符串验证和测试给定的语
  • 在 ANTLR 3 中,如何在运行时而不是提前生成词法分析器(和解析器)?

    我想在运行时生成 antlr 词法分析器 也就是说 生成语法并从语法生成词法分析器类及其在运行时的支持位 我很高兴将它输入到 java 编译器中 它可以在运行时访问 这是一种快速但肮脏的方法 生成一个combined ANTLR 语法 g给
  • ANTLRWorks 1.4.3 无法正确读取扩展 ASCII 字符

    我正在开发一个相当标准的编译器项目 我选择 ANTLR 作为解析器生成器 在将现有语法从 v2 更新到 v3 时 我注意到 ANTLRWorks ANTLR 的官方 IDE 无法正确显示文件中的任何扩展 ASCII 字符 即使使用 Note
  • ANTLR 4 - 树模式匹配

    我试图理解 ANTLR 4 中的解析树匹配 所以为此 我有以下java代码 package sampleCodes public class fruits public static void main String args int a
  • ANTLR 生成无效的 java 异常并抛出代码

    这些天我一直在使用 ANTLRwork 1 5 和 Antlr Runtime 3 5 这是我发现的一个奇怪的事情 Antlr 正在为我生成这种 java 代码 public final BLABLABLAParser addExpress
  • Antlr4中有哪些加速解析的方法?

    我对Antlr4的性能有些怀疑 我目前正在使用 Python 和 Antlr4 与 Java 相比 它非常慢 使用 Antlr4 IntelliJ 插件验证 由于我需要使用更大的代码进行解析 因此我计划切换到 Antlr 最快的语言 例如
  • ANTLR 实现类似Python的缩进相关语法的最简单方法是什么?

    我正在尝试实现类似Python的缩进相关语法 来源示例 ABC QWE CDE EFG EFG CDE ABC QWE ZXC 正如我所看到的 我需要的是实现两个标记 INDENT 和 DEDENT 所以我可以编写如下内容 grammar
  • 使用 ANTLR3 解析换行符、EOF 作为语句结束标记

    我的问题是关于在 ANTLRWorks 中运行以下语法 INT 0 9 SEMICOLON NEWLINE r n n r STMTEND SEMICOLON NEWLINE NEWLINE statement STMTEND INT ST
  • 自动解析 PHP,将 PHP 代码与 HTML 分离

    我正在开发一个大型 PHP 代码库 我想将 PHP 代码与 HTML 和 JavaScript 分开 我需要对 PHP 代码进行多次自动搜索和替换 对 HTML 进行不同的搜索和替换 对 JS 进行不同的自动搜索和替换 有没有一个好的解析器
  • 有没有使用 ANTLR 或类似语言实现的简单语言?

    我正在尝试构建一种简单的解释语言以用于学习目的 我读过无数关于 ANTLR 和 JavaCC 的理论和教程 但我不知道如何真正让它做一些有用的事情 我通过 把东西拆开然后重新组合起来 来学得最好 那么 是否有任何在 ANTLR 或类似工具的
  • 使用 ANTLR 验证 LL(1) 语法

    我知道 ANTLR 可以接受 LL 语法 但是 有什么方法可以使用 ANTLR 检查语法是否是 LL 1 吗 options k 1 如果你的语法不在 LL 1 中 它会发出警告

随机推荐

  • 如何通过twitter的Fabric API获取用户数据(Android)

    我已经成功地将twitter的fabric api集成到我的项目中 推特登录按钮
  • “依赖倒置”和“接口设计”是相同的原则吗?

    依赖倒置原则 DIP 和 接口设计原则 是否表达了相同的原则 如果不是 会有什么区别 EDIT 为了澄清并缩小上下文范围 我所说的接口是指编程接口 例如 Javainterface或 C 中的纯抽象基类 不涉及其他 合同 我只是想参与并引用
  • 去除android上TabLayout下面的阴影

    我试图在使用 TabLayout 时删除选项卡下方的阴影 TabLayout 是在正常布局中定义的 而不是作为工具栏或操作栏的一部分 将主题设置为
  • Javascript - 无法实例化同一对象的多个实例

    我正在尝试实例化同一对象的多个实例 第一个实例化工作正常 但是当我尝试初始化另一个对象时 出现此错误 Uncaught TypeError Object
  • 在 MySQL 中使用 Join 比仅使用 Rand() 更快

    How is SELECT t id FROM table t JOIN SELECT FLOOR max id rand AS maxid FROM table AS tt ON t id gt tt maxid LIMIT 1 比 快
  • 如何创建和管理多租户 ASP MVC 应用程序

    我想创建一个使用主机名来确定客户的多租户应用程序 例如 CustomerOne myapp com AnotherCo myapp com AndOneMore myapp com 我可以毫无问题地完成数据库和安全方面的工作 我还可以从 U
  • 一个好的 HTML 骨架

    我想重新开始创建网站 但我已经离开 HTML 领域有一段时间了 我只是想知道这对于网站来说是否是一个好的框架 如果没有 我应该更改 添加和 或删除什么
  • android 从广播接收器更新小部件

    我有一个小部件 我必须在操作时更新该小部件android media RINGER MODE CHANGED发生 我有以下广播接收器 public void onReceive Context context Intent intent A
  • height: 100% 或 min-height: 100% 对于 html 和 body 元素?

    在设计布局时我设置了html body元素 height to 100 但在某些情况下 这会失败 那么应该使用什么呢 html body height 100 or html body min height 100 好吧 这不是基于意见的
  • 如何将矩阵子集化为一列,维护矩阵数据类型,维护行/列名称?

    当我将矩阵子集到单列时 结果是数字类 而不是矩阵 即 myMatrix 5 子集到第五列 是否有一种紧凑的方法来子集为单列 维护矩阵格式 并维护行 列名称 而不需要做一些复杂的事情 例如 matrix myMatrix 5 dimnames
  • 哪些 R 函数不适合编程使用?

    一些函数如browser仅在交互使用时才有意义 人们普遍认为subset功能只能交互使用 https stackoverflow com q 9860090 134830 相似地 sapply不适合编程使用 因为它不能简化零长度输入的结果
  • 使用javascript将Base64转换为图像文件

    有谁知道我可以使用任何简单的javascript将base64字符串转换为图像 最好是jpg格式 以便我可以将图像保存到文件中 这是针对签名板应用程序的 我可以将签名转换为 base64 格式 但需要将签名另存为图像文件以用于嵌入到 Cry
  • ggplot - 集中facet_grid标题并仅出现一次[重复]

    这个问题在这里已经有答案了 我已经创建了一个图表ggplot里面有两个变量facet grid 我希望每个方面的标题仅在该方面的中心重复一次 例如 第一个原始 上刻面 中的零和一将仅出现一次并且出现在中间 在我的原始图中 每个方面的图数不相
  • Android Java——在Android平台上反序列化文件

    我有一个 java 程序 可以序列化稍后存储和读取的文件 因此 我获取序列化文件并尝试使用与 Java SE 中使用的完全相同的代码在我的 Android 手机 在 Eclipse 中工作 上读取它们 FileInputStream fis
  • Java中如何连接字符串?

    The strKeyword将根据循环重复进行 如何将结果保存为新字符串 例如 如果工作 hello 重复两次 我现在如何将 hellohello 创建为全新的字符串 for int l 0 l lt newKeywordLength l
  • Azure CLI:无法在 Windows PowerShell 中转义管道字符 (|)

    Scenario 我尝试在 Windows 计算机上使用 Azure CLI 创建 Azure Web 应用程序 不幸的是 我无法为我的网络应用程序选择运行时 当我尝试时 az webapp create n name g grop p p
  • 如何在javascript中添加到所有浏览器的收藏夹/书签[重复]

    这个问题在这里已经有答案了 我在使用 java 脚本的 添加到收藏夹 书签网页 中有一些查询 我只是在这个中进行了查询Link http www apphp com index php snippet javascript add to f
  • NSURLSession 委托方法未调用

    我创建了一个非常简单的应用程序来从我的网络服务器下载文本文件 我可以与 NSURLConnection 完美配合 但我正在尝试迁移到 NSURLSession 我遇到的问题是没有调用任何委托方法 我的服务器受密码保护 因此我需要使用基本的
  • Mac Catalyst 上的应用程序内购买不起作用

    应用内购买对于我的 iOS 方面来说效果很好 StoreKit 中的数据已按其应有的方式填充 相同的代码不适用于该项目的 Mac Catalyst 版本 我什至在 App Store 上为我的 Mac 应用程序创建了一个列表 并与应用程序内
  • ANTLRWorks 1.4.3 无法正确读取扩展 ASCII 字符

    我正在开发一个相当标准的编译器项目 我选择 ANTLR 作为解析器生成器 在将现有语法从 v2 更新到 v3 时 我注意到 ANTLRWorks ANTLR 的官方 IDE 无法正确显示文件中的任何扩展 ASCII 字符 即使使用 Note