omlish 0.0.0.dev213__py3-none-any.whl → 0.0.0.dev215__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- omlish/.manifests.json +4 -4
- omlish/__about__.py +3 -5
- omlish/antlr/__init__.py +3 -0
- omlish/antlr/parsing.py +34 -2
- omlish/asyncs/asyncio/asyncio.py +34 -0
- omlish/asyncs/ioproxy/all.py +32 -0
- omlish/asyncs/ioproxy/io.py +13 -13
- omlish/asyncs/ioproxy/proxier.py +30 -30
- omlish/asyncs/ioproxy/typing.py +3 -3
- omlish/formats/json/stream/lex.py +1 -0
- omlish/formats/json5/Json5.g4 +172 -0
- omlish/formats/json5/__init__.py +8 -0
- omlish/formats/json5/_antlr/Json5Lexer.py +353 -0
- omlish/formats/json5/_antlr/Json5Listener.py +78 -0
- omlish/formats/json5/_antlr/Json5Parser.py +616 -0
- omlish/formats/json5/_antlr/Json5Visitor.py +51 -0
- omlish/formats/json5/_antlr/__init__.py +0 -0
- omlish/formats/{json5.py → json5/codec.py} +6 -11
- omlish/formats/json5/errors.py +2 -0
- omlish/formats/json5/literals.py +130 -0
- omlish/formats/json5/parsing.py +79 -0
- omlish/lang/__init__.py +2 -0
- omlish/lang/imports.py +4 -0
- omlish/lang/strings.py +33 -1
- omlish/lite/marshal.py +79 -12
- omlish/os/files.py +17 -30
- omlish/os/temp.py +50 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev215.dist-info}/METADATA +5 -7
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev215.dist-info}/RECORD +33 -21
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev215.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev215.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev215.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev215.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,616 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
# Generated from Json5.g4 by ANTLR 4.13.2
|
5
|
+
# encoding: utf-8
|
6
|
+
from omlish.antlr._runtime._all import *
|
7
|
+
from io import StringIO
|
8
|
+
import sys
|
9
|
+
if sys.version_info[1] > 5:
|
10
|
+
from typing import TextIO
|
11
|
+
else:
|
12
|
+
from typing.io import TextIO
|
13
|
+
|
14
|
+
def serializedATN():
|
15
|
+
return [
|
16
|
+
4,1,15,74,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,
|
17
|
+
6,1,0,3,0,16,8,0,1,0,1,0,1,1,1,1,1,1,1,1,5,1,24,8,1,10,1,12,1,27,
|
18
|
+
9,1,1,1,3,1,30,8,1,1,1,1,1,1,1,1,1,3,1,36,8,1,1,2,1,2,1,2,1,2,1,
|
19
|
+
3,1,3,1,4,1,4,1,4,1,4,1,4,3,4,49,8,4,1,5,1,5,1,5,1,5,5,5,55,8,5,
|
20
|
+
10,5,12,5,58,9,5,1,5,3,5,61,8,5,1,5,1,5,1,5,1,5,3,5,67,8,5,1,6,3,
|
21
|
+
6,70,8,6,1,6,1,6,1,6,0,0,7,0,2,4,6,8,10,12,0,2,3,0,9,10,12,12,14,
|
22
|
+
14,1,0,11,12,78,0,15,1,0,0,0,2,35,1,0,0,0,4,37,1,0,0,0,6,41,1,0,
|
23
|
+
0,0,8,48,1,0,0,0,10,66,1,0,0,0,12,69,1,0,0,0,14,16,3,8,4,0,15,14,
|
24
|
+
1,0,0,0,15,16,1,0,0,0,16,17,1,0,0,0,17,18,5,0,0,1,18,1,1,0,0,0,19,
|
25
|
+
20,5,1,0,0,20,25,3,4,2,0,21,22,5,2,0,0,22,24,3,4,2,0,23,21,1,0,0,
|
26
|
+
0,24,27,1,0,0,0,25,23,1,0,0,0,25,26,1,0,0,0,26,29,1,0,0,0,27,25,
|
27
|
+
1,0,0,0,28,30,5,2,0,0,29,28,1,0,0,0,29,30,1,0,0,0,30,31,1,0,0,0,
|
28
|
+
31,32,5,3,0,0,32,36,1,0,0,0,33,34,5,1,0,0,34,36,5,3,0,0,35,19,1,
|
29
|
+
0,0,0,35,33,1,0,0,0,36,3,1,0,0,0,37,38,3,6,3,0,38,39,5,4,0,0,39,
|
30
|
+
40,3,8,4,0,40,5,1,0,0,0,41,42,7,0,0,0,42,7,1,0,0,0,43,49,5,10,0,
|
31
|
+
0,44,49,3,12,6,0,45,49,3,2,1,0,46,49,3,10,5,0,47,49,5,9,0,0,48,43,
|
32
|
+
1,0,0,0,48,44,1,0,0,0,48,45,1,0,0,0,48,46,1,0,0,0,48,47,1,0,0,0,
|
33
|
+
49,9,1,0,0,0,50,51,5,5,0,0,51,56,3,8,4,0,52,53,5,2,0,0,53,55,3,8,
|
34
|
+
4,0,54,52,1,0,0,0,55,58,1,0,0,0,56,54,1,0,0,0,56,57,1,0,0,0,57,60,
|
35
|
+
1,0,0,0,58,56,1,0,0,0,59,61,5,2,0,0,60,59,1,0,0,0,60,61,1,0,0,0,
|
36
|
+
61,62,1,0,0,0,62,63,5,6,0,0,63,67,1,0,0,0,64,65,5,5,0,0,65,67,5,
|
37
|
+
6,0,0,66,50,1,0,0,0,66,64,1,0,0,0,67,11,1,0,0,0,68,70,5,13,0,0,69,
|
38
|
+
68,1,0,0,0,69,70,1,0,0,0,70,71,1,0,0,0,71,72,7,1,0,0,72,13,1,0,0,
|
39
|
+
0,9,15,25,29,35,48,56,60,66,69
|
40
|
+
]
|
41
|
+
|
42
|
+
class Json5Parser ( Parser ):
|
43
|
+
|
44
|
+
grammarFileName = "Json5.g4"
|
45
|
+
|
46
|
+
atn = ATNDeserializer().deserialize(serializedATN())
|
47
|
+
|
48
|
+
decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
|
49
|
+
|
50
|
+
sharedContextCache = PredictionContextCache()
|
51
|
+
|
52
|
+
literalNames = [ "<INVALID>", "'{'", "','", "'}'", "':'", "'['", "']'" ]
|
53
|
+
|
54
|
+
symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
|
55
|
+
"<INVALID>", "<INVALID>", "<INVALID>", "SINGLE_LINE_COMMENT",
|
56
|
+
"MULTI_LINE_COMMENT", "LITERAL", "STRING", "NUMBER",
|
57
|
+
"NUMERIC_LITERAL", "SYMBOL", "IDENTIFIER", "WS" ]
|
58
|
+
|
59
|
+
RULE_json5 = 0
|
60
|
+
RULE_obj = 1
|
61
|
+
RULE_pair = 2
|
62
|
+
RULE_key = 3
|
63
|
+
RULE_value = 4
|
64
|
+
RULE_arr = 5
|
65
|
+
RULE_number = 6
|
66
|
+
|
67
|
+
ruleNames = [ "json5", "obj", "pair", "key", "value", "arr", "number" ]
|
68
|
+
|
69
|
+
EOF = Token.EOF
|
70
|
+
T__0=1
|
71
|
+
T__1=2
|
72
|
+
T__2=3
|
73
|
+
T__3=4
|
74
|
+
T__4=5
|
75
|
+
T__5=6
|
76
|
+
SINGLE_LINE_COMMENT=7
|
77
|
+
MULTI_LINE_COMMENT=8
|
78
|
+
LITERAL=9
|
79
|
+
STRING=10
|
80
|
+
NUMBER=11
|
81
|
+
NUMERIC_LITERAL=12
|
82
|
+
SYMBOL=13
|
83
|
+
IDENTIFIER=14
|
84
|
+
WS=15
|
85
|
+
|
86
|
+
def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
|
87
|
+
super().__init__(input, output)
|
88
|
+
self.checkVersion("4.13.2")
|
89
|
+
self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
|
90
|
+
self._predicates = None
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
class Json5Context(ParserRuleContext):
|
96
|
+
__slots__ = 'parser'
|
97
|
+
|
98
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
99
|
+
super().__init__(parent, invokingState)
|
100
|
+
self.parser = parser
|
101
|
+
|
102
|
+
def EOF(self):
|
103
|
+
return self.getToken(Json5Parser.EOF, 0)
|
104
|
+
|
105
|
+
def value(self):
|
106
|
+
return self.getTypedRuleContext(Json5Parser.ValueContext,0)
|
107
|
+
|
108
|
+
|
109
|
+
def getRuleIndex(self):
|
110
|
+
return Json5Parser.RULE_json5
|
111
|
+
|
112
|
+
def enterRule(self, listener:ParseTreeListener):
|
113
|
+
if hasattr( listener, "enterJson5" ):
|
114
|
+
listener.enterJson5(self)
|
115
|
+
|
116
|
+
def exitRule(self, listener:ParseTreeListener):
|
117
|
+
if hasattr( listener, "exitJson5" ):
|
118
|
+
listener.exitJson5(self)
|
119
|
+
|
120
|
+
def accept(self, visitor:ParseTreeVisitor):
|
121
|
+
if hasattr( visitor, "visitJson5" ):
|
122
|
+
return visitor.visitJson5(self)
|
123
|
+
else:
|
124
|
+
return visitor.visitChildren(self)
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
def json5(self):
|
130
|
+
|
131
|
+
localctx = Json5Parser.Json5Context(self, self._ctx, self.state)
|
132
|
+
self.enterRule(localctx, 0, self.RULE_json5)
|
133
|
+
self._la = 0 # Token type
|
134
|
+
try:
|
135
|
+
self.enterOuterAlt(localctx, 1)
|
136
|
+
self.state = 15
|
137
|
+
self._errHandler.sync(self)
|
138
|
+
_la = self._input.LA(1)
|
139
|
+
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 15906) != 0):
|
140
|
+
self.state = 14
|
141
|
+
self.value()
|
142
|
+
|
143
|
+
|
144
|
+
self.state = 17
|
145
|
+
self.match(Json5Parser.EOF)
|
146
|
+
except RecognitionException as re:
|
147
|
+
localctx.exception = re
|
148
|
+
self._errHandler.reportError(self, re)
|
149
|
+
self._errHandler.recover(self, re)
|
150
|
+
finally:
|
151
|
+
self.exitRule()
|
152
|
+
return localctx
|
153
|
+
|
154
|
+
|
155
|
+
class ObjContext(ParserRuleContext):
|
156
|
+
__slots__ = 'parser'
|
157
|
+
|
158
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
159
|
+
super().__init__(parent, invokingState)
|
160
|
+
self.parser = parser
|
161
|
+
|
162
|
+
def pair(self, i:int=None):
|
163
|
+
if i is None:
|
164
|
+
return self.getTypedRuleContexts(Json5Parser.PairContext)
|
165
|
+
else:
|
166
|
+
return self.getTypedRuleContext(Json5Parser.PairContext,i)
|
167
|
+
|
168
|
+
|
169
|
+
def getRuleIndex(self):
|
170
|
+
return Json5Parser.RULE_obj
|
171
|
+
|
172
|
+
def enterRule(self, listener:ParseTreeListener):
|
173
|
+
if hasattr( listener, "enterObj" ):
|
174
|
+
listener.enterObj(self)
|
175
|
+
|
176
|
+
def exitRule(self, listener:ParseTreeListener):
|
177
|
+
if hasattr( listener, "exitObj" ):
|
178
|
+
listener.exitObj(self)
|
179
|
+
|
180
|
+
def accept(self, visitor:ParseTreeVisitor):
|
181
|
+
if hasattr( visitor, "visitObj" ):
|
182
|
+
return visitor.visitObj(self)
|
183
|
+
else:
|
184
|
+
return visitor.visitChildren(self)
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
def obj(self):
|
190
|
+
|
191
|
+
localctx = Json5Parser.ObjContext(self, self._ctx, self.state)
|
192
|
+
self.enterRule(localctx, 2, self.RULE_obj)
|
193
|
+
self._la = 0 # Token type
|
194
|
+
try:
|
195
|
+
self.state = 35
|
196
|
+
self._errHandler.sync(self)
|
197
|
+
la_ = self._interp.adaptivePredict(self._input,3,self._ctx)
|
198
|
+
if la_ == 1:
|
199
|
+
self.enterOuterAlt(localctx, 1)
|
200
|
+
self.state = 19
|
201
|
+
self.match(Json5Parser.T__0)
|
202
|
+
self.state = 20
|
203
|
+
self.pair()
|
204
|
+
self.state = 25
|
205
|
+
self._errHandler.sync(self)
|
206
|
+
_alt = self._interp.adaptivePredict(self._input,1,self._ctx)
|
207
|
+
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
|
208
|
+
if _alt==1:
|
209
|
+
self.state = 21
|
210
|
+
self.match(Json5Parser.T__1)
|
211
|
+
self.state = 22
|
212
|
+
self.pair()
|
213
|
+
self.state = 27
|
214
|
+
self._errHandler.sync(self)
|
215
|
+
_alt = self._interp.adaptivePredict(self._input,1,self._ctx)
|
216
|
+
|
217
|
+
self.state = 29
|
218
|
+
self._errHandler.sync(self)
|
219
|
+
_la = self._input.LA(1)
|
220
|
+
if _la==2:
|
221
|
+
self.state = 28
|
222
|
+
self.match(Json5Parser.T__1)
|
223
|
+
|
224
|
+
|
225
|
+
self.state = 31
|
226
|
+
self.match(Json5Parser.T__2)
|
227
|
+
pass
|
228
|
+
|
229
|
+
elif la_ == 2:
|
230
|
+
self.enterOuterAlt(localctx, 2)
|
231
|
+
self.state = 33
|
232
|
+
self.match(Json5Parser.T__0)
|
233
|
+
self.state = 34
|
234
|
+
self.match(Json5Parser.T__2)
|
235
|
+
pass
|
236
|
+
|
237
|
+
|
238
|
+
except RecognitionException as re:
|
239
|
+
localctx.exception = re
|
240
|
+
self._errHandler.reportError(self, re)
|
241
|
+
self._errHandler.recover(self, re)
|
242
|
+
finally:
|
243
|
+
self.exitRule()
|
244
|
+
return localctx
|
245
|
+
|
246
|
+
|
247
|
+
class PairContext(ParserRuleContext):
|
248
|
+
__slots__ = 'parser'
|
249
|
+
|
250
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
251
|
+
super().__init__(parent, invokingState)
|
252
|
+
self.parser = parser
|
253
|
+
|
254
|
+
def key(self):
|
255
|
+
return self.getTypedRuleContext(Json5Parser.KeyContext,0)
|
256
|
+
|
257
|
+
|
258
|
+
def value(self):
|
259
|
+
return self.getTypedRuleContext(Json5Parser.ValueContext,0)
|
260
|
+
|
261
|
+
|
262
|
+
def getRuleIndex(self):
|
263
|
+
return Json5Parser.RULE_pair
|
264
|
+
|
265
|
+
def enterRule(self, listener:ParseTreeListener):
|
266
|
+
if hasattr( listener, "enterPair" ):
|
267
|
+
listener.enterPair(self)
|
268
|
+
|
269
|
+
def exitRule(self, listener:ParseTreeListener):
|
270
|
+
if hasattr( listener, "exitPair" ):
|
271
|
+
listener.exitPair(self)
|
272
|
+
|
273
|
+
def accept(self, visitor:ParseTreeVisitor):
|
274
|
+
if hasattr( visitor, "visitPair" ):
|
275
|
+
return visitor.visitPair(self)
|
276
|
+
else:
|
277
|
+
return visitor.visitChildren(self)
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
def pair(self):
|
283
|
+
|
284
|
+
localctx = Json5Parser.PairContext(self, self._ctx, self.state)
|
285
|
+
self.enterRule(localctx, 4, self.RULE_pair)
|
286
|
+
try:
|
287
|
+
self.enterOuterAlt(localctx, 1)
|
288
|
+
self.state = 37
|
289
|
+
self.key()
|
290
|
+
self.state = 38
|
291
|
+
self.match(Json5Parser.T__3)
|
292
|
+
self.state = 39
|
293
|
+
self.value()
|
294
|
+
except RecognitionException as re:
|
295
|
+
localctx.exception = re
|
296
|
+
self._errHandler.reportError(self, re)
|
297
|
+
self._errHandler.recover(self, re)
|
298
|
+
finally:
|
299
|
+
self.exitRule()
|
300
|
+
return localctx
|
301
|
+
|
302
|
+
|
303
|
+
class KeyContext(ParserRuleContext):
|
304
|
+
__slots__ = 'parser'
|
305
|
+
|
306
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
307
|
+
super().__init__(parent, invokingState)
|
308
|
+
self.parser = parser
|
309
|
+
|
310
|
+
def STRING(self):
|
311
|
+
return self.getToken(Json5Parser.STRING, 0)
|
312
|
+
|
313
|
+
def IDENTIFIER(self):
|
314
|
+
return self.getToken(Json5Parser.IDENTIFIER, 0)
|
315
|
+
|
316
|
+
def LITERAL(self):
|
317
|
+
return self.getToken(Json5Parser.LITERAL, 0)
|
318
|
+
|
319
|
+
def NUMERIC_LITERAL(self):
|
320
|
+
return self.getToken(Json5Parser.NUMERIC_LITERAL, 0)
|
321
|
+
|
322
|
+
def getRuleIndex(self):
|
323
|
+
return Json5Parser.RULE_key
|
324
|
+
|
325
|
+
def enterRule(self, listener:ParseTreeListener):
|
326
|
+
if hasattr( listener, "enterKey" ):
|
327
|
+
listener.enterKey(self)
|
328
|
+
|
329
|
+
def exitRule(self, listener:ParseTreeListener):
|
330
|
+
if hasattr( listener, "exitKey" ):
|
331
|
+
listener.exitKey(self)
|
332
|
+
|
333
|
+
def accept(self, visitor:ParseTreeVisitor):
|
334
|
+
if hasattr( visitor, "visitKey" ):
|
335
|
+
return visitor.visitKey(self)
|
336
|
+
else:
|
337
|
+
return visitor.visitChildren(self)
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
|
342
|
+
def key(self):
|
343
|
+
|
344
|
+
localctx = Json5Parser.KeyContext(self, self._ctx, self.state)
|
345
|
+
self.enterRule(localctx, 6, self.RULE_key)
|
346
|
+
self._la = 0 # Token type
|
347
|
+
try:
|
348
|
+
self.enterOuterAlt(localctx, 1)
|
349
|
+
self.state = 41
|
350
|
+
_la = self._input.LA(1)
|
351
|
+
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 22016) != 0)):
|
352
|
+
self._errHandler.recoverInline(self)
|
353
|
+
else:
|
354
|
+
self._errHandler.reportMatch(self)
|
355
|
+
self.consume()
|
356
|
+
except RecognitionException as re:
|
357
|
+
localctx.exception = re
|
358
|
+
self._errHandler.reportError(self, re)
|
359
|
+
self._errHandler.recover(self, re)
|
360
|
+
finally:
|
361
|
+
self.exitRule()
|
362
|
+
return localctx
|
363
|
+
|
364
|
+
|
365
|
+
class ValueContext(ParserRuleContext):
|
366
|
+
__slots__ = 'parser'
|
367
|
+
|
368
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
369
|
+
super().__init__(parent, invokingState)
|
370
|
+
self.parser = parser
|
371
|
+
|
372
|
+
def STRING(self):
|
373
|
+
return self.getToken(Json5Parser.STRING, 0)
|
374
|
+
|
375
|
+
def number(self):
|
376
|
+
return self.getTypedRuleContext(Json5Parser.NumberContext,0)
|
377
|
+
|
378
|
+
|
379
|
+
def obj(self):
|
380
|
+
return self.getTypedRuleContext(Json5Parser.ObjContext,0)
|
381
|
+
|
382
|
+
|
383
|
+
def arr(self):
|
384
|
+
return self.getTypedRuleContext(Json5Parser.ArrContext,0)
|
385
|
+
|
386
|
+
|
387
|
+
def LITERAL(self):
|
388
|
+
return self.getToken(Json5Parser.LITERAL, 0)
|
389
|
+
|
390
|
+
def getRuleIndex(self):
|
391
|
+
return Json5Parser.RULE_value
|
392
|
+
|
393
|
+
def enterRule(self, listener:ParseTreeListener):
|
394
|
+
if hasattr( listener, "enterValue" ):
|
395
|
+
listener.enterValue(self)
|
396
|
+
|
397
|
+
def exitRule(self, listener:ParseTreeListener):
|
398
|
+
if hasattr( listener, "exitValue" ):
|
399
|
+
listener.exitValue(self)
|
400
|
+
|
401
|
+
def accept(self, visitor:ParseTreeVisitor):
|
402
|
+
if hasattr( visitor, "visitValue" ):
|
403
|
+
return visitor.visitValue(self)
|
404
|
+
else:
|
405
|
+
return visitor.visitChildren(self)
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
|
410
|
+
def value(self):
|
411
|
+
|
412
|
+
localctx = Json5Parser.ValueContext(self, self._ctx, self.state)
|
413
|
+
self.enterRule(localctx, 8, self.RULE_value)
|
414
|
+
try:
|
415
|
+
self.state = 48
|
416
|
+
self._errHandler.sync(self)
|
417
|
+
token = self._input.LA(1)
|
418
|
+
if token in [10]:
|
419
|
+
self.enterOuterAlt(localctx, 1)
|
420
|
+
self.state = 43
|
421
|
+
self.match(Json5Parser.STRING)
|
422
|
+
pass
|
423
|
+
elif token in [11, 12, 13]:
|
424
|
+
self.enterOuterAlt(localctx, 2)
|
425
|
+
self.state = 44
|
426
|
+
self.number()
|
427
|
+
pass
|
428
|
+
elif token in [1]:
|
429
|
+
self.enterOuterAlt(localctx, 3)
|
430
|
+
self.state = 45
|
431
|
+
self.obj()
|
432
|
+
pass
|
433
|
+
elif token in [5]:
|
434
|
+
self.enterOuterAlt(localctx, 4)
|
435
|
+
self.state = 46
|
436
|
+
self.arr()
|
437
|
+
pass
|
438
|
+
elif token in [9]:
|
439
|
+
self.enterOuterAlt(localctx, 5)
|
440
|
+
self.state = 47
|
441
|
+
self.match(Json5Parser.LITERAL)
|
442
|
+
pass
|
443
|
+
else:
|
444
|
+
raise NoViableAltException(self)
|
445
|
+
|
446
|
+
except RecognitionException as re:
|
447
|
+
localctx.exception = re
|
448
|
+
self._errHandler.reportError(self, re)
|
449
|
+
self._errHandler.recover(self, re)
|
450
|
+
finally:
|
451
|
+
self.exitRule()
|
452
|
+
return localctx
|
453
|
+
|
454
|
+
|
455
|
+
class ArrContext(ParserRuleContext):
|
456
|
+
__slots__ = 'parser'
|
457
|
+
|
458
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
459
|
+
super().__init__(parent, invokingState)
|
460
|
+
self.parser = parser
|
461
|
+
|
462
|
+
def value(self, i:int=None):
|
463
|
+
if i is None:
|
464
|
+
return self.getTypedRuleContexts(Json5Parser.ValueContext)
|
465
|
+
else:
|
466
|
+
return self.getTypedRuleContext(Json5Parser.ValueContext,i)
|
467
|
+
|
468
|
+
|
469
|
+
def getRuleIndex(self):
|
470
|
+
return Json5Parser.RULE_arr
|
471
|
+
|
472
|
+
def enterRule(self, listener:ParseTreeListener):
|
473
|
+
if hasattr( listener, "enterArr" ):
|
474
|
+
listener.enterArr(self)
|
475
|
+
|
476
|
+
def exitRule(self, listener:ParseTreeListener):
|
477
|
+
if hasattr( listener, "exitArr" ):
|
478
|
+
listener.exitArr(self)
|
479
|
+
|
480
|
+
def accept(self, visitor:ParseTreeVisitor):
|
481
|
+
if hasattr( visitor, "visitArr" ):
|
482
|
+
return visitor.visitArr(self)
|
483
|
+
else:
|
484
|
+
return visitor.visitChildren(self)
|
485
|
+
|
486
|
+
|
487
|
+
|
488
|
+
|
489
|
+
def arr(self):
|
490
|
+
|
491
|
+
localctx = Json5Parser.ArrContext(self, self._ctx, self.state)
|
492
|
+
self.enterRule(localctx, 10, self.RULE_arr)
|
493
|
+
self._la = 0 # Token type
|
494
|
+
try:
|
495
|
+
self.state = 66
|
496
|
+
self._errHandler.sync(self)
|
497
|
+
la_ = self._interp.adaptivePredict(self._input,7,self._ctx)
|
498
|
+
if la_ == 1:
|
499
|
+
self.enterOuterAlt(localctx, 1)
|
500
|
+
self.state = 50
|
501
|
+
self.match(Json5Parser.T__4)
|
502
|
+
self.state = 51
|
503
|
+
self.value()
|
504
|
+
self.state = 56
|
505
|
+
self._errHandler.sync(self)
|
506
|
+
_alt = self._interp.adaptivePredict(self._input,5,self._ctx)
|
507
|
+
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
|
508
|
+
if _alt==1:
|
509
|
+
self.state = 52
|
510
|
+
self.match(Json5Parser.T__1)
|
511
|
+
self.state = 53
|
512
|
+
self.value()
|
513
|
+
self.state = 58
|
514
|
+
self._errHandler.sync(self)
|
515
|
+
_alt = self._interp.adaptivePredict(self._input,5,self._ctx)
|
516
|
+
|
517
|
+
self.state = 60
|
518
|
+
self._errHandler.sync(self)
|
519
|
+
_la = self._input.LA(1)
|
520
|
+
if _la==2:
|
521
|
+
self.state = 59
|
522
|
+
self.match(Json5Parser.T__1)
|
523
|
+
|
524
|
+
|
525
|
+
self.state = 62
|
526
|
+
self.match(Json5Parser.T__5)
|
527
|
+
pass
|
528
|
+
|
529
|
+
elif la_ == 2:
|
530
|
+
self.enterOuterAlt(localctx, 2)
|
531
|
+
self.state = 64
|
532
|
+
self.match(Json5Parser.T__4)
|
533
|
+
self.state = 65
|
534
|
+
self.match(Json5Parser.T__5)
|
535
|
+
pass
|
536
|
+
|
537
|
+
|
538
|
+
except RecognitionException as re:
|
539
|
+
localctx.exception = re
|
540
|
+
self._errHandler.reportError(self, re)
|
541
|
+
self._errHandler.recover(self, re)
|
542
|
+
finally:
|
543
|
+
self.exitRule()
|
544
|
+
return localctx
|
545
|
+
|
546
|
+
|
547
|
+
class NumberContext(ParserRuleContext):
|
548
|
+
__slots__ = 'parser'
|
549
|
+
|
550
|
+
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
|
551
|
+
super().__init__(parent, invokingState)
|
552
|
+
self.parser = parser
|
553
|
+
|
554
|
+
def NUMERIC_LITERAL(self):
|
555
|
+
return self.getToken(Json5Parser.NUMERIC_LITERAL, 0)
|
556
|
+
|
557
|
+
def NUMBER(self):
|
558
|
+
return self.getToken(Json5Parser.NUMBER, 0)
|
559
|
+
|
560
|
+
def SYMBOL(self):
|
561
|
+
return self.getToken(Json5Parser.SYMBOL, 0)
|
562
|
+
|
563
|
+
def getRuleIndex(self):
|
564
|
+
return Json5Parser.RULE_number
|
565
|
+
|
566
|
+
def enterRule(self, listener:ParseTreeListener):
|
567
|
+
if hasattr( listener, "enterNumber" ):
|
568
|
+
listener.enterNumber(self)
|
569
|
+
|
570
|
+
def exitRule(self, listener:ParseTreeListener):
|
571
|
+
if hasattr( listener, "exitNumber" ):
|
572
|
+
listener.exitNumber(self)
|
573
|
+
|
574
|
+
def accept(self, visitor:ParseTreeVisitor):
|
575
|
+
if hasattr( visitor, "visitNumber" ):
|
576
|
+
return visitor.visitNumber(self)
|
577
|
+
else:
|
578
|
+
return visitor.visitChildren(self)
|
579
|
+
|
580
|
+
|
581
|
+
|
582
|
+
|
583
|
+
def number(self):
|
584
|
+
|
585
|
+
localctx = Json5Parser.NumberContext(self, self._ctx, self.state)
|
586
|
+
self.enterRule(localctx, 12, self.RULE_number)
|
587
|
+
self._la = 0 # Token type
|
588
|
+
try:
|
589
|
+
self.enterOuterAlt(localctx, 1)
|
590
|
+
self.state = 69
|
591
|
+
self._errHandler.sync(self)
|
592
|
+
_la = self._input.LA(1)
|
593
|
+
if _la==13:
|
594
|
+
self.state = 68
|
595
|
+
self.match(Json5Parser.SYMBOL)
|
596
|
+
|
597
|
+
|
598
|
+
self.state = 71
|
599
|
+
_la = self._input.LA(1)
|
600
|
+
if not(_la==11 or _la==12):
|
601
|
+
self._errHandler.recoverInline(self)
|
602
|
+
else:
|
603
|
+
self._errHandler.reportMatch(self)
|
604
|
+
self.consume()
|
605
|
+
except RecognitionException as re:
|
606
|
+
localctx.exception = re
|
607
|
+
self._errHandler.reportError(self, re)
|
608
|
+
self._errHandler.recover(self, re)
|
609
|
+
finally:
|
610
|
+
self.exitRule()
|
611
|
+
return localctx
|
612
|
+
|
613
|
+
|
614
|
+
|
615
|
+
|
616
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
# Generated from Json5.g4 by ANTLR 4.13.2
|
5
|
+
from omlish.antlr._runtime._all import *
|
6
|
+
if "." in __name__:
|
7
|
+
from .Json5Parser import Json5Parser
|
8
|
+
else:
|
9
|
+
from Json5Parser import Json5Parser
|
10
|
+
|
11
|
+
# This class defines a complete generic visitor for a parse tree produced by Json5Parser.
|
12
|
+
|
13
|
+
class Json5Visitor(ParseTreeVisitor):
|
14
|
+
|
15
|
+
# Visit a parse tree produced by Json5Parser#json5.
|
16
|
+
def visitJson5(self, ctx:Json5Parser.Json5Context):
|
17
|
+
return self.visitChildren(ctx)
|
18
|
+
|
19
|
+
|
20
|
+
# Visit a parse tree produced by Json5Parser#obj.
|
21
|
+
def visitObj(self, ctx:Json5Parser.ObjContext):
|
22
|
+
return self.visitChildren(ctx)
|
23
|
+
|
24
|
+
|
25
|
+
# Visit a parse tree produced by Json5Parser#pair.
|
26
|
+
def visitPair(self, ctx:Json5Parser.PairContext):
|
27
|
+
return self.visitChildren(ctx)
|
28
|
+
|
29
|
+
|
30
|
+
# Visit a parse tree produced by Json5Parser#key.
|
31
|
+
def visitKey(self, ctx:Json5Parser.KeyContext):
|
32
|
+
return self.visitChildren(ctx)
|
33
|
+
|
34
|
+
|
35
|
+
# Visit a parse tree produced by Json5Parser#value.
|
36
|
+
def visitValue(self, ctx:Json5Parser.ValueContext):
|
37
|
+
return self.visitChildren(ctx)
|
38
|
+
|
39
|
+
|
40
|
+
# Visit a parse tree produced by Json5Parser#arr.
|
41
|
+
def visitArr(self, ctx:Json5Parser.ArrContext):
|
42
|
+
return self.visitChildren(ctx)
|
43
|
+
|
44
|
+
|
45
|
+
# Visit a parse tree produced by Json5Parser#number.
|
46
|
+
def visitNumber(self, ctx:Json5Parser.NumberContext):
|
47
|
+
return self.visitChildren(ctx)
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
del Json5Parser
|
File without changes
|
@@ -1,25 +1,20 @@
|
|
1
1
|
import typing as ta
|
2
2
|
|
3
|
-
from .. import
|
4
|
-
from
|
5
|
-
from
|
6
|
-
|
7
|
-
|
8
|
-
if ta.TYPE_CHECKING:
|
9
|
-
import json5
|
10
|
-
else:
|
11
|
-
json5 = lang.proxy_import('json5')
|
3
|
+
from .. import json
|
4
|
+
from ..codecs import make_object_lazy_loaded_codec
|
5
|
+
from ..codecs import make_str_object_codec
|
6
|
+
from .parsing import parse
|
12
7
|
|
13
8
|
|
14
9
|
##
|
15
10
|
|
16
11
|
|
17
12
|
def dumps(obj: ta.Any) -> str:
|
18
|
-
return
|
13
|
+
return json.dumps(obj)
|
19
14
|
|
20
15
|
|
21
16
|
def loads(s: str) -> ta.Any:
|
22
|
-
return
|
17
|
+
return parse(s)
|
23
18
|
|
24
19
|
|
25
20
|
##
|