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)) |