我应该如何处理Xtext中的模板字符串?
问题描述:
我有以下输入:我应该如何处理Xtext中的模板字符串?
a: "a is {Foo foo}"
foo
哪里是Foo
类型;业务层最终将为该变量提供一个值。处理输入之后,两个文件将生成:属性文件和一个Java类:
a=a is {0}
public static I18nMessage a(Foo foo) {
return new I18nMessageBuilder().id("a").args(foo).build();
}
的想法是,我分配给每个消息的ID,给了我一个包含方法(其中名称== Java类id)并且接受输入参数来完成消息。
我的问题:我应该如何处理我的Xtext文法中的文本字符串?我希望代码完成参数类型(Foo
),但我不知道如何处理可以包含空格和任何有效的Unicode字符的字符串的其余部分。
对此提出建议?
答
我发现了一个更好的解决方案,其提供了一个非常简单的语法和解决了一些其他问题:
a(Foo foo): "a is " foo;
因此,短信是一个字符串和参数列表。这样,代码完成非常简单,如果要添加格式化程序,则不需要转义序列:
a(Date d): "Date is " d("short");
MWE2做类似的事情。您可能必须为此使用自定义词法分析器。 – 2012-04-02 09:27:30