ebnf 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,9 +6,7 @@ module Branch
6
6
  BRANCH = {
7
7
  :alt => {
8
8
  "(" => [:seq, :_alt_1],
9
- :ENUM => [:seq, :_alt_1],
10
9
  :HEX => [:seq, :_alt_1],
11
- :O_ENUM => [:seq, :_alt_1],
12
10
  :O_RANGE => [:seq, :_alt_1],
13
11
  :RANGE => [:seq, :_alt_1],
14
12
  :STRING1 => [:seq, :_alt_1],
@@ -34,9 +32,7 @@ module Branch
34
32
  },
35
33
  :diff => {
36
34
  "(" => [:postfix, :_diff_1],
37
- :ENUM => [:postfix, :_diff_1],
38
35
  :HEX => [:postfix, :_diff_1],
39
- :O_ENUM => [:postfix, :_diff_1],
40
36
  :O_RANGE => [:postfix, :_diff_1],
41
37
  :RANGE => [:postfix, :_diff_1],
42
38
  :STRING1 => [:postfix, :_diff_1],
@@ -49,10 +45,8 @@ module Branch
49
45
  "-" => [:_diff_2],
50
46
  "@pass" => [],
51
47
  "@terminals" => [],
52
- :ENUM => [],
53
48
  :HEX => [],
54
49
  :LHS => [],
55
- :O_ENUM => [],
56
50
  :O_RANGE => [],
57
51
  :RANGE => [],
58
52
  :STRING1 => [],
@@ -80,9 +74,7 @@ module Branch
80
74
  },
81
75
  :expression => {
82
76
  "(" => [:alt],
83
- :ENUM => [:alt],
84
77
  :HEX => [:alt],
85
- :O_ENUM => [:alt],
86
78
  :O_RANGE => [:alt],
87
79
  :RANGE => [:alt],
88
80
  :STRING1 => [:alt],
@@ -94,9 +86,7 @@ module Branch
94
86
  },
95
87
  :postfix => {
96
88
  "(" => [:primary, :_postfix_1],
97
- :ENUM => [:primary, :_postfix_1],
98
89
  :HEX => [:primary, :_postfix_1],
99
- :O_ENUM => [:primary, :_postfix_1],
100
90
  :O_RANGE => [:primary, :_postfix_1],
101
91
  :RANGE => [:primary, :_postfix_1],
102
92
  :STRING1 => [:primary, :_postfix_1],
@@ -109,10 +99,8 @@ module Branch
109
99
  "-" => [],
110
100
  "@pass" => [],
111
101
  "@terminals" => [],
112
- :ENUM => [],
113
102
  :HEX => [],
114
103
  :LHS => [],
115
- :O_ENUM => [],
116
104
  :O_RANGE => [],
117
105
  :POSTFIX => [:POSTFIX],
118
106
  :RANGE => [],
@@ -123,9 +111,7 @@ module Branch
123
111
  },
124
112
  :primary => {
125
113
  "(" => [:_primary_1],
126
- :ENUM => [:ENUM],
127
114
  :HEX => [:HEX],
128
- :O_ENUM => [:O_ENUM],
129
115
  :O_RANGE => [:O_RANGE],
130
116
  :RANGE => [:RANGE],
131
117
  :STRING1 => [:STRING1],
@@ -140,9 +126,7 @@ module Branch
140
126
  },
141
127
  :seq => {
142
128
  "(" => [:diff, :_seq_1],
143
- :ENUM => [:diff, :_seq_1],
144
129
  :HEX => [:diff, :_seq_1],
145
- :O_ENUM => [:diff, :_seq_1],
146
130
  :O_RANGE => [:diff, :_seq_1],
147
131
  :RANGE => [:diff, :_seq_1],
148
132
  :STRING1 => [:diff, :_seq_1],
@@ -154,10 +138,8 @@ module Branch
154
138
  ")" => [],
155
139
  "@pass" => [],
156
140
  "@terminals" => [],
157
- :ENUM => [:_seq_2],
158
141
  :HEX => [:_seq_2],
159
142
  :LHS => [],
160
- :O_ENUM => [:_seq_2],
161
143
  :O_RANGE => [:_seq_2],
162
144
  :RANGE => [:_seq_2],
163
145
  :STRING1 => [:_seq_2],
@@ -167,9 +149,7 @@ module Branch
167
149
  },
168
150
  :_seq_2 => {
169
151
  "(" => [:diff, :_seq_1],
170
- :ENUM => [:diff, :_seq_1],
171
152
  :HEX => [:diff, :_seq_1],
172
- :O_ENUM => [:diff, :_seq_1],
173
153
  :O_RANGE => [:diff, :_seq_1],
174
154
  :RANGE => [:diff, :_seq_1],
175
155
  :STRING1 => [:diff, :_seq_1],
@@ -183,10 +163,8 @@ module Branch
183
163
  "-",
184
164
  "@pass",
185
165
  "@terminals",
186
- :ENUM,
187
166
  :HEX,
188
167
  :LHS,
189
- :O_ENUM,
190
168
  :O_RANGE,
191
169
  :POSTFIX,
192
170
  :RANGE,
@@ -200,9 +178,7 @@ module Branch
200
178
  :HEX,
201
179
  :SYMBOL,
202
180
  :RANGE,
203
- :ENUM,
204
181
  :O_RANGE,
205
- :O_ENUM,
206
182
  :STRING1,
207
183
  :STRING2,
208
184
  "("],
@@ -223,9 +199,7 @@ module Branch
223
199
  :HEX,
224
200
  :SYMBOL,
225
201
  :RANGE,
226
- :ENUM,
227
202
  :O_RANGE,
228
- :O_ENUM,
229
203
  :STRING1,
230
204
  :STRING2,
231
205
  "("],
