ebnf 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,4 @@
1
+ @base <https://rubygems.org/gems/ebnf> .
1
2
  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2
3
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
3
4
  @prefix dc: <http://purl.org/dc/terms/> .
@@ -7,10 +8,10 @@
7
8
  @prefix ex: <http://example.org/> .
8
9
  @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9
10
 
10
- <http://rubygems.org/gems/ebnf> a doap:Project, earl:TestSubject, earl:Software ;
11
+ <> a doap:Project, earl:TestSubject, earl:Software ;
11
12
  doap:name "ebnf" ;
12
- doap:homepage <http://dryruby.github.com/ebnf> ;
13
- doap:license <http://creativecommons.org/licenses/publicdomain/> ;
13
+ doap:homepage <https://github.com/dryruby/ebnf> ;
14
+ doap:license <https://unlicense.org/1.0/> ;
14
15
  doap:shortdesc "EBNF parser and parser generator"@en ;
15
16
  doap:description "EBNF is a Ruby parser for W3C EBNF and a parser generator for compliant LL(1) grammars."@en ;
16
17
  doap:created "2011-08-29"^^xsd:date ;
@@ -18,15 +19,15 @@
18
19
  doap:implements <http://dbpedia.org/resource/Compiler-compiler> ;
19
20
  doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
20
21
  <http://dbpedia.org/resource/Ruby_(programming_language)> ;
21
- doap:download-page <http://rubygems.org/gems/ebnf> ;
22
- doap:mailing-list <http://lists.w3.org/Archives/Public/public-rdf-ruby/> ;
23
- doap:bug-database <http://github.com/dryruby/ebnf/issues> ;
24
- doap:blog <http://greggkellogg.net/> ;
25
- doap:developer <http://greggkellogg.net/foaf#me> ;
26
- doap:maintainer <http://greggkellogg.net/foaf#me> ;
27
- doap:documenter <http://greggkellogg.net/foaf#me> ;
28
- foaf:maker <http://greggkellogg.net/foaf#me> ;
22
+ doap:download-page <> ;
23
+ doap:mailing-list <https://lists.w3.org/Archives/Public/public-rdf-ruby/> ;
24
+ doap:bug-database <https://github.com/dryruby/ebnf/issues> ;
25
+ doap:blog <https://greggkellogg.net/> ;
26
+ doap:developer <https://greggkellogg.net/foaf#me> ;
27
+ doap:maintainer <https://greggkellogg.net/foaf#me> ;
28
+ doap:documenter <https://greggkellogg.net/foaf#me> ;
29
+ foaf:maker <https://greggkellogg.net/foaf#me> ;
29
30
  dc:title "ebnf" ;
30
31
  dc:description "EBNF is a Ruby parser for W3C EBNF and a parser generator for compliant LL(1) grammars."@en ;
31
32
  dc:date "2011-08-29"^^xsd:date ;
32
- dc:creator <http://greggkellogg.net/foaf#me> .
33
+ dc:creator <https://greggkellogg.net/foaf#me> .
@@ -5,8 +5,8 @@
5
5
 
6
6
  [3] rule ::= LHS expression
7
7
 
8
- # Use a terminal to match the identifier, rule name and assignment due to
9
- # confusion between the identifier RANGE
8
+ # Use the LHS terminal to match the identifier, rule name and assignment due to
9
+ # confusion between the identifier and RANGE
10
10
 
11
11
  [4] expression ::= alt
12
12
 
@@ -32,40 +32,34 @@
32
32
 
33
33
  @terminals
34
34
 
35
- [11] LHS ::= ('[' SYMBOL+ ']')? SYMBOL "::="
35
+ [11] LHS ::= ('[' SYMBOL+ ']' ' '+)? SYMBOL ' '* '::='
36
36
 
37
- [12] SYMBOL ::= ([a-z] | [A-Z] | [0-9] | "_" | ".")+
37
+ [12] SYMBOL ::= ([a-z] | [A-Z] | [0-9] | '_' | '.')+
38
38
 
39
- [13] HEX ::= '#x' ([0-9]|[a-f]|[A-F])+
39
+ [13] HEX ::= '#x' ([a-f] | [A-F] | [0-9])+
40
40
 
41
- [14] ENUM ::= '[' ((R_BEGIN (HEX | R_CHAR)) | (HEX | R_CHAR)) '-' ((R_BEGIN (HEX | R_CHAR)) | (HEX | R_CHAR)) ']'
41
+ [14] ENUM ::= ('[' R_CHAR+ | HEX+ ']') - LHS
42
42
 
