private static LogicJSONNode ParseValue(CharStream stream)
        {
            stream.SkipWhitespace();

            char          charValue = stream.NextChar();
            LogicJSONNode node      = null;

            switch (charValue)
            {
            case '{':
                node = LogicJSONParser.ParseObject(stream);
                break;

            case '[':
                node = LogicJSONParser.ParseArray(stream);
                break;

            case 'n':
                node = LogicJSONParser.ParseNull(stream);
                break;

            case 'f':
                node = LogicJSONParser.ParseBoolean(stream);
                break;

            case 't':
                node = LogicJSONParser.ParseBoolean(stream);
                break;

            case '"':
                node = LogicJSONParser.ParseString(stream);
                break;

            case '-':
                node = LogicJSONParser.ParseNumber(stream);
                break;

            default:
                if (charValue >= '0' && charValue <= '9')
                {
                    node = LogicJSONParser.ParseNumber(stream);
                }
                else
                {
                    LogicJSONParser.ParseError("Not of any recognized value: " + charValue);
                }

                break;
            }

            return(node);
        }
 public static LogicJSONObject ParseObject(string json)
 {
     return(LogicJSONParser.ParseObject(new CharStream(json)));
 }