ANTLR 可以解析不连续的记录片段吗?
Can ANTLR parse non-consecutive record fragments?
我正在解析一个流,其中的记录片段始终是连续的,但并不总是连续的,例如,在下面的示例中,第 1 行和第 3 行是同一记录的一部分,而第 1 行将始终出现在第 3 行之前它们之间可能有一条完全不相关的线,在本例中为第 2 行,在括号中需要与第 4 行匹配。
1: [[aaaa
2: [[bbbb
3: aaaa]]
4: bbbb]]
如果有确定的方法来匹配记录碎片,ANTLR 可以处理这种碎片吗?如果是这样,语法会是什么样子?
不,这是不可能的(而且我想知道这是否可取,因为您无法在任意深度的源嵌套中匹配混合输入的开始和停止部分)。输入总是按照来自输入流的方式进行处理。您当然可以通过在特定条件下输入源的不同部分来伪造输入。但这需要将输入预处理到与以下解析阶段几乎相同的级别。
我正在解析一个流,其中的记录片段始终是连续的,但并不总是连续的,例如,在下面的示例中,第 1 行和第 3 行是同一记录的一部分,而第 1 行将始终出现在第 3 行之前它们之间可能有一条完全不相关的线,在本例中为第 2 行,在括号中需要与第 4 行匹配。
1: [[aaaa
2: [[bbbb
3: aaaa]]
4: bbbb]]
如果有确定的方法来匹配记录碎片,ANTLR 可以处理这种碎片吗?如果是这样,语法会是什么样子?
不,这是不可能的(而且我想知道这是否可取,因为您无法在任意深度的源嵌套中匹配混合输入的开始和停止部分)。输入总是按照来自输入流的方式进行处理。您当然可以通过在特定条件下输入源的不同部分来伪造输入。但这需要将输入预处理到与以下解析阶段几乎相同的级别。