omlish 0.0.0.dev213__py3-none-any.whl → 0.0.0.dev214__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/os/files.py +17 -30
- omlish/os/temp.py +50 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/METADATA +5 -7
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/RECORD +32 -20
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.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
|
##
|