java - 嵌套缩进语言的 Xtext 语法

标签 java eclipse eclipse-plugin antlr xtext

我正在尝试为一种语言编写 Xtext 语法,如下所示:

on Producer1
    then ProducerConsumer1
        then ProducerConsumer1_1
        then ProducerConsumer1_2
            then ProducerConsumer1_2_1
    then ProducerConsumer2
        then ProducerConsumer2_1

on Producer2
    then ProducerConsumer1

使用以下语法,我可以在 Eclipse 编辑器中看到空白 block 已被确认,但未按照我的预期嵌套:

Model:
    model+=On+
;

On:
    'on' producer=ValidID
    BEGIN
        (producerConsumers+=Then)*
    END
;

Then:
    'then' producerConsumer=ValidID
    BEGIN
        (children+=Then)*
    END
;

terminal BEGIN: 'synthetic:BEGIN';  // increase indentation
terminal END: 'synthetic:END';      // decrease indentation

我是 Xtext 的新手,希望能指出我哪里出错了。

最佳答案

你的意思是

Then:
'then' producerConsumer=ID
(BEGIN
    (children+=Then)+
END)?

关于java - 嵌套缩进语言的 Xtext 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30924530/

相关文章:

java - 多线程,可重用的 Runnable 与调用者特定的操作

java - 加载大文件时 Flink 作业在提交时挂起

java - 使用 Java 9 及更高版本(本例中为 JDK11)部署 JAR(JLink 混淆?)

java - 如何更改对象选择字段标题的颜色

java - 异步拆分 IProgressMonitor

Eclipse:嵌套编辑器选项卡?

java - 无法在 Jena 库中创建用于从 RDF 解析或提取 URIS 的模型类?XML 页面

java - Oracle 对 Java 泛型的跟踪之一的潜在问题

java - 将 API 代码与类一起放入 JAR 中有什么缺点吗?

java - Java 时区枚举中的 Eclipse 变量错误