1
我試圖從的Cisco IOS配置解析以下命令:如何使用antlr解析動態分隔符?
banner exec <d> <message> <d>
其中<d>
是用戶的選擇,英鎊符號(#)的分隔字符,例如。 <message>
不能在其中使用分隔符。
看來我需要爲它使用語義謂詞。但無法想出辦法。
楊
我試圖從的Cisco IOS配置解析以下命令:如何使用antlr解析動態分隔符?
banner exec <d> <message> <d>
其中<d>
是用戶的選擇,英鎊符號(#)的分隔字符,例如。 <message>
不能在其中使用分隔符。
看來我需要爲它使用語義謂詞。但無法想出辦法。
楊
只要你提前知道的分隔符,你可以使用這樣的事情。您可以修改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))}? . ;
這是棘手的部分。分隔符未提前知道。它只在實際的文件中已知。 – 2013-05-07 05:02:30
真的很感激這個人的任何幫助。我認爲這是一個具有挑戰性的問題,許多人可以從中得到答案。 – 2013-05-09 09:14:10
在這裏找到一個類似的帖子:http://stackoverflow.com/questions/14286870/antlr3-dynamic-quotes-in-lexer – 2013-05-14 23:42:44