@@ -236,9 +210,7 @@ module Branch
236
210
  :HEX,
237
211
  :SYMBOL,
238
212
  :RANGE,
239
- :ENUM,
240
213
  :O_RANGE,
241
- :O_ENUM,
242
214
  :STRING1,
243
215
  :STRING2,
244
216
  "("],
@@ -254,9 +226,7 @@ module Branch
254
226
  :HEX,
255
227
  :SYMBOL,
256
228
  :RANGE,
257
- :ENUM,
258
229
  :O_RANGE,
259
- :O_ENUM,
260
230
  :STRING1,
261
231
  :STRING2,
262
232
  "("],
@@ -284,9 +254,7 @@ module Branch
284
254
  :HEX,
285
255
  :SYMBOL,
286
256
  :RANGE,
287
- :ENUM,
288
257
  :O_RANGE,
289
- :O_ENUM,
290
258
  :STRING1,
291
259
  :STRING2,
292
260
  "("],
@@ -296,9 +264,7 @@ module Branch
296
264
  :HEX,
297
265
  :SYMBOL,
298
266
  :RANGE,
299
- :ENUM,
300
267
  :O_RANGE,
301
- :O_ENUM,
302
268
  :STRING1,
303
269
  :STRING2,
304
270
  "("],
@@ -306,9 +272,7 @@ module Branch
306
272
  :HEX,
307
273
  :SYMBOL,
308
274
  :RANGE,
309
- :ENUM,
310
275
  :O_RANGE,
311
- :O_ENUM,
312
276
  :STRING1,
313
277
  :STRING2,
314
278
  "("],
@@ -322,9 +286,7 @@ module Branch
322
286
  :HEX,
323
287
  :SYMBOL,
324
288
  :RANGE,
325
- :ENUM,
326
289
  :O_RANGE,
327
- :O_ENUM,
328
290
  :STRING1,
329
291
  :STRING2,
330
292
  "("],
@@ -334,9 +296,7 @@ module Branch
334
296
  :HEX,
335
297
  :SYMBOL,
336
298
  :RANGE,
337
- :ENUM,
338
299
  :O_RANGE,
339
- :O_ENUM,
340
300
  :STRING1,
341
301
  :STRING2,
342
302
  "("],
@@ -348,9 +308,7 @@ module Branch
348
308
  :HEX,
349
309
  :SYMBOL,
350
310
  :RANGE,
351
- :ENUM,
352
311
  :O_RANGE,
353
- :O_ENUM,
354
312
  :STRING1,
355
313
  :STRING2,
356
314
  "("],
@@ -358,9 +316,7 @@ module Branch
358
316
  :HEX,
359
317
  :SYMBOL,
360
318
  :RANGE,
361
- :ENUM,
362
319
  :O_RANGE,
363
- :O_ENUM,
364
320
  :STRING1,
365
321
  :STRING2,
366
322
  "("],
@@ -369,9 +325,7 @@ module Branch
369
325
  :HEX,
370
326
  :SYMBOL,
371
327
  :RANGE,
372
- :ENUM,
373
328
  :O_RANGE,
374
- :O_ENUM,
375
329
  :STRING1,
376
330
  :STRING2,
377
331
  "("],
@@ -379,9 +333,7 @@ module Branch
379
333
  :HEX,
380
334
  :SYMBOL,
381
335
  :RANGE,
382
- :ENUM,
383
336
  :O_RANGE,
384
- :O_ENUM,
385
337
  :STRING1,
386
338
  :STRING2,
387
339
  "("],
@@ -390,9 +342,7 @@ module Branch
390
342
  :HEX,
