private static bool State22(StateContext context) { int counter = 0; int mult = 4096; context.Parser.UnicodeCharacter = 0; while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter >= '0' && context.Parser.InputCharacter <= '9' || context.Parser.InputCharacter >= 'A' && context.Parser.InputCharacter <= 'F' || context.Parser.InputCharacter >= 'a' && context.Parser.InputCharacter <= 'f') { context.Parser.UnicodeCharacter += HexValue(context.Parser.InputCharacter) * mult; counter++; mult /= 16; if (counter == 4) { context.Parser.StringBuffer.Append(Convert.ToChar(context.Parser.UnicodeCharacter)); context.NextState = context.StateStack; return(true); } continue; } return(false); } return(true); }
private static bool State23(StateContext context) { while (context.Parser.GetCharacter()) { switch (context.Parser.InputCharacter) { case '\'': context.Parser.PreviousCharacter(); context.Return = true; context.NextState = 24; return(true); case '\\': context.StateStack = 23; context.NextState = 21; return(true); default: context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); continue; } } return(true); }
private static bool State8(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter >= '0' && context.Parser.InputCharacter <= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); continue; } if (context.Parser.InputCharacter == ' ' || context.Parser.InputCharacter >= '\t' && context.Parser.InputCharacter <= '\r') { context.Return = true; context.NextState = 1; return(true); } switch (context.Parser.InputCharacter) { case ',': case ']': case '}': context.Parser.PreviousCharacter(); context.Return = true; context.NextState = 1; return(true); default: return(false); } } return(true); }
private static bool State21(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case 'u': context.NextState = 22; return(true); case '"': case '\'': case '/': case '\\': case 'b': case 'f': case 'n': case 'r': case 't': context.Parser.StringBuffer.Append(ProcessEscChar(context.Parser.InputCharacter)); context.NextState = context.StateStack; return(true); default: return(false); } }
private static bool State5(StateContext context) { context.Parser.GetCharacter(); if (context.Parser.InputCharacter >= '0' && context.Parser.InputCharacter <= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 6; return(true); } return(false); }
private static bool State27(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter == '*') { context.NextState = 28; return(true); } } return(true); }
private static bool State17(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case 'l': context.NextState = 18; return(true); default: return(false); } }
public JsonParser(TextReader reader) { InputBuffer = 0; StringBuffer = new StringBuilder(128); State = 1; AllowComments = false; AllowSingleQuotedStrings = false; EndOfInput = false; this.Reader = reader; Context = new StateContext(); Context.Parser = this; }
private static bool State24(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case '\'': context.Parser.InputCharacter = '"'; context.Return = true; context.NextState = 1; return(true); default: return(false); } }
private static bool State25(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case '*': context.NextState = 27; return(true); case '/': context.NextState = 26; return(true); default: return(false); } }
private static bool State28(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter == '*') { continue; } if (context.Parser.InputCharacter == '/') { context.NextState = 1; return(true); } context.NextState = 27; return(true); } return(true); }
private static bool State2(StateContext context) { context.Parser.GetCharacter(); if (context.Parser.InputCharacter >= '1' && context.Parser.InputCharacter <= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 3; return(true); } switch (context.Parser.InputCharacter) { case '0': context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 4; return(true); default: return(false); } }
private static bool State28(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter == '*') continue; if (context.Parser.InputCharacter == '/') { context.NextState = 1; return true; } context.NextState = 27; return true; } return true; }
private static bool State27(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter == '*') { context.NextState = 28; return true; } } return true; }
private static bool State25(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case '*': context.NextState = 27; return true; case '/': context.NextState = 26; return true; default: return false; } }
private static bool State24(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case '\'': context.Parser.InputCharacter = '"'; context.Return = true; context.NextState = 1; return true; default: return false; } }
private static bool State23(StateContext context) { while (context.Parser.GetCharacter()) { switch (context.Parser.InputCharacter) { case '\'': context.Parser.PreviousCharacter(); context.Return = true; context.NextState = 24; return true; case '\\': context.StateStack = 23; context.NextState = 21; return true; default: context.Parser.StringBuffer.Append((char) context.Parser.InputCharacter); continue; } } return true; }
private static bool State22(StateContext context) { int counter = 0; int mult = 4096; context.Parser.UnicodeCharacter = 0; while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter >= '0' && context.Parser.InputCharacter <= '9' || context.Parser.InputCharacter >= 'A' && context.Parser.InputCharacter <= 'F' || context.Parser.InputCharacter >= 'a' && context.Parser.InputCharacter <= 'f') { context.Parser.UnicodeCharacter += HexValue(context.Parser.InputCharacter) * mult; counter++; mult /= 16; if (counter == 4) { context.Parser.StringBuffer.Append(Convert.ToChar(context.Parser.UnicodeCharacter)); context.NextState = context.StateStack; return true; } continue; } return false; } return true; }
private static bool State21(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case 'u': context.NextState = 22; return true; case '"': case '\'': case '/': case '\\': case 'b': case 'f': case 'n': case 'r': case 't': context.Parser.StringBuffer.Append(ProcessEscChar(context.Parser.InputCharacter)); context.NextState = context.StateStack; return true; default: return false; } }
private static bool State5(StateContext context) { context.Parser.GetCharacter(); if (context.Parser.InputCharacter >= '0' && context.Parser.InputCharacter <= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 6; return true; } return false; }
private static bool State8(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter >= '0' && context.Parser.InputCharacter<= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); continue; } if (context.Parser.InputCharacter == ' ' || context.Parser.InputCharacter >= '\t' && context.Parser.InputCharacter<= '\r') { context.Return = true; context.NextState = 1; return true; } switch (context.Parser.InputCharacter) { case ',': case ']': case '}': context.Parser.PreviousCharacter(); context.Return = true; context.NextState = 1; return true; default: return false; } } return true; }
private static bool State7(StateContext context) { context.Parser.GetCharacter(); if (context.Parser.InputCharacter >= '0' && context.Parser.InputCharacter<= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 8; return true; } switch (context.Parser.InputCharacter) { case '+': case '-': context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 8; return true; default: return false; } }
private static bool State1(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter == ' ' || context.Parser.InputCharacter >= '\t' && context.Parser.InputCharacter <= '\r') continue; if (context.Parser.InputCharacter >= '1' && context.Parser.InputCharacter <= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 3; return true; } switch (context.Parser.InputCharacter) { case '"': context.NextState = 19; context.Return = true; return true; case ',': case ':': case '[': case ']': case '{': case '}': context.NextState = 1; context.Return = true; return true; case '-': context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 2; return true; case '0': context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 4; return true; case 'f': context.NextState = 12; return true; case 'n': context.NextState = 16; return true; case 't': context.NextState = 9; return true; case '\'': if (!context.Parser.AllowSingleQuotedStrings) return false; context.Parser.InputCharacter = '"'; context.NextState = 23; context.Return = true; return true; case '/': if (!context.Parser.AllowComments) return false; context.NextState = 25; return true; default: return false; } } return true; }
private static bool State9(StateContext context) { context.Parser.GetCharacter(); switch (context.Parser.InputCharacter) { case 'r': context.NextState = 10; return true; default: return false; } }
private static bool State1(StateContext context) { while (context.Parser.GetCharacter()) { if (context.Parser.InputCharacter == ' ' || context.Parser.InputCharacter >= '\t' && context.Parser.InputCharacter <= '\r') { continue; } if (context.Parser.InputCharacter >= '1' && context.Parser.InputCharacter <= '9') { context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 3; return(true); } switch (context.Parser.InputCharacter) { case '"': context.NextState = 19; context.Return = true; return(true); case ',': case ':': case '[': case ']': case '{': case '}': context.NextState = 1; context.Return = true; return(true); case '-': context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 2; return(true); case '0': context.Parser.StringBuffer.Append((char)context.Parser.InputCharacter); context.NextState = 4; return(true); case 'f': context.NextState = 12; return(true); case 'n': context.NextState = 16; return(true); case 't': context.NextState = 9; return(true); case '\'': if (!context.Parser.AllowSingleQuotedStrings) { return(false); } context.Parser.InputCharacter = '"'; context.NextState = 23; context.Return = true; return(true); case '/': if (!context.Parser.AllowComments) { return(false); } context.NextState = 25; return(true); default: return(false); } } return(true); }