我在eclipse.org/Xtext/documentation上的教程中工作,並展開了這些示例。使用Domainmodel.xtext示例,我爲每個實體生成一個Java-Classfile,如Tut中所述。XTEND在DomainmodelGenerator.xtend(XTEXT代碼生成項目)中的For-Loop索引控制
的DSL指定的特徵的數目arbitry,又名類屬性:
Entity:
'entity' name = ID
('extends' superType = [Entity | QualifiedName])?
'{'
(features += Feature)*
'}'
;
在DomainmodelGenerator.xtend然後我添加代碼以產生一個JAVA-classconstructor。該XTEND-for循環週期通過所有arguements - 看起來是這樣的:
def compile_Constructors(Entity e) '''
public «e.name.toFirstUpper»
(
«FOR f : e.features»
«f.type.fullyQualifiedName» «f.name.toFirstUpper»,
«ENDFOR»
)
{}
'''
問題 有了這個最後的參數還有發出一個逗號。如何通過循環索引獲得XTEND的控制權,以使生成器發出合法的JAVA代碼?
高雅作品的罰款。我繼續閱讀XTEND文檔。學會了「」「一MULTILINESTRING‘’」被稱爲模板,一個for循環語法涵蓋與優雅的語法這一要求: '\t 高清compile_Constructors(實體E)‘’」 公共«e.name.toFirstUpper » ( \t \t«FOR F:e.features SEPARATOR 「」» \t \t«f.type.fullyQualifiedName» «f.name.toFirstUpper» \t \t«ENDFOR» ) { \t } ' – olippuner
對於代碼抱歉反引號不起作用,並且我遇到了5分鐘超時的評論。 – olippuner