391
343
  :SYMBOL,
392
344
  :RANGE,
393
- :ENUM,
394
345
  :O_RANGE,
395
- :O_ENUM,
396
346
  :STRING1,
397
347
  :STRING2,
398
348
  "("],
@@ -401,9 +351,7 @@ module Branch
401
351
  :HEX,
402
352
  :SYMBOL,
403
353
  :RANGE,
404
- :ENUM,
405
354
  :O_RANGE,
406
- :O_ENUM,
407
355
  :STRING1,
408
356
  :STRING2,
409
357
  "("],
@@ -465,9 +413,7 @@ module Branch
465
413
  :HEX,
466
414
  :SYMBOL,
467
415
  :RANGE,
468
- :ENUM,
469
416
  :O_RANGE,
470
- :O_ENUM,
471
417
  :STRING1,
472
418
  :STRING2,
473
419
  "@terminals",
@@ -481,9 +427,7 @@ module Branch
481
427
  :HEX,
482
428
  :SYMBOL,
483
429
  :RANGE,
484
- :ENUM,
485
430
  :O_RANGE,
486
- :O_ENUM,
487
431
  :STRING1,
488
432
  :STRING2,
489
433
  "@terminals",
@@ -497,9 +441,7 @@ module Branch
497
441
  :HEX,
498
442
  :SYMBOL,
499
443
  :RANGE,
500
- :ENUM,
501
444
  :O_RANGE,
502
- :O_ENUM,
503
445
  :STRING1,
504
446
  :STRING2,
505
447
  "@terminals",
@@ -513,9 +455,7 @@ module Branch
513
455
  :HEX,
514
456
  :SYMBOL,
515
457
  :RANGE,
516
- :ENUM,
517
458
  :O_RANGE,
518
- :O_ENUM,
519
459
  :STRING1,
520
460
  :STRING2,
521
461
  "@terminals",
@@ -529,9 +469,7 @@ module Branch
529
469
  :HEX,
530
470
  :SYMBOL,
531
471
  :RANGE,
532
- :ENUM,
533
472
  :O_RANGE,
534
- :O_ENUM,
535
473
  :STRING1,
536
474
  :STRING2,
537
475
  "@terminals",
@@ -573,9 +511,7 @@ module Branch
573
511
  :HEX,
574
512
  :SYMBOL,
575
513
  :RANGE,
576
- :ENUM,
577
514
  :O_RANGE,
578
- :O_ENUM,
579
515
  :STRING1,
580
516
  :STRING2,
581
517
  "@terminals",
@@ -590,9 +526,7 @@ module Branch
590
526
  :HEX,
591
527
  :SYMBOL,
592
528
  :RANGE,
593
- :ENUM,
594
529
  :O_RANGE,
595
- :O_ENUM,
596
530
  :STRING1,
597
531
  :STRING2,
598
532
  "@terminals",
@@ -607,9 +541,7 @@ module Branch
607
541
  :HEX,
608
542
  :SYMBOL,
609
543
  :RANGE,
610
- :ENUM,
611
544
  :O_RANGE,
612
- :O_ENUM,
613
545
  :STRING1,
614
546
  :STRING2,
615
547
  "@terminals",
@@ -625,9 +557,7 @@ module Branch
625
557
  :HEX,
626
558
  :SYMBOL,
627
559
  :RANGE,
628
- :ENUM,
629
560
  :O_RANGE,
630
- :O_ENUM,
631
561
  :STRING1,
632
562
  :STRING2,
633
563
  "@terminals",
@@ -643,9 +573,7 @@ module Branch
643
573
  :HEX,
644
574
  :SYMBOL,
645
575
  :RANGE,
646
- :ENUM,
647
576
  :O_RANGE,
648
- :O_ENUM,
649
577
  :STRING1,
650
578
  :STRING2,
651
579
  "@terminals",
@@ -661,9 +589,7 @@ module Branch
661
589
  :HEX,
662
590
  :SYMBOL,
663
591
  :RANGE,
664
- :ENUM,
665
592
  :O_RANGE,
666
- :O_ENUM,
667
593
  :STRING1,
668
594
  :STRING2,
669
595
  "@terminals",
@@ -679,9 +605,7 @@ module Branch
679
605
  :HEX,
680
606
  :SYMBOL,
681
607
  :RANGE,
682
- :ENUM,
683
608
  :O_RANGE,
684
- :O_ENUM,
685
609
  :STRING1,
686
610
  :STRING2,
687
611
  "@terminals",
@@ -9,26 +9,25 @@
9
9
  (rule diff "7" (seq postfix (opt (seq "-" postfix))))
10
10
  (rule postfix "8" (seq primary (opt POSTFIX)))
