Exemplo n.º 1
0
        /// <summary>
        /// 評価用メソッド.
        /// </summary>
        /// <param name="context">コンテキストオブジェクト.</param>
        public override void Interpret(EBNFContext context)
        {
            DebugLog(": ExceptionExpression.Interpret()");

            // 戻り値の準備
            StringBuilder       pattern = new StringBuilder();
            GeneratedExpression exp     = ExpressionFactory.CreateException();

            // 最初のトークンをチェック
            Token <TokenType> token = context.Current;

            CheckTokenExists(token);
            CheckFirstToken(token);
            pattern.Append(token.Text);

            // 2 番目のトークンをチェック
            token = context.Next();
            CheckTokenExists(token);
            DebugLog(": ExceptionExpression: (" + token.Type + ")");

            switch (token.Type)
            {
            case TokenType.String:
                exp.AddExpression(
                    ParseTerminal(context)
                    );
                pattern.Append(token.Text);
                token = context.Next();
                break;

            default:
                ThrowParseException(ErrorMessages.UnexpectedToken, token);
                break;
            }

            CheckTokenExists(token);
            if (token.IsLast)
            {
                //ThrowParseException(ErrorMessages.UnexpectedToken, token);
            }

            // 戻り値
            exp.Name = pattern.ToString();
            context.PushExpression(exp);
            //GeneratedExpression.Name = pattern;
        }