【问题标题】:How to match underlined digits using Antlr4's grammar?如何使用 Antlr4 的语法匹配带下划线的数字?
【发布时间】:2017-06-08 14:57:21
【问题描述】:

我的情况需要匹配数字或带下划线的数字。

要匹配数字,写[0-9]+很容易。

但是如何匹配带下划线的数字? Antlr4的语法中如何表示带下划线的数字?谁能帮我?感谢您的宝贵时间。

【问题讨论】:

  • 带下划线的数字到底是如何表示的?您能否在问题中以文本方式 包含一个示例? (即,不是图像)
  • 我知道 txt 文件或控制台中没有格式问题。但是在word文档中,我们会有下划线的文本,在我的研究中,我必须考虑这种情况。
  • 那么你必须考虑如何使用 Antlr 来阅读 Word 文档的问题。可以肯定的是,Word 文档还可以包含 bolditalics、更大或更小尺寸、不同字体等的数字。但是这些格式代码需要以某种方式进行序列化(例如 HTML 或 RTF),以便将数据输入文本处理器,例如 Antlr 生成的解析器。因此,如何表示格式信息的问题是必不可少的(您还没有尝试回答)。

标签: grammar antlr4


【解决方案1】:

ANTLR 与标记/字符流一起使用,因此 RAW WORD 文档数据可能具有某种类型的“转义”标记来指示“开始下划线”和“停止下划线”,这是可选的;

(警告...我是 ANTLR 新手,但这是我会尝试的)

//
// Define Start Underline and Stop Underline tokens
fragment START_UNDERLINE : "SomeWordToken(s) possibly \uxxx values";
fragment STOP_UNDERLINE  : "SomeOtherToken(s) possibly \uxxx values";

DIGITS : [0-9]+
UNDERLINED_DIGITS : START_UNDERLINE DIGITS STOP_UNDERLINE;

以上可能行不通,因为单词中的下划线可以从句子的开头开始。因此,您可能希望解析器查找 START_UNDERLINE 和 STOP UNDERLINE 事件。

//
// Define Start Underline and Stop Underline tokens
START_UNDERLINE : "SomeWordToken(s) possibly \uxxx values";
STOP_UNDERLINE  : "SomeOtherToken(s) possibly \uxxx values";

DIGITS : [0-9]+
UNDERLINED_DIGITS : START_UNDERLINE DIGITS STOP_UNDERLINE;

enter_underline  : START_UNDERLINE;
exit_underline   : STOP_UNDERLINE;

然后,您可以为进入/退出下划线事件设置侦听器 java 函数,以根据需要修改文本。您可以选择将词法分析器“模式”添加到 START/STOP 下划线,但我发现使用 IMPORTED 词法分析器(这是我使用的),模式不会导入。所以现在我没有使用模式。

免责声明...我是 ANTLR 新手,并且可能只比您多 30 分钟到 3 天的停留时间。只是想帮忙:)。

-R

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多