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