internal override bool TryGetToken(ref string text, out TokenBase token, bool requireReturnValue = true) { token = null; string temp = text; var op = default(Operator); if (temp.Length < 2) { return(false); } if (temp[0] != '=') { if (temp[1] != '=' || temp.Length < 3) { return(false); } for (int i = (int)Operator.Multiply; i <= (int)Operator.Subtract; ++i) { if (EquationTokenizer.representations[i][0] == temp[0]) { op = (Operator)i; } } for (int i = (int)Operator.BitwiseAnd; i <= (int)Operator.BitwiseXor; ++i) { if (EquationTokenizer.representations[i][0] == temp[0]) { op = (Operator)i; } } if (op == default(Operator)) { return(false); } } if (op == default(Operator)) { temp = temp.Substring(1).TrimStart(); } else { temp = temp.Substring(2).TrimStart(); } TokenBase valToken; if (!EquationTokenizer.TryEvaluateExpression(temp, out valToken)) { return(false); } text = ""; token = new AssignmentToken() { Value = valToken, Operator = op }; return(true); }
internal override bool TryGetToken(ref string text, out TokenBase token) { token = null; string temp = text; if (temp.Length == 0 || (!Char.IsLetter(temp[0]) && temp[0] != '_')) { return(false); } int count = 1; while (count < temp.Length && (Char.IsLetterOrDigit(temp[count]) || temp[count] == '_')) { ++count; } string name = temp.Substring(0, count); MemberInfo info = null; if (type != null) { info = type.GetMember(name).FirstOrDefault(); if (info == null) { return(false); } } else { string nameTemp = "$" + name; TokenBase tokenTemp; if (!new ParameterToken().TryGetToken(ref nameTemp, out tokenTemp)) { return(false); } } temp = temp.Substring(count).TrimStart(); if (temp.Length == 0 || temp[0] != '=') { return(false); } temp = temp.Substring(1).TrimStart(); TokenBase valToken; if (!EquationTokenizer.TryEvaluateExpression(temp, out valToken)) { return(false); } text = ""; token = new AssignmentToken(null) { Name = name, Member = info, Value = valToken }; return(true); }