gpt4 book ai didi

java - 如何实现 doGenerate 方法?

转载 作者:行者123 更新时间:2023-12-01 16:13:20 26 4
gpt4 key购买 nike

我想实现一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com