Antlr4 C# 运行时异常
Antlr4 C# runtime exception
这是我的语法文件的精简版:
grammar csv;
csv_list : ( TEXT | LETTERS | NUMBER ) (COMMA csv_list)* ;
any_literal : TEXT | LETTERS | NUMBER ;
fragment DIGIT : [0-9] ;
DOT : '.' ;
COMMA : ',' ;
LETTERS : [a-zA-Z]+ ;
NUMBER : DIGIT+ ;
TEXT : [0-9a-zA-Z]+ ;
WHITESPACE : ' ' -> skip;
我在尝试实例化上下文时遇到运行时错误(在我的例子中,上下文 class 名称是 Csv_listContext
)。
请注意,NUMBER
和 LETTERS
词法分析器规则与其余语法相关,因此我无法删除它们。
当 运行 C# 运行时中的解析器时,我得到一个“参数不能为空”的异常。
如能给我指明正确方向的任何建议,我们将不胜感激。
P.S
我知道这不是一个完整的 CSV 语法,并且有一些 CSV 语法可以工作,这只是我正在研究的语法的精简版。
更新 测试输入为 1,1232,sdfsdf,123,fff,2e,f2
对于遇到此错误的任何人,以下是我(有点)修复它的方法:
grammar csv;
csv_list : any_literal (COMMA any_literal)*
;
any_literal : TEXT | LETTERS | NUMBER
;
fragment DIGIT : [0-9] ;
DOT : '.' ;
COMMA : ',' ;
LETTERS : [a-zA-Z]+ ;
NUMBER : DIGIT+ ;
TEXT : [0-9a-zA-Z]+ ;
WHITESPACE : ' ' -> skip;
这可能有效,因为 csv_list
解析器规则中没有递归。
这是我的语法文件的精简版:
grammar csv;
csv_list : ( TEXT | LETTERS | NUMBER ) (COMMA csv_list)* ;
any_literal : TEXT | LETTERS | NUMBER ;
fragment DIGIT : [0-9] ;
DOT : '.' ;
COMMA : ',' ;
LETTERS : [a-zA-Z]+ ;
NUMBER : DIGIT+ ;
TEXT : [0-9a-zA-Z]+ ;
WHITESPACE : ' ' -> skip;
我在尝试实例化上下文时遇到运行时错误(在我的例子中,上下文 class 名称是 Csv_listContext
)。
请注意,NUMBER
和 LETTERS
词法分析器规则与其余语法相关,因此我无法删除它们。
当 运行 C# 运行时中的解析器时,我得到一个“参数不能为空”的异常。
如能给我指明正确方向的任何建议,我们将不胜感激。
P.S 我知道这不是一个完整的 CSV 语法,并且有一些 CSV 语法可以工作,这只是我正在研究的语法的精简版。
更新 测试输入为 1,1232,sdfsdf,123,fff,2e,f2
对于遇到此错误的任何人,以下是我(有点)修复它的方法:
grammar csv;
csv_list : any_literal (COMMA any_literal)*
;
any_literal : TEXT | LETTERS | NUMBER
;
fragment DIGIT : [0-9] ;
DOT : '.' ;
COMMA : ',' ;
LETTERS : [a-zA-Z]+ ;
NUMBER : DIGIT+ ;
TEXT : [0-9a-zA-Z]+ ;
WHITESPACE : ' ' -> skip;
这可能有效,因为 csv_list
解析器规则中没有递归。