String 从Xtext2中的规则结果中删除引号
我有以下Xtext2语法:String 从Xtext2中的规则结果中删除引号,string,xtext,String,Xtext,我有以下Xtext2语法: Bibliography: macros += Macro* ; Macro: "@string{" name = ID "=" value = LATEXSTRING "}" ; terminal LATEXSTRING: '"' (!('"'))* '"' ; 当解析字符串时 @string{ABBREV = "Some Long Text"} 并将其存储在macro类型的某个对象macro中,它具有以下值: macro.name: ABBR
Bibliography:
macros += Macro*
;
Macro:
"@string{" name = ID "=" value = LATEXSTRING "}"
;
terminal LATEXSTRING:
'"' (!('"'))* '"'
;
当解析字符串时
@string{ABBREV = "Some Long Text"}
并将其存储在macro
类型的某个对象macro
中,它具有以下值:
macro.name: ABBREV
macro.value: "Some Long Text"
两种类型均为
String
(EString
)。我想有没有报价虽然价值。如何实现这一点?您必须为规则LATEXSTRING注册一个值转换。根据报告,应该是这样的:
@Inject
private LatexStringConverter latexStringConverter;
@ValueConverter(rule = "LATEXSTRING")
public IValueConverter<String> converterForLatexString() {
return latexStringConverter;
}
@Inject
私有LatexStringConverter LatexStringConverter;
@ValueConverter(rule=“LATEXSTRING”)
公共IValueConverter转换器forlatexString(){
返回最新的字符串转换器;
}
与
公共类LatexStringConverter扩展AbstractLexerBaseConverter{
@凌驾
受保护的字符串toEscapedString(字符串值){
..
}
公共字符串toValue(字符串,INode节点){
..
}
}
这正是我所需要的。我还在网站上找到了一些显示如何应用它的源代码。
public class LatexStringConverter extends AbstractLexerBasedConverter<String> {
@Override
protected String toEscapedString(String value) {
..
}
public String toValue(String string, INode node) {
..
}
}