11
11
  (rule primary "9"
12
- (alt HEX SYMBOL RANGE ENUM O_RANGE O_ENUM STRING1 STRING2 (seq "(" expression ")")))
12
+ (alt HEX SYMBOL RANGE O_RANGE STRING1 STRING2 (seq "(" expression ")")))
13
13
  (rule pass "10" (seq "@pass" expression))
14
- (terminal LHS "11" (seq (opt ENUM) SYMBOL "::="))
14
+ (terminal LHS "11" (seq (opt (seq "[" (plus SYMBOL) "]")) SYMBOL "::="))
15
15
  (terminal SYMBOL "12" (plus (alt (range "a-z") (range "A-Z") (range "0-9") "_" ".")))
16
- (terminal HEX "13"
17
- (seq "#x"
18
- (alt (range "0-9") (range "a-f") (range "A-F"))
19
- (alt (range "0-9") (range "a-f") (range "A-F"))) )
20
- (terminal RANGE "14" (seq "[" R_CHAR "-" R_CHAR "]"))
21
- (terminal ENUM "15" (seq "[" (plus R_CHAR) "]"))
22
- (terminal O_RANGE "16" (seq "[^" R_CHAR "-" R_CHAR "]"))
23
- (terminal O_ENUM "17" (seq "[^" (plus R_CHAR) "]"))
24
- (terminal STRING1 "18" (seq "\"" (star (alt (diff CHAR "\"") "\t")) "\""))
25
- (terminal STRING2 "19" (seq "'" (star (alt (diff CHAR "'") "\t")) "'"))
26
- (terminal CHAR "20" (alt HEX (seq "\\" (range "\\trn\"'")) (range "^\t\r\n")))
27
- (terminal R_CHAR "21" (diff CHAR "]"))
28
- (terminal POSTFIX "22" (range "?*+"))
29
- (terminal PASS "23"
16
+ (terminal HEX "13" (seq "#x" (plus (alt (range "0-9") (range "a-f") (range "A-F")))))
17
+ (terminal RANGE "14"
18
+ (seq "[" (plus (alt (seq R_BEGIN (alt HEX R_CHAR)) (alt HEX R_CHAR))) "]"))
19
+ (terminal O_RANGE "15"
20
+ (seq "[^" (plus (alt (seq R_BEGIN (alt HEX R_CHAR)) (alt HEX R_CHAR))) "]"))
21
+ (terminal STRING1 "16" (seq "\"" (star (diff CHAR "\"")) "\""))
22
+ (terminal STRING2 "17" (seq "'" (diff CHAR "'")))
23
+ (terminal CHAR "18" (alt HEX (range "#x20#x21#x22") (range "#x24-#x00FFFFFF")))
24
+ (terminal R_CHAR "19" (diff CHAR "]"))
25
+ (terminal R_BEGIN "20" (seq (alt HEX R_CHAR) "-"))
26
+ (terminal POSTFIX "21" (range "?*+"))
27
+ (terminal PASS "22"
30
28
  (plus
31
29
  (alt
32
- (range "#x20\t\r\n")
33
- (seq (alt "#" "//") (star (range "^\r\n")))
34
- (seq "/*" (star (alt (opt (seq "*" (range "^/"))) (range "^*"))) "*/")) )) )
30
+ (range "#x00-#x20")
31
+ (seq (alt "#" "//") (star (range "^#x0A#x0D")))
32
+ (seq "/*" (star (alt (opt (seq "*" (range "^/"))) (range "^*"))) "*/")
33
+ (seq "(*" (star (alt (opt (seq "*" (range "^)"))) (range "^*"))) "*)")) )) )
@@ -183,6 +183,13 @@ module EBNF
183
183
  Writer.string(*ast)
184
184
  end
185
185
 
186
+ ##
187
+ # Output formatted EBNF as HTML
188
+ # @return [String]
189
+ def to_html
190
+ Writer.html(*ast)
191
+ end
192
+
186
193
  def dup
187
194
  new_obj = super
188
195
  new_obj.instance_variable_set(:@ast, @ast.dup)
@@ -57,7 +57,23 @@ module EBNF::LL1
57
57
  feed_me
58
58
  super
59
59
  end
60
-
60
+
61
+ ##
62
+ # Returns true if the scan pointer is at the end of the string
63
+ #
64
+ # @return [Boolean]
65
+ def eos?
66
+ feed_me
67
+ super
68
+ end
69
+
70
+ ##
71
+ # Set the scan pointer to the end of the string and clear matching data
72
+ def terminate
73
+ feed_me
74
+ super
75
+ end
76
+
61
77
  ##
62
78
  # Tries to match with `pattern` at the current position.
63
79
  #