【发布时间】:2018-10-11 00:18:56
【问题描述】:
我是 ANTLR4 的新手,我在语法方面遇到了困难。 假设您使用以下规则构建数据:
- 消息是组的多行集合
- 一个组由一个段和可能的修饰符组成
- 段是三个字符的字母数字
- [ 修饰符表示一个可选组,该组(组)由 ] 界定
- 一个 { 修饰符表示一个重复组,该组(该组)由 } 界定
这种数据格式的一个例子是:
MSH
MSA
[{ ERR }]
[{ NTE }]
[
[
PID
[{NTE}]
]
{
ORC
[
{
[TQ1]
[{ TQ2 }]
}
]
//shortened for brevity
}
]
所以写成:
- 一个必需的单数 MSH 段
- 必需的单一 MSA 段
- 一个可选组,由一个可选的 PID 组和可选的重复 NTE 以及一个 ORC 的重复组和一个可选的重复 TQ1 和可选的重复 TQ2 组成
- 等等……
到目前为止我有:
message : group+ NEWLINE ;
group : ID+
| (ID | '{'group'}'
| (ID | '['group']'
;
OPTSTART : '[' ;
OPTEND : ']' ;
REPSTART : '{' ;
REPEND : '}' ;
ID : [a-zA-Z0-9]*
WS : [ \t\r\n]+ -> skip ;
我现在卡住了。我已经设法让解析树解析 MSH 和 MSA,但我不确定我是否走在正确的轨道上。如果您有任何指示或提示,我将不胜感激。
【问题讨论】: