omlish 0.0.0.dev359__py3-none-any.whl → 0.0.0.dev361__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.
Potentially problematic release.
This version of omlish might be problematic. Click here for more details.
- omlish/__about__.py +2 -2
- omlish/formats/json/Json.g4 +77 -0
- omlish/formats/json/_antlr/JsonLexer.py +109 -0
- omlish/formats/json/_antlr/JsonListener.py +61 -0
- omlish/formats/json/_antlr/JsonParser.py +457 -0
- omlish/formats/json/_antlr/JsonVisitor.py +42 -0
- omlish/formats/json/_antlr/__init__.py +0 -0
- omlish/formats/json/literals.py +27 -13
- omlish/formats/json/stream/__init__.py +57 -0
- omlish/formats/json/stream/building.py +1 -1
- omlish/formats/json/stream/utils.py +14 -6
- omlish/formats/json5/Json5.g4 +8 -9
- omlish/formats/json5/_antlr/Json5Lexer.py +1 -0
- omlish/formats/json5/_antlr/Json5Listener.py +1 -0
- omlish/formats/json5/_antlr/Json5Parser.py +1 -0
- omlish/formats/json5/_antlr/Json5Visitor.py +1 -0
- omlish/formats/json5/parsing.py +30 -8
- omlish/formats/json5/rendering.py +118 -10
- omlish/lang/__init__.py +1 -0
- omlish/lang/classes/namespaces.py +8 -3
- omlish/lang/strings.py +15 -0
- omlish/specs/jmespath/__init__.py +1 -0
- omlish/specs/jmespath/ast.py +17 -0
- omlish/specs/jmespath/cli.py +3 -0
- omlish/specs/jmespath/errors.py +3 -0
- omlish/specs/jmespath/lexer.py +4 -0
- omlish/specs/jmespath/parser.py +13 -2
- omlish/specs/jmespath/scope.py +3 -0
- omlish/specs/jmespath/visitor.py +9 -0
- omlish/specs/proto/_antlr/Protobuf3Lexer.py +1 -0
- omlish/specs/proto/_antlr/Protobuf3Listener.py +1 -0
- omlish/specs/proto/_antlr/Protobuf3Parser.py +1 -0
- omlish/specs/proto/_antlr/Protobuf3Visitor.py +1 -0
- omlish/sql/parsing/_antlr/MinisqlLexer.py +1 -0
- omlish/sql/parsing/_antlr/MinisqlListener.py +1 -0
- omlish/sql/parsing/_antlr/MinisqlParser.py +1 -0
- omlish/sql/parsing/_antlr/MinisqlVisitor.py +1 -0
- {omlish-0.0.0.dev359.dist-info → omlish-0.0.0.dev361.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev359.dist-info → omlish-0.0.0.dev361.dist-info}/RECORD +43 -37
- {omlish-0.0.0.dev359.dist-info → omlish-0.0.0.dev361.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev359.dist-info → omlish-0.0.0.dev361.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev359.dist-info → omlish-0.0.0.dev361.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev359.dist-info → omlish-0.0.0.dev361.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Taken from "The Definitive ANTLR 4 Reference" by Terence Parr
|
|
2
|
+
|
|
3
|
+
// Derived from https://json.org
|
|
4
|
+
|
|
5
|
+
// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false
|
|
6
|
+
// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging
|
|
7
|
+
|
|
8
|
+
grammar Json;
|
|
9
|
+
|
|
10
|
+
json
|
|
11
|
+
: value EOF
|
|
12
|
+
;
|
|
13
|
+
|
|
14
|
+
obj
|
|
15
|
+
: '{' pair (',' pair)* '}'
|
|
16
|
+
| '{' '}'
|
|
17
|
+
;
|
|
18
|
+
|
|
19
|
+
pair
|
|
20
|
+
: STRING ':' value
|
|
21
|
+
;
|
|
22
|
+
|
|
23
|
+
arr
|
|
24
|
+
: '[' value (',' value)* ']'
|
|
25
|
+
| '[' ']'
|
|
26
|
+
;
|
|
27
|
+
|
|
28
|
+
value
|
|
29
|
+
: STRING
|
|
30
|
+
| NUMBER
|
|
31
|
+
| obj
|
|
32
|
+
| arr
|
|
33
|
+
| 'true'
|
|
34
|
+
| 'false'
|
|
35
|
+
| 'null'
|
|
36
|
+
;
|
|
37
|
+
|
|
38
|
+
// Lexer
|
|
39
|
+
|
|
40
|
+
STRING
|
|
41
|
+
: '"' (ESC | SAFECODEPOINT)* '"'
|
|
42
|
+
;
|
|
43
|
+
|
|
44
|
+
fragment ESC
|
|
45
|
+
: '\\' (["\\/bfnrt] | UNICODE)
|
|
46
|
+
;
|
|
47
|
+
|
|
48
|
+
fragment UNICODE
|
|
49
|
+
: 'u' HEX HEX HEX HEX
|
|
50
|
+
;
|
|
51
|
+
|
|
52
|
+
fragment HEX
|
|
53
|
+
: [0-9a-fA-F]
|
|
54
|
+
;
|
|
55
|
+
|
|
56
|
+
fragment SAFECODEPOINT
|
|
57
|
+
: ~ ["\\\u0000-\u001F]
|
|
58
|
+
;
|
|
59
|
+
|
|
60
|
+
NUMBER
|
|
61
|
+
: '-'? INT ('.' [0-9]+)? EXP?
|
|
62
|
+
;
|
|
63
|
+
|
|
64
|
+
fragment INT
|
|
65
|
+
// integer part forbids leading 0s (e.g. `01`)
|
|
66
|
+
: '0'
|
|
67
|
+
| [1-9] [0-9]*
|
|
68
|
+
;
|
|
69
|
+
|
|
70
|
+
fragment EXP
|
|
71
|
+
// exponent number permits leading 0s (e.g. `1e01`)
|
|
72
|
+
: [Ee] [+-]? [0-9]+
|
|
73
|
+
;
|
|
74
|
+
|
|
75
|
+
WS
|
|
76
|
+
: [ \t\n\r]+ -> skip
|
|
77
|
+
;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
# ruff: noqa
|
|
3
|
+
# flake8: noqa
|
|
4
|
+
# @omlish-generated
|
|
5
|
+
# Generated from Json.g4 by ANTLR 4.13.2
|
|
6
|
+
from ....text.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
|
+
|
|
15
|
+
def serializedATN():
|
|
16
|
+
return [
|
|
17
|
+
4,0,12,131,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,
|
|
18
|
+
2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,
|
|
19
|
+
13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,1,0,1,0,1,1,1,1,
|
|
20
|
+
1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,
|
|
21
|
+
1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,5,9,69,8,9,10,9,12,9,
|
|
22
|
+
72,9,9,1,9,1,9,1,10,1,10,1,10,3,10,79,8,10,1,11,1,11,1,11,1,11,1,
|
|
23
|
+
11,1,11,1,12,1,12,1,13,1,13,1,14,3,14,92,8,14,1,14,1,14,1,14,4,14,
|
|
24
|
+
97,8,14,11,14,12,14,98,3,14,101,8,14,1,14,3,14,104,8,14,1,15,1,15,
|
|
25
|
+
1,15,5,15,109,8,15,10,15,12,15,112,9,15,3,15,114,8,15,1,16,1,16,
|
|
26
|
+
3,16,118,8,16,1,16,4,16,121,8,16,11,16,12,16,122,1,17,4,17,126,8,
|
|
27
|
+
17,11,17,12,17,127,1,17,1,17,0,0,18,1,1,3,2,5,3,7,4,9,5,11,6,13,
|
|
28
|
+
7,15,8,17,9,19,10,21,0,23,0,25,0,27,0,29,11,31,0,33,0,35,12,1,0,
|
|
29
|
+
8,8,0,34,34,47,47,92,92,98,98,102,102,110,110,114,114,116,116,3,
|
|
30
|
+
0,48,57,65,70,97,102,3,0,0,31,34,34,92,92,1,0,48,57,1,0,49,57,2,
|
|
31
|
+
0,69,69,101,101,2,0,43,43,45,45,3,0,9,10,13,13,32,32,136,0,1,1,0,
|
|
32
|
+
0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,
|
|
33
|
+
0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,29,1,0,0,0,
|
|
34
|
+
0,35,1,0,0,0,1,37,1,0,0,0,3,39,1,0,0,0,5,41,1,0,0,0,7,43,1,0,0,0,
|
|
35
|
+
9,45,1,0,0,0,11,47,1,0,0,0,13,49,1,0,0,0,15,54,1,0,0,0,17,60,1,0,
|
|
36
|
+
0,0,19,65,1,0,0,0,21,75,1,0,0,0,23,80,1,0,0,0,25,86,1,0,0,0,27,88,
|
|
37
|
+
1,0,0,0,29,91,1,0,0,0,31,113,1,0,0,0,33,115,1,0,0,0,35,125,1,0,0,
|
|
38
|
+
0,37,38,5,123,0,0,38,2,1,0,0,0,39,40,5,44,0,0,40,4,1,0,0,0,41,42,
|
|
39
|
+
5,125,0,0,42,6,1,0,0,0,43,44,5,58,0,0,44,8,1,0,0,0,45,46,5,91,0,
|
|
40
|
+
0,46,10,1,0,0,0,47,48,5,93,0,0,48,12,1,0,0,0,49,50,5,116,0,0,50,
|
|
41
|
+
51,5,114,0,0,51,52,5,117,0,0,52,53,5,101,0,0,53,14,1,0,0,0,54,55,
|
|
42
|
+
5,102,0,0,55,56,5,97,0,0,56,57,5,108,0,0,57,58,5,115,0,0,58,59,5,
|
|
43
|
+
101,0,0,59,16,1,0,0,0,60,61,5,110,0,0,61,62,5,117,0,0,62,63,5,108,
|
|
44
|
+
0,0,63,64,5,108,0,0,64,18,1,0,0,0,65,70,5,34,0,0,66,69,3,21,10,0,
|
|
45
|
+
67,69,3,27,13,0,68,66,1,0,0,0,68,67,1,0,0,0,69,72,1,0,0,0,70,68,
|
|
46
|
+
1,0,0,0,70,71,1,0,0,0,71,73,1,0,0,0,72,70,1,0,0,0,73,74,5,34,0,0,
|
|
47
|
+
74,20,1,0,0,0,75,78,5,92,0,0,76,79,7,0,0,0,77,79,3,23,11,0,78,76,
|
|
48
|
+
1,0,0,0,78,77,1,0,0,0,79,22,1,0,0,0,80,81,5,117,0,0,81,82,3,25,12,
|
|
49
|
+
0,82,83,3,25,12,0,83,84,3,25,12,0,84,85,3,25,12,0,85,24,1,0,0,0,
|
|
50
|
+
86,87,7,1,0,0,87,26,1,0,0,0,88,89,8,2,0,0,89,28,1,0,0,0,90,92,5,
|
|
51
|
+
45,0,0,91,90,1,0,0,0,91,92,1,0,0,0,92,93,1,0,0,0,93,100,3,31,15,
|
|
52
|
+
0,94,96,5,46,0,0,95,97,7,3,0,0,96,95,1,0,0,0,97,98,1,0,0,0,98,96,
|
|
53
|
+
1,0,0,0,98,99,1,0,0,0,99,101,1,0,0,0,100,94,1,0,0,0,100,101,1,0,
|
|
54
|
+
0,0,101,103,1,0,0,0,102,104,3,33,16,0,103,102,1,0,0,0,103,104,1,
|
|
55
|
+
0,0,0,104,30,1,0,0,0,105,114,5,48,0,0,106,110,7,4,0,0,107,109,7,
|
|
56
|
+
3,0,0,108,107,1,0,0,0,109,112,1,0,0,0,110,108,1,0,0,0,110,111,1,
|
|
57
|
+
0,0,0,111,114,1,0,0,0,112,110,1,0,0,0,113,105,1,0,0,0,113,106,1,
|
|
58
|
+
0,0,0,114,32,1,0,0,0,115,117,7,5,0,0,116,118,7,6,0,0,117,116,1,0,
|
|
59
|
+
0,0,117,118,1,0,0,0,118,120,1,0,0,0,119,121,7,3,0,0,120,119,1,0,
|
|
60
|
+
0,0,121,122,1,0,0,0,122,120,1,0,0,0,122,123,1,0,0,0,123,34,1,0,0,
|
|
61
|
+
0,124,126,7,7,0,0,125,124,1,0,0,0,126,127,1,0,0,0,127,125,1,0,0,
|
|
62
|
+
0,127,128,1,0,0,0,128,129,1,0,0,0,129,130,6,17,0,0,130,36,1,0,0,
|
|
63
|
+
0,13,0,68,70,78,91,98,100,103,110,113,117,122,127,1,6,0,0
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
class JsonLexer(Lexer):
|
|
67
|
+
|
|
68
|
+
atn = ATNDeserializer().deserialize(serializedATN())
|
|
69
|
+
|
|
70
|
+
decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
|
|
71
|
+
|
|
72
|
+
T__0 = 1
|
|
73
|
+
T__1 = 2
|
|
74
|
+
T__2 = 3
|
|
75
|
+
T__3 = 4
|
|
76
|
+
T__4 = 5
|
|
77
|
+
T__5 = 6
|
|
78
|
+
T__6 = 7
|
|
79
|
+
T__7 = 8
|
|
80
|
+
T__8 = 9
|
|
81
|
+
STRING = 10
|
|
82
|
+
NUMBER = 11
|
|
83
|
+
WS = 12
|
|
84
|
+
|
|
85
|
+
channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]
|
|
86
|
+
|
|
87
|
+
modeNames = [ "DEFAULT_MODE" ]
|
|
88
|
+
|
|
89
|
+
literalNames = [ "<INVALID>",
|
|
90
|
+
"'{'", "','", "'}'", "':'", "'['", "']'", "'true'", "'false'",
|
|
91
|
+
"'null'" ]
|
|
92
|
+
|
|
93
|
+
symbolicNames = [ "<INVALID>",
|
|
94
|
+
"STRING", "NUMBER", "WS" ]
|
|
95
|
+
|
|
96
|
+
ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6",
|
|
97
|
+
"T__7", "T__8", "STRING", "ESC", "UNICODE", "HEX", "SAFECODEPOINT",
|
|
98
|
+
"NUMBER", "INT", "EXP", "WS" ]
|
|
99
|
+
|
|
100
|
+
grammarFileName = "Json.g4"
|
|
101
|
+
|
|
102
|
+
def __init__(self, input=None, output:TextIO = sys.stdout):
|
|
103
|
+
super().__init__(input, output)
|
|
104
|
+
self.checkVersion("4.13.2")
|
|
105
|
+
self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
|
|
106
|
+
self._actions = None
|
|
107
|
+
self._predicates = None
|
|
108
|
+
|
|
109
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
# ruff: noqa
|
|
3
|
+
# flake8: noqa
|
|
4
|
+
# @omlish-generated
|
|
5
|
+
# Generated from Json.g4 by ANTLR 4.13.2
|
|
6
|
+
from ....text.antlr._runtime._all import *
|
|
7
|
+
if "." in __name__:
|
|
8
|
+
from .JsonParser import JsonParser
|
|
9
|
+
else:
|
|
10
|
+
from JsonParser import JsonParser
|
|
11
|
+
|
|
12
|
+
# This class defines a complete listener for a parse tree produced by JsonParser.
|
|
13
|
+
class JsonListener(ParseTreeListener):
|
|
14
|
+
|
|
15
|
+
# Enter a parse tree produced by JsonParser#json.
|
|
16
|
+
def enterJson(self, ctx:JsonParser.JsonContext):
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
# Exit a parse tree produced by JsonParser#json.
|
|
20
|
+
def exitJson(self, ctx:JsonParser.JsonContext):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# Enter a parse tree produced by JsonParser#obj.
|
|
25
|
+
def enterObj(self, ctx:JsonParser.ObjContext):
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
# Exit a parse tree produced by JsonParser#obj.
|
|
29
|
+
def exitObj(self, ctx:JsonParser.ObjContext):
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Enter a parse tree produced by JsonParser#pair.
|
|
34
|
+
def enterPair(self, ctx:JsonParser.PairContext):
|
|
35
|
+
pass
|
|
36
|
+
|
|
37
|
+
# Exit a parse tree produced by JsonParser#pair.
|
|
38
|
+
def exitPair(self, ctx:JsonParser.PairContext):
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# Enter a parse tree produced by JsonParser#arr.
|
|
43
|
+
def enterArr(self, ctx:JsonParser.ArrContext):
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
# Exit a parse tree produced by JsonParser#arr.
|
|
47
|
+
def exitArr(self, ctx:JsonParser.ArrContext):
|
|
48
|
+
pass
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# Enter a parse tree produced by JsonParser#value.
|
|
52
|
+
def enterValue(self, ctx:JsonParser.ValueContext):
|
|
53
|
+
pass
|
|
54
|
+
|
|
55
|
+
# Exit a parse tree produced by JsonParser#value.
|
|
56
|
+
def exitValue(self, ctx:JsonParser.ValueContext):
|
|
57
|
+
pass
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
del JsonParser
|