私が解析したいテキストの例は次のとおりです-
@comment {
{ something }
{ something else }
}
基本的に「@comment」は検索の鍵であり、その後は一致する中括弧のペアです。中括弧の間にあるものを解析する必要はありません。これはCの複数行のコメントに似ているので、それに基づいた文法があります。
grammar tryit;
tryit : top_cmd
;
WS : ('\t' | ' ')+ {$channel = HIDDEN;};
New_Line : ('\r' | '\n')+ {$channel = HIDDEN;};
top_cmd :cmds
;
cmds
: cmd+
;
cmd
: Comment
;
Comment
: AtComment Open_Brace ( options {greedy = false; }: . )+ Close_Brace
;
AtComment
: '@comment'
;
Open_Brace
: '{'
;
Close_Brace
: '}'
;
しかし、ANTLRWORKSでのテストでは、EarlyExitExceptionがすぐに発生します。
何が悪いのか分かりますか?