0

我有以下 Xtext2 语法:

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) 类型。我希望没有引号的值。我怎样才能做到这一点?

4

1 回答 1

1

您必须为规则 LATEXSTRING 注册一个值转换。根据文档,它应该如下所示:

@Inject
private LatexStringConverter latexStringConverter; 

@ValueConverter(rule = "LATEXSTRING")
public IValueConverter<String> converterForLatexString() {
  return latexStringConverter;
}

public class LatexStringConverter extends AbstractLexerBasedConverter<String> {
  @Override
  protected String toEscapedString(String value) {
    ..      
  }

  public String toValue(String string, INode node) {
    ..
  }
}
于 2012-07-12T12:21:38.407 回答