0

このエラーが発生する理由を理解しようとしています。

    switch (token.type.GetName()) 
    {
        case PascalTokenType.BEGIN.name: // ERROR: A CONSTANT VALUE IS EXPECTED
        {
            CompoundStatementParser compoundParser = new CompoundStatementParser(this);
            statementNode = compoundParser.parse(token);
            break;
        }
    }

GetName()両方とも文字列をname返します。オブジェクトは次のようになります。

    public static readonly PascalTokenType BEGIN = new PascalTokenType("BEGIN");

この問題をステートメントに変更することで回避できることはわかっていますifが、これが完了すると、少なくとも20の条件が発生するので、そうはしません。BEGIN.name実行時まで割り当てられていないからだと思いますか?

4

1 に答える 1

3

ええ、あなたは正しい考えを持っています。問題は、この値が実行時に変更される可能性があることですが、コンパイラーはこれを好みません。

于 2012-05-21T18:11:49.143 に答える