作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想实现一个 doGenerate 方法。我不明白我应该如何开发所有这些方法。也许有人可以为我的问题提供前 2-3 种方法的示例。
那是我的 Xtext 文件:
Model:
usestory += UseStory*;
UseStory:
title=Title role=Role target=Target use=Use;
Title:
titlen= NOUN titlev=Verbwrapper ':';
Role:
'Als' role=NOUN;
Target:
'möchte' 'ich' targetn=NOUN targetv=Verbwrapper ',';
Use:
'um' usen=NOUN 'zu' usev=Verbwrapper '.';
Verbwrapper: value=VERB;
terminal NOUN: ('Ä'|'Ö'|'Ü'|('A'..'Z'))(('a'..'z')|'ä'|'ö'|'ü'|'ß')*;
terminal VERB: ('ä'|'ö'|'ü'|'ß'|('a'..'z'))+('en')|('eln')|('n');
这就是我读到的关于Xtend的内容,无法理解单个方法的实现。
/*
* generated by Xtext 2.19.0
*/
class HellodslGenerator extends AbstractGenerator{
String code
override void doGenerate
(Resource resource, IFileSystemAccess2 fsa,IGeneratorContext context)
{
code=""
for (e: resource.allContents.filter(Model).toIterable)
{
e.funktion
}
fsa.generateFile("test.txt",code)
}
def conc(String str) {
code = code + str;
}
def funktion(Model m)
m.UseStory.funktion
}
我想简单地打印编辑器中的所有句子。
最佳答案
您通常不会根据编辑器中的内容生成,而是根据 AST 中的内容生成。如果您在 Xtend 中编写生成器,通常还可以使用 Xtend 的丰富字符串功能。这可以非常简单地看起来像
class MyDslGenerator extends AbstractGenerator {
override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
fsa.generateFile("test.txt", '''
«FOR model : resource.allContents.filter(Model).toIterable»
«FOR userStory : model.usestory»
userstory
- title: «userStory.title.titlen» «userStory.title.titlev.value»
- role: «userStory.role»
- target: «userStory.target.targetn» «userStory.target.targetv.value»
- use: «userStory.use.usen» «userStory.use.usev.value»
«ENDFOR»
«ENDFOR»
''')
}
}
当然你也可以通过节点模型访问文本。这看起来像
class MyDslGenerator extends AbstractGenerator {
override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
fsa.generateFile("test.txt", '''
«FOR model : resource.allContents.filter(Model).toIterable»
«FOR userStory : model.usestory»
«NodeModelUtils.findActualNodeFor(userStory)»
«ENDFOR»
«ENDFOR»
''')
}
}
关于java - 如何实现 doGenerate 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62473581/
我想实现一个 doGenerate 方法。我不明白我应该如何开发所有这些方法。也许有人可以为我的问题提供前 2-3 种方法的示例。 那是我的 Xtext 文件: Model: usestory
我正在开发一个 Xtext 项目,并在我的 Generator.xtend 中生成一个 python 脚本。当我在 Eclipse 中运行 ServerLaucher.xtend 时一切正常,但如果我
我是一名优秀的程序员,十分优秀!