pestle 0.1.0
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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data/.rubocop.yml +59 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +3 -0
- data/LICENSE.txt +21 -0
- data/LICENSE_PEST.txt +23 -0
- data/README.md +124 -0
- data/Rakefile +23 -0
- data/Steepfile +19 -0
- data/benchmarks/jsonpath_ips.rb +33 -0
- data/examples/calculator_pratt.rb +157 -0
- data/examples/calculator_prec_climber.rb +225 -0
- data/examples/calculator_stack_vm.rb +291 -0
- data/examples/csv.rb +73 -0
- data/examples/ini.rb +90 -0
- data/examples/json_example.rb +141 -0
- data/examples/jsonpath/README.md +3 -0
- data/examples/jsonpath/jsonpath.pest +182 -0
- data/examples/jsonpath/lib/jsonpath/ast.rb +362 -0
- data/examples/jsonpath/lib/jsonpath/function_extensions.rb +201 -0
- data/examples/jsonpath/lib/jsonpath/node.rb +20 -0
- data/examples/jsonpath/lib/jsonpath/query.rb +25 -0
- data/examples/jsonpath/lib/jsonpath.rb +453 -0
- data/lib/pestle/errors.rb +98 -0
- data/lib/pestle/grammar/builtin_rules/ascii.rb +38 -0
- data/lib/pestle/grammar/builtin_rules/special.rb +63 -0
- data/lib/pestle/grammar/builtin_rules/unicode.rb +291 -0
- data/lib/pestle/grammar/errors.rb +62 -0
- data/lib/pestle/grammar/expression.rb +90 -0
- data/lib/pestle/grammar/expressions/choice.rb +36 -0
- data/lib/pestle/grammar/expressions/group.rb +27 -0
- data/lib/pestle/grammar/expressions/identifier.rb +26 -0
- data/lib/pestle/grammar/expressions/postfix.rb +272 -0
- data/lib/pestle/grammar/expressions/prefix.rb +51 -0
- data/lib/pestle/grammar/expressions/range.rb +26 -0
- data/lib/pestle/grammar/expressions/sequence.rb +38 -0
- data/lib/pestle/grammar/expressions/stack.rb +192 -0
- data/lib/pestle/grammar/expressions/string.rb +46 -0
- data/lib/pestle/grammar/lexer.rb +464 -0
- data/lib/pestle/grammar/parser.rb +340 -0
- data/lib/pestle/grammar/rule.rb +98 -0
- data/lib/pestle/pair.rb +325 -0
- data/lib/pestle/parser.rb +48 -0
- data/lib/pestle/pratt.rb +74 -0
- data/lib/pestle/state.rb +220 -0
- data/lib/pestle/version.rb +5 -0
- data/lib/pestle.rb +24 -0
- data/sig/errors.rbs +22 -0
- data/sig/grammar/ascii.rbs +9 -0
- data/sig/grammar/choice.rbs +14 -0
- data/sig/grammar/errors.rbs +22 -0
- data/sig/grammar/expression.rbs +39 -0
- data/sig/grammar/group.rbs +14 -0
- data/sig/grammar/identifier.rbs +11 -0
- data/sig/grammar/lexer.rbs +85 -0
- data/sig/grammar/parser.rbs +57 -0
- data/sig/grammar/postfix.rbs +112 -0
- data/sig/grammar/prefix.rbs +27 -0
- data/sig/grammar/range.rbs +20 -0
- data/sig/grammar/rule.rbs +40 -0
- data/sig/grammar/sequence.rbs +14 -0
- data/sig/grammar/special.rbs +39 -0
- data/sig/grammar/stack.rbs +57 -0
- data/sig/grammar/string.rbs +27 -0
- data/sig/grammar/unicode.rbs +15 -0
- data/sig/pair.rbs +168 -0
- data/sig/parser.rbs +16 -0
- data/sig/pestle.rbs +5 -0
- data/sig/pratt.rbs +27 -0
- data/sig/state.rbs +95 -0
- data/sig/stdlib/strscan.rbs +3 -0
- data.tar.gz.sig +0 -0
- metadata +141 -0
- metadata.gz.sig +0 -0
data/sig/pair.rbs
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
module Pestle
|
|
2
|
+
class Token
|
|
3
|
+
@rule: Symbol
|
|
4
|
+
|
|
5
|
+
@pos: Integer
|
|
6
|
+
|
|
7
|
+
attr_reader rule: Symbol
|
|
8
|
+
|
|
9
|
+
attr_reader pos: Integer
|
|
10
|
+
|
|
11
|
+
def initialize: (Symbol rule, Integer pos) -> void
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Start < Token
|
|
15
|
+
def to_s: () -> ::String
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class End < Token
|
|
19
|
+
def to_s: () -> ::String
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Span
|
|
23
|
+
@text: String
|
|
24
|
+
|
|
25
|
+
@start: Integer
|
|
26
|
+
|
|
27
|
+
@end: Integer
|
|
28
|
+
|
|
29
|
+
attr_reader text: String
|
|
30
|
+
|
|
31
|
+
attr_reader start: Integer
|
|
32
|
+
|
|
33
|
+
attr_reader end: Integer
|
|
34
|
+
|
|
35
|
+
def initialize: (String text, Integer start, Integer stop) -> void
|
|
36
|
+
|
|
37
|
+
def to_s: () -> String
|
|
38
|
+
|
|
39
|
+
def start_pos: () -> Position
|
|
40
|
+
|
|
41
|
+
def end_pos: () -> Position
|
|
42
|
+
|
|
43
|
+
# Return an array of lines covered by this span.
|
|
44
|
+
def lines: () -> Array[String]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class Position
|
|
48
|
+
@text: String
|
|
49
|
+
|
|
50
|
+
@pos: Integer
|
|
51
|
+
|
|
52
|
+
attr_reader text: String
|
|
53
|
+
|
|
54
|
+
attr_reader pos: Integer
|
|
55
|
+
|
|
56
|
+
def initialize: (String text, Integer pos) -> void
|
|
57
|
+
|
|
58
|
+
def line_col: () -> [Integer, Integer]
|
|
59
|
+
|
|
60
|
+
def line_of: () -> String
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class Pair
|
|
64
|
+
@source: String
|
|
65
|
+
|
|
66
|
+
@start: Integer
|
|
67
|
+
|
|
68
|
+
@end: Integer
|
|
69
|
+
|
|
70
|
+
@rule: Symbol
|
|
71
|
+
|
|
72
|
+
@children: Array[Pair]
|
|
73
|
+
|
|
74
|
+
@tag: String?
|
|
75
|
+
|
|
76
|
+
@name: String
|
|
77
|
+
|
|
78
|
+
attr_reader start: Integer
|
|
79
|
+
|
|
80
|
+
attr_reader end: Integer
|
|
81
|
+
|
|
82
|
+
attr_reader rule: Symbol
|
|
83
|
+
|
|
84
|
+
attr_reader tag: String?
|
|
85
|
+
|
|
86
|
+
attr_reader name: String
|
|
87
|
+
|
|
88
|
+
attr_reader children: Array[Pair]
|
|
89
|
+
|
|
90
|
+
def initialize: (String source, Integer start, Integer stop, String rule_name, Array[Pair] children, ?tag: untyped?) -> void
|
|
91
|
+
|
|
92
|
+
def deconstruct: () -> Array[untyped]
|
|
93
|
+
|
|
94
|
+
def deconstruct_keys: (untyped keys) -> Hash[Symbol, untyped]
|
|
95
|
+
|
|
96
|
+
def to_s: () -> String
|
|
97
|
+
|
|
98
|
+
def each: () ?{ (?) -> untyped } -> untyped
|
|
99
|
+
|
|
100
|
+
def to_ary: () -> Array[Pair]
|
|
101
|
+
|
|
102
|
+
def inner: () -> Pairs
|
|
103
|
+
|
|
104
|
+
def stream: () -> Stream
|
|
105
|
+
|
|
106
|
+
def tokens: () -> Enumerable[Token]
|
|
107
|
+
|
|
108
|
+
def span: () -> Span
|
|
109
|
+
|
|
110
|
+
def dump: () -> Hash[String, untyped]
|
|
111
|
+
|
|
112
|
+
def dumps: (?indent: ::Integer, ?new_line: bool) -> String
|
|
113
|
+
|
|
114
|
+
def line_col: () -> [Integer, Integer]
|
|
115
|
+
|
|
116
|
+
def text: () -> String
|
|
117
|
+
|
|
118
|
+
def inner_texts: () -> Array[String]
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
class Pairs
|
|
122
|
+
@pairs: Array[Pair]
|
|
123
|
+
|
|
124
|
+
def initialize: (Array[Pair] pairs) -> void
|
|
125
|
+
|
|
126
|
+
def each: () ?{ (?) -> untyped } -> untyped
|
|
127
|
+
|
|
128
|
+
def length: () -> Integer
|
|
129
|
+
|
|
130
|
+
def tokens: () -> Enumerable[Token]
|
|
131
|
+
|
|
132
|
+
def stream: () -> Stream
|
|
133
|
+
|
|
134
|
+
def dump: () -> Array[untyped]
|
|
135
|
+
|
|
136
|
+
def dumps: (?compact: bool) -> String
|
|
137
|
+
|
|
138
|
+
def flatten: () -> Enumerable[Pair]
|
|
139
|
+
|
|
140
|
+
def first: () -> Pair?
|
|
141
|
+
|
|
142
|
+
def pop: () -> Pair?
|
|
143
|
+
|
|
144
|
+
def find_first_tagged: (String label) -> (Pair | nil)
|
|
145
|
+
|
|
146
|
+
def find_tagged: (String label) -> Enumerable[Pair]
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# Step through pairs of tokens.
|
|
150
|
+
class Stream
|
|
151
|
+
@pairs: Array[Pair]
|
|
152
|
+
|
|
153
|
+
@pos: Integer
|
|
154
|
+
|
|
155
|
+
attr_accessor pos: Integer
|
|
156
|
+
|
|
157
|
+
def initialize: (Array[Pair] pairs) -> void
|
|
158
|
+
|
|
159
|
+
# Consume and return the next pair, or nil if we're at the end of the stream.
|
|
160
|
+
def next: () -> Pair?
|
|
161
|
+
|
|
162
|
+
# Go back one position. This is a no-op if we're at the beginning of the stream.
|
|
163
|
+
def backup: () -> void
|
|
164
|
+
|
|
165
|
+
# Return the next pair without consuming it, or nil if we're at the end of the stream.
|
|
166
|
+
def peek: () -> Pair?
|
|
167
|
+
end
|
|
168
|
+
end
|
data/sig/parser.rbs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Pestle
|
|
2
|
+
class Parser
|
|
3
|
+
@rules: Hash[String, Pestle::Grammar::Rule]
|
|
4
|
+
|
|
5
|
+
@doc: String?
|
|
6
|
+
|
|
7
|
+
# Parse a grammar definition and return a new parser for it.
|
|
8
|
+
def self.from_grammar: (String grammar) -> Parser
|
|
9
|
+
|
|
10
|
+
def initialize: (Hash[String, Pestle::Grammar::Rule] rules, String? doc) -> void
|
|
11
|
+
|
|
12
|
+
def parse: (String | Symbol start_rule, String text, ?start_pos: ::Integer) -> Pairs
|
|
13
|
+
|
|
14
|
+
def tree_view: () -> String
|
|
15
|
+
end
|
|
16
|
+
end
|
data/sig/pestle.rbs
ADDED
data/sig/pratt.rbs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Pestle
|
|
2
|
+
# A Generic Pratt parser base class operating on a Pestle::Stream of token pairs.
|
|
3
|
+
class PrattParser[ExprT]
|
|
4
|
+
# A mapping of prefix operator rule symbols to precedence levels.
|
|
5
|
+
PREFIX_OPS: ::Hash[Symbol, Integer]
|
|
6
|
+
|
|
7
|
+
# A mapping of infix operator rule symbols to [precedence, right_associative].
|
|
8
|
+
INFIX_OPS: ::Hash[Symbol, [Integer, bool]]
|
|
9
|
+
|
|
10
|
+
# A mapping of postfix operator rule symbols to precedence levels.
|
|
11
|
+
POSTFIX_OPS: ::Hash[Symbol, Integer]
|
|
12
|
+
|
|
13
|
+
LEFT_ASSOC: false
|
|
14
|
+
|
|
15
|
+
RIGHT_ASSOC: true
|
|
16
|
+
|
|
17
|
+
def parse_primary: (Pair pair) -> ExprT
|
|
18
|
+
|
|
19
|
+
def parse_prefix: (Pair op, ExprT rhs) -> ExprT
|
|
20
|
+
|
|
21
|
+
def parse_infix: (ExprT lhs, Pair op, ExprT rhs) -> ExprT
|
|
22
|
+
|
|
23
|
+
def parse_postfix: (ExprT lhs, Pair op) -> ExprT
|
|
24
|
+
|
|
25
|
+
def parse_expr: (Stream stream, ?::Integer min_prec) -> ExprT
|
|
26
|
+
end
|
|
27
|
+
end
|
data/sig/state.rbs
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
module Pestle
|
|
2
|
+
class ParserState
|
|
3
|
+
@text: String
|
|
4
|
+
|
|
5
|
+
@scanner: StringScanner
|
|
6
|
+
|
|
7
|
+
@rules: Hash[String, Pestle::Grammar::Rule]
|
|
8
|
+
|
|
9
|
+
@pos_checkpoints: Array[Integer]
|
|
10
|
+
|
|
11
|
+
@atomic_depth: Integer
|
|
12
|
+
|
|
13
|
+
@atomic_depth_checkpoints: Array[Integer]
|
|
14
|
+
|
|
15
|
+
@tags: Array[String]
|
|
16
|
+
|
|
17
|
+
@user_stack: Array[String]
|
|
18
|
+
|
|
19
|
+
@user_stack_popped: Array[String]
|
|
20
|
+
|
|
21
|
+
@user_stack_lengths: Array[[Integer, Integer]]
|
|
22
|
+
|
|
23
|
+
@rule_stack: Array[String]
|
|
24
|
+
|
|
25
|
+
@neg_pred_stack: Array[Integer]
|
|
26
|
+
|
|
27
|
+
@furthest_pos: Integer
|
|
28
|
+
|
|
29
|
+
@furthest_rules: Array[String]
|
|
30
|
+
|
|
31
|
+
@furthest_expected: Hash[String, Array[String]]
|
|
32
|
+
|
|
33
|
+
@furthest_unexpected: Hash[String, Array[String]]
|
|
34
|
+
|
|
35
|
+
attr_reader text: String
|
|
36
|
+
|
|
37
|
+
attr_reader scanner: StringScanner
|
|
38
|
+
|
|
39
|
+
attr_reader rules: Hash[String, Pestle::Grammar::Rule]
|
|
40
|
+
|
|
41
|
+
attr_reader tags: Array[String]
|
|
42
|
+
|
|
43
|
+
attr_reader atomic_depth: Integer
|
|
44
|
+
|
|
45
|
+
attr_reader user_stack: Array[String]
|
|
46
|
+
|
|
47
|
+
attr_reader rule_stack: Array[String]
|
|
48
|
+
|
|
49
|
+
attr_reader furthest_pos: Integer
|
|
50
|
+
|
|
51
|
+
attr_reader furthest_expected: Hash[String, Array[String]]
|
|
52
|
+
|
|
53
|
+
attr_reader furthest_unexpected: Hash[String, Array[String]]
|
|
54
|
+
|
|
55
|
+
attr_reader furthest_rules: Array[String]
|
|
56
|
+
|
|
57
|
+
attr_reader neg_pred_stack: Array[Integer]
|
|
58
|
+
|
|
59
|
+
def initialize: (String text, Hash[String, Pestle::Grammar::Rule] rules, ?start_pos: ::Integer) -> void
|
|
60
|
+
|
|
61
|
+
def checkpoint: () -> void
|
|
62
|
+
|
|
63
|
+
def ok: () -> void
|
|
64
|
+
|
|
65
|
+
def restore: () -> void
|
|
66
|
+
|
|
67
|
+
def stack_snapshot: () -> void
|
|
68
|
+
|
|
69
|
+
def stack_drop_snapshot: () -> void
|
|
70
|
+
|
|
71
|
+
def stack_restore: () -> void
|
|
72
|
+
|
|
73
|
+
def stack_empty?: () -> bool
|
|
74
|
+
|
|
75
|
+
def stack_push: (String value) -> void
|
|
76
|
+
|
|
77
|
+
def stack_pop: () -> String?
|
|
78
|
+
|
|
79
|
+
def stack_peek: () -> String?
|
|
80
|
+
|
|
81
|
+
def stack_peek_slice: (Integer? start, Integer? stop) -> Array[String]
|
|
82
|
+
|
|
83
|
+
def stack_clear: () -> void
|
|
84
|
+
|
|
85
|
+
def parse_trivia: (Array[Pestle::Pair] pairs) -> bool
|
|
86
|
+
|
|
87
|
+
def with_tag: (String name) { () -> untyped } -> untyped
|
|
88
|
+
|
|
89
|
+
def atomic: () { () -> untyped } -> untyped
|
|
90
|
+
|
|
91
|
+
def nonatomic: () { () -> untyped } -> untyped
|
|
92
|
+
|
|
93
|
+
def track: (String label, bool matched) -> void
|
|
94
|
+
end
|
|
95
|
+
end
|
data.tar.gz.sig
ADDED
|
Binary file
|
metadata
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: pestle
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- James Prior
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain:
|
|
10
|
+
- |
|
|
11
|
+
-----BEGIN CERTIFICATE-----
|
|
12
|
+
MIIEhTCCAu2gAwIBAgIBATANBgkqhkiG9w0BAQsFADBEMRYwFAYDVQQDDA1qYW1l
|
|
13
|
+
c2dyLnByaW9yMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
|
|
14
|
+
FgNjb20wHhcNMjUxMDI1MDc0ODI4WhcNMjYxMDI1MDc0ODI4WjBEMRYwFAYDVQQD
|
|
15
|
+
DA1qYW1lc2dyLnByaW9yMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJ
|
|
16
|
+
k/IsZAEZFgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDYTvQW
|
|
17
|
+
0JzsHenYu4w0iHgJRtU9uK8vkDx1wlMioKlPFkaiMfxqUcTTfg80U/n8n/KKmpdq
|
|
18
|
+
y2rpUqv+VPE2nrfCUncf7ukqs+gF8uehbciMXV4iOzsZmqmtlPUJiGuSyO8REe/O
|
|
19
|
+
ERAyxYV8y5psF+WnW4uQzsWCKTnKbexIc6rf237veuYvYoBpnodJu0mJ0m9tBCFU
|
|
20
|
+
qH3Nk1sHBRIEEwn+nTiIiOMb+QMU5p0NIQkIhJO3el5nEQgIGxMPnie7PnwxPquQ
|
|
21
|
+
1rouuISbLmQy5oKYc9kScwnHdAu2PtnnJFNNuQ37vED375iQgMem/tK8EgMm9/Qr
|
|
22
|
+
Qxd2DQqqehgtEySWntGHTxNLXQouqHIRyqzkbcCatJqC+PBBql1x2N1KqgyvbLM3
|
|
23
|
+
B0dZCdJECr5J8zrluMxYsy7uGMmLz3LZ7PskGaJg4XxXP3j/B/e03/AxDj0neZZu
|
|
24
|
+
xuDLIfMDSNILO1pskMc+Xp0xdnkbS4IjiMDTrhqABuEcdNYH/GpyTiA/I0cCAwEA
|
|
25
|
+
AaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBR4j7UhnpT9
|
|
26
|
+
mLcAkshwkFtwVpMdejAiBgNVHREEGzAZgRdqYW1lc2dyLnByaW9yQGdtYWlsLmNv
|
|
27
|
+
bTAiBgNVHRIEGzAZgRdqYW1lc2dyLnByaW9yQGdtYWlsLmNvbTANBgkqhkiG9w0B
|
|
28
|
+
AQsFAAOCAYEAbTkg946BsGPQFX3jskBjwINeFnMP0IppuStonPQv3SNQu1SWP0xS
|
|
29
|
+
o1Qji1dxkWDfOcp1ffrRMUo7ecrJbTqQ5Sdx+7zw0OLodSVqSu1LMIVDw/T73smg
|
|
30
|
+
ADO2r3eZ8vxCKh7z4wUeKXvmBXi5NvpmvhH7D+qeG4OMLI8jnfmfbSHZQZbe2tpd
|
|
31
|
+
tJC+MYVok/m91fBrfv5wqLsR5QiJl3vcVhG+xACd46gr3JZFOxBqpSJrCYL8Gwqx
|
|
32
|
+
BaKEySCLGqkb0d1Rnt2/zTR2KtW2QJVH9rBMnJ+LsPEFKs1UHH4qHzxmwmmaQLon
|
|
33
|
+
MoE4UJ51GHGrjJ4WsHOUSOy5UbjaQec3kuIDwTXKbHws0J0Ut9S4S38opZKdQHDD
|
|
34
|
+
PUBpY0QA1CgE/VjKAYEDHOJyfUCNOl+sEESM+WxEXZAUVZLrFF7MljJqyQq+JyTD
|
|
35
|
+
vFKHe1ZAA76NFrPscB/ODPTBK8i+u4gwrD1UAsVAHuIbOpQu4LYAujluCu5cl2A8
|
|
36
|
+
HhmlCT7sTkqG
|
|
37
|
+
-----END CERTIFICATE-----
|
|
38
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
39
|
+
dependencies: []
|
|
40
|
+
email:
|
|
41
|
+
- jamesgr.prior@gmail.com
|
|
42
|
+
executables: []
|
|
43
|
+
extensions: []
|
|
44
|
+
extra_rdoc_files: []
|
|
45
|
+
files:
|
|
46
|
+
- ".rubocop.yml"
|
|
47
|
+
- ".ruby-version"
|
|
48
|
+
- CHANGELOG.md
|
|
49
|
+
- LICENSE.txt
|
|
50
|
+
- LICENSE_PEST.txt
|
|
51
|
+
- README.md
|
|
52
|
+
- Rakefile
|
|
53
|
+
- Steepfile
|
|
54
|
+
- benchmarks/jsonpath_ips.rb
|
|
55
|
+
- examples/calculator_pratt.rb
|
|
56
|
+
- examples/calculator_prec_climber.rb
|
|
57
|
+
- examples/calculator_stack_vm.rb
|
|
58
|
+
- examples/csv.rb
|
|
59
|
+
- examples/ini.rb
|
|
60
|
+
- examples/json_example.rb
|
|
61
|
+
- examples/jsonpath/README.md
|
|
62
|
+
- examples/jsonpath/jsonpath.pest
|
|
63
|
+
- examples/jsonpath/lib/jsonpath.rb
|
|
64
|
+
- examples/jsonpath/lib/jsonpath/ast.rb
|
|
65
|
+
- examples/jsonpath/lib/jsonpath/function_extensions.rb
|
|
66
|
+
- examples/jsonpath/lib/jsonpath/node.rb
|
|
67
|
+
- examples/jsonpath/lib/jsonpath/query.rb
|
|
68
|
+
- lib/pestle.rb
|
|
69
|
+
- lib/pestle/errors.rb
|
|
70
|
+
- lib/pestle/grammar/builtin_rules/ascii.rb
|
|
71
|
+
- lib/pestle/grammar/builtin_rules/special.rb
|
|
72
|
+
- lib/pestle/grammar/builtin_rules/unicode.rb
|
|
73
|
+
- lib/pestle/grammar/errors.rb
|
|
74
|
+
- lib/pestle/grammar/expression.rb
|
|
75
|
+
- lib/pestle/grammar/expressions/choice.rb
|
|
76
|
+
- lib/pestle/grammar/expressions/group.rb
|
|
77
|
+
- lib/pestle/grammar/expressions/identifier.rb
|
|
78
|
+
- lib/pestle/grammar/expressions/postfix.rb
|
|
79
|
+
- lib/pestle/grammar/expressions/prefix.rb
|
|
80
|
+
- lib/pestle/grammar/expressions/range.rb
|
|
81
|
+
- lib/pestle/grammar/expressions/sequence.rb
|
|
82
|
+
- lib/pestle/grammar/expressions/stack.rb
|
|
83
|
+
- lib/pestle/grammar/expressions/string.rb
|
|
84
|
+
- lib/pestle/grammar/lexer.rb
|
|
85
|
+
- lib/pestle/grammar/parser.rb
|
|
86
|
+
- lib/pestle/grammar/rule.rb
|
|
87
|
+
- lib/pestle/pair.rb
|
|
88
|
+
- lib/pestle/parser.rb
|
|
89
|
+
- lib/pestle/pratt.rb
|
|
90
|
+
- lib/pestle/state.rb
|
|
91
|
+
- lib/pestle/version.rb
|
|
92
|
+
- sig/errors.rbs
|
|
93
|
+
- sig/grammar/ascii.rbs
|
|
94
|
+
- sig/grammar/choice.rbs
|
|
95
|
+
- sig/grammar/errors.rbs
|
|
96
|
+
- sig/grammar/expression.rbs
|
|
97
|
+
- sig/grammar/group.rbs
|
|
98
|
+
- sig/grammar/identifier.rbs
|
|
99
|
+
- sig/grammar/lexer.rbs
|
|
100
|
+
- sig/grammar/parser.rbs
|
|
101
|
+
- sig/grammar/postfix.rbs
|
|
102
|
+
- sig/grammar/prefix.rbs
|
|
103
|
+
- sig/grammar/range.rbs
|
|
104
|
+
- sig/grammar/rule.rbs
|
|
105
|
+
- sig/grammar/sequence.rbs
|
|
106
|
+
- sig/grammar/special.rbs
|
|
107
|
+
- sig/grammar/stack.rbs
|
|
108
|
+
- sig/grammar/string.rbs
|
|
109
|
+
- sig/grammar/unicode.rbs
|
|
110
|
+
- sig/pair.rbs
|
|
111
|
+
- sig/parser.rbs
|
|
112
|
+
- sig/pestle.rbs
|
|
113
|
+
- sig/pratt.rbs
|
|
114
|
+
- sig/state.rbs
|
|
115
|
+
- sig/stdlib/strscan.rbs
|
|
116
|
+
homepage: https://github.com/jg-rp/ruby-pestle
|
|
117
|
+
licenses:
|
|
118
|
+
- MIT
|
|
119
|
+
metadata:
|
|
120
|
+
homepage_uri: https://github.com/jg-rp/ruby-pestle
|
|
121
|
+
source_code_uri: https://github.com/jg-rp/ruby-pestle
|
|
122
|
+
changelog_uri: https://github.com/jg-rp/ruby-pestle/blob/main/CHANGELOG.md
|
|
123
|
+
rubygems_mfa_required: 'true'
|
|
124
|
+
rdoc_options: []
|
|
125
|
+
require_paths:
|
|
126
|
+
- lib
|
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 3.3.0
|
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
|
+
requirements:
|
|
134
|
+
- - ">="
|
|
135
|
+
- !ruby/object:Gem::Version
|
|
136
|
+
version: '0'
|
|
137
|
+
requirements: []
|
|
138
|
+
rubygems_version: 3.6.9
|
|
139
|
+
specification_version: 4
|
|
140
|
+
summary: A general purpose parser for Ruby.
|
|
141
|
+
test_files: []
|
metadata.gz.sig
ADDED
|
Binary file
|