ANTLR-参数
我已经开始学习ANTLR,我正在看示例语法。 我发现CSV语法非常有趣: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相
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语法中实现它的例子,那将非常有帮助。