0
我有以下語言來定義,顯然ANTLR沒有泄露它的祕密,以方便。antlr匹配不同的括號中的部分
ui {
screen X {
input()
checkbox()
}
}
model {
// any text
// even {}
}
我會定義
ui: UI OBR (screen)* CBR;
screen: ....
model : MODEL modelBody;
modelBody: BRACKETED_TEXT;
OBR: '{';
CBR: '}';
...
TEXT : ('a'..'z'|'A'..'Z'| '_' | '-')+ ;
BRACKETED_TEXT : OBR (~(OBR|CBR) | BRACKETED_TEXT)* CBR;
的問題是,它擊中ui {
一部分時,拋出一個MismatchedTokenException
。如果我刪除BRACKETED_TEXT令牌一切順利,那麼我認爲它必須是它在分析ui {
時無法知道它是否可以匹配OBR或BRACKETED_TEXT的事實。
這很好,但我怎麼能有ui {...}
的結構化AST和model {..}
的自由文本?
你可以「接受」你自己的答案.... –