public MyString() { var hex = new Choices( new Ranges('0', '9'), new Ranges('a', 'f'), new Ranges('A', 'F')); var unicodeCharacters = new Sequance( new Charact('\\'), new Charact('u'), new Sequance( hex, hex, hex, hex)); var escape = new Sequance(new Charact('\\'), new Any("rntfb/\\")); var quotes = new Charact('\u0022'); var char1 = new Ranges('\u0020', '\u0021'); var char2 = new Ranges('\u0023', '\u005B'); var char3 = new Ranges('\u005D', '\uFFFF'); var validChars = new Many( new Choices( char1, char2, char3, unicodeCharacters, escape)); pattern = new Sequance( quotes, validChars, quotes); }
public Value() { var ws = new Many(new Any(" \r\n\t")); var value = new Choices( new MyString(), new Numb(), new Texts("true"), new Texts("false"), new Texts("null")); var comma = new Sequance(new Charact(','), ws); var arrayElements = new MyList(value, comma); var openBraket = new Sequance(ws, new Charact('['), ws); var closeBraket = new Sequance(ws, new Charact(']'), ws); var semicolumns = new Sequance(ws, new Charact(':'), ws); var open = new Sequance(ws, new Charact('{'), ws); var close = new Sequance(ws, new Charact('}'), ws); var array = new Sequance( openBraket, arrayElements, closeBraket); var objectElements = new MyList( new Sequance( new MyString(), semicolumns, value), comma); var newObject = new Sequance( open, objectElements, close); value.Add(array); value.Add(newObject); pattern = new Sequance(ws, value, ws); }