この方法でSTRINGターミナルを再定義しました
terminal STRING : ('.'|'+'|'('|')'|'a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
" または ' で区切られていない STRING を認識する必要があるためです。
問題は、生成されたパーサーは機能しますが、認識された文字列の最初と最後の文字が切り捨てられることです。私は何が欠けていますか?
STRING ルールをカスタマイズする場合は、それぞれの値コンバーターも調整する必要があります。
次のようなものをランタイム モジュールにバインドする必要があります。
public class MyStringValueConverter extends STRINGValueConverter {
@Override
protected String toEscapedString(String value) {
return value;
}
public String toValue(String string, INode node) {
if (string == null)
return null;
return string;
}
}
詳細については、ドキュメントを参照してください。