43
- [15] O_ENUM ::= '[^' ((R_BEGIN (HEX | R_CHAR)) | (HEX | R_CHAR)) '-' ((R_BEGIN (HEX | R_CHAR)) | (HEX | R_CHAR)) ']'
43
+ [15] O_ENUM ::= '[^' R_CHAR+ | HEX+ ']'
44
44
 
45
- # Range is any combination of R_CHAR '-' R_CHAR or R_CHAR+
46
- [16] RANGE ::= '[' ((R_BEGIN (HEX | R_CHAR)) | (HEX | R_CHAR))+ ']'
45
+ [16] RANGE ::= '[' (R_CHAR '-' R_CHAR) | (HEX - HEX) ']'
47
46
 
48
- # Range is any combination of R_CHAR '-' R_CHAR or R_CHAR+ preceded by ^
49
- [17] O_RANGE ::= '[^' ((R_BEGIN (HEX | R_CHAR)) | (HEX | R_CHAR))+ ']'
47
+ [17] O_RANGE ::= '[^' (R_CHAR '-' R_CHAR) | (HEX - HEX) ']'
50
48
 
51
49
  # Strings are unescaped Unicode, excepting control characters and hash (#)
52
50
  [18] STRING1 ::= '"' (CHAR - '"')* '"'
53
51
 
54
52
  [19] STRING2 ::= "'" (CHAR - "'")* "'"
55
53
 
