如何使用 ANTLR 4 定义数组类型?
How to define an array type with ANTLR 4?
我目前正在使用 Antlr 4 开发我自己的语言 (DSL),我想知道是否可以定义一个数组类型,例如。
fragment DIGIT : [0-9];
STRING : '"' ( ~ '"' )* '"' ; // match string content
BOOLEAN: ('true' | 'fase');
INTEGER: DIGIT+ ;
DOUBLE: DIGIT+ ('.' DIGIT+)*;
// x = ["string","string2",...]
ARRAY: ???
您不会将数组定义为标记(词法分析器规则),而是定义为解析器规则。你不会在数组中放入字符串、整数等,而是表达式(可以匹配字符串、整数等):
array
: '[' ( expression ( ',' expression )* )? ']'
;
expression
: expression ( '*' | '/' ) expression
| expression ( '+' | '-' ) expression
| ... all other kind of expressions ...
| STRING
| BOOLEAN
| INTEGER
| DOUBLE
| array
;
这样,array
将匹配如下内容:
["text", 42, false, 1 + 2 * 3, [1, 2, 3]]
我目前正在使用 Antlr 4 开发我自己的语言 (DSL),我想知道是否可以定义一个数组类型,例如。
fragment DIGIT : [0-9];
STRING : '"' ( ~ '"' )* '"' ; // match string content
BOOLEAN: ('true' | 'fase');
INTEGER: DIGIT+ ;
DOUBLE: DIGIT+ ('.' DIGIT+)*;
// x = ["string","string2",...]
ARRAY: ???
您不会将数组定义为标记(词法分析器规则),而是定义为解析器规则。你不会在数组中放入字符串、整数等,而是表达式(可以匹配字符串、整数等):
array
: '[' ( expression ( ',' expression )* )? ']'
;
expression
: expression ( '*' | '/' ) expression
| expression ( '+' | '-' ) expression
| ... all other kind of expressions ...
| STRING
| BOOLEAN
| INTEGER
| DOUBLE
| array
;
这样,array
将匹配如下内容:
["text", 42, false, 1 + 2 * 3, [1, 2, 3]]