【发布时间】:2018-06-14 15:57:48
【问题描述】:
我希望能够创建包含块的库,将库导入到单独的文件中,然后在 blockUse 语句中使用库中的块。
我创建了以下语法:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Program:
(imports+=Import)*
(libraries+=Library)*
(customBlocks+= Block)*
(blockUses+= BlockUse)*
;
Import:
'import' importedNamespace=QualifiedNameWithWildcard
;
QualifiedNameWithWildcard:
QualifiedName '.*'?
;
QualifiedName:
ID ('.' ID)*
;
Library:
'Library' name=QualifiedName
(blocks+=Block)+
'EndLibrary'
;
Block:
'block' name=ID
;
BlockUse:
'show' block=[Block|QualifiedName]
;
我的最终目标是创建两个文件,一个带有库,一个使用该库中的块,如下所示:
文件 1:
Library lib1
block block1
block block2
EndLibrary
文件 2:
import lib1.*
show block1
我相信我的大部分困惑来自importedNamespace 背后的含义和使用cross references
这些是我已经尝试过的一些示例:
http://www.eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html#add-imports http://blog2.vorburger.ch/2013/05/xtext-dsl-with-epackage-namespace.html https://blogs.itemis.com/en/in-five-minutes-to-transitive-imports-within-a-dsl-with-xtext
【问题讨论】:
标签: java eclipse import dsl xtext