【发布时间】:2015-08-01 16:04:18
【问题描述】:
在我的 xtext dsl 中,我定义了以下规则:
Port returns tdg::Port:
'port'
'kind' kind=Kind
'type' type=Type;
enum Kind returns tdg::PortKind:
In='in' | Out='out';
enum Type returns tdg::PortType:
Numeric | String | Boolean | Tuple;
tdg 类来自一个ecore 模型。 编译 dsl 语法时收到以下警告。我怎样才能避免它们?
警告(200): ../com.isax.testdatagen.dsl/src-gen/com/isax/testdatagen/parser/antlr/internal/InternalTdgDSL.g:250:1: 决策可以匹配诸如“'port''kind''in''type''String'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 为该输入警告禁用(200): ../com.isax.testdatagen.dsl/src-gen/com/isax/testdatagen/parser/antlr/internal/InternalTdgDSL.g:250:1: 决策可以匹配诸如“'port''kind''in''type''Boolean'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 为该输入警告禁用(200): ../com.isax.testdatagen.dsl/src-gen/com/isax/testdatagen/parser/antlr/internal/InternalTdgDSL.g:250:1: 决策可以匹配诸如“'port''kind''in''type''Tuple'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 为该输入警告禁用(200): ../com.isax.testdatagen.dsl/src-gen/com/isax/testdatagen/parser/antlr/internal/InternalTdgDSL.g:250:1: 决策可以匹配诸如“'port''kind''in''type''Numeric'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 为该输入警告禁用(200): ../com.isax.testdatagen.dsl.ui/src-gen/com/isax/testdatagen/ui/contentassist/antlr/internal/InternalTdgDSL.g:854:30: 决策可以匹配诸如“'port''kind''in''type''Numeric'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 为该输入警告禁用(200): ../com.isax.testdatagen.dsl.ui/src-gen/com/isax/testdatagen/ui/contentassist/antlr/internal/InternalTdgDSL.g:854:30: 决策可以匹配诸如“'port''kind''in''type''String'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 为该输入警告禁用(200): ../com.isax.testdatagen.dsl.ui/src-gen/com/isax/testdatagen/ui/contentassist/antlr/internal/InternalTdgDSL.g:854:30: 决策可以匹配诸如“'port''kind''in''type''Boolean'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 为该输入警告禁用(200): ../com.isax.testdatagen.dsl.ui/src-gen/com/isax/testdatagen/ui/contentassist/antlr/internal/InternalTdgDSL.g:854:30: 决策可以匹配诸如“'port''kind''in''type''Tuple'”之类的输入 使用多个备选方案:1、2 结果,备选方案 2 是 对该输入禁用
【问题讨论】:
-
能否分享一个完整的可复现语法
-
添加如下初始规则即拥有完整的语法:Model: ports+=Port*;
-
这使得语法仍然没有歧义。你的语法中一定有其他东西导致了这个问题。没有蜜蜂能够繁殖,我无能为力
-
仅此而已。我认为重要的是“tdg::Port”、“tdg::PortKind”、“tdg::PortType”、“In|Out”和“Numeric|String|Boolean|Tuple”来自ecore模型。
-
能否分享一下ecore的相关部分?
标签: eclipse dsl xtext emf ecore