小编Aya*_*ash的帖子

ANTLR贪婪地解析,即使它可以匹配高优先级规则

我使用以下ANTLR语法来定义函数.

definition_function
    : DEFINE FUNCTION function_name '[' language_name ']'
      RETURN attribute_type '{' function_body '}'
    ;

function_name
    : id
    ;

language_name
    : id
    ;

function_body
    : SCRIPT
    ;

SCRIPT
    :   '{' ('\u0020'..'\u007e' | ~( '{' | '}' ) )* '}' 
        { setText(getText().substring(1, getText().length()-1)); }
    ;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试解析下面的两个函数时,

define function concat[Scala] return string {
  var concatenatedString = ""
  for(i <- 0 until data.length) {
     concatenatedString += data(i).toString
  }
  concatenatedString
};
define function concat[JavaScript] return string {
  var str1 = data[0];
  var str2 = …
Run Code Online (Sandbox Code Playgroud)

antlr antlr4

6
推荐指数
1
解决办法
811
查看次数

标签 统计

antlr ×1

antlr4 ×1