internal override bool TryGetToken(ref string text, out TokenBase token, bool requireReturnValue = true) { token = null; bool inQuotes = false; int brackets = 0; int i = 0; while (true) { if (i >= text.Length) { return(false); } if (i > 0 && text[i] == '\'' && text[i - 1] != '\\') { inQuotes = !inQuotes; } else if (!inQuotes) { if (text[i] == '(') { ++brackets; } else if (text[i] == ')') { --brackets; if (brackets == 0) { break; } } } ++i; } string temp = text.Substring(1, i - 1); var tuple = GetNameMatches(temp, null, null).Where(tup => tup.Item1 is Type).Reverse().FirstOrDefault(); if (tuple == null) { return(false); } temp = text.Substring(i + 1).TrimStart(); TokenBase valToken = null; if (parseTarget && !EquationTokenizer.TryGetValueToken(ref temp, out valToken)) { return(false); } text = temp; token = new TypeCastToken() { TargetType = tuple.Item1 as Type, Target = valToken }; return(true); }
internal override bool TryGetToken(ref string text, out TokenBase token, bool requireReturnValue = true) { token = null; if (text.Length == 0) { return(false); } Operator op; if (text[0] == '!') { op = Operator.Not; } else if (text[0] == '+') { op = Operator.Positive; } else if (text[0] == '-') { op = Operator.Negative; } else { return(false); } TokenBase valToken; string temp = text.Substring(1).TrimStart(); if (!EquationTokenizer.TryGetValueToken(ref temp, out valToken)) { return(false); } token = new UnaryOperatorToken() { operation = op, value = valToken }; text = temp; return(true); }
internal override bool TryGetToken(ref string text, out TokenBase token) { token = null; if (!text.StartsWith("throw")) { return(false); } string temp = text.Substring(5).TrimStart(); TokenBase valToken = null; if (!EquationTokenizer.TryGetValueToken(ref temp, out valToken)) { return(false); } text = temp; token = new ThrowToken() { Exception = valToken }; return(true); }