我正在嘗試編寫一個解析SQL where子句表達式的語法,並且面臨用詞法規則識別唯一標識符的問題。 我的語法是喜歡 -通過ANTLR解析GUID時出錯
grammar Sample;
UID: '^[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$';
literal_value :
UID
;
而我的代碼來解析是 -
public void compile() {
String expression = "4B66049D-6E1A-4CE6-8FBF-B31CD8B9E6AF"
ANTLRInputStream input = new ANTLRInputStream(expression);
SampleLexer lexer = new SampleLexer(input);
final CommonTokenStream tokens = new CommonTokenStream(lexer);
SampleParser parser = new SampleParser(tokens);
SampleParser.Literal_valueContext context = parser.literal_value();
System.out.println(context.toStringTree());
}
但我得到的錯誤 - 異常解析表達式:1號線4「‘:’令牌識別錯誤的」 ,位置0