LSharp.Reader.AtomReader C# (CSharp) Method

AtomReader() public static method

public static AtomReader ( int c, TextReader textReader ) : Object
c int
textReader TextReader
return Object
        public static Object AtomReader(int c, TextReader textReader)
        {
            if (((Char)c) == ')')
            {
                return RPAREN;
            }

            if (((Char)c) == ']')
            {
                return RBRACKET;
            }

            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append((char)c);
            bool done = false;

            do
            {
                int nextChar = textReader.Peek();

                if ((nextChar == -1) || (IsTerminator((Char)nextChar)))
                    done = true;
                else
                {
                    c = textReader.Read();
                    stringBuilder.Append((char)c);
                }

            } while (!done);

            string token = stringBuilder.ToString();

            Double d;

            // Try reading the number as an integer
            if (Double.TryParse(token, System.Globalization.NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out d))
            {
                return (int)d;
            }

            // Try reading the number as a double
            if (Double.TryParse(token, System.Globalization.NumberStyles.Any, NumberFormatInfo.InvariantInfo, out d))
            {
                return d;
            }
            else
            {
                return Symbol.FromName(token);
            }
        }