问题描述
我正在研究一种空白感知语法,如 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 (将#修改为@)