Esempio n. 1
0
        private Exp ParseAssign()
        {
            Exp leftExp = ParseNameValueExp();

            if (tape.HasCurrent && tape.Current.IsKind(TokenKindSymbol.Assign, TokenKindSymbol.AssignTo))
            {
                ExpAssign assignExp = new ExpAssign(expContext);
                assignExp.IsAssignTo = (tape.Current.IsKind(TokenKindSymbol.AssignTo));
                tape.MoveNext();
                Exp rightExp = ParseBinaryLogicExp();

                if (!assignExp.IsAssignTo)
                {
                    assignExp.ToExp    = leftExp;
                    assignExp.ValueExp = rightExp;
                }
                else
                {
                    assignExp.ToExp    = rightExp;
                    assignExp.ValueExp = leftExp;
                }
                return(assignExp);
            }
            else
            {
                return(leftExp);
            }
        }
Esempio n. 2
0
        private Exp ParseAssign()
        {
            Exp leftExp = parseBinaryLogicExp();

            if (tape.Current.Kind == TokenKind.Assign || tape.Current.Kind == TokenKind.AssignTo)
            {
                ExpAssign assignExp = new ExpAssign();
                assignExp.IsAssignTo = (tape.Current.Kind == TokenKind.AssignTo);
                tape.MoveNext();
                Exp rightExp = parseBinaryLogicExp();

                if (!assignExp.IsAssignTo)
                {
                    assignExp.ToExp    = leftExp;
                    assignExp.ValueExp = rightExp;
                }
                else
                {
                    assignExp.ToExp    = rightExp;
                    assignExp.ValueExp = leftExp;
                }
                return(assignExp);
            }
            else
            {
                return(leftExp);
            }
        }