我有这个语法:
grammar Test;
startnode
:
BEGIN PART_A
(
dont_care |
care
)*
END PART_A EOF
;
dont_care
:
BEGIN I_DONT_CARE
.*?
END I_DONT_CARE
;
care
:
BEGIN CARE
VALUE STRING
END CARE
;
BEGIN : '/begin';
END : '/end';
PART_A : 'PART_A';
I_DONT_CARE : 'I_DONT_CARE';
CARE : 'CARE';
VALUE : 'VALUE';
STRING : '"' .*? '"';
WS : ( ' ' | '\t' | '\r' | '\n')+ -> skip;
以下输入:
/begin PART_A
/begin I_DONT_CARE
something something
/end I_DONT_CARE
/begin I_CARE
VALUE "Hello World"
/end I_CARE
/end PART_A
问题是,即使我使用了非greey运算符,dont_care规则也永远不会停止匹配。我该如何解决这个问题?
答案 0 :(得分:-1)
你需要使用词法模式。请参阅我刚刚给出的最后一个问题的书或答案;)