56
- [20] CHAR ::= HEX
57
- | [#x20#x21#x22]
58
- | [#x24-#x00FFFFFF]
54
+ [20] CHAR ::= [#x9#xA#xD] | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
59
55
 
60
56
  [21] R_CHAR ::= CHAR - ']'
61
57
 
62
- [22] R_BEGIN ::= (HEX | R_CHAR) "-"
63
-
64
58
  # Should be able to do this inline, but not until terminal regular expressions are created automatically
65
- [23] POSTFIX ::= [?*+]
59
+ [22] POSTFIX ::= [?*+]
66
60
 
67
- [24] PASS ::= ( [#x00-#x20]
68
- | ( '#' | '//' ) [^#x0A#x0D]*
61
+ [23] PASS ::= ( [#x00-#x20]
62
+ | ( ('#' - '#x') | '//' ) [^#x0A#x0Dx]*
69
63
  | '/*' (( '*' [^/] )? | [^*] )* '*/'
70
64
  | '(*' (( '*' [^)] )? | [^*] )* '*)'
71
65
  )+
@@ -1,241 +1,207 @@
1
1
  <table class='grammar'>
2
- <tbody id='grammar-productions'>
3
- <tr id='grammar-production-ebnf'>
4
- <td>[1]</td>
5
- <td><code>ebnf</code></td>
6
- <td>::=</td>
7
- <td>
8
- (<a href="#grammar-production-declaration">declaration</a> <code>|</code> <a href="#grammar-production-rule">rule</a>)<code>*</code>
9
- </td>
10
- </tr>
11
- <tr id='grammar-production-declaration'>
12
- <td>[2]</td>
13
- <td><code>declaration</code></td>
14
- <td>::=</td>
15
- <td>
16
- "<code class="grammar-literal">@terminals</code>"
17
- <code>|</code> <a href="#grammar-production-pass">pass</a>
18
- </td>
19
- </tr>
20
- <tr id='grammar-production-rule'>
21
- <td>[3]</td>
22
- <td><code>rule</code></td>
23
- <td>::=</td>
24
- <td>
25
- <a href="#grammar-production-LHS">LHS</a>
26
- <a href="#grammar-production-expression">expression</a>
27
- </td>
28
- </tr>
29
- <tr id='grammar-production-expression'>
30
- <td>[4]</td>
31
- <td><code>expression</code></td>
32
- <td>::=</td>
33
- <td>
34
- <a href="#grammar-production-alt">alt</a>
35
- </td>
36
- </tr>
37
- <tr id='grammar-production-alt'>
38
- <td>[5]</td>
39
- <td><code>alt</code></td>
40
- <td>::=</td>
41
- <td>
42
- <a href="#grammar-production-seq">seq</a>
43
- ("<code class="grammar-literal">|</code>" <a href="#grammar-production-seq">seq</a>)<code>*</code>
44
- </td>
45
- </tr>
46
- <tr id='grammar-production-seq'>
47
- <td>[6]</td>
48
- <td><code>seq</code></td>
49
- <td>::=</td>
50
- <td>
51
- <a href="#grammar-production-diff">diff</a><code>+</code>
52
- </td>
53
- </tr>
54
- <tr id='grammar-production-diff'>
55
- <td>[7]</td>
56
- <td><code>diff</code></td>
57
- <td>::=</td>
58
- <td>
59
- <a href="#grammar-production-postfix">postfix</a>
60
- ("<code class="grammar-literal">-</code>" <a href="#grammar-production-postfix">postfix</a>)<code>?</code>
61
- </td>
62
- </tr>
63
- <tr id='grammar-production-postfix'>
64
- <td>[8]</td>
65
- <td><code>postfix</code></td>
66
- <td>::=</td>
67
- <td>
68
- <a href="#grammar-production-primary">primary</a>
69
- <a href="#grammar-production-POSTFIX">POSTFIX</a><code>?</code>
70
- </td>
71
- </tr>
72
- <tr id='grammar-production-primary'>
73
- <td>[9]</td>
74
- <td><code>primary</code></td>
75
- <td>::=</td>
76
- <td>
77
- <a href="#grammar-production-HEX">HEX</a>
78
- <code>|</code> <a href="#grammar-production-SYMBOL">SYMBOL</a>
79
- <code>|</code> <a href="#grammar-production-ENUM">ENUM</a>
80
- <code>|</code> <a href="#grammar-production-O_ENUM">O_ENUM</a>
81
- <code>|</code> <a href="#grammar-production-RANGE">RANGE</a>
82
- <code>|</code> <a href="#grammar-production-O_RANGE">O_RANGE</a>
83
- <code>|</code> <a href="#grammar-production-STRING1">STRING1</a>
84
- <code>|</code> <a href="#grammar-production-STRING2">STRING2</a>
85
- <code>|</code> "<code class="grammar-literal">(</code>" <a href="#grammar-production-expression">expression</a> "<code class="grammar-literal">)</code>"
86
- </td>
87
- </tr>
88
- <tr id='grammar-production-pass'>
89
- <td>[10]</td>
90
- <td><code>pass</code></td>
91
- <td>::=</td>
92
- <td>
93
- "<code class="grammar-literal">@pass</code>"
94
- <a href="#grammar-production-expression">expression</a>
95
- </td>
96
- </tr>
97
- <tr id='grammar-production-LHS'>
98
- <td>[11]</td>
99
- <td><code>LHS</code></td>
100
- <td>::=</td>
101
- <td>
102
- ("<code class="grammar-literal">[</code>" <a href="#grammar-production-SYMBOL">SYMBOL</a><code>+</code> "<code class="grammar-literal">]</code>")<code>?</code>
103
- <a href="#grammar-production-SYMBOL">SYMBOL</a>
104
- "<code class="grammar-literal">::=</code>"
105
- </td>
106
- </tr>
107
- <tr id='grammar-production-SYMBOL'>
108
- <td>[12]</td>
109
- <td><code>SYMBOL</code></td>
110
- <td>::=</td>
111
- <td>
112
- (<code>[</code> <code class="grammar-literal">a-z</code><code>]</code> <code>|</code> <code>[</code> <code class="grammar-literal">A-Z</code><code>]</code> <code>|</code> <code>[</code> <code class="grammar-literal">0-9</code><code>]</code> <code>|</code> "<code class="grammar-literal">_</code>" <code>|</code> "<code class="grammar-literal">.</code>")<code>+</code>
113
- </td>
114
- </tr>
115
- <tr id='grammar-production-HEX'>
116
- <td>[13]</td>
117
- <td><code>HEX</code></td>
118
- <td>::=</td>
119
- <td>
120
- "<code class="grammar-literal">#x</code>"
121
- (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> <code>|</code> <code>[</code> <code class="grammar-literal">a-f</code><code>]</code> <code>|</code> <code>[</code> <code class="grammar-literal">A-F</code><code>]</code> )<code>+</code>
122
- </td>
123
- </tr>
124
- <tr id='grammar-production-ENUM'>
125
- <td>[14]</td>
126
- <td><code>ENUM</code></td>
127
- <td>::=</td>
128
- <td>
129
- "<code class="grammar-literal">[</code>"
130
- <code>(</code> <a href="#grammar-production-R_BEGIN">R_BEGIN</a> <code>(</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code> <code>|</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code>
131
- "<code class="grammar-literal">-</code>"
132
- <code>(</code> <a href="#grammar-production-R_BEGIN">R_BEGIN</a> <code>(</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code> <code>|</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code>
133
- "<code class="grammar-literal">]</code>"
134
- </td>
135
- </tr>
136
- <tr id='grammar-production-O_ENUM'>
137
- <td>[15]</td>
138
- <td><code>O_ENUM</code></td>
139
- <td>::=</td>
140
- <td>
141
- "<code class="grammar-literal">[^</code>"
142
- <code>(</code> <a href="#grammar-production-R_BEGIN">R_BEGIN</a> <code>(</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code> <code>|</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code>
143
- "<code class="grammar-literal">-</code>"
144
- <code>(</code> <a href="#grammar-production-R_BEGIN">R_BEGIN</a> <code>(</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code> <code>|</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code>
145
- "<code class="grammar-literal">]</code>"
146
- </td>
147
- </tr>
148
- <tr id='grammar-production-RANGE'>
149
- <td>[16]</td>
150
- <td><code>RANGE</code></td>
151
- <td>::=</td>
152
- <td>
153
- "<code class="grammar-literal">[</code>"
154
- (<a href="#grammar-production-R_BEGIN">R_BEGIN</a> <code>(</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code> <code>|</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a>)<code>+</code>
155
- "<code class="grammar-literal">]</code>"
156
- </td>
157
- </tr>
158
- <tr id='grammar-production-O_RANGE'>
159
- <td>[17]</td>
160
- <td><code>O_RANGE</code></td>
161
- <td>::=</td>
162
- <td>
163
- "<code class="grammar-literal">[^</code>"
164
- (<a href="#grammar-production-R_BEGIN">R_BEGIN</a> <code>(</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code> <code>|</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a>)<code>+</code>
165
- "<code class="grammar-literal">]</code>"
166
- </td>
167
- </tr>
168
- <tr id='grammar-production-STRING1'>
169
- <td>[18]</td>
170
- <td><code>STRING1</code></td>
171
- <td>::=</td>
172
- <td>
173
- '<code class="grammar-literal">"</code>'
174
- (<a href="#grammar-production-CHAR">CHAR</a> <code>-</code> '<code class="grammar-literal">"</code>')<code>*</code>
175
- '<code class="grammar-literal">"</code>'
176
- </td>
177
- </tr>
178
- <tr id='grammar-production-STRING2'>
179
- <td>[19]</td>
180
- <td><code>STRING2</code></td>
181
- <td>::=</td>
182
- <td>
183
- "<code class="grammar-literal">'</code>"
184
- (<a href="#grammar-production-CHAR">CHAR</a> <code>-</code> "<code class="grammar-literal">'</code>")<code>*</code>
185
- "<code class="grammar-literal">'</code>"
186
- </td>
187
- </tr>
188
- <tr id='grammar-production-CHAR'>
189
- <td>[20]</td>
190
- <td><code>CHAR</code></td>
191
- <td>::=</td>
192
- <td>
193
- <a href="#grammar-production-HEX">HEX</a>
194
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x20</code><code class="grammar-char-escape">#x21</code><code class="grammar-char-escape">#x22</code><code>]</code>
195
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x24</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x00FFFFFF</code><code>]</code>
196
- </td>
197
- </tr>
198
- <tr id='grammar-production-R_CHAR'>
199
- <td>[21]</td>
200
- <td><code>R_CHAR</code></td>
201
- <td>::=</td>
202
- <td>
203
- <a href="#grammar-production-CHAR">CHAR</a>
204
- <code>-</code> "<code class="grammar-literal">]</code>"
205
- </td>
206
- </tr>
207
- <tr id='grammar-production-R_BEGIN'>
208
- <td>[22]</td>
209
- <td><code>R_BEGIN</code></td>
210
- <td>::=</td>
211
- <td>
212
- <code>(</code> <a href="#grammar-production-HEX">HEX</a> <code>|</code> <a href="#grammar-production-R_CHAR">R_CHAR</a><code>)</code>
213
- "<code class="grammar-literal">-</code>"
214
- </td>
215
- </tr>
216
- <tr id='grammar-production-POSTFIX'>
217
- <td>[23]</td>
218
- <td><code>POSTFIX</code></td>
219
- <td>::=</td>
220
- <td>
221
- <code>[</code> <code class="grammar-literal">?*+</code><code>]</code>
222
- </td>
223
- </tr>
224
- <tr id='grammar-production-PASS'>
225
- <td>[24]</td>
226
- <td><code>PASS</code></td>
227
- <td>::=</td>
228
- <td>
229
- (<code>[</code> <code class="grammar-char-escape">#x00</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x20</code><code>]</code> <code>|</code> <code>(</code> "<code class="grammar-literal">#</code>" <code>|</code> "<code class="grammar-literal">//</code>"<code>)</code> (<code>[</code> <code class="grammar-literal">^</code><code class="grammar-char-escape">#x0A</code><code class="grammar-char-escape">#x0D</code><code>]</code> )<code>*</code> <code>|</code> "<code class="grammar-literal">/*</code>" ("<code class="grammar-literal">*</code>" <code>[</code> <code class="grammar-literal">^/</code><code>]</code> )<code>?</code> <code>|</code> <code>[</code> <code class="grammar-literal">^*</code><code>]</code> <code>*</code> "<code class="grammar-literal">*/</code>" <code>|</code> "<code class="grammar-literal">(*</code>" ("<code class="grammar-literal">*</code>" <code>[</code> <code class="grammar-literal">^)</code><code>]</code> )<code>?</code> <code>|</code> <code>[</code> <code class="grammar-literal">^*</code><code>]</code> <code>*</code> "<code class="grammar-literal">*)</code>")<code>+</code>
230
- </td>
231
- </tr>
232
- <tr id='grammar-production-'>
233
- <td colspan='3'>
234
- <code>@pass</code>
235
- </td>
236
- <td>
237
- <a href="#grammar-production-PASS">PASS</a>
238
- </td>
239
- </tr>
240
- </tbody>
2
+ <tbody id='grammar-productions'>
3
+ <tr id='grammar-production-ebnf'>
4
+ <td>[1]</td>
5
+ <td><code>ebnf</code></td>
6
+ <td>::=</td>
7
+ <td>
8
+ (declaration | rule)*
9
+ </td>
10
+ </tr>
11
+ <tr id='grammar-production-declaration'>
12
+ <td>[2]</td>
13
+ <td><code>declaration</code></td>
14
+ <td>::=</td>
15
+ <td>
16
+ "@terminals" | pass
17
+ </td>
18
+ </tr>
19
+ <tr id='grammar-production-rule'>
20
+ <td>[3]</td>
21
+ <td><code>rule</code></td>
22
+ <td>::=</td>
23
+ <td>
24
+ LHS expression
25
+ </td>
26
+ </tr>
27
+ <tr id='grammar-production-expression'>
28
+ <td>[4]</td>
29
+ <td><code>expression</code></td>
30
+ <td>::=</td>
31
+ <td>
32
+ alt
33
+ </td>
34
+ </tr>
35
+ <tr id='grammar-production-alt'>
36
+ <td>[5]</td>
37
+ <td><code>alt</code></td>
38
+ <td>::=</td>
39
+ <td>
40
+ seq ("|" seq)*
41
+ </td>
42
+ </tr>
43
+ <tr id='grammar-production-seq'>
44
+ <td>[6]</td>
45
+ <td><code>seq</code></td>
46
+ <td>::=</td>
47
+ <td>
48
+ diff+
49
+ </td>
50
+ </tr>
51
+ <tr id='grammar-production-diff'>
52
+ <td>[7]</td>
53
+ <td><code>diff</code></td>
54
+ <td>::=</td>
55
+ <td>
56
+ postfix ("-" postfix)?
57
+ </td>
58
+ </tr>
59
+ <tr id='grammar-production-postfix'>
60
+ <td>[8]</td>
61
+ <td><code>postfix</code></td>
62
+ <td>::=</td>
63
+ <td>
64
+ primary POSTFIX?
65
+ </td>
66
+ </tr>
67
+ <tr id='grammar-production-primary'>
68
+ <td>[9]</td>
69
+ <td><code>primary</code></td>
70
+ <td>::=</td>
71
+ <td>
72
+ HEX
73
+ | SYMBOL
74
+ | ENUM
75
+ | O_ENUM
76
+ | RANGE
77
+ | O_RANGE
78
+ | STRING1
79
+ | STRING2
80
+ | "(" expression ")"
81
+ </td>
82
+ </tr>
83
+ <tr id='grammar-production-pass'>
84
+ <td>[10]</td>
85
+ <td><code>pass</code></td>
86
+ <td>::=</td>
87
+ <td>
88
+ "@pass" expression
89
+ </td>
90
+ </tr>
91
+ <tr id='grammar-production-LHS'>
92
+ <td>[11]</td>
93
+ <td><code>LHS</code></td>
94
+ <td>::=</td>
95
+ <td>
96
+ ("[" SYMBOL+ "]" #x20+)? SYMBOL #x20* "::="
97
+ </td>
98
+ </tr>
99
+ <tr id='grammar-production-SYMBOL'>
100
+ <td>[12]</td>
101
+ <td><code>SYMBOL</code></td>
102
+ <td>::=</td>
103
+ <td>
104
+ ([a-z] | [A-Z] | [0-9] | "_" | ".")+
105
+ </td>
106
+ </tr>
107
+ <tr id='grammar-production-HEX'>
108
+ <td>[13]</td>
109
+ <td><code>HEX</code></td>
110
+ <td>::=</td>
111
+ <td>
112
+ "#x" ([a-f] | [A-F] | [0-9])+
113
+ </td>
114
+ </tr>
115
+ <tr id='grammar-production-ENUM'>
116
+ <td>[14]</td>
117
+ <td><code>ENUM</code></td>
118
+ <td>::=</td>
119
+ <td>
120
+ "[" R_CHAR+ | HEX+ "]" - LHS
121
+ </td>
122
+ </tr>
123
+ <tr id='grammar-production-O_ENUM'>
124
+ <td>[15]</td>
125
+ <td><code>O_ENUM</code></td>
126
+ <td>::=</td>
127
+ <td>
128
+ "[^" R_CHAR+ | HEX+ "]"
129
+ </td>
130
+ </tr>
131
+ <tr id='grammar-production-RANGE'>
132
+ <td>[16]</td>
133
+ <td><code>RANGE</code></td>
134
+ <td>::=</td>
135
+ <td>
136
+ "[" (R_CHAR "-" R_CHAR) | (HEX - HEX) "]"
137
+ </td>
138
+ </tr>
139
+ <tr id='grammar-production-O_RANGE'>
140
+ <td>[17]</td>
141
+ <td><code>O_RANGE</code></td>
142
+ <td>::=</td>
143
+ <td>
144
+ "[^" (R_CHAR "-" R_CHAR) | (HEX - HEX) "]"
145
+ </td>
146
+ </tr>
147
+ <tr id='grammar-production-STRING1'>
148
+ <td>[18]</td>
149
+ <td><code>STRING1</code></td>
150
+ <td>::=</td>
151
+ <td>
152
+ '"' (CHAR - '"')* '"'
153
+ </td>
154
+ </tr>
155
+ <tr id='grammar-production-STRING2'>
156
+ <td>[19]</td>
157
+ <td><code>STRING2</code></td>
158
+ <td>::=</td>
159
+ <td>
160
+ "'" (CHAR - "'")* "'"
161
+ </td>
162
+ </tr>
163
+ <tr id='grammar-production-CHAR'>
164
+ <td>[20]</td>
165
+ <td><code>CHAR</code></td>
166
+ <td>::=</td>
167
+ <td>
168
+ [#x9#xA#xD]
169
+ | [#x20-#xD7FF]
170
+ | [#xE000-#xFFFD]
171
+ | [#x10000-#x10FFFF]
172
+ </td>
173
+ </tr>
174
+ <tr id='grammar-production-R_CHAR'>
175
+ <td>[21]</td>
176
+ <td><code>R_CHAR</code></td>
177
+ <td>::=</td>
178
+ <td>
179
+ CHAR - "]"
180
+ </td>
181
+ </tr>
182
+ <tr id='grammar-production-POSTFIX'>
183
+ <td>[22]</td>
184
+ <td><code>POSTFIX</code></td>
185
+ <td>::=</td>
186
+ <td>
187
+ [?*+]
188
+ </td>
189
+ </tr>
190
+ <tr id='grammar-production-PASS'>
191
+ <td>[23]</td>
192
+ <td><code>PASS</code></td>
193
+ <td>::=</td>
194
+ <td>
195
+ ([#x00-#x20] | ("#" - "#x" | "//") ([^#x0A#x0Dx])* | "/*" ("*" [^/])? | [^*]* "*/" | "(*" ("*" [^)])? | [^*]* "*)")+
196
+ </td>
197
+ </tr>
198
+ <tr id='grammar-production-'>
199
+ <td colspan='3'>
200
+ <code>@pass</code>
201
+ </td>
202
+ <td>
203
+ PASS
204
+ </td>
205
+ </tr>
206
+ </tbody>
241
207
  </table>