我在ANTLR4中实现了一个函数。例如。- 函数("A","B")
语法 :
parse
: block EOF
;
block
: 'FUNCTION' LPAREN (atom)? COMMA (atom)? LPAREN
;
atom
: NIL #nilAtom
| list #arrayAtom
| type=(INT | DOUBLE) #numberAtom
| ID #idAtom
;
list
: BEGL array? ENDL
;
array
: array_element ( COMMA array_element )* # arrayValues
;
array_element
:
atom # array_element_types
;
COMMA : ',';
BEGL : '[';
LPAREN : '(';
RPAREN : ')';
ENDL : ']';
NIL : '' | 'null';
INT : [0-9]+ ;
DOUBLE : [0-9]+ '.' [0-9]* | '.' [0-9]+ ;
COMMENT : '#' ~[rn]* -> skip ;
SPACE : [ trn] -> skip ;
OTHER : . ;
对于输入FUNCTION(,"B")
,无法区分第一个和第二个参数。获取"B"作为第一个参数。感谢您的帮助。
如果您
不介意将[]
解释为带有一个空白元素的列表:
list
: BEGL array ENDL
;
array
: array_element ( COMMA array_element )* # arrayValues
;
array_element
:
atom? # array_element_types
;