예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }