ebnf 2.3.5 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -1
- data/VERSION +1 -1
- data/etc/abnf.sxp +1 -1
- data/etc/ebnf.html +13 -13
- data/etc/ebnf.ll1.rb +1 -1
- data/etc/ebnf.ll1.sxp +94 -94
- data/etc/ebnf.peg.rb +1 -1
- data/etc/ebnf.peg.sxp +29 -29
- data/etc/ebnf.sxp +18 -18
- data/etc/iso-ebnf.sxp +27 -27
- data/etc/sparql.sxp +195 -195
- data/etc/turtle.ebnf +70 -67
- data/etc/turtle.html +56 -106
- data/etc/turtle.peg.sxp +182 -191
- data/etc/turtle.sxp +64 -70
- data/lib/ebnf/abnf.rb +3 -3
- data/lib/ebnf/base.rb +1 -1
- data/lib/ebnf/isoebnf.rb +1 -1
- data/lib/ebnf/native.rb +3 -2
- data/lib/ebnf/parser.rb +4 -2
- data/lib/ebnf/rule.rb +1 -2
- data/lib/ebnf/unescape.rb +1 -1
- data/lib/ebnf/writer.rb +9 -7
- data/lib/ebnf.rb +2 -0
- metadata +16 -23
- data/etc/sparql.html +0 -1425
- data/etc/sparql.ll1.sxp +0 -7372
- data/etc/sparql.peg.rb +0 -532
- data/etc/sparql.peg.sxp +0 -597
- data/etc/turtle.ll1.rb +0 -1482
- data/etc/turtle.ll1.sxp +0 -425
- data/etc/turtle.peg.rb +0 -182
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76a49d9fe4e2cf23f7bde8a55f600bfad24d0f3e55ecaf8a9c0a2e21b7e1310d
|
4
|
+
data.tar.gz: fbf204b9ff0bbe4dff0056ba75c6ed535269584bac336d041f904d2d3fb2e571
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74963a92956d8cbf2fe24f6df8fe0584667f941f42fd523c8a5e3f7f39f3bd0c74eaf8480ed22cc54d358cfd350630fcd6c84449dfff6591dc41e95174fd06b9
|
7
|
+
data.tar.gz: 02c0844b57ffd898764a4cd3dd163105b8e4d32f34df20f3874b2f7dd2590e14ddff98d72f8fd40f2573897f858327ba7eee8e6cff21f551f9882a9c4f82514f
|
data/README.md
CHANGED
@@ -250,6 +250,10 @@ and [First Follow Notation-3 rules](https://www.w3.org/2000/10/swap/grammar/firs
|
|
250
250
|
## Documentation
|
251
251
|
Full documentation available on [Rubydoc.info][EBNF doc].
|
252
252
|
|
253
|
+
## Change Log
|
254
|
+
|
255
|
+
See [Release Notes on GitHub](https://github.com/dryruby/ebnf/releases)
|
256
|
+
|
253
257
|
## Future Work
|
254
258
|
* Better LL(1) parser tests
|
255
259
|
|
@@ -290,7 +294,7 @@ A copy of the [Turtle EBNF][] and derived parser files are included in the repos
|
|
290
294
|
[ISO/IEC 14977]:https://www.iso.org/standard/26153.html
|
291
295
|
[LL(1)]: https://www.csd.uwo.ca/~moreno//CS447/Lectures/Syntax.html/node14.html
|
292
296
|
[LL(1) Parser]: https://en.wikipedia.org/wiki/LL_parser
|
293
|
-
[Logger]: https://ruby-doc.org/stdlib-
|
297
|
+
[Logger]: https://ruby-doc.org/stdlib-3.0.0/libdoc/logger/rdoc/Logger.html
|
294
298
|
[S-expression]: https://en.wikipedia.org/wiki/S-expression
|
295
299
|
[Tokenizer]: https://en.wikipedia.org/wiki/Lexical_analysis#Tokenizer
|
296
300
|
[Turtle]: https://www.w3.org/TR/2012/WD-turtle-20120710/
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.5.0
|
data/etc/abnf.sxp
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
(seq "x" (plus HEXDIG) (opt (alt (plus (seq "." (plus HEXDIG))) (seq "-" (plus HEXDIG))))))
|
29
29
|
(terminal prose_val (seq "<" (star (range "#x20-#x3D#x3F-#x7E")) ">"))
|
30
30
|
(terminal ALPHA (range "#x41-#x5A#x61-#x7A"))
|
31
|
-
(terminal BIT (alt
|
31
|
+
(terminal BIT (alt '0' '1'))
|
32
32
|
(terminal CHAR (range "#x01-#x7F"))
|
33
33
|
(terminal CR (hex "#x0D"))
|
34
34
|
(terminal CRLF (seq (opt CR) LF))
|
data/etc/ebnf.html
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<!-- Generated with ebnf version 2.
|
1
|
+
<!-- Generated with ebnf version 2.4.0. See https://github.com/dryruby/ebnf. -->
|
2
2
|
<table class="grammar">
|
3
3
|
<tbody id="grammar-productions" class="ebnf">
|
4
4
|
<tr id="grammar-production-ebnf">
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<td>[2]</td>
|
12
12
|
<td><code>declaration</code></td>
|
13
13
|
<td>::=</td>
|
14
|
-
<td>
|
14
|
+
<td>'<code class="grammar-literal">@terminals</code>' <code class="grammar-alt">|</code> <a href="#grammar-production-pass">pass</a></td>
|
15
15
|
</tr>
|
16
16
|
<tr id="grammar-production-rule">
|
17
17
|
<td>[3]</td>
|
@@ -29,7 +29,7 @@
|
|
29
29
|
<td>[5]</td>
|
30
30
|
<td><code>alt</code></td>
|
31
31
|
<td>::=</td>
|
32
|
-
<td><a href="#grammar-production-seq">seq</a> <code class="grammar-paren">(</code>
|
32
|
+
<td><a href="#grammar-production-seq">seq</a> <code class="grammar-paren">(</code>'<code class="grammar-literal">|</code>' <a href="#grammar-production-seq">seq</a><code class="grammar-paren">)</code><code class="grammar-star">*</code></td>
|
33
33
|
</tr>
|
34
34
|
<tr id="grammar-production-seq">
|
35
35
|
<td>[6]</td>
|
@@ -41,7 +41,7 @@
|
|
41
41
|
<td>[7]</td>
|
42
42
|
<td><code>diff</code></td>
|
43
43
|
<td>::=</td>
|
44
|
-
<td><a href="#grammar-production-postfix">postfix</a> <code class="grammar-paren">(</code>
|
44
|
+
<td><a href="#grammar-production-postfix">postfix</a> <code class="grammar-paren">(</code>'<code class="grammar-literal">-</code>' <a href="#grammar-production-postfix">postfix</a><code class="grammar-paren">)</code><code class="grammar-opt">?</code></td>
|
45
45
|
</tr>
|
46
46
|
<tr id="grammar-production-postfix">
|
47
47
|
<td>[8]</td>
|
@@ -53,13 +53,13 @@
|
|
53
53
|
<td>[9]</td>
|
54
54
|
<td><code>primary</code></td>
|
55
55
|
<td>::=</td>
|
56
|
-
<td><a href="#grammar-production-HEX">HEX</a> <code class="grammar-alt">|</code> <a href="#grammar-production-SYMBOL">SYMBOL</a> <code class="grammar-alt">|</code> <a href="#grammar-production-O_RANGE">O_RANGE</a> <code class="grammar-alt">|</code> <a href="#grammar-production-RANGE">RANGE</a> <code class="grammar-alt">|</code> <a href="#grammar-production-STRING1">STRING1</a> <code class="grammar-alt">|</code> <a href="#grammar-production-STRING2">STRING2</a> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code>
|
56
|
+
<td><a href="#grammar-production-HEX">HEX</a> <code class="grammar-alt">|</code> <a href="#grammar-production-SYMBOL">SYMBOL</a> <code class="grammar-alt">|</code> <a href="#grammar-production-O_RANGE">O_RANGE</a> <code class="grammar-alt">|</code> <a href="#grammar-production-RANGE">RANGE</a> <code class="grammar-alt">|</code> <a href="#grammar-production-STRING1">STRING1</a> <code class="grammar-alt">|</code> <a href="#grammar-production-STRING2">STRING2</a> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code>'<code class="grammar-literal">(</code>' <a href="#grammar-production-expression">expression</a> '<code class="grammar-literal">)</code>'<code class="grammar-paren">)</code></td>
|
57
57
|
</tr>
|
58
58
|
<tr id="grammar-production-pass">
|
59
59
|
<td>[10]</td>
|
60
60
|
<td><code>pass</code></td>
|
61
61
|
<td>::=</td>
|
62
|
-
<td>
|
62
|
+
<td>'<code class="grammar-literal">@pass</code>' <a href="#grammar-production-expression">expression</a></td>
|
63
63
|
</tr>
|
64
64
|
<tr id="grammar-declaration-terminals">
|
65
65
|
<td>@terminals</td>
|
@@ -71,31 +71,31 @@
|
|
71
71
|
<td>[11]</td>
|
72
72
|
<td><code>LHS</code></td>
|
73
73
|
<td>::=</td>
|
74
|
-
<td><code class="grammar-paren">(</code>
|
74
|
+
<td><code class="grammar-paren">(</code>'<code class="grammar-literal">[</code>' <a href="#grammar-production-SYMBOL">SYMBOL</a> '<code class="grammar-literal">]</code>' <code class="grammar-char-escape"><abbr title="space">#x20</abbr></code><code class="grammar-plus">+</code><code class="grammar-paren">)</code><code class="grammar-opt">?</code> <a href="#grammar-production-SYMBOL">SYMBOL</a> <code class="grammar-char-escape"><abbr title="space">#x20</abbr></code><code class="grammar-star">*</code> '<code class="grammar-literal">::=</code>'</td>
|
75
75
|
</tr>
|
76
76
|
<tr id="grammar-production-SYMBOL">
|
77
77
|
<td>[12]</td>
|
78
78
|
<td><code>SYMBOL</code></td>
|
79
79
|
<td>::=</td>
|
80
|
-
<td><code class="grammar-paren">(</code><code class="grammar-brac">[</code><code class="grammar-literal">a-z</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">A-Z</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">0-9</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code>
|
80
|
+
<td><code class="grammar-paren">(</code><code class="grammar-brac">[</code><code class="grammar-literal">a-z</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">A-Z</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">0-9</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> '<code class="grammar-literal">_</code>' <code class="grammar-alt">|</code> '<code class="grammar-literal">.</code>'<code class="grammar-paren">)</code><code class="grammar-plus">+</code></td>
|
81
81
|
</tr>
|
82
82
|
<tr id="grammar-production-HEX">
|
83
83
|
<td>[13]</td>
|
84
84
|
<td><code>HEX</code></td>
|
85
85
|
<td>::=</td>
|
86
|
-
<td>
|
86
|
+
<td>'<code class="grammar-literal">#x</code>' <code class="grammar-paren">(</code><code class="grammar-brac">[</code><code class="grammar-literal">a-f</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">A-F</code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">0-9</code><code class="grammar-brac">]</code><code class="grammar-paren">)</code><code class="grammar-plus">+</code></td>
|
87
87
|
</tr>
|
88
88
|
<tr id="grammar-production-RANGE">
|
89
89
|
<td>[14]</td>
|
90
90
|
<td><code>RANGE</code></td>
|
91
91
|
<td>::=</td>
|
92
|
-
<td>
|
92
|
+
<td>'<code class="grammar-literal">[</code>' <code class="grammar-paren">(</code><code class="grammar-paren">(</code><a href="#grammar-production-R_CHAR">R_CHAR</a> '<code class="grammar-literal">-</code>' <a href="#grammar-production-R_CHAR">R_CHAR</a><code class="grammar-paren">)</code> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code><a href="#grammar-production-HEX">HEX</a> '<code class="grammar-literal">-</code>' <a href="#grammar-production-HEX">HEX</a><code class="grammar-paren">)</code> <code class="grammar-alt">|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a> <code class="grammar-alt">|</code> <a href="#grammar-production-HEX">HEX</a><code class="grammar-paren">)</code><code class="grammar-plus">+</code> '<code class="grammar-literal">-</code>'<code class="grammar-opt">?</code> <code class="grammar-paren">(</code>'<code class="grammar-literal">]</code>' <code class="grammar-diff">-</code> <a href="#grammar-production-LHS">LHS</a><code class="grammar-paren">)</code></td>
|
93
93
|
</tr>
|
94
94
|
<tr id="grammar-production-O_RANGE">
|
95
95
|
<td>[15]</td>
|
96
96
|
<td><code>O_RANGE</code></td>
|
97
97
|
<td>::=</td>
|
98
|
-
<td>
|
98
|
+
<td>'<code class="grammar-literal">[^</code>' <code class="grammar-paren">(</code><code class="grammar-paren">(</code><a href="#grammar-production-R_CHAR">R_CHAR</a> '<code class="grammar-literal">-</code>' <a href="#grammar-production-R_CHAR">R_CHAR</a><code class="grammar-paren">)</code> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code><a href="#grammar-production-HEX">HEX</a> '<code class="grammar-literal">-</code>' <a href="#grammar-production-HEX">HEX</a><code class="grammar-paren">)</code> <code class="grammar-alt">|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a> <code class="grammar-alt">|</code> <a href="#grammar-production-HEX">HEX</a><code class="grammar-paren">)</code><code class="grammar-plus">+</code> '<code class="grammar-literal">-</code>'<code class="grammar-opt">?</code> '<code class="grammar-literal">]</code>'</td>
|
99
99
|
</tr>
|
100
100
|
<tr id="grammar-production-STRING1">
|
101
101
|
<td>[16]</td>
|
@@ -119,7 +119,7 @@
|
|
119
119
|
<td>[19]</td>
|
120
120
|
<td><code>R_CHAR</code></td>
|
121
121
|
<td>::=</td>
|
122
|
-
<td><a href="#grammar-production-CHAR">CHAR</a> <code class="grammar-diff">-</code> <code class="grammar-paren">(</code>
|
122
|
+
<td><a href="#grammar-production-CHAR">CHAR</a> <code class="grammar-diff">-</code> <code class="grammar-paren">(</code>'<code class="grammar-literal">]</code>' <code class="grammar-alt">|</code> '<code class="grammar-literal">-</code>' <code class="grammar-alt">|</code> <a href="#grammar-production-HEX">HEX</a><code class="grammar-paren">)</code></td>
|
123
123
|
</tr>
|
124
124
|
<tr id="grammar-production-POSTFIX">
|
125
125
|
<td>[20]</td>
|
@@ -131,7 +131,7 @@
|
|
131
131
|
<td>[21]</td>
|
132
132
|
<td><code>PASS</code></td>
|
133
133
|
<td>::=</td>
|
134
|
-
<td><code class="grammar-brac">[</code><code class="grammar-char-escape"><abbr title="horizontal tab">#x09</abbr></code><code class="grammar-char-escape"><abbr title="new line">#x0A</abbr></code><code class="grammar-char-escape"><abbr title="carriage return">#x0D</abbr></code><code class="grammar-char-escape"><abbr title="space">#x20</abbr></code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code><code class="grammar-paren">(</code><code class="grammar-paren">(</code>
|
134
|
+
<td><code class="grammar-brac">[</code><code class="grammar-char-escape"><abbr title="horizontal tab">#x09</abbr></code><code class="grammar-char-escape"><abbr title="new line">#x0A</abbr></code><code class="grammar-char-escape"><abbr title="carriage return">#x0D</abbr></code><code class="grammar-char-escape"><abbr title="space">#x20</abbr></code><code class="grammar-brac">]</code> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code><code class="grammar-paren">(</code><code class="grammar-paren">(</code>'<code class="grammar-literal">#</code>' <code class="grammar-diff">-</code> '<code class="grammar-literal">#x</code>'<code class="grammar-paren">)</code> <code class="grammar-alt">|</code> '<code class="grammar-literal">//</code>'<code class="grammar-paren">)</code> <code class="grammar-brac">[</code><code class="grammar-literal">^</code><code class="grammar-char-escape"><abbr title="new line">#x0A</abbr></code><code class="grammar-char-escape"><abbr title="carriage return">#x0D</abbr></code><code class="grammar-brac">]</code><code class="grammar-star">*</code><code class="grammar-paren">)</code> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code>'<code class="grammar-literal">/*</code>' <code class="grammar-paren">(</code><code class="grammar-paren">(</code>'<code class="grammar-literal">*</code>' <code class="grammar-brac">[</code><code class="grammar-literal">^/</code><code class="grammar-brac">]</code><code class="grammar-paren">)</code><code class="grammar-opt">?</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">^*</code><code class="grammar-brac">]</code><code class="grammar-paren">)</code><code class="grammar-star">*</code> '<code class="grammar-literal">*/</code>'<code class="grammar-paren">)</code> <code class="grammar-alt">|</code> <code class="grammar-paren">(</code>'<code class="grammar-literal">(*</code>' <code class="grammar-paren">(</code><code class="grammar-paren">(</code>'<code class="grammar-literal">*</code>' <code class="grammar-brac">[</code><code class="grammar-literal">^)</code><code class="grammar-brac">]</code><code class="grammar-paren">)</code><code class="grammar-opt">?</code> <code class="grammar-alt">|</code> <code class="grammar-brac">[</code><code class="grammar-literal">^*</code><code class="grammar-brac">]</code><code class="grammar-paren">)</code><code class="grammar-star">*</code> '<code class="grammar-literal">*)</code>'<code class="grammar-paren">)</code></td>
|
135
135
|
</tr>
|
136
136
|
<tr id="grammar-declaration-pass">
|
137
137
|
<td>@pass</td>
|
data/etc/ebnf.ll1.rb
CHANGED
data/etc/ebnf.ll1.sxp
CHANGED
@@ -2,114 +2,114 @@
|
|
2
2
|
(rule _empty "0" (first _eps) (seq))
|
3
3
|
(rule ebnf "1"
|
4
4
|
(start #t)
|
5
|
-
(first
|
5
|
+
(first '@pass' '@terminals' LHS _eps)
|
6
6
|
(follow _eof)
|
7
7
|
(cleanup star)
|
8
8
|
(alt _empty _ebnf_2))
|
9
9
|
(rule _ebnf_2 "1.2"
|
10
|
-
(first
|
10
|
+
(first '@pass' '@terminals' LHS)
|
11
11
|
(follow _eof)
|
12
12
|
(cleanup merge)
|
13
13
|
(seq _ebnf_1 ebnf))
|
14
14
|
(rule _ebnf_1 "1.1"
|
15
|
-
(first
|
16
|
-
(follow
|
15
|
+
(first '@pass' '@terminals' LHS)
|
16
|
+
(follow '@pass' '@terminals' LHS _eof)
|
17
17
|
(alt declaration rule))
|
18
18
|
(rule declaration "2"
|
19
|
-
(first
|
20
|
-
(follow
|
21
|
-
(alt
|
22
|
-
(rule rule "3" (first LHS) (follow
|
19
|
+
(first '@pass' '@terminals')
|
20
|
+
(follow '@pass' '@terminals' LHS _eof)
|
21
|
+
(alt '@terminals' pass))
|
22
|
+
(rule rule "3" (first LHS) (follow '@pass' '@terminals' LHS _eof) (seq LHS expression))
|
23
23
|
(rule expression "4"
|
24
|
-
(first
|
25
|
-
(follow
|
24
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
25
|
+
(follow ')' '@pass' '@terminals' LHS _eof)
|
26
26
|
(seq alt))
|
27
27
|
(rule alt "5"
|
28
|
-
(first
|
29
|
-
(follow
|
28
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
29
|
+
(follow ')' '@pass' '@terminals' LHS _eof)
|
30
30
|
(seq seq _alt_1))
|
31
31
|
(rule _alt_1 "5.1"
|
32
|
-
(first _eps
|
33
|
-
(follow
|
32
|
+
(first _eps '|')
|
33
|
+
(follow ')' '@pass' '@terminals' LHS _eof)
|
34
34
|
(cleanup star)
|
35
35
|
(alt _empty _alt_3))
|
36
36
|
(rule _alt_3 "5.3"
|
37
|
-
(first
|
38
|
-
(follow
|
37
|
+
(first '|')
|
38
|
+
(follow ')' '@pass' '@terminals' LHS _eof)
|
39
39
|
(cleanup merge)
|
40
40
|
(seq _alt_2 _alt_1))
|
41
41
|
(rule _alt_2 "5.2"
|
42
|
-
(first
|
43
|
-
(follow
|
44
|
-
(seq
|
42
|
+
(first '|')
|
43
|
+
(follow ')' '@pass' '@terminals' LHS _eof '|')
|
44
|
+
(seq '|' seq))
|
45
45
|
(rule seq "6"
|
46
|
-
(first
|
47
|
-
(follow
|
46
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
47
|
+
(follow ')' '@pass' '@terminals' LHS _eof '|')
|
48
48
|
(cleanup plus)
|
49
49
|
(seq diff _seq_1))
|
50
50
|
(rule _seq_1 "6.1"
|
51
|
-
(first
|
52
|
-
(follow
|
51
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps)
|
52
|
+
(follow ')' '@pass' '@terminals' LHS _eof '|')
|
53
53
|
(cleanup star)
|
54
54
|
(alt _empty _seq_2))
|
55
55
|
(rule _seq_2 "6.2"
|
56
|
-
(first
|
57
|
-
(follow
|
56
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
57
|
+
(follow ')' '@pass' '@terminals' LHS _eof '|')
|
58
58
|
(cleanup merge)
|
59
59
|
(seq diff _seq_1))
|
60
60
|
(rule diff "7"
|
61
|
-
(first
|
62
|
-
(follow
|
63
|
-
SYMBOL _eof
|
61
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
62
|
+
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
|
63
|
+
SYMBOL _eof '|' )
|
64
64
|
(seq postfix _diff_1))
|
65
65
|
(rule _diff_1 "7.1"
|
66
|
-
(first
|
67
|
-
(follow
|
68
|
-
SYMBOL _eof
|
66
|
+
(first '-' _eps)
|
67
|
+
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
|
68
|
+
SYMBOL _eof '|' )
|
69
69
|
(cleanup opt)
|
70
70
|
(alt _empty _diff_2))
|
71
71
|
(rule _diff_2 "7.2"
|
72
|
-
(first
|
73
|
-
(follow
|
74
|
-
SYMBOL _eof
|
75
|
-
(seq
|
72
|
+
(first '-')
|
73
|
+
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
|
74
|
+
SYMBOL _eof '|' )
|
75
|
+
(seq '-' postfix))
|
76
76
|
(rule postfix "8"
|
77
|
-
(first
|
78
|
-
(follow
|
79
|
-
STRING2 SYMBOL _eof
|
77
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
78
|
+
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1
|
79
|
+
STRING2 SYMBOL _eof '|' )
|
80
80
|
(seq primary _postfix_1))
|
81
81
|
(rule _postfix_1 "8.1"
|
82
82
|
(first POSTFIX _eps)
|
83
|
-
(follow
|
84
|
-
STRING2 SYMBOL _eof
|
83
|
+
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1
|
84
|
+
STRING2 SYMBOL _eof '|' )
|
85
85
|
(cleanup opt)
|
86
86
|
(alt _empty POSTFIX))
|
87
87
|
(rule primary "9"
|
88
|
-
(first
|
89
|
-
(follow
|
90
|
-
STRING1 STRING2 SYMBOL _eof
|
88
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
89
|
+
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
|
90
|
+
STRING1 STRING2 SYMBOL _eof '|' )
|
91
91
|
(alt HEX SYMBOL O_RANGE RANGE STRING1 STRING2 _primary_1))
|
92
92
|
(rule _primary_1 "9.1"
|
93
|
-
(first
|
94
|
-
(follow
|
95
|
-
STRING1 STRING2 SYMBOL _eof
|
96
|
-
(seq
|
93
|
+
(first '(')
|
94
|
+
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
|
95
|
+
STRING1 STRING2 SYMBOL _eof '|' )
|
96
|
+
(seq '(' expression ')'))
|
97
97
|
(rule pass "10"
|
98
|
-
(first
|
99
|
-
(follow
|
100
|
-
(seq
|
98
|
+
(first '@pass')
|
99
|
+
(follow '@pass' '@terminals' LHS _eof)
|
100
|
+
(seq '@pass' expression))
|
101
101
|
(terminals _terminals (seq))
|
102
|
-
(terminal LHS "11" (seq (opt (seq
|
103
|
-
(terminal SYMBOL "12" (plus (alt (range "a-z") (range "A-Z") (range "0-9")
|
104
|
-
(terminal HEX "13" (seq
|
102
|
+
(terminal LHS "11" (seq (opt (seq '[' SYMBOL ']' (plus ' '))) SYMBOL (star ' ') '::='))
|
103
|
+
(terminal SYMBOL "12" (plus (alt (range "a-z") (range "A-Z") (range "0-9") '_' '.')))
|
104
|
+
(terminal HEX "13" (seq '#x' (plus (alt (range "a-f") (range "A-F") (range "0-9")))))
|
105
105
|
(terminal RANGE "14"
|
106
|
-
(seq
|
107
|
-
(plus (alt (seq R_CHAR
|
108
|
-
(opt
|
109
|
-
(diff
|
106
|
+
(seq '['
|
107
|
+
(plus (alt (seq R_CHAR '-' R_CHAR) (seq HEX '-' HEX) R_CHAR HEX))
|
108
|
+
(opt '-')
|
109
|
+
(diff ']' LHS)) )
|
110
110
|
(terminal O_RANGE "15"
|
111
|
-
(seq
|
112
|
-
(terminal STRING1 "16" (seq "
|
111
|
+
(seq '[^' (plus (alt (seq R_CHAR '-' R_CHAR) (seq HEX '-' HEX) R_CHAR HEX)) (opt '-') ']'))
|
112
|
+
(terminal STRING1 "16" (seq '"' (star (diff CHAR '"')) '"'))
|
113
113
|
(terminal STRING2 "17" (seq "'" (star (diff CHAR "'")) "'"))
|
114
114
|
(terminal CHAR "18"
|
115
115
|
(alt
|
@@ -117,66 +117,66 @@
|
|
117
117
|
(range "#x20-#xD7FF")
|
118
118
|
(range "#xE000-#xFFFD")
|
119
119
|
(range "#x10000-#x10FFFF")) )
|
120
|
-
(terminal R_CHAR "19" (diff CHAR (alt
|
120
|
+
(terminal R_CHAR "19" (diff CHAR (alt ']' '-' HEX)))
|
121
121
|
(terminal POSTFIX "20" (range "?*+"))
|
122
122
|
(terminal PASS "21"
|
123
123
|
(alt
|
124
124
|
(range "#x9#xA#xD#x20")
|
125
|
-
(seq (alt (diff
|
126
|
-
(seq
|
127
|
-
(seq
|
125
|
+
(seq (alt (diff '#' '#x') '//') (star (range "^#xA#xD")))
|
126
|
+
(seq '/*' (star (alt (opt (seq '*' (range "^/"))) (range "^*"))) '*/')
|
127
|
+
(seq '(*' (star (alt (opt (seq '*' (range "^)"))) (range "^*"))) '*)')) )
|
128
128
|
(pass _pass (seq PASS))
|
129
|
-
(rule _ebnf_3 "1.3" (first
|
129
|
+
(rule _ebnf_3 "1.3" (first '@pass' '@terminals' LHS _eps) (follow _eof) (seq ebnf))
|
130
130
|
(rule _rule_1 "3.1"
|
131
|
-
(first
|
132
|
-
(follow
|
131
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
132
|
+
(follow '@pass' '@terminals' LHS _eof)
|
133
133
|
(seq expression))
|
134
134
|
(rule _alt_4 "5.4"
|
135
|
-
(first _eps
|
136
|
-
(follow
|
135
|
+
(first _eps '|')
|
136
|
+
(follow ')' '@pass' '@terminals' LHS _eof)
|
137
137
|
(seq _alt_1))
|
138
138
|
(rule _alt_5 "5.5"
|
139
|
-
(first _eps
|
140
|
-
(follow
|
139
|
+
(first _eps '|')
|
140
|
+
(follow ')' '@pass' '@terminals' LHS _eof)
|
141
141
|
(seq _alt_1))
|
142
142
|
(rule _alt_6 "5.6"
|
143
|
-
(first
|
144
|
-
(follow
|
143
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
144
|
+
(follow ')' '@pass' '@terminals' LHS _eof '|')
|
145
145
|
(seq seq))
|
146
146
|
(rule _seq_3 "6.3"
|
147
|
-
(first
|
148
|
-
(follow
|
147
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps)
|
148
|
+
(follow ')' '@pass' '@terminals' LHS _eof '|')
|
149
149
|
(seq _seq_1))
|
150
150
|
(rule _seq_4 "6.4"
|
151
|
-
(first
|
152
|
-
(follow
|
151
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps)
|
152
|
+
(follow ')' '@pass' '@terminals' LHS _eof '|')
|
153
153
|
(seq _seq_1))
|
154
154
|
(rule _diff_3 "7.3"
|
155
|
-
(first
|
156
|
-
(follow
|
157
|
-
SYMBOL _eof
|
155
|
+
(first '-' _eps)
|
156
|
+
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
|
157
|
+
SYMBOL _eof '|' )
|
158
158
|
(seq _diff_1))
|
159
159
|
(rule _diff_4 "7.4"
|
160
|
-
(first
|
161
|
-
(follow
|
162
|
-
SYMBOL _eof
|
160
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
161
|
+
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
|
162
|
+
SYMBOL _eof '|' )
|
163
163
|
(seq postfix))
|
164
164
|
(rule _postfix_2 "8.2"
|
165
165
|
(first POSTFIX _eps)
|
166
|
-
(follow
|
167
|
-
STRING2 SYMBOL _eof
|
166
|
+
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1
|
167
|
+
STRING2 SYMBOL _eof '|' )
|
168
168
|
(seq _postfix_1))
|
169
169
|
(rule _primary_2 "9.2"
|
170
|
-
(first
|
171
|
-
(follow
|
172
|
-
STRING1 STRING2 SYMBOL _eof
|
173
|
-
(seq expression
|
170
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
171
|
+
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
|
172
|
+
STRING1 STRING2 SYMBOL _eof '|' )
|
173
|
+
(seq expression ')'))
|
174
174
|
(rule _pass_1 "10.1"
|
175
|
-
(first
|
176
|
-
(follow
|
175
|
+
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
|
176
|
+
(follow '@pass' '@terminals' LHS _eof)
|
177
177
|
(seq expression))
|
178
178
|
(rule _primary_3 "9.3"
|
179
|
-
(first
|
180
|
-
(follow
|
181
|
-
STRING1 STRING2 SYMBOL _eof
|
182
|
-
(seq
|
179
|
+
(first ')')
|
180
|
+
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
|
181
|
+
STRING1 STRING2 SYMBOL _eof '|' )
|
182
|
+
(seq ')')) )
|
data/etc/ebnf.peg.rb
CHANGED