Mercurial > pub > ImplabNet
comparison Implab/Formats/JSON/JSONGrammar.cs @ 183:4f82e0f161c3 ref20160224
fixed DFA optimization, JSON is fully functional
| author | cin |
|---|---|
| date | Fri, 25 Mar 2016 02:49:02 +0300 |
| parents | 76e8f2ba12b8 |
| children |
comparison
equal
deleted
inserted
replaced
| 182:76e8f2ba12b8 | 183:4f82e0f161c3 |
|---|---|
| 15 String, | 15 String, |
| 16 Number, | 16 Number, |
| 17 Literal, | 17 Literal, |
| 18 NameSeparator, | 18 NameSeparator, |
| 19 ValueSeparator, | 19 ValueSeparator, |
| 20 Whitespace, | |
| 20 | 21 |
| 21 StringBound, | 22 StringBound, |
| 22 EscapedChar, | 23 EscapedChar, |
| 23 UnescapedChar, | 24 UnescapedChar, |
| 24 EscapedUnicode | 25 EscapedUnicode |
| 71 .Or(beginObject.Tag(TokenType.BeginObject)) | 72 .Or(beginObject.Tag(TokenType.BeginObject)) |
| 72 .Or(endObject.Tag(TokenType.EndObject)) | 73 .Or(endObject.Tag(TokenType.EndObject)) |
| 73 .Or(beginArray.Tag(TokenType.BeginArray)) | 74 .Or(beginArray.Tag(TokenType.BeginArray)) |
| 74 .Or(endArray.Tag(TokenType.EndArray)) | 75 .Or(endArray.Tag(TokenType.EndArray)) |
| 75 .Or(nameSep.Tag(TokenType.NameSeparator)) | 76 .Or(nameSep.Tag(TokenType.NameSeparator)) |
| 76 .Or(valueSep.Tag(TokenType.ValueSeparator)); | 77 .Or(valueSep.Tag(TokenType.ValueSeparator)) |
| 78 .Or(SymbolSetToken('\n', '\r', '\t', ' ').Closure().Tag(TokenType.Whitespace)); | |
| 77 | 79 |
| 78 | 80 |
| 79 var jsonStringExpression = | 81 var jsonStringExpression = |
| 80 quote.Tag(TokenType.StringBound) | 82 quote.Tag(TokenType.StringBound) |
| 81 .Or(backSlash.Cat(specialEscapeChars).Tag(TokenType.EscapedChar)) | 83 .Or(backSlash.Cat(specialEscapeChars).Tag(TokenType.EscapedChar)) |
