Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 从Xtext2中的规则结果中删除引号_String_Xtext - Fatal编程技术网

String 从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

我有以下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
)。我想有没有报价虽然价值。如何实现这一点?

您必须为规则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) {
    ..
  }
}