Xtext 空白感知语法不能 Lex BEGIN 和 END

问题描述

我正在研究一种空白感知语法,如 python dsl。我需要使用终端规则 NEXT_LINE 作为一个语句的结尾。但是我发现这种方法会使 BEGIN-END 缩进不匹配。 我能做些什么来解决这个问题? 这是简化的语法:

hidden(WS)
Model:
    greetings+=Greeting*;
    
Greeting:
    {Greeting} 'greet' NEXT_LINE
    BEGIN
        (exp+=ID)*
    END
;
terminal BEGIN: 'synthetic:BEGIN';  // increase indentation
terminal END: 'synthetic:END';      // decrease indentation
terminal ID:
    '^'?('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
terminal NEXT_LINE:
    ('\n'|'\r')+;
terminal WS:
    (' '|'\t')+;

这是示例 dsl:

greet
    a
    b
    c

此示例将导致“在 'a' 处缺少 RULE_BEGIN”。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...