如何使用Antlr4的语法匹配带下划线的数字?

时间:2017-01-23 23:29:26

标签: grammar antlr4

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

要匹配数字,可以轻松编写[0-9]+

但如何匹配带下划线的数字?如何在Antlr4的语法中表达带下划线的数字?谁能帮我?谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

ANTLR使用令牌/字符流,因此RAW WORD文档数据可能会有某种类型的" escape"令牌表示"开始下划线"和#34;停止下划线",这是可选的;

(警告......我是一名ANTLR新手,但我会尝试这样做)

String x = (String) ((JavascriptExecutor)driver).executeScript("return arguments[0].getAttribute('x')", element);

上述可能不会起作用,因为单词中的UNDERLINING可以从句子的开头开始。因此,您可能希望解析器查找START_UNDERLINE和STOP UNDERLINE事件。

//
// 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;

然后,您可以使用用于输入/退出下划线事件的Listener java函数来根据需要修改文本。你可以选择添加lexer"模式" START / STOP下划线,但我发现使用IMPORTED词法分析器(这是我使用的),模式不会导入。所以现在我没有使用模式。

免责声明......我是一名ANTLR新手,只有30分钟 - 3天的时间比你更多。只是想帮助:)。

-R