private static Token ToToken(string token) { var ret = new Token { Value = token, TokenType = Token.Symbol.Variable }; if (token.Length == 1 && OperatorTokens.Contains(token.First())) { if (token == "(" || token == ")") { ret.TokenType = Token.Symbol.Bracket; } else { ret.TokenType = Token.Symbol.Operator; } } else if (FunctionTokens.ContainsKey(token)) { ret.TokenType = Token.Symbol.Function; } else if (IsDigit(token.First())) { ret.TokenType = Token.Symbol.Number; ret.Number = decimal.Parse(token); } return(ret); }
/// <summary> /// Converts the expected token to its lexeme equivalent /// </summary> public static string GetExpectedLexeme(Tokens desired) { string expected = ""; if ((int)desired < KeyWords.Count) { expected = "\"" + KeyWords[(int)desired] + "\""; } else if (OperatorTokens.Contains(desired)) { expected = "an operator"; } else if (desired == Tokens.IdT) { expected = "an identifier"; } else if (desired == Tokens.NumT) { expected = "a number"; } else if (desired == Tokens.LParenT) { expected = "\"(\""; } else if (desired == Tokens.RParenT) { expected = "\")\""; } else if (desired == Tokens.LBrackT) { expected = "\"[\""; } else if (desired == Tokens.RBrackT) { expected = "\"]\""; } else if (desired == Tokens.LBraceT) { expected = "\"{\""; } else if (desired == Tokens.RBraceT) { expected = "\"}\""; } else if (desired == Tokens.CommaT) { expected = "\",\""; } else if (desired == Tokens.SemiT) { expected = "\";\""; } else if (desired == Tokens.PeriodT) { expected = "\".\""; } return(expected); }