Exemplo n.º 1
0
        private IExpression Consume_DialogueMember()
        {
            Token token = currentToken;

            if (currentToken.Type == TokenType.L_PAREN)
            {
                IExpression condition = Consume_Expression();

                token = currentToken;
                Consume(TokenType.CONDITION);

                IExpression member = Consume_DialogueMember();

                return(ExpressionFactory.CreateBinary(condition, member, token.Type, token));
            }

            IDialogueMember dialogueMember = null;

            Consume(TokenType.MEMBERDELIMITER_LEFT);

            switch (currentToken.Type)
            {
            case TokenType.ACTOR:
                Consume(TokenType.ACTOR);
                Consume(TokenType.ASSIGN);
                dialogueMember = ExpressionFactory.CreateDialogueActorExpression(Consume_Factor(), token);
                break;

            case TokenType.MOOD:
                Consume(TokenType.MOOD);
                Consume(TokenType.ASSIGN);
                dialogueMember = ExpressionFactory.CreateDialogueMoodExpression(Consume_Factor(), token);
                break;

            case TokenType.CHOICE_MEMBER:
                dialogueMember = Consume_ChoiceExpression();
                break;
            }

            Consume(TokenType.MEMBERDELIMITER_RIGHT);

            return(dialogueMember);
        }