void ProcessSymbol()
{
switch (current_symbol)
{
case '[':
token = JsonToken.ArrayStart;
parser_return = true;
break;
case ']':
token = JsonToken.ArrayEnd;
parser_return = true;
break;
case '{':
token = JsonToken.ObjectStart;
parser_return = true;
break;
case '}':
token = JsonToken.ObjectEnd;
parser_return = true;
break;
case '"':
if (parser_in_string)
{
parser_in_string = false;
parser_return = true;
}
else
{
if (token == JsonToken.None)
token = JsonToken.String;
parser_in_string = true;
}
break;
case (int)ParserToken.CharSeq:
token_value = lexer.StringValue;
break;
case (int)ParserToken.False:
token = JsonToken.Boolean;
token_value = false;
parser_return = true;
break;
case (int)ParserToken.Null:
token = JsonToken.Null;
parser_return = true;
break;
case (int)ParserToken.Number:
ProcessNumber(lexer.StringValue);
parser_return = true;
break;
case (int)ParserToken.Pair:
token = JsonToken.PropertyName;
break;
case (int)ParserToken.True:
token = JsonToken.Boolean;
token_value = true;
parser_return = true;
break;
}
}