ANTLR4:接受空白作为值/参数

时间:2017-10-23 11:38:52

标签: parsing antlr grammar antlr4

我在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  : '#' ~[\r\n]* -> skip  ;

SPACE  : [ \t\r\n] -> skip  ;

OTHER  : .  ;

对于输入FUNCTION(,"B"), 无法区分第一个和第二个参数。 将“B”作为第一个参数。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果您不介意将[]解释为包含一个空白元素的列表:

list
 : BEGL array ENDL
 ;

array
 : array_element ( COMMA array_element )* # arrayValues
 ;


array_element
:
    atom? # array_element_types
;