gpt4 book ai didi

java - 格式化字符串内容 xtext 2.14

转载 作者:行者123 更新时间:2023-12-02 11:06:43 25 4
gpt4 key购买 nike

给定一个语法(下面的简化版本),我可以在语法的一部分中输入任意文本,是否可以格式化任意文本的内容?我了解如何格式化任意文本相对于语法其余部分的位置,但不知道是否可以格式化内容字符串本身?

示例语法

Model:
'content' content=RT

terminal RT: // (returns ecore::EString:)
'RT>>' -> '<<RT';

示例内容

content RT>>
# Some sample arbitrary text
which I would like to format
<<RT

最佳答案

您可以将自定义ITextReplacer添加到字符串区域。假设你有这样的语法

Model:
greetings+=Greeting*;

Greeting:
'Hello' name=STRING '!';

您可以在格式化程序中执行类似以下操作

def dispatch void format(Greeting model, extension IFormattableDocument document) {
model.prepend[newLine]
val region = model.regionFor.feature(MyDslPackage.Literals.GREETING__NAME)
val r = new AbstractTextReplacer(document, region) {
override createReplacements(ITextReplacerContext it) {
val text = region.text
var int index = text.indexOf(SPACE);
val offset = region.offset
while (index >=0){
it.addReplacement(region.textRegionAccess.rewriter.createReplacement(offset+index, SPACE.length, "\n"))
index = text.indexOf(SPACE, index+SPACE.length()) ;
}
it
}
}
addReplacer(r)
}

这将改变这个模型

Hello "A B C"!

进入

Hello "A
B
C"!

当然,您需要想出更复杂的格式化程序逻辑。请参阅How to define different indentation levels in the same document with Xtext formatter也是

关于java - 格式化字符串内容 xtext 2.14,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50904789/

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