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.
Files changed (32) hide show
  1. omlish/.manifests.json +4 -4
  2. omlish/__about__.py +3 -5
  3. omlish/antlr/__init__.py +3 -0
  4. omlish/antlr/parsing.py +34 -2
  5. omlish/asyncs/asyncio/asyncio.py +34 -0
  6. omlish/asyncs/ioproxy/all.py +32 -0
  7. omlish/asyncs/ioproxy/io.py +13 -13
  8. omlish/asyncs/ioproxy/proxier.py +30 -30
  9. omlish/asyncs/ioproxy/typing.py +3 -3
  10. omlish/formats/json/stream/lex.py +1 -0
  11. omlish/formats/json5/Json5.g4 +172 -0
  12. omlish/formats/json5/__init__.py +8 -0
  13. omlish/formats/json5/_antlr/Json5Lexer.py +353 -0
  14. omlish/formats/json5/_antlr/Json5Listener.py +78 -0
  15. omlish/formats/json5/_antlr/Json5Parser.py +616 -0
  16. omlish/formats/json5/_antlr/Json5Visitor.py +51 -0
  17. omlish/formats/json5/_antlr/__init__.py +0 -0
  18. omlish/formats/{json5.py → json5/codec.py} +6 -11
  19. omlish/formats/json5/errors.py +2 -0
  20. omlish/formats/json5/literals.py +130 -0
  21. omlish/formats/json5/parsing.py +79 -0
  22. omlish/lang/__init__.py +2 -0
  23. omlish/lang/imports.py +4 -0
  24. omlish/lang/strings.py +33 -1
  25. omlish/os/files.py +17 -30
  26. omlish/os/temp.py +50 -0
  27. {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/METADATA +5 -7
  28. {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/RECORD +32 -20
  29. {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/LICENSE +0 -0
  30. {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/WHEEL +0 -0
  31. {omlish-0.0.0.dev213.dist-info → omlish-0.0.0.dev214.dist-info}/entry_points.txt +0 -0
  32. {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 lang
4
- from .codecs import make_object_lazy_loaded_codec
5
- from .codecs import make_str_object_codec
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 json5.dumps(obj)
13
+ return json.dumps(obj)
19
14
 
20
15
 
21
16
  def loads(s: str) -> ta.Any:
22
- return json5.loads(s)
17
+ return parse(s)
23
18
 
24
19
 
25
20
  ##
@@ -0,0 +1,2 @@
1
+ class Json5Error(Exception):
2
+ pass