我正在尝试从Cisco IOS配置中解析以下命令:
banner exec <d> <message> <d>
其中<d>
是用户选择的分界字符 - 例如井号(#)。 <message>
无法在其中使用分隔符。
似乎我需要使用语义谓词。但无法找到一种方法。
杨
答案 0 :(得分:1)
只要事先知道分隔符,就可以使用这样的东西。您可以修改isDelimiter
以支持任何单字符分隔符。
@lexer::members {
private boolean isDelimiter(int c) { return c == '#'; }
}
Message : Delimiter NotDelimiter* Delimiter;
fragment Delimiter : {isDelimiter(_input.LA(1))}? . ;
fragment NotDelimiter : {!isDelimiter(_input.LA(1))}? . ;