【问题标题】:ANTLR4 : Accepting blank as a value/parameterANTLR4:接受空白作为值/参数
【发布时间】:2018-04-03 22:43:16
【问题描述】:

我在 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”作为第一个参数。 感谢您的帮助。

【问题讨论】:

  • 你如何从一个空白元素 ([]) 的列表中识别空列表 ([])?您需要将它们识别为不同的情况吗?

标签: parsing antlr grammar antlr4


【解决方案1】:

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

list
 : BEGL array ENDL
 ;

array
 : array_element ( COMMA array_element )* # arrayValues
 ;


array_element
:
    atom? # array_element_types
;

【讨论】:

  • 同意这部分。让我们说一下函数: FUNCTION(,"B") ,在这种情况下,我需要知道哪个是第一个参数,哪个是第二个参数。但它只给出一个参数
猜你喜欢
  • 2018-04-04
  • 1970-01-01
  • 2013-11-19
  • 2015-06-08
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2015-01-13
相关资源
最近更新 更多