ANTLR-参数

ANTLR-参数,antlr,antlr4,Antlr,Antlr4,我已经开始学习ANTLR,我正在看示例语法。 我发现CSV语法非常有趣: grammar CSV; file: hdr row+ ; hdr : row ; row : field (',' field)* '\r'? '\n' ; field : TEXT | STRING | ; TEXT : ~[,\n\r"]+ ; STRING : '"' ('""'|~'"')* '"' ; 有没有可能告诉antlr每一行的长度都应该与hdr相

我已经开始学习ANTLR,我正在看示例语法。 我发现CSV语法非常有趣:

grammar CSV; 

file: hdr row+ ; 
hdr : row ; 

row : field (',' field)* '\r'? '\n' ; 

field 
    : TEXT 
    | STRING 
    | 
; 

TEXT   : ~[,\n\r"]+ ; 
STRING : '"' ('""'|~'"')* '"' ;
有没有可能告诉antlr每一行的长度都应该与hdr相同

在我的应用程序中,我需要这样一个机制。简单地说,我想读入一个INT变量,它包含数组的长度N,后面是N个值。像这样的事情:

// example-Input I want to parse 
A = 3 
a_0 = 2 
a_1 = 5        //there have to be exactly A = 3 a_ entries
a_2 = 3

这在antlr中是可能的吗?如果不是直接在语法中,那么它是否可以在某种程度上是dione之后呢?

它可以(而且应该)在之后完成。它为应用程序添加了语义,语义应该是与解析分离的关注点。您可以使用解析树访问者/侦听器遍历解析树。从标题中收集信息,然后断言行数+(RowContext)符合此数字。非常感谢。所以我要找的术语是“语义谓词”。这似乎对我有帮助?无论如何,如果你能给我一个如何在CSV语法中实现它的例子,那将非常有帮助。