antlr匹配括号内的内容

时间:2013-07-04 15:15:37

标签: antlr antlr3

我需要解析以下内容

model { 

// any content, including brackets {}

var x= {} ; 

// any content, including brackets {}
}

如果我这样做:

model : MODEL OBR modelBody CBR;

modelBody: modelBodyLine;

modelBodyLine: TEXT* (OBR TEXT* CBR)* TEXT*;

TEXT : ('a'..'z'|'A'..'Z'| '_' | '-')+ ;
OBR: '{';
CBR: '}';

我收到此错误

  

警告(200):/ SWL Parser / src / ro / sft / swl / language / parser / SWL.g:46:16:   决策可以使用多个替代方法匹配输入,例如“TEXT”:   1,2结果,对于该输入禁用了替代方案2 | --->   modelBodyLine:TEXT *(OBR TEXT * CBR)* TEXT *;

那么解析它的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我对这些情况使用以下genericBlock规则。此规则依赖于您的词法分析器至少为最终CBR正确返回}令牌,并为每个嵌套{{1}正确匹配CBR令牌它创建的令牌。

OBR