0

この方法でSTRINGターミナルを再定義しました

terminal STRING : ('.'|'+'|'('|')'|'a'..'z'|'A'..'Z'|'_'|'0'..'9')*;

" または ' で区切られていない STRING を認識する必要があるためです。

問題は、生成されたパーサーは機能しますが、認識された文字列の最初と最後の文字が切り捨てられることです。私は何が欠けていますか?

4

1 に答える 1

1

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;
    }
}

詳細については、ドキュメントを参照してください。

于 2012-10-14T09:05:19.223 に答える