token - Antlr4 TokenStreamRewriter 删除行中 X 后的令牌
问题描述
我正在使用 Antlr4 9.2 并有以下语言翻译查询。
每一行文字!想要的是 66 个字符,其余的我想丢弃。大胆的东西。
''************************************************ **************'' 17002700006873 *
''* £ACT£X 0603170027 A 001 C 001 D 001 '' 17002700006874
如何编写删除 66 个字符后的字符的 TokenStreamRewriter?在这些到达标记器之前?
解决方案
TokenStreamRewriter 作用于由标记器创建的 TokenStream,因此它不会作用于标记器之前的任何内容。
我假设您需要标记前 66 个字符的内容。您可能应该考虑使用一些预处理来截断每一行,然后将该输入交给标记器。
虽然您可以使用不同的、非常简单的标记器,首先标记化,然后使用 TokenStreamRewriter 重写一个新的字符流以传递给“真正的”标记器,但这实际上只是一种非常“折磨”的写作方式一个循环逐行读取输入,并且只将前 66 个字符写入新流,然后您可以对其进行标记。
TokenStreamRewriters 是非常方便的工具,可以获取现有的 tokenStream 并操作内容以生成新的 String(它们不会生成新的 TokenStream)
推荐阅读
- python - 如何在 django admin 的搜索查询参数中检查字符串是否包含 AND 和 OR
- javascript - 使用javascript将复杂数组转换为简单数组
- android - 如何从带有 Room 的 Dao 访问复杂对象?
- java - 仅在 api 19 中单击按钮时出现 IllegalStateException
- java - 声明类名与构造函数名不同的 Java 对象
- apache-kafka - 未应用 Kafka 连接转换
- c# - 为文本准备正则表达式
- excel - 从 Zip 文件中删除文件夹
- html - 在 fxFlex 中使用 calc() 不能在边缘工作
- qt - 如何在同一设备上分别处理两个鼠标?