私は次の言語を定義していますが、明らかに 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;
問題は、その部分MismatchedTokenException
を叩いたときにスローされることです。ui {
BRACKETED_TEXT トークンを削除するとすべてうまくいくので、解析時に OBR または BRACKETED_TEXT に一致するかどうかを認識できないという事実に違いないと考えていますui {
。
これは問題ありませんが、構造化された ASTui {...}
とフリー テキストを にするにはどうすればよいmodel {..}
ですか?