0
私はANTLR4で関数を実装しました。 例 - FUNCTION( "A"、 "B")ANTLR4:値/パラメーターとしてブランクを受け入れる
文法第1及び第2のパラメータとを区別することができない入力FUNCTION(,"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 : '#' ~[\r\n]* -> skip ;
SPACE : [ \t\r\n] -> skip ;
OTHER : . ;
。 最初のパラメータとして「B」を取得します。 ありがとうございます。
がどのように1つのブランクの要素をリストから( '[]')空のリストを認識しませんか( '[]')?それらを異なるケースとして認識する必要がありますか? –