nora_mark 0.2beta3
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
- data/.gitignore +19 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +188 -0
- data/Rakefile +12 -0
- data/lib/nora_mark/html/abstract_item_writer.rb +14 -0
- data/lib/nora_mark/html/context.rb +119 -0
- data/lib/nora_mark/html/generator.rb +177 -0
- data/lib/nora_mark/html/header_writer.rb +35 -0
- data/lib/nora_mark/html/pages.rb +56 -0
- data/lib/nora_mark/html/paragraph_writer.rb +52 -0
- data/lib/nora_mark/html/tag_writer.rb +110 -0
- data/lib/nora_mark/html/util.rb +12 -0
- data/lib/nora_mark/html/writer_selector.rb +24 -0
- data/lib/nora_mark/parser.kpeg +123 -0
- data/lib/nora_mark/parser.kpeg.rb +3422 -0
- data/lib/nora_mark/parser.rb +31 -0
- data/lib/nora_mark/version.rb +3 -0
- data/lib/nora_mark.rb +46 -0
- data/nora_mark.gemspec +22 -0
- data/spec/created_files/.gitignore +1 -0
- data/spec/fixture/test_src_ja.nora +50 -0
- data/spec/nokogiri_test_helper.rb +41 -0
- data/spec/nora_mark_spec.rb +840 -0
- data/spec/spec_helper.rb +29 -0
- metadata +116 -0
@@ -0,0 +1,3422 @@
|
|
1
|
+
require 'kpeg/compiled_parser'
|
2
|
+
|
3
|
+
class NoraMark::Parser < KPeg::CompiledParser
|
4
|
+
# :stopdoc:
|
5
|
+
|
6
|
+
# eof = !.
|
7
|
+
def _eof
|
8
|
+
_save = self.pos
|
9
|
+
_tmp = get_byte
|
10
|
+
_tmp = _tmp ? nil : true
|
11
|
+
self.pos = _save
|
12
|
+
set_failed_rule :_eof unless _tmp
|
13
|
+
return _tmp
|
14
|
+
end
|
15
|
+
|
16
|
+
# space = (" " | "\\t")
|
17
|
+
def _space
|
18
|
+
|
19
|
+
_save = self.pos
|
20
|
+
while true # choice
|
21
|
+
_tmp = match_string(" ")
|
22
|
+
break if _tmp
|
23
|
+
self.pos = _save
|
24
|
+
_tmp = match_string("\\t")
|
25
|
+
break if _tmp
|
26
|
+
self.pos = _save
|
27
|
+
break
|
28
|
+
end # end choice
|
29
|
+
|
30
|
+
set_failed_rule :_space unless _tmp
|
31
|
+
return _tmp
|
32
|
+
end
|
33
|
+
|
34
|
+
# eof_comment = lh space* "#" (!eof .)*
|
35
|
+
def _eof_comment
|
36
|
+
|
37
|
+
_save = self.pos
|
38
|
+
while true # sequence
|
39
|
+
_tmp = apply(:_lh)
|
40
|
+
unless _tmp
|
41
|
+
self.pos = _save
|
42
|
+
break
|
43
|
+
end
|
44
|
+
while true
|
45
|
+
_tmp = apply(:_space)
|
46
|
+
break unless _tmp
|
47
|
+
end
|
48
|
+
_tmp = true
|
49
|
+
unless _tmp
|
50
|
+
self.pos = _save
|
51
|
+
break
|
52
|
+
end
|
53
|
+
_tmp = match_string("#")
|
54
|
+
unless _tmp
|
55
|
+
self.pos = _save
|
56
|
+
break
|
57
|
+
end
|
58
|
+
while true
|
59
|
+
|
60
|
+
_save3 = self.pos
|
61
|
+
while true # sequence
|
62
|
+
_save4 = self.pos
|
63
|
+
_tmp = apply(:_eof)
|
64
|
+
_tmp = _tmp ? nil : true
|
65
|
+
self.pos = _save4
|
66
|
+
unless _tmp
|
67
|
+
self.pos = _save3
|
68
|
+
break
|
69
|
+
end
|
70
|
+
_tmp = get_byte
|
71
|
+
unless _tmp
|
72
|
+
self.pos = _save3
|
73
|
+
end
|
74
|
+
break
|
75
|
+
end # end sequence
|
76
|
+
|
77
|
+
break unless _tmp
|
78
|
+
end
|
79
|
+
_tmp = true
|
80
|
+
unless _tmp
|
81
|
+
self.pos = _save
|
82
|
+
end
|
83
|
+
break
|
84
|
+
end # end sequence
|
85
|
+
|
86
|
+
set_failed_rule :_eof_comment unless _tmp
|
87
|
+
return _tmp
|
88
|
+
end
|
89
|
+
|
90
|
+
# comment = lh space* "#" (!nl .)* nl empty_line*
|
91
|
+
def _comment
|
92
|
+
|
93
|
+
_save = self.pos
|
94
|
+
while true # sequence
|
95
|
+
_tmp = apply(:_lh)
|
96
|
+
unless _tmp
|
97
|
+
self.pos = _save
|
98
|
+
break
|
99
|
+
end
|
100
|
+
while true
|
101
|
+
_tmp = apply(:_space)
|
102
|
+
break unless _tmp
|
103
|
+
end
|
104
|
+
_tmp = true
|
105
|
+
unless _tmp
|
106
|
+
self.pos = _save
|
107
|
+
break
|
108
|
+
end
|
109
|
+
_tmp = match_string("#")
|
110
|
+
unless _tmp
|
111
|
+
self.pos = _save
|
112
|
+
break
|
113
|
+
end
|
114
|
+
while true
|
115
|
+
|
116
|
+
_save3 = self.pos
|
117
|
+
while true # sequence
|
118
|
+
_save4 = self.pos
|
119
|
+
_tmp = apply(:_nl)
|
120
|
+
_tmp = _tmp ? nil : true
|
121
|
+
self.pos = _save4
|
122
|
+
unless _tmp
|
123
|
+
self.pos = _save3
|
124
|
+
break
|
125
|
+
end
|
126
|
+
_tmp = get_byte
|
127
|
+
unless _tmp
|
128
|
+
self.pos = _save3
|
129
|
+
end
|
130
|
+
break
|
131
|
+
end # end sequence
|
132
|
+
|
133
|
+
break unless _tmp
|
134
|
+
end
|
135
|
+
_tmp = true
|
136
|
+
unless _tmp
|
137
|
+
self.pos = _save
|
138
|
+
break
|
139
|
+
end
|
140
|
+
_tmp = apply(:_nl)
|
141
|
+
unless _tmp
|
142
|
+
self.pos = _save
|
143
|
+
break
|
144
|
+
end
|
145
|
+
while true
|
146
|
+
_tmp = apply(:_empty_line)
|
147
|
+
break unless _tmp
|
148
|
+
end
|
149
|
+
_tmp = true
|
150
|
+
unless _tmp
|
151
|
+
self.pos = _save
|
152
|
+
end
|
153
|
+
break
|
154
|
+
end # end sequence
|
155
|
+
|
156
|
+
set_failed_rule :_comment unless _tmp
|
157
|
+
return _tmp
|
158
|
+
end
|
159
|
+
|
160
|
+
# - = (space | comment)*
|
161
|
+
def __hyphen_
|
162
|
+
while true
|
163
|
+
|
164
|
+
_save1 = self.pos
|
165
|
+
while true # choice
|
166
|
+
_tmp = apply(:_space)
|
167
|
+
break if _tmp
|
168
|
+
self.pos = _save1
|
169
|
+
_tmp = apply(:_comment)
|
170
|
+
break if _tmp
|
171
|
+
self.pos = _save1
|
172
|
+
break
|
173
|
+
end # end choice
|
174
|
+
|
175
|
+
break unless _tmp
|
176
|
+
end
|
177
|
+
_tmp = true
|
178
|
+
set_failed_rule :__hyphen_ unless _tmp
|
179
|
+
return _tmp
|
180
|
+
end
|
181
|
+
|
182
|
+
# empty_line = lh - nl
|
183
|
+
def _empty_line
|
184
|
+
|
185
|
+
_save = self.pos
|
186
|
+
while true # sequence
|
187
|
+
_tmp = apply(:_lh)
|
188
|
+
unless _tmp
|
189
|
+
self.pos = _save
|
190
|
+
break
|
191
|
+
end
|
192
|
+
_tmp = apply(:__hyphen_)
|
193
|
+
unless _tmp
|
194
|
+
self.pos = _save
|
195
|
+
break
|
196
|
+
end
|
197
|
+
_tmp = apply(:_nl)
|
198
|
+
unless _tmp
|
199
|
+
self.pos = _save
|
200
|
+
end
|
201
|
+
break
|
202
|
+
end # end sequence
|
203
|
+
|
204
|
+
set_failed_rule :_empty_line unless _tmp
|
205
|
+
return _tmp
|
206
|
+
end
|
207
|
+
|
208
|
+
# nl = /\r?\n/
|
209
|
+
def _nl
|
210
|
+
_tmp = scan(/\A(?-mix:\r?\n)/)
|
211
|
+
set_failed_rule :_nl unless _tmp
|
212
|
+
return _tmp
|
213
|
+
end
|
214
|
+
|
215
|
+
# lh = /^/
|
216
|
+
def _lh
|
217
|
+
_tmp = scan(/\A(?-mix:^)/)
|
218
|
+
set_failed_rule :_lh unless _tmp
|
219
|
+
return _tmp
|
220
|
+
end
|
221
|
+
|
222
|
+
# le = (nl | eof)
|
223
|
+
def _le
|
224
|
+
|
225
|
+
_save = self.pos
|
226
|
+
while true # choice
|
227
|
+
_tmp = apply(:_nl)
|
228
|
+
break if _tmp
|
229
|
+
self.pos = _save
|
230
|
+
_tmp = apply(:_eof)
|
231
|
+
break if _tmp
|
232
|
+
self.pos = _save
|
233
|
+
break
|
234
|
+
end # end choice
|
235
|
+
|
236
|
+
set_failed_rule :_le unless _tmp
|
237
|
+
return _tmp
|
238
|
+
end
|
239
|
+
|
240
|
+
# word = < /[\w0-9]/ ("-" | /[\w0-9]/)* > { text }
|
241
|
+
def _word
|
242
|
+
|
243
|
+
_save = self.pos
|
244
|
+
while true # sequence
|
245
|
+
_text_start = self.pos
|
246
|
+
|
247
|
+
_save1 = self.pos
|
248
|
+
while true # sequence
|
249
|
+
_tmp = scan(/\A(?-mix:[\w0-9])/)
|
250
|
+
unless _tmp
|
251
|
+
self.pos = _save1
|
252
|
+
break
|
253
|
+
end
|
254
|
+
while true
|
255
|
+
|
256
|
+
_save3 = self.pos
|
257
|
+
while true # choice
|
258
|
+
_tmp = match_string("-")
|
259
|
+
break if _tmp
|
260
|
+
self.pos = _save3
|
261
|
+
_tmp = scan(/\A(?-mix:[\w0-9])/)
|
262
|
+
break if _tmp
|
263
|
+
self.pos = _save3
|
264
|
+
break
|
265
|
+
end # end choice
|
266
|
+
|
267
|
+
break unless _tmp
|
268
|
+
end
|
269
|
+
_tmp = true
|
270
|
+
unless _tmp
|
271
|
+
self.pos = _save1
|
272
|
+
end
|
273
|
+
break
|
274
|
+
end # end sequence
|
275
|
+
|
276
|
+
if _tmp
|
277
|
+
text = get_text(_text_start)
|
278
|
+
end
|
279
|
+
unless _tmp
|
280
|
+
self.pos = _save
|
281
|
+
break
|
282
|
+
end
|
283
|
+
@result = begin; text ; end
|
284
|
+
_tmp = true
|
285
|
+
unless _tmp
|
286
|
+
self.pos = _save
|
287
|
+
end
|
288
|
+
break
|
289
|
+
end # end sequence
|
290
|
+
|
291
|
+
set_failed_rule :_word unless _tmp
|
292
|
+
return _tmp
|
293
|
+
end
|
294
|
+
|
295
|
+
# num = < [0-9]+ > { text.to_i }
|
296
|
+
def _num
|
297
|
+
|
298
|
+
_save = self.pos
|
299
|
+
while true # sequence
|
300
|
+
_text_start = self.pos
|
301
|
+
_save1 = self.pos
|
302
|
+
_save2 = self.pos
|
303
|
+
_tmp = get_byte
|
304
|
+
if _tmp
|
305
|
+
unless _tmp >= 48 and _tmp <= 57
|
306
|
+
self.pos = _save2
|
307
|
+
_tmp = nil
|
308
|
+
end
|
309
|
+
end
|
310
|
+
if _tmp
|
311
|
+
while true
|
312
|
+
_save3 = self.pos
|
313
|
+
_tmp = get_byte
|
314
|
+
if _tmp
|
315
|
+
unless _tmp >= 48 and _tmp <= 57
|
316
|
+
self.pos = _save3
|
317
|
+
_tmp = nil
|
318
|
+
end
|
319
|
+
end
|
320
|
+
break unless _tmp
|
321
|
+
end
|
322
|
+
_tmp = true
|
323
|
+
else
|
324
|
+
self.pos = _save1
|
325
|
+
end
|
326
|
+
if _tmp
|
327
|
+
text = get_text(_text_start)
|
328
|
+
end
|
329
|
+
unless _tmp
|
330
|
+
self.pos = _save
|
331
|
+
break
|
332
|
+
end
|
333
|
+
@result = begin; text.to_i ; end
|
334
|
+
_tmp = true
|
335
|
+
unless _tmp
|
336
|
+
self.pos = _save
|
337
|
+
end
|
338
|
+
break
|
339
|
+
end # end sequence
|
340
|
+
|
341
|
+
set_failed_rule :_num unless _tmp
|
342
|
+
return _tmp
|
343
|
+
end
|
344
|
+
|
345
|
+
# classname = "." word:classname { classname }
|
346
|
+
def _classname
|
347
|
+
|
348
|
+
_save = self.pos
|
349
|
+
while true # sequence
|
350
|
+
_tmp = match_string(".")
|
351
|
+
unless _tmp
|
352
|
+
self.pos = _save
|
353
|
+
break
|
354
|
+
end
|
355
|
+
_tmp = apply(:_word)
|
356
|
+
classname = @result
|
357
|
+
unless _tmp
|
358
|
+
self.pos = _save
|
359
|
+
break
|
360
|
+
end
|
361
|
+
@result = begin; classname ; end
|
362
|
+
_tmp = true
|
363
|
+
unless _tmp
|
364
|
+
self.pos = _save
|
365
|
+
end
|
366
|
+
break
|
367
|
+
end # end sequence
|
368
|
+
|
369
|
+
set_failed_rule :_classname unless _tmp
|
370
|
+
return _tmp
|
371
|
+
end
|
372
|
+
|
373
|
+
# classnames = classname*:classnames { classnames }
|
374
|
+
def _classnames
|
375
|
+
|
376
|
+
_save = self.pos
|
377
|
+
while true # sequence
|
378
|
+
_ary = []
|
379
|
+
while true
|
380
|
+
_tmp = apply(:_classname)
|
381
|
+
_ary << @result if _tmp
|
382
|
+
break unless _tmp
|
383
|
+
end
|
384
|
+
_tmp = true
|
385
|
+
@result = _ary
|
386
|
+
classnames = @result
|
387
|
+
unless _tmp
|
388
|
+
self.pos = _save
|
389
|
+
break
|
390
|
+
end
|
391
|
+
@result = begin; classnames ; end
|
392
|
+
_tmp = true
|
393
|
+
unless _tmp
|
394
|
+
self.pos = _save
|
395
|
+
end
|
396
|
+
break
|
397
|
+
end # end sequence
|
398
|
+
|
399
|
+
set_failed_rule :_classnames unless _tmp
|
400
|
+
return _tmp
|
401
|
+
end
|
402
|
+
|
403
|
+
# idname = "#" word:idname { idname }
|
404
|
+
def _idname
|
405
|
+
|
406
|
+
_save = self.pos
|
407
|
+
while true # sequence
|
408
|
+
_tmp = match_string("#")
|
409
|
+
unless _tmp
|
410
|
+
self.pos = _save
|
411
|
+
break
|
412
|
+
end
|
413
|
+
_tmp = apply(:_word)
|
414
|
+
idname = @result
|
415
|
+
unless _tmp
|
416
|
+
self.pos = _save
|
417
|
+
break
|
418
|
+
end
|
419
|
+
@result = begin; idname ; end
|
420
|
+
_tmp = true
|
421
|
+
unless _tmp
|
422
|
+
self.pos = _save
|
423
|
+
end
|
424
|
+
break
|
425
|
+
end # end sequence
|
426
|
+
|
427
|
+
set_failed_rule :_idname unless _tmp
|
428
|
+
return _tmp
|
429
|
+
end
|
430
|
+
|
431
|
+
# idnames = idname*:idnames { idnames }
|
432
|
+
def _idnames
|
433
|
+
|
434
|
+
_save = self.pos
|
435
|
+
while true # sequence
|
436
|
+
_ary = []
|
437
|
+
while true
|
438
|
+
_tmp = apply(:_idname)
|
439
|
+
_ary << @result if _tmp
|
440
|
+
break unless _tmp
|
441
|
+
end
|
442
|
+
_tmp = true
|
443
|
+
@result = _ary
|
444
|
+
idnames = @result
|
445
|
+
unless _tmp
|
446
|
+
self.pos = _save
|
447
|
+
break
|
448
|
+
end
|
449
|
+
@result = begin; idnames ; end
|
450
|
+
_tmp = true
|
451
|
+
unless _tmp
|
452
|
+
self.pos = _save
|
453
|
+
end
|
454
|
+
break
|
455
|
+
end # end sequence
|
456
|
+
|
457
|
+
set_failed_rule :_idnames unless _tmp
|
458
|
+
return _tmp
|
459
|
+
end
|
460
|
+
|
461
|
+
# commandname = word:name idnames?:idnames classnames?:classes { {:name => name, :ids => idnames, :classes => classes} }
|
462
|
+
def _commandname
|
463
|
+
|
464
|
+
_save = self.pos
|
465
|
+
while true # sequence
|
466
|
+
_tmp = apply(:_word)
|
467
|
+
name = @result
|
468
|
+
unless _tmp
|
469
|
+
self.pos = _save
|
470
|
+
break
|
471
|
+
end
|
472
|
+
_save1 = self.pos
|
473
|
+
_tmp = apply(:_idnames)
|
474
|
+
@result = nil unless _tmp
|
475
|
+
unless _tmp
|
476
|
+
_tmp = true
|
477
|
+
self.pos = _save1
|
478
|
+
end
|
479
|
+
idnames = @result
|
480
|
+
unless _tmp
|
481
|
+
self.pos = _save
|
482
|
+
break
|
483
|
+
end
|
484
|
+
_save2 = self.pos
|
485
|
+
_tmp = apply(:_classnames)
|
486
|
+
@result = nil unless _tmp
|
487
|
+
unless _tmp
|
488
|
+
_tmp = true
|
489
|
+
self.pos = _save2
|
490
|
+
end
|
491
|
+
classes = @result
|
492
|
+
unless _tmp
|
493
|
+
self.pos = _save
|
494
|
+
break
|
495
|
+
end
|
496
|
+
@result = begin; {:name => name, :ids => idnames, :classes => classes} ; end
|
497
|
+
_tmp = true
|
498
|
+
unless _tmp
|
499
|
+
self.pos = _save
|
500
|
+
end
|
501
|
+
break
|
502
|
+
end # end sequence
|
503
|
+
|
504
|
+
set_failed_rule :_commandname unless _tmp
|
505
|
+
return _tmp
|
506
|
+
end
|
507
|
+
|
508
|
+
# parameter = < (/[^,)]/* | "\"" /[^"]/* "\"" | "'" /[^']/* "'") > { text }
|
509
|
+
def _parameter
|
510
|
+
|
511
|
+
_save = self.pos
|
512
|
+
while true # sequence
|
513
|
+
_text_start = self.pos
|
514
|
+
|
515
|
+
_save1 = self.pos
|
516
|
+
while true # choice
|
517
|
+
while true
|
518
|
+
_tmp = scan(/\A(?-mix:[^,)])/)
|
519
|
+
break unless _tmp
|
520
|
+
end
|
521
|
+
_tmp = true
|
522
|
+
break if _tmp
|
523
|
+
self.pos = _save1
|
524
|
+
|
525
|
+
_save3 = self.pos
|
526
|
+
while true # sequence
|
527
|
+
_tmp = match_string("\"")
|
528
|
+
unless _tmp
|
529
|
+
self.pos = _save3
|
530
|
+
break
|
531
|
+
end
|
532
|
+
while true
|
533
|
+
_tmp = scan(/\A(?-mix:[^"])/)
|
534
|
+
break unless _tmp
|
535
|
+
end
|
536
|
+
_tmp = true
|
537
|
+
unless _tmp
|
538
|
+
self.pos = _save3
|
539
|
+
break
|
540
|
+
end
|
541
|
+
_tmp = match_string("\"")
|
542
|
+
unless _tmp
|
543
|
+
self.pos = _save3
|
544
|
+
end
|
545
|
+
break
|
546
|
+
end # end sequence
|
547
|
+
|
548
|
+
break if _tmp
|
549
|
+
self.pos = _save1
|
550
|
+
|
551
|
+
_save5 = self.pos
|
552
|
+
while true # sequence
|
553
|
+
_tmp = match_string("'")
|
554
|
+
unless _tmp
|
555
|
+
self.pos = _save5
|
556
|
+
break
|
557
|
+
end
|
558
|
+
while true
|
559
|
+
_tmp = scan(/\A(?-mix:[^'])/)
|
560
|
+
break unless _tmp
|
561
|
+
end
|
562
|
+
_tmp = true
|
563
|
+
unless _tmp
|
564
|
+
self.pos = _save5
|
565
|
+
break
|
566
|
+
end
|
567
|
+
_tmp = match_string("'")
|
568
|
+
unless _tmp
|
569
|
+
self.pos = _save5
|
570
|
+
end
|
571
|
+
break
|
572
|
+
end # end sequence
|
573
|
+
|
574
|
+
break if _tmp
|
575
|
+
self.pos = _save1
|
576
|
+
break
|
577
|
+
end # end choice
|
578
|
+
|
579
|
+
if _tmp
|
580
|
+
text = get_text(_text_start)
|
581
|
+
end
|
582
|
+
unless _tmp
|
583
|
+
self.pos = _save
|
584
|
+
break
|
585
|
+
end
|
586
|
+
@result = begin; text ; end
|
587
|
+
_tmp = true
|
588
|
+
unless _tmp
|
589
|
+
self.pos = _save
|
590
|
+
end
|
591
|
+
break
|
592
|
+
end # end sequence
|
593
|
+
|
594
|
+
set_failed_rule :_parameter unless _tmp
|
595
|
+
return _tmp
|
596
|
+
end
|
597
|
+
|
598
|
+
# parameters = < parameter ("," parameter)* > { text }
|
599
|
+
def _parameters
|
600
|
+
|
601
|
+
_save = self.pos
|
602
|
+
while true # sequence
|
603
|
+
_text_start = self.pos
|
604
|
+
|
605
|
+
_save1 = self.pos
|
606
|
+
while true # sequence
|
607
|
+
_tmp = apply(:_parameter)
|
608
|
+
unless _tmp
|
609
|
+
self.pos = _save1
|
610
|
+
break
|
611
|
+
end
|
612
|
+
while true
|
613
|
+
|
614
|
+
_save3 = self.pos
|
615
|
+
while true # sequence
|
616
|
+
_tmp = match_string(",")
|
617
|
+
unless _tmp
|
618
|
+
self.pos = _save3
|
619
|
+
break
|
620
|
+
end
|
621
|
+
_tmp = apply(:_parameter)
|
622
|
+
unless _tmp
|
623
|
+
self.pos = _save3
|
624
|
+
end
|
625
|
+
break
|
626
|
+
end # end sequence
|
627
|
+
|
628
|
+
break unless _tmp
|
629
|
+
end
|
630
|
+
_tmp = true
|
631
|
+
unless _tmp
|
632
|
+
self.pos = _save1
|
633
|
+
end
|
634
|
+
break
|
635
|
+
end # end sequence
|
636
|
+
|
637
|
+
if _tmp
|
638
|
+
text = get_text(_text_start)
|
639
|
+
end
|
640
|
+
unless _tmp
|
641
|
+
self.pos = _save
|
642
|
+
break
|
643
|
+
end
|
644
|
+
@result = begin; text ; end
|
645
|
+
_tmp = true
|
646
|
+
unless _tmp
|
647
|
+
self.pos = _save
|
648
|
+
end
|
649
|
+
break
|
650
|
+
end # end sequence
|
651
|
+
|
652
|
+
set_failed_rule :_parameters unless _tmp
|
653
|
+
return _tmp
|
654
|
+
end
|
655
|
+
|
656
|
+
# command = commandname:cn ("(" - parameters:arg - ")")? { arg ||= ''; cn.merge({ :args => arg.split(',') }) }
|
657
|
+
def _command
|
658
|
+
|
659
|
+
_save = self.pos
|
660
|
+
while true # sequence
|
661
|
+
_tmp = apply(:_commandname)
|
662
|
+
cn = @result
|
663
|
+
unless _tmp
|
664
|
+
self.pos = _save
|
665
|
+
break
|
666
|
+
end
|
667
|
+
_save1 = self.pos
|
668
|
+
|
669
|
+
_save2 = self.pos
|
670
|
+
while true # sequence
|
671
|
+
_tmp = match_string("(")
|
672
|
+
unless _tmp
|
673
|
+
self.pos = _save2
|
674
|
+
break
|
675
|
+
end
|
676
|
+
_tmp = apply(:__hyphen_)
|
677
|
+
unless _tmp
|
678
|
+
self.pos = _save2
|
679
|
+
break
|
680
|
+
end
|
681
|
+
_tmp = apply(:_parameters)
|
682
|
+
arg = @result
|
683
|
+
unless _tmp
|
684
|
+
self.pos = _save2
|
685
|
+
break
|
686
|
+
end
|
687
|
+
_tmp = apply(:__hyphen_)
|
688
|
+
unless _tmp
|
689
|
+
self.pos = _save2
|
690
|
+
break
|
691
|
+
end
|
692
|
+
_tmp = match_string(")")
|
693
|
+
unless _tmp
|
694
|
+
self.pos = _save2
|
695
|
+
end
|
696
|
+
break
|
697
|
+
end # end sequence
|
698
|
+
|
699
|
+
unless _tmp
|
700
|
+
_tmp = true
|
701
|
+
self.pos = _save1
|
702
|
+
end
|
703
|
+
unless _tmp
|
704
|
+
self.pos = _save
|
705
|
+
break
|
706
|
+
end
|
707
|
+
@result = begin; arg ||= ''; cn.merge({ :args => arg.split(',') }) ; end
|
708
|
+
_tmp = true
|
709
|
+
unless _tmp
|
710
|
+
self.pos = _save
|
711
|
+
end
|
712
|
+
break
|
713
|
+
end # end sequence
|
714
|
+
|
715
|
+
set_failed_rule :_command unless _tmp
|
716
|
+
return _tmp
|
717
|
+
end
|
718
|
+
|
719
|
+
# implicit_paragraph = < !paragraph_delimiter - documentline:p - > { create_item(:paragraph, nil, p, raw: text) }
|
720
|
+
def _implicit_paragraph
|
721
|
+
|
722
|
+
_save = self.pos
|
723
|
+
while true # sequence
|
724
|
+
_text_start = self.pos
|
725
|
+
|
726
|
+
_save1 = self.pos
|
727
|
+
while true # sequence
|
728
|
+
_save2 = self.pos
|
729
|
+
_tmp = apply(:_paragraph_delimiter)
|
730
|
+
_tmp = _tmp ? nil : true
|
731
|
+
self.pos = _save2
|
732
|
+
unless _tmp
|
733
|
+
self.pos = _save1
|
734
|
+
break
|
735
|
+
end
|
736
|
+
_tmp = apply(:__hyphen_)
|
737
|
+
unless _tmp
|
738
|
+
self.pos = _save1
|
739
|
+
break
|
740
|
+
end
|
741
|
+
_tmp = apply(:_documentline)
|
742
|
+
p = @result
|
743
|
+
unless _tmp
|
744
|
+
self.pos = _save1
|
745
|
+
break
|
746
|
+
end
|
747
|
+
_tmp = apply(:__hyphen_)
|
748
|
+
unless _tmp
|
749
|
+
self.pos = _save1
|
750
|
+
end
|
751
|
+
break
|
752
|
+
end # end sequence
|
753
|
+
|
754
|
+
if _tmp
|
755
|
+
text = get_text(_text_start)
|
756
|
+
end
|
757
|
+
unless _tmp
|
758
|
+
self.pos = _save
|
759
|
+
break
|
760
|
+
end
|
761
|
+
@result = begin; create_item(:paragraph, nil, p, raw: text) ; end
|
762
|
+
_tmp = true
|
763
|
+
unless _tmp
|
764
|
+
self.pos = _save
|
765
|
+
end
|
766
|
+
break
|
767
|
+
end # end sequence
|
768
|
+
|
769
|
+
set_failed_rule :_implicit_paragraph unless _tmp
|
770
|
+
return _tmp
|
771
|
+
end
|
772
|
+
|
773
|
+
# paragraph = (explicit_paragraph | implicit_paragraph)
|
774
|
+
def _paragraph
|
775
|
+
|
776
|
+
_save = self.pos
|
777
|
+
while true # choice
|
778
|
+
_tmp = apply(:_explicit_paragraph)
|
779
|
+
break if _tmp
|
780
|
+
self.pos = _save
|
781
|
+
_tmp = apply(:_implicit_paragraph)
|
782
|
+
break if _tmp
|
783
|
+
self.pos = _save
|
784
|
+
break
|
785
|
+
end # end choice
|
786
|
+
|
787
|
+
set_failed_rule :_paragraph unless _tmp
|
788
|
+
return _tmp
|
789
|
+
end
|
790
|
+
|
791
|
+
# paragraph_group = < paragraph+:p empty_line* > { create_item(:paragraph_group, nil, p, raw: text) }
|
792
|
+
def _paragraph_group
|
793
|
+
|
794
|
+
_save = self.pos
|
795
|
+
while true # sequence
|
796
|
+
_text_start = self.pos
|
797
|
+
|
798
|
+
_save1 = self.pos
|
799
|
+
while true # sequence
|
800
|
+
_save2 = self.pos
|
801
|
+
_ary = []
|
802
|
+
_tmp = apply(:_paragraph)
|
803
|
+
if _tmp
|
804
|
+
_ary << @result
|
805
|
+
while true
|
806
|
+
_tmp = apply(:_paragraph)
|
807
|
+
_ary << @result if _tmp
|
808
|
+
break unless _tmp
|
809
|
+
end
|
810
|
+
_tmp = true
|
811
|
+
@result = _ary
|
812
|
+
else
|
813
|
+
self.pos = _save2
|
814
|
+
end
|
815
|
+
p = @result
|
816
|
+
unless _tmp
|
817
|
+
self.pos = _save1
|
818
|
+
break
|
819
|
+
end
|
820
|
+
while true
|
821
|
+
_tmp = apply(:_empty_line)
|
822
|
+
break unless _tmp
|
823
|
+
end
|
824
|
+
_tmp = true
|
825
|
+
unless _tmp
|
826
|
+
self.pos = _save1
|
827
|
+
end
|
828
|
+
break
|
829
|
+
end # end sequence
|
830
|
+
|
831
|
+
if _tmp
|
832
|
+
text = get_text(_text_start)
|
833
|
+
end
|
834
|
+
unless _tmp
|
835
|
+
self.pos = _save
|
836
|
+
break
|
837
|
+
end
|
838
|
+
@result = begin; create_item(:paragraph_group, nil, p, raw: text) ; end
|
839
|
+
_tmp = true
|
840
|
+
unless _tmp
|
841
|
+
self.pos = _save
|
842
|
+
end
|
843
|
+
break
|
844
|
+
end # end sequence
|
845
|
+
|
846
|
+
set_failed_rule :_paragraph_group unless _tmp
|
847
|
+
return _tmp
|
848
|
+
end
|
849
|
+
|
850
|
+
# blockhead = lh - command:command - "{" - nl empty_line* { command }
|
851
|
+
def _blockhead
|
852
|
+
|
853
|
+
_save = self.pos
|
854
|
+
while true # sequence
|
855
|
+
_tmp = apply(:_lh)
|
856
|
+
unless _tmp
|
857
|
+
self.pos = _save
|
858
|
+
break
|
859
|
+
end
|
860
|
+
_tmp = apply(:__hyphen_)
|
861
|
+
unless _tmp
|
862
|
+
self.pos = _save
|
863
|
+
break
|
864
|
+
end
|
865
|
+
_tmp = apply(:_command)
|
866
|
+
command = @result
|
867
|
+
unless _tmp
|
868
|
+
self.pos = _save
|
869
|
+
break
|
870
|
+
end
|
871
|
+
_tmp = apply(:__hyphen_)
|
872
|
+
unless _tmp
|
873
|
+
self.pos = _save
|
874
|
+
break
|
875
|
+
end
|
876
|
+
_tmp = match_string("{")
|
877
|
+
unless _tmp
|
878
|
+
self.pos = _save
|
879
|
+
break
|
880
|
+
end
|
881
|
+
_tmp = apply(:__hyphen_)
|
882
|
+
unless _tmp
|
883
|
+
self.pos = _save
|
884
|
+
break
|
885
|
+
end
|
886
|
+
_tmp = apply(:_nl)
|
887
|
+
unless _tmp
|
888
|
+
self.pos = _save
|
889
|
+
break
|
890
|
+
end
|
891
|
+
while true
|
892
|
+
_tmp = apply(:_empty_line)
|
893
|
+
break unless _tmp
|
894
|
+
end
|
895
|
+
_tmp = true
|
896
|
+
unless _tmp
|
897
|
+
self.pos = _save
|
898
|
+
break
|
899
|
+
end
|
900
|
+
@result = begin; command ; end
|
901
|
+
_tmp = true
|
902
|
+
unless _tmp
|
903
|
+
self.pos = _save
|
904
|
+
end
|
905
|
+
break
|
906
|
+
end # end sequence
|
907
|
+
|
908
|
+
set_failed_rule :_blockhead unless _tmp
|
909
|
+
return _tmp
|
910
|
+
end
|
911
|
+
|
912
|
+
# blockend = lh - "}" - le empty_line*
|
913
|
+
def _blockend
|
914
|
+
|
915
|
+
_save = self.pos
|
916
|
+
while true # sequence
|
917
|
+
_tmp = apply(:_lh)
|
918
|
+
unless _tmp
|
919
|
+
self.pos = _save
|
920
|
+
break
|
921
|
+
end
|
922
|
+
_tmp = apply(:__hyphen_)
|
923
|
+
unless _tmp
|
924
|
+
self.pos = _save
|
925
|
+
break
|
926
|
+
end
|
927
|
+
_tmp = match_string("}")
|
928
|
+
unless _tmp
|
929
|
+
self.pos = _save
|
930
|
+
break
|
931
|
+
end
|
932
|
+
_tmp = apply(:__hyphen_)
|
933
|
+
unless _tmp
|
934
|
+
self.pos = _save
|
935
|
+
break
|
936
|
+
end
|
937
|
+
_tmp = apply(:_le)
|
938
|
+
unless _tmp
|
939
|
+
self.pos = _save
|
940
|
+
break
|
941
|
+
end
|
942
|
+
while true
|
943
|
+
_tmp = apply(:_empty_line)
|
944
|
+
break unless _tmp
|
945
|
+
end
|
946
|
+
_tmp = true
|
947
|
+
unless _tmp
|
948
|
+
self.pos = _save
|
949
|
+
end
|
950
|
+
break
|
951
|
+
end # end sequence
|
952
|
+
|
953
|
+
set_failed_rule :_blockend unless _tmp
|
954
|
+
return _tmp
|
955
|
+
end
|
956
|
+
|
957
|
+
# blockbody = (!blockend block)+:body { body }
|
958
|
+
def _blockbody
|
959
|
+
|
960
|
+
_save = self.pos
|
961
|
+
while true # sequence
|
962
|
+
_save1 = self.pos
|
963
|
+
_ary = []
|
964
|
+
|
965
|
+
_save2 = self.pos
|
966
|
+
while true # sequence
|
967
|
+
_save3 = self.pos
|
968
|
+
_tmp = apply(:_blockend)
|
969
|
+
_tmp = _tmp ? nil : true
|
970
|
+
self.pos = _save3
|
971
|
+
unless _tmp
|
972
|
+
self.pos = _save2
|
973
|
+
break
|
974
|
+
end
|
975
|
+
_tmp = apply(:_block)
|
976
|
+
unless _tmp
|
977
|
+
self.pos = _save2
|
978
|
+
end
|
979
|
+
break
|
980
|
+
end # end sequence
|
981
|
+
|
982
|
+
if _tmp
|
983
|
+
_ary << @result
|
984
|
+
while true
|
985
|
+
|
986
|
+
_save4 = self.pos
|
987
|
+
while true # sequence
|
988
|
+
_save5 = self.pos
|
989
|
+
_tmp = apply(:_blockend)
|
990
|
+
_tmp = _tmp ? nil : true
|
991
|
+
self.pos = _save5
|
992
|
+
unless _tmp
|
993
|
+
self.pos = _save4
|
994
|
+
break
|
995
|
+
end
|
996
|
+
_tmp = apply(:_block)
|
997
|
+
unless _tmp
|
998
|
+
self.pos = _save4
|
999
|
+
end
|
1000
|
+
break
|
1001
|
+
end # end sequence
|
1002
|
+
|
1003
|
+
_ary << @result if _tmp
|
1004
|
+
break unless _tmp
|
1005
|
+
end
|
1006
|
+
_tmp = true
|
1007
|
+
@result = _ary
|
1008
|
+
else
|
1009
|
+
self.pos = _save1
|
1010
|
+
end
|
1011
|
+
body = @result
|
1012
|
+
unless _tmp
|
1013
|
+
self.pos = _save
|
1014
|
+
break
|
1015
|
+
end
|
1016
|
+
@result = begin; body ; end
|
1017
|
+
_tmp = true
|
1018
|
+
unless _tmp
|
1019
|
+
self.pos = _save
|
1020
|
+
end
|
1021
|
+
break
|
1022
|
+
end # end sequence
|
1023
|
+
|
1024
|
+
set_failed_rule :_blockbody unless _tmp
|
1025
|
+
return _tmp
|
1026
|
+
end
|
1027
|
+
|
1028
|
+
# explicit_block = < blockhead:head - blockbody:body - blockend > { create_item(:block, head, body, raw: text) }
|
1029
|
+
def _explicit_block
|
1030
|
+
|
1031
|
+
_save = self.pos
|
1032
|
+
while true # sequence
|
1033
|
+
_text_start = self.pos
|
1034
|
+
|
1035
|
+
_save1 = self.pos
|
1036
|
+
while true # sequence
|
1037
|
+
_tmp = apply(:_blockhead)
|
1038
|
+
head = @result
|
1039
|
+
unless _tmp
|
1040
|
+
self.pos = _save1
|
1041
|
+
break
|
1042
|
+
end
|
1043
|
+
_tmp = apply(:__hyphen_)
|
1044
|
+
unless _tmp
|
1045
|
+
self.pos = _save1
|
1046
|
+
break
|
1047
|
+
end
|
1048
|
+
_tmp = apply(:_blockbody)
|
1049
|
+
body = @result
|
1050
|
+
unless _tmp
|
1051
|
+
self.pos = _save1
|
1052
|
+
break
|
1053
|
+
end
|
1054
|
+
_tmp = apply(:__hyphen_)
|
1055
|
+
unless _tmp
|
1056
|
+
self.pos = _save1
|
1057
|
+
break
|
1058
|
+
end
|
1059
|
+
_tmp = apply(:_blockend)
|
1060
|
+
unless _tmp
|
1061
|
+
self.pos = _save1
|
1062
|
+
end
|
1063
|
+
break
|
1064
|
+
end # end sequence
|
1065
|
+
|
1066
|
+
if _tmp
|
1067
|
+
text = get_text(_text_start)
|
1068
|
+
end
|
1069
|
+
unless _tmp
|
1070
|
+
self.pos = _save
|
1071
|
+
break
|
1072
|
+
end
|
1073
|
+
@result = begin; create_item(:block, head, body, raw: text) ; end
|
1074
|
+
_tmp = true
|
1075
|
+
unless _tmp
|
1076
|
+
self.pos = _save
|
1077
|
+
end
|
1078
|
+
break
|
1079
|
+
end # end sequence
|
1080
|
+
|
1081
|
+
set_failed_rule :_explicit_block unless _tmp
|
1082
|
+
return _tmp
|
1083
|
+
end
|
1084
|
+
|
1085
|
+
# preformatted_command = command:command &{ ['pre', 'precode'].include? command[:name] }
|
1086
|
+
def _preformatted_command
|
1087
|
+
|
1088
|
+
_save = self.pos
|
1089
|
+
while true # sequence
|
1090
|
+
_tmp = apply(:_command)
|
1091
|
+
command = @result
|
1092
|
+
unless _tmp
|
1093
|
+
self.pos = _save
|
1094
|
+
break
|
1095
|
+
end
|
1096
|
+
_save1 = self.pos
|
1097
|
+
_tmp = begin; ['pre', 'precode'].include? command[:name] ; end
|
1098
|
+
self.pos = _save1
|
1099
|
+
unless _tmp
|
1100
|
+
self.pos = _save
|
1101
|
+
end
|
1102
|
+
break
|
1103
|
+
end # end sequence
|
1104
|
+
|
1105
|
+
set_failed_rule :_preformatted_command unless _tmp
|
1106
|
+
return _tmp
|
1107
|
+
end
|
1108
|
+
|
1109
|
+
# preformatted_command_head = lh - preformatted_command:command - "<<" &/[\w0-9]/ { command }
|
1110
|
+
def _preformatted_command_head
|
1111
|
+
|
1112
|
+
_save = self.pos
|
1113
|
+
while true # sequence
|
1114
|
+
_tmp = apply(:_lh)
|
1115
|
+
unless _tmp
|
1116
|
+
self.pos = _save
|
1117
|
+
break
|
1118
|
+
end
|
1119
|
+
_tmp = apply(:__hyphen_)
|
1120
|
+
unless _tmp
|
1121
|
+
self.pos = _save
|
1122
|
+
break
|
1123
|
+
end
|
1124
|
+
_tmp = apply(:_preformatted_command)
|
1125
|
+
command = @result
|
1126
|
+
unless _tmp
|
1127
|
+
self.pos = _save
|
1128
|
+
break
|
1129
|
+
end
|
1130
|
+
_tmp = apply(:__hyphen_)
|
1131
|
+
unless _tmp
|
1132
|
+
self.pos = _save
|
1133
|
+
break
|
1134
|
+
end
|
1135
|
+
_tmp = match_string("<<")
|
1136
|
+
unless _tmp
|
1137
|
+
self.pos = _save
|
1138
|
+
break
|
1139
|
+
end
|
1140
|
+
_save1 = self.pos
|
1141
|
+
_tmp = scan(/\A(?-mix:[\w0-9])/)
|
1142
|
+
self.pos = _save1
|
1143
|
+
unless _tmp
|
1144
|
+
self.pos = _save
|
1145
|
+
break
|
1146
|
+
end
|
1147
|
+
@result = begin; command ; end
|
1148
|
+
_tmp = true
|
1149
|
+
unless _tmp
|
1150
|
+
self.pos = _save
|
1151
|
+
end
|
1152
|
+
break
|
1153
|
+
end # end sequence
|
1154
|
+
|
1155
|
+
set_failed_rule :_preformatted_command_head unless _tmp
|
1156
|
+
return _tmp
|
1157
|
+
end
|
1158
|
+
|
1159
|
+
# preformat_end = lh word:delimiter &{ delimiter == start }
|
1160
|
+
def _preformat_end(start)
|
1161
|
+
|
1162
|
+
_save = self.pos
|
1163
|
+
while true # sequence
|
1164
|
+
_tmp = apply(:_lh)
|
1165
|
+
unless _tmp
|
1166
|
+
self.pos = _save
|
1167
|
+
break
|
1168
|
+
end
|
1169
|
+
_tmp = apply(:_word)
|
1170
|
+
delimiter = @result
|
1171
|
+
unless _tmp
|
1172
|
+
self.pos = _save
|
1173
|
+
break
|
1174
|
+
end
|
1175
|
+
_save1 = self.pos
|
1176
|
+
_tmp = begin; delimiter == start ; end
|
1177
|
+
self.pos = _save1
|
1178
|
+
unless _tmp
|
1179
|
+
self.pos = _save
|
1180
|
+
end
|
1181
|
+
break
|
1182
|
+
end # end sequence
|
1183
|
+
|
1184
|
+
set_failed_rule :_preformat_end unless _tmp
|
1185
|
+
return _tmp
|
1186
|
+
end
|
1187
|
+
|
1188
|
+
# preformatted_block = < lh - preformatted_command_head:command !nl word:delimiter nl (!preformat_end(delimiter) lh charstring nl)+:content preformat_end(delimiter) > { create_item(:preformatted, command, content, raw: text) }
|
1189
|
+
def _preformatted_block
|
1190
|
+
|
1191
|
+
_save = self.pos
|
1192
|
+
while true # sequence
|
1193
|
+
_text_start = self.pos
|
1194
|
+
|
1195
|
+
_save1 = self.pos
|
1196
|
+
while true # sequence
|
1197
|
+
_tmp = apply(:_lh)
|
1198
|
+
unless _tmp
|
1199
|
+
self.pos = _save1
|
1200
|
+
break
|
1201
|
+
end
|
1202
|
+
_tmp = apply(:__hyphen_)
|
1203
|
+
unless _tmp
|
1204
|
+
self.pos = _save1
|
1205
|
+
break
|
1206
|
+
end
|
1207
|
+
_tmp = apply(:_preformatted_command_head)
|
1208
|
+
command = @result
|
1209
|
+
unless _tmp
|
1210
|
+
self.pos = _save1
|
1211
|
+
break
|
1212
|
+
end
|
1213
|
+
_save2 = self.pos
|
1214
|
+
_tmp = apply(:_nl)
|
1215
|
+
_tmp = _tmp ? nil : true
|
1216
|
+
self.pos = _save2
|
1217
|
+
unless _tmp
|
1218
|
+
self.pos = _save1
|
1219
|
+
break
|
1220
|
+
end
|
1221
|
+
_tmp = apply(:_word)
|
1222
|
+
delimiter = @result
|
1223
|
+
unless _tmp
|
1224
|
+
self.pos = _save1
|
1225
|
+
break
|
1226
|
+
end
|
1227
|
+
_tmp = apply(:_nl)
|
1228
|
+
unless _tmp
|
1229
|
+
self.pos = _save1
|
1230
|
+
break
|
1231
|
+
end
|
1232
|
+
_save3 = self.pos
|
1233
|
+
_ary = []
|
1234
|
+
|
1235
|
+
_save4 = self.pos
|
1236
|
+
while true # sequence
|
1237
|
+
_save5 = self.pos
|
1238
|
+
_tmp = apply_with_args(:_preformat_end, delimiter)
|
1239
|
+
_tmp = _tmp ? nil : true
|
1240
|
+
self.pos = _save5
|
1241
|
+
unless _tmp
|
1242
|
+
self.pos = _save4
|
1243
|
+
break
|
1244
|
+
end
|
1245
|
+
_tmp = apply(:_lh)
|
1246
|
+
unless _tmp
|
1247
|
+
self.pos = _save4
|
1248
|
+
break
|
1249
|
+
end
|
1250
|
+
_tmp = apply(:_charstring)
|
1251
|
+
unless _tmp
|
1252
|
+
self.pos = _save4
|
1253
|
+
break
|
1254
|
+
end
|
1255
|
+
_tmp = apply(:_nl)
|
1256
|
+
unless _tmp
|
1257
|
+
self.pos = _save4
|
1258
|
+
end
|
1259
|
+
break
|
1260
|
+
end # end sequence
|
1261
|
+
|
1262
|
+
if _tmp
|
1263
|
+
_ary << @result
|
1264
|
+
while true
|
1265
|
+
|
1266
|
+
_save6 = self.pos
|
1267
|
+
while true # sequence
|
1268
|
+
_save7 = self.pos
|
1269
|
+
_tmp = apply_with_args(:_preformat_end, delimiter)
|
1270
|
+
_tmp = _tmp ? nil : true
|
1271
|
+
self.pos = _save7
|
1272
|
+
unless _tmp
|
1273
|
+
self.pos = _save6
|
1274
|
+
break
|
1275
|
+
end
|
1276
|
+
_tmp = apply(:_lh)
|
1277
|
+
unless _tmp
|
1278
|
+
self.pos = _save6
|
1279
|
+
break
|
1280
|
+
end
|
1281
|
+
_tmp = apply(:_charstring)
|
1282
|
+
unless _tmp
|
1283
|
+
self.pos = _save6
|
1284
|
+
break
|
1285
|
+
end
|
1286
|
+
_tmp = apply(:_nl)
|
1287
|
+
unless _tmp
|
1288
|
+
self.pos = _save6
|
1289
|
+
end
|
1290
|
+
break
|
1291
|
+
end # end sequence
|
1292
|
+
|
1293
|
+
_ary << @result if _tmp
|
1294
|
+
break unless _tmp
|
1295
|
+
end
|
1296
|
+
_tmp = true
|
1297
|
+
@result = _ary
|
1298
|
+
else
|
1299
|
+
self.pos = _save3
|
1300
|
+
end
|
1301
|
+
content = @result
|
1302
|
+
unless _tmp
|
1303
|
+
self.pos = _save1
|
1304
|
+
break
|
1305
|
+
end
|
1306
|
+
_tmp = apply_with_args(:_preformat_end, delimiter)
|
1307
|
+
unless _tmp
|
1308
|
+
self.pos = _save1
|
1309
|
+
end
|
1310
|
+
break
|
1311
|
+
end # end sequence
|
1312
|
+
|
1313
|
+
if _tmp
|
1314
|
+
text = get_text(_text_start)
|
1315
|
+
end
|
1316
|
+
unless _tmp
|
1317
|
+
self.pos = _save
|
1318
|
+
break
|
1319
|
+
end
|
1320
|
+
@result = begin; create_item(:preformatted, command, content, raw: text) ; end
|
1321
|
+
_tmp = true
|
1322
|
+
unless _tmp
|
1323
|
+
self.pos = _save
|
1324
|
+
end
|
1325
|
+
break
|
1326
|
+
end # end sequence
|
1327
|
+
|
1328
|
+
set_failed_rule :_preformatted_block unless _tmp
|
1329
|
+
return _tmp
|
1330
|
+
end
|
1331
|
+
|
1332
|
+
# inline = (img_inline | common_inline)
|
1333
|
+
def _inline
|
1334
|
+
|
1335
|
+
_save = self.pos
|
1336
|
+
while true # choice
|
1337
|
+
_tmp = apply(:_img_inline)
|
1338
|
+
break if _tmp
|
1339
|
+
self.pos = _save
|
1340
|
+
_tmp = apply(:_common_inline)
|
1341
|
+
break if _tmp
|
1342
|
+
self.pos = _save
|
1343
|
+
break
|
1344
|
+
end # end choice
|
1345
|
+
|
1346
|
+
set_failed_rule :_inline unless _tmp
|
1347
|
+
return _tmp
|
1348
|
+
end
|
1349
|
+
|
1350
|
+
# common_inline = < "[" command:c "{" documentcontent_except('}'):content "}" "]" > { create_item(:inline, c, content, raw: text) }
|
1351
|
+
def _common_inline
|
1352
|
+
|
1353
|
+
_save = self.pos
|
1354
|
+
while true # sequence
|
1355
|
+
_text_start = self.pos
|
1356
|
+
|
1357
|
+
_save1 = self.pos
|
1358
|
+
while true # sequence
|
1359
|
+
_tmp = match_string("[")
|
1360
|
+
unless _tmp
|
1361
|
+
self.pos = _save1
|
1362
|
+
break
|
1363
|
+
end
|
1364
|
+
_tmp = apply(:_command)
|
1365
|
+
c = @result
|
1366
|
+
unless _tmp
|
1367
|
+
self.pos = _save1
|
1368
|
+
break
|
1369
|
+
end
|
1370
|
+
_tmp = match_string("{")
|
1371
|
+
unless _tmp
|
1372
|
+
self.pos = _save1
|
1373
|
+
break
|
1374
|
+
end
|
1375
|
+
_tmp = apply_with_args(:_documentcontent_except, '}')
|
1376
|
+
content = @result
|
1377
|
+
unless _tmp
|
1378
|
+
self.pos = _save1
|
1379
|
+
break
|
1380
|
+
end
|
1381
|
+
_tmp = match_string("}")
|
1382
|
+
unless _tmp
|
1383
|
+
self.pos = _save1
|
1384
|
+
break
|
1385
|
+
end
|
1386
|
+
_tmp = match_string("]")
|
1387
|
+
unless _tmp
|
1388
|
+
self.pos = _save1
|
1389
|
+
end
|
1390
|
+
break
|
1391
|
+
end # end sequence
|
1392
|
+
|
1393
|
+
if _tmp
|
1394
|
+
text = get_text(_text_start)
|
1395
|
+
end
|
1396
|
+
unless _tmp
|
1397
|
+
self.pos = _save
|
1398
|
+
break
|
1399
|
+
end
|
1400
|
+
@result = begin; create_item(:inline, c, content, raw: text) ; end
|
1401
|
+
_tmp = true
|
1402
|
+
unless _tmp
|
1403
|
+
self.pos = _save
|
1404
|
+
end
|
1405
|
+
break
|
1406
|
+
end # end sequence
|
1407
|
+
|
1408
|
+
set_failed_rule :_common_inline unless _tmp
|
1409
|
+
return _tmp
|
1410
|
+
end
|
1411
|
+
|
1412
|
+
# img_command = command:c &{ c[:name] == 'img' && c[:args].size == 2}
|
1413
|
+
def _img_command
|
1414
|
+
|
1415
|
+
_save = self.pos
|
1416
|
+
while true # sequence
|
1417
|
+
_tmp = apply(:_command)
|
1418
|
+
c = @result
|
1419
|
+
unless _tmp
|
1420
|
+
self.pos = _save
|
1421
|
+
break
|
1422
|
+
end
|
1423
|
+
_save1 = self.pos
|
1424
|
+
_tmp = begin; c[:name] == 'img' && c[:args].size == 2; end
|
1425
|
+
self.pos = _save1
|
1426
|
+
unless _tmp
|
1427
|
+
self.pos = _save
|
1428
|
+
end
|
1429
|
+
break
|
1430
|
+
end # end sequence
|
1431
|
+
|
1432
|
+
set_failed_rule :_img_command unless _tmp
|
1433
|
+
return _tmp
|
1434
|
+
end
|
1435
|
+
|
1436
|
+
# img_inline = < "[" img_command:c "]" > { create_item(:inline, c, nil, raw: text) }
|
1437
|
+
def _img_inline
|
1438
|
+
|
1439
|
+
_save = self.pos
|
1440
|
+
while true # sequence
|
1441
|
+
_text_start = self.pos
|
1442
|
+
|
1443
|
+
_save1 = self.pos
|
1444
|
+
while true # sequence
|
1445
|
+
_tmp = match_string("[")
|
1446
|
+
unless _tmp
|
1447
|
+
self.pos = _save1
|
1448
|
+
break
|
1449
|
+
end
|
1450
|
+
_tmp = apply(:_img_command)
|
1451
|
+
c = @result
|
1452
|
+
unless _tmp
|
1453
|
+
self.pos = _save1
|
1454
|
+
break
|
1455
|
+
end
|
1456
|
+
_tmp = match_string("]")
|
1457
|
+
unless _tmp
|
1458
|
+
self.pos = _save1
|
1459
|
+
end
|
1460
|
+
break
|
1461
|
+
end # end sequence
|
1462
|
+
|
1463
|
+
if _tmp
|
1464
|
+
text = get_text(_text_start)
|
1465
|
+
end
|
1466
|
+
unless _tmp
|
1467
|
+
self.pos = _save
|
1468
|
+
break
|
1469
|
+
end
|
1470
|
+
@result = begin; create_item(:inline, c, nil, raw: text) ; end
|
1471
|
+
_tmp = true
|
1472
|
+
unless _tmp
|
1473
|
+
self.pos = _save
|
1474
|
+
end
|
1475
|
+
break
|
1476
|
+
end # end sequence
|
1477
|
+
|
1478
|
+
set_failed_rule :_img_inline unless _tmp
|
1479
|
+
return _tmp
|
1480
|
+
end
|
1481
|
+
|
1482
|
+
# commandname_for_special_line_command = (newpage_command | explicit_paragraph_command)
|
1483
|
+
def _commandname_for_special_line_command
|
1484
|
+
|
1485
|
+
_save = self.pos
|
1486
|
+
while true # choice
|
1487
|
+
_tmp = apply(:_newpage_command)
|
1488
|
+
break if _tmp
|
1489
|
+
self.pos = _save
|
1490
|
+
_tmp = apply(:_explicit_paragraph_command)
|
1491
|
+
break if _tmp
|
1492
|
+
self.pos = _save
|
1493
|
+
break
|
1494
|
+
end # end choice
|
1495
|
+
|
1496
|
+
set_failed_rule :_commandname_for_special_line_command unless _tmp
|
1497
|
+
return _tmp
|
1498
|
+
end
|
1499
|
+
|
1500
|
+
# newpage_command = command:command &{ command[:name] == 'newpage' }
|
1501
|
+
def _newpage_command
|
1502
|
+
|
1503
|
+
_save = self.pos
|
1504
|
+
while true # sequence
|
1505
|
+
_tmp = apply(:_command)
|
1506
|
+
command = @result
|
1507
|
+
unless _tmp
|
1508
|
+
self.pos = _save
|
1509
|
+
break
|
1510
|
+
end
|
1511
|
+
_save1 = self.pos
|
1512
|
+
_tmp = begin; command[:name] == 'newpage' ; end
|
1513
|
+
self.pos = _save1
|
1514
|
+
unless _tmp
|
1515
|
+
self.pos = _save
|
1516
|
+
end
|
1517
|
+
break
|
1518
|
+
end # end sequence
|
1519
|
+
|
1520
|
+
set_failed_rule :_newpage_command unless _tmp
|
1521
|
+
return _tmp
|
1522
|
+
end
|
1523
|
+
|
1524
|
+
# newpage = < lh - newpage_command:c ":" documentcontent?:content - nl > { create_item(:newpage, c, content, raw:text) }
|
1525
|
+
def _newpage
|
1526
|
+
|
1527
|
+
_save = self.pos
|
1528
|
+
while true # sequence
|
1529
|
+
_text_start = self.pos
|
1530
|
+
|
1531
|
+
_save1 = self.pos
|
1532
|
+
while true # sequence
|
1533
|
+
_tmp = apply(:_lh)
|
1534
|
+
unless _tmp
|
1535
|
+
self.pos = _save1
|
1536
|
+
break
|
1537
|
+
end
|
1538
|
+
_tmp = apply(:__hyphen_)
|
1539
|
+
unless _tmp
|
1540
|
+
self.pos = _save1
|
1541
|
+
break
|
1542
|
+
end
|
1543
|
+
_tmp = apply(:_newpage_command)
|
1544
|
+
c = @result
|
1545
|
+
unless _tmp
|
1546
|
+
self.pos = _save1
|
1547
|
+
break
|
1548
|
+
end
|
1549
|
+
_tmp = match_string(":")
|
1550
|
+
unless _tmp
|
1551
|
+
self.pos = _save1
|
1552
|
+
break
|
1553
|
+
end
|
1554
|
+
_save2 = self.pos
|
1555
|
+
_tmp = apply(:_documentcontent)
|
1556
|
+
@result = nil unless _tmp
|
1557
|
+
unless _tmp
|
1558
|
+
_tmp = true
|
1559
|
+
self.pos = _save2
|
1560
|
+
end
|
1561
|
+
content = @result
|
1562
|
+
unless _tmp
|
1563
|
+
self.pos = _save1
|
1564
|
+
break
|
1565
|
+
end
|
1566
|
+
_tmp = apply(:__hyphen_)
|
1567
|
+
unless _tmp
|
1568
|
+
self.pos = _save1
|
1569
|
+
break
|
1570
|
+
end
|
1571
|
+
_tmp = apply(:_nl)
|
1572
|
+
unless _tmp
|
1573
|
+
self.pos = _save1
|
1574
|
+
end
|
1575
|
+
break
|
1576
|
+
end # end sequence
|
1577
|
+
|
1578
|
+
if _tmp
|
1579
|
+
text = get_text(_text_start)
|
1580
|
+
end
|
1581
|
+
unless _tmp
|
1582
|
+
self.pos = _save
|
1583
|
+
break
|
1584
|
+
end
|
1585
|
+
@result = begin; create_item(:newpage, c, content, raw:text) ; end
|
1586
|
+
_tmp = true
|
1587
|
+
unless _tmp
|
1588
|
+
self.pos = _save
|
1589
|
+
end
|
1590
|
+
break
|
1591
|
+
end # end sequence
|
1592
|
+
|
1593
|
+
set_failed_rule :_newpage unless _tmp
|
1594
|
+
return _tmp
|
1595
|
+
end
|
1596
|
+
|
1597
|
+
# explicit_paragraph_command = command:c &{ c[:name] == 'p' }
|
1598
|
+
def _explicit_paragraph_command
|
1599
|
+
|
1600
|
+
_save = self.pos
|
1601
|
+
while true # sequence
|
1602
|
+
_tmp = apply(:_command)
|
1603
|
+
c = @result
|
1604
|
+
unless _tmp
|
1605
|
+
self.pos = _save
|
1606
|
+
break
|
1607
|
+
end
|
1608
|
+
_save1 = self.pos
|
1609
|
+
_tmp = begin; c[:name] == 'p' ; end
|
1610
|
+
self.pos = _save1
|
1611
|
+
unless _tmp
|
1612
|
+
self.pos = _save
|
1613
|
+
end
|
1614
|
+
break
|
1615
|
+
end # end sequence
|
1616
|
+
|
1617
|
+
set_failed_rule :_explicit_paragraph_command unless _tmp
|
1618
|
+
return _tmp
|
1619
|
+
end
|
1620
|
+
|
1621
|
+
# explicit_paragraph = < lh - explicit_paragraph_command:c ":" documentcontent?:content le empty_line* > { create_item(:paragraph, c, content, raw:text) }
|
1622
|
+
def _explicit_paragraph
|
1623
|
+
|
1624
|
+
_save = self.pos
|
1625
|
+
while true # sequence
|
1626
|
+
_text_start = self.pos
|
1627
|
+
|
1628
|
+
_save1 = self.pos
|
1629
|
+
while true # sequence
|
1630
|
+
_tmp = apply(:_lh)
|
1631
|
+
unless _tmp
|
1632
|
+
self.pos = _save1
|
1633
|
+
break
|
1634
|
+
end
|
1635
|
+
_tmp = apply(:__hyphen_)
|
1636
|
+
unless _tmp
|
1637
|
+
self.pos = _save1
|
1638
|
+
break
|
1639
|
+
end
|
1640
|
+
_tmp = apply(:_explicit_paragraph_command)
|
1641
|
+
c = @result
|
1642
|
+
unless _tmp
|
1643
|
+
self.pos = _save1
|
1644
|
+
break
|
1645
|
+
end
|
1646
|
+
_tmp = match_string(":")
|
1647
|
+
unless _tmp
|
1648
|
+
self.pos = _save1
|
1649
|
+
break
|
1650
|
+
end
|
1651
|
+
_save2 = self.pos
|
1652
|
+
_tmp = apply(:_documentcontent)
|
1653
|
+
@result = nil unless _tmp
|
1654
|
+
unless _tmp
|
1655
|
+
_tmp = true
|
1656
|
+
self.pos = _save2
|
1657
|
+
end
|
1658
|
+
content = @result
|
1659
|
+
unless _tmp
|
1660
|
+
self.pos = _save1
|
1661
|
+
break
|
1662
|
+
end
|
1663
|
+
_tmp = apply(:_le)
|
1664
|
+
unless _tmp
|
1665
|
+
self.pos = _save1
|
1666
|
+
break
|
1667
|
+
end
|
1668
|
+
while true
|
1669
|
+
_tmp = apply(:_empty_line)
|
1670
|
+
break unless _tmp
|
1671
|
+
end
|
1672
|
+
_tmp = true
|
1673
|
+
unless _tmp
|
1674
|
+
self.pos = _save1
|
1675
|
+
end
|
1676
|
+
break
|
1677
|
+
end # end sequence
|
1678
|
+
|
1679
|
+
if _tmp
|
1680
|
+
text = get_text(_text_start)
|
1681
|
+
end
|
1682
|
+
unless _tmp
|
1683
|
+
self.pos = _save
|
1684
|
+
break
|
1685
|
+
end
|
1686
|
+
@result = begin; create_item(:paragraph, c, content, raw:text) ; end
|
1687
|
+
_tmp = true
|
1688
|
+
unless _tmp
|
1689
|
+
self.pos = _save
|
1690
|
+
end
|
1691
|
+
break
|
1692
|
+
end # end sequence
|
1693
|
+
|
1694
|
+
set_failed_rule :_explicit_paragraph unless _tmp
|
1695
|
+
return _tmp
|
1696
|
+
end
|
1697
|
+
|
1698
|
+
# unordered_list = < unordered_item+:items > { create_item(:ul, nil, items, raw: text) }
|
1699
|
+
def _unordered_list
|
1700
|
+
|
1701
|
+
_save = self.pos
|
1702
|
+
while true # sequence
|
1703
|
+
_text_start = self.pos
|
1704
|
+
_save1 = self.pos
|
1705
|
+
_ary = []
|
1706
|
+
_tmp = apply(:_unordered_item)
|
1707
|
+
if _tmp
|
1708
|
+
_ary << @result
|
1709
|
+
while true
|
1710
|
+
_tmp = apply(:_unordered_item)
|
1711
|
+
_ary << @result if _tmp
|
1712
|
+
break unless _tmp
|
1713
|
+
end
|
1714
|
+
_tmp = true
|
1715
|
+
@result = _ary
|
1716
|
+
else
|
1717
|
+
self.pos = _save1
|
1718
|
+
end
|
1719
|
+
items = @result
|
1720
|
+
if _tmp
|
1721
|
+
text = get_text(_text_start)
|
1722
|
+
end
|
1723
|
+
unless _tmp
|
1724
|
+
self.pos = _save
|
1725
|
+
break
|
1726
|
+
end
|
1727
|
+
@result = begin; create_item(:ul, nil, items, raw: text) ; end
|
1728
|
+
_tmp = true
|
1729
|
+
unless _tmp
|
1730
|
+
self.pos = _save
|
1731
|
+
end
|
1732
|
+
break
|
1733
|
+
end # end sequence
|
1734
|
+
|
1735
|
+
set_failed_rule :_unordered_list unless _tmp
|
1736
|
+
return _tmp
|
1737
|
+
end
|
1738
|
+
|
1739
|
+
# unordered_item = < lh "*:" documentcontent:content le > { create_item(:li, nil, content, raw: text) }
|
1740
|
+
def _unordered_item
|
1741
|
+
|
1742
|
+
_save = self.pos
|
1743
|
+
while true # sequence
|
1744
|
+
_text_start = self.pos
|
1745
|
+
|
1746
|
+
_save1 = self.pos
|
1747
|
+
while true # sequence
|
1748
|
+
_tmp = apply(:_lh)
|
1749
|
+
unless _tmp
|
1750
|
+
self.pos = _save1
|
1751
|
+
break
|
1752
|
+
end
|
1753
|
+
_tmp = match_string("*:")
|
1754
|
+
unless _tmp
|
1755
|
+
self.pos = _save1
|
1756
|
+
break
|
1757
|
+
end
|
1758
|
+
_tmp = apply(:_documentcontent)
|
1759
|
+
content = @result
|
1760
|
+
unless _tmp
|
1761
|
+
self.pos = _save1
|
1762
|
+
break
|
1763
|
+
end
|
1764
|
+
_tmp = apply(:_le)
|
1765
|
+
unless _tmp
|
1766
|
+
self.pos = _save1
|
1767
|
+
end
|
1768
|
+
break
|
1769
|
+
end # end sequence
|
1770
|
+
|
1771
|
+
if _tmp
|
1772
|
+
text = get_text(_text_start)
|
1773
|
+
end
|
1774
|
+
unless _tmp
|
1775
|
+
self.pos = _save
|
1776
|
+
break
|
1777
|
+
end
|
1778
|
+
@result = begin; create_item(:li, nil, content, raw: text) ; end
|
1779
|
+
_tmp = true
|
1780
|
+
unless _tmp
|
1781
|
+
self.pos = _save
|
1782
|
+
end
|
1783
|
+
break
|
1784
|
+
end # end sequence
|
1785
|
+
|
1786
|
+
set_failed_rule :_unordered_item unless _tmp
|
1787
|
+
return _tmp
|
1788
|
+
end
|
1789
|
+
|
1790
|
+
# ordered_list = < ordered_item+:items > { create_item(:ol, nil, items, raw: text) }
|
1791
|
+
def _ordered_list
|
1792
|
+
|
1793
|
+
_save = self.pos
|
1794
|
+
while true # sequence
|
1795
|
+
_text_start = self.pos
|
1796
|
+
_save1 = self.pos
|
1797
|
+
_ary = []
|
1798
|
+
_tmp = apply(:_ordered_item)
|
1799
|
+
if _tmp
|
1800
|
+
_ary << @result
|
1801
|
+
while true
|
1802
|
+
_tmp = apply(:_ordered_item)
|
1803
|
+
_ary << @result if _tmp
|
1804
|
+
break unless _tmp
|
1805
|
+
end
|
1806
|
+
_tmp = true
|
1807
|
+
@result = _ary
|
1808
|
+
else
|
1809
|
+
self.pos = _save1
|
1810
|
+
end
|
1811
|
+
items = @result
|
1812
|
+
if _tmp
|
1813
|
+
text = get_text(_text_start)
|
1814
|
+
end
|
1815
|
+
unless _tmp
|
1816
|
+
self.pos = _save
|
1817
|
+
break
|
1818
|
+
end
|
1819
|
+
@result = begin; create_item(:ol, nil, items, raw: text) ; end
|
1820
|
+
_tmp = true
|
1821
|
+
unless _tmp
|
1822
|
+
self.pos = _save
|
1823
|
+
end
|
1824
|
+
break
|
1825
|
+
end # end sequence
|
1826
|
+
|
1827
|
+
set_failed_rule :_ordered_list unless _tmp
|
1828
|
+
return _tmp
|
1829
|
+
end
|
1830
|
+
|
1831
|
+
# ordered_item = < lh num ":" documentcontent:content le > { create_item(:li, nil, content, raw: text) }
|
1832
|
+
def _ordered_item
|
1833
|
+
|
1834
|
+
_save = self.pos
|
1835
|
+
while true # sequence
|
1836
|
+
_text_start = self.pos
|
1837
|
+
|
1838
|
+
_save1 = self.pos
|
1839
|
+
while true # sequence
|
1840
|
+
_tmp = apply(:_lh)
|
1841
|
+
unless _tmp
|
1842
|
+
self.pos = _save1
|
1843
|
+
break
|
1844
|
+
end
|
1845
|
+
_tmp = apply(:_num)
|
1846
|
+
unless _tmp
|
1847
|
+
self.pos = _save1
|
1848
|
+
break
|
1849
|
+
end
|
1850
|
+
_tmp = match_string(":")
|
1851
|
+
unless _tmp
|
1852
|
+
self.pos = _save1
|
1853
|
+
break
|
1854
|
+
end
|
1855
|
+
_tmp = apply(:_documentcontent)
|
1856
|
+
content = @result
|
1857
|
+
unless _tmp
|
1858
|
+
self.pos = _save1
|
1859
|
+
break
|
1860
|
+
end
|
1861
|
+
_tmp = apply(:_le)
|
1862
|
+
unless _tmp
|
1863
|
+
self.pos = _save1
|
1864
|
+
end
|
1865
|
+
break
|
1866
|
+
end # end sequence
|
1867
|
+
|
1868
|
+
if _tmp
|
1869
|
+
text = get_text(_text_start)
|
1870
|
+
end
|
1871
|
+
unless _tmp
|
1872
|
+
self.pos = _save
|
1873
|
+
break
|
1874
|
+
end
|
1875
|
+
@result = begin; create_item(:li, nil, content, raw: text) ; end
|
1876
|
+
_tmp = true
|
1877
|
+
unless _tmp
|
1878
|
+
self.pos = _save
|
1879
|
+
end
|
1880
|
+
break
|
1881
|
+
end # end sequence
|
1882
|
+
|
1883
|
+
set_failed_rule :_ordered_item unless _tmp
|
1884
|
+
return _tmp
|
1885
|
+
end
|
1886
|
+
|
1887
|
+
# definition_list = < definition_item+:items > { create_item(:dl, nil, items, raw: text) }
|
1888
|
+
def _definition_list
|
1889
|
+
|
1890
|
+
_save = self.pos
|
1891
|
+
while true # sequence
|
1892
|
+
_text_start = self.pos
|
1893
|
+
_save1 = self.pos
|
1894
|
+
_ary = []
|
1895
|
+
_tmp = apply(:_definition_item)
|
1896
|
+
if _tmp
|
1897
|
+
_ary << @result
|
1898
|
+
while true
|
1899
|
+
_tmp = apply(:_definition_item)
|
1900
|
+
_ary << @result if _tmp
|
1901
|
+
break unless _tmp
|
1902
|
+
end
|
1903
|
+
_tmp = true
|
1904
|
+
@result = _ary
|
1905
|
+
else
|
1906
|
+
self.pos = _save1
|
1907
|
+
end
|
1908
|
+
items = @result
|
1909
|
+
if _tmp
|
1910
|
+
text = get_text(_text_start)
|
1911
|
+
end
|
1912
|
+
unless _tmp
|
1913
|
+
self.pos = _save
|
1914
|
+
break
|
1915
|
+
end
|
1916
|
+
@result = begin; create_item(:dl, nil, items, raw: text) ; end
|
1917
|
+
_tmp = true
|
1918
|
+
unless _tmp
|
1919
|
+
self.pos = _save
|
1920
|
+
end
|
1921
|
+
break
|
1922
|
+
end # end sequence
|
1923
|
+
|
1924
|
+
set_failed_rule :_definition_list unless _tmp
|
1925
|
+
return _tmp
|
1926
|
+
end
|
1927
|
+
|
1928
|
+
# definition_item = < lh ";:" - documentcontent_except(':'):term ":" - documentcontent:definition le > { create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) }
|
1929
|
+
def _definition_item
|
1930
|
+
|
1931
|
+
_save = self.pos
|
1932
|
+
while true # sequence
|
1933
|
+
_text_start = self.pos
|
1934
|
+
|
1935
|
+
_save1 = self.pos
|
1936
|
+
while true # sequence
|
1937
|
+
_tmp = apply(:_lh)
|
1938
|
+
unless _tmp
|
1939
|
+
self.pos = _save1
|
1940
|
+
break
|
1941
|
+
end
|
1942
|
+
_tmp = match_string(";:")
|
1943
|
+
unless _tmp
|
1944
|
+
self.pos = _save1
|
1945
|
+
break
|
1946
|
+
end
|
1947
|
+
_tmp = apply(:__hyphen_)
|
1948
|
+
unless _tmp
|
1949
|
+
self.pos = _save1
|
1950
|
+
break
|
1951
|
+
end
|
1952
|
+
_tmp = apply_with_args(:_documentcontent_except, ':')
|
1953
|
+
term = @result
|
1954
|
+
unless _tmp
|
1955
|
+
self.pos = _save1
|
1956
|
+
break
|
1957
|
+
end
|
1958
|
+
_tmp = match_string(":")
|
1959
|
+
unless _tmp
|
1960
|
+
self.pos = _save1
|
1961
|
+
break
|
1962
|
+
end
|
1963
|
+
_tmp = apply(:__hyphen_)
|
1964
|
+
unless _tmp
|
1965
|
+
self.pos = _save1
|
1966
|
+
break
|
1967
|
+
end
|
1968
|
+
_tmp = apply(:_documentcontent)
|
1969
|
+
definition = @result
|
1970
|
+
unless _tmp
|
1971
|
+
self.pos = _save1
|
1972
|
+
break
|
1973
|
+
end
|
1974
|
+
_tmp = apply(:_le)
|
1975
|
+
unless _tmp
|
1976
|
+
self.pos = _save1
|
1977
|
+
end
|
1978
|
+
break
|
1979
|
+
end # end sequence
|
1980
|
+
|
1981
|
+
if _tmp
|
1982
|
+
text = get_text(_text_start)
|
1983
|
+
end
|
1984
|
+
unless _tmp
|
1985
|
+
self.pos = _save
|
1986
|
+
break
|
1987
|
+
end
|
1988
|
+
@result = begin; create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) ; end
|
1989
|
+
_tmp = true
|
1990
|
+
unless _tmp
|
1991
|
+
self.pos = _save
|
1992
|
+
end
|
1993
|
+
break
|
1994
|
+
end # end sequence
|
1995
|
+
|
1996
|
+
set_failed_rule :_definition_item unless _tmp
|
1997
|
+
return _tmp
|
1998
|
+
end
|
1999
|
+
|
2000
|
+
# items_list = (unordered_list | ordered_list | definition_list)
|
2001
|
+
def _items_list
|
2002
|
+
|
2003
|
+
_save = self.pos
|
2004
|
+
while true # choice
|
2005
|
+
_tmp = apply(:_unordered_list)
|
2006
|
+
break if _tmp
|
2007
|
+
self.pos = _save
|
2008
|
+
_tmp = apply(:_ordered_list)
|
2009
|
+
break if _tmp
|
2010
|
+
self.pos = _save
|
2011
|
+
_tmp = apply(:_definition_list)
|
2012
|
+
break if _tmp
|
2013
|
+
self.pos = _save
|
2014
|
+
break
|
2015
|
+
end # end choice
|
2016
|
+
|
2017
|
+
set_failed_rule :_items_list unless _tmp
|
2018
|
+
return _tmp
|
2019
|
+
end
|
2020
|
+
|
2021
|
+
# line_command = < lh - !commandname_for_special_line_command command:c ":" documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }
|
2022
|
+
def _line_command
|
2023
|
+
|
2024
|
+
_save = self.pos
|
2025
|
+
while true # sequence
|
2026
|
+
_text_start = self.pos
|
2027
|
+
|
2028
|
+
_save1 = self.pos
|
2029
|
+
while true # sequence
|
2030
|
+
_tmp = apply(:_lh)
|
2031
|
+
unless _tmp
|
2032
|
+
self.pos = _save1
|
2033
|
+
break
|
2034
|
+
end
|
2035
|
+
_tmp = apply(:__hyphen_)
|
2036
|
+
unless _tmp
|
2037
|
+
self.pos = _save1
|
2038
|
+
break
|
2039
|
+
end
|
2040
|
+
_save2 = self.pos
|
2041
|
+
_tmp = apply(:_commandname_for_special_line_command)
|
2042
|
+
_tmp = _tmp ? nil : true
|
2043
|
+
self.pos = _save2
|
2044
|
+
unless _tmp
|
2045
|
+
self.pos = _save1
|
2046
|
+
break
|
2047
|
+
end
|
2048
|
+
_tmp = apply(:_command)
|
2049
|
+
c = @result
|
2050
|
+
unless _tmp
|
2051
|
+
self.pos = _save1
|
2052
|
+
break
|
2053
|
+
end
|
2054
|
+
_tmp = match_string(":")
|
2055
|
+
unless _tmp
|
2056
|
+
self.pos = _save1
|
2057
|
+
break
|
2058
|
+
end
|
2059
|
+
_save3 = self.pos
|
2060
|
+
_tmp = apply(:_documentcontent)
|
2061
|
+
@result = nil unless _tmp
|
2062
|
+
unless _tmp
|
2063
|
+
_tmp = true
|
2064
|
+
self.pos = _save3
|
2065
|
+
end
|
2066
|
+
content = @result
|
2067
|
+
unless _tmp
|
2068
|
+
self.pos = _save1
|
2069
|
+
break
|
2070
|
+
end
|
2071
|
+
_tmp = apply(:__hyphen_)
|
2072
|
+
unless _tmp
|
2073
|
+
self.pos = _save1
|
2074
|
+
break
|
2075
|
+
end
|
2076
|
+
_tmp = apply(:_le)
|
2077
|
+
unless _tmp
|
2078
|
+
self.pos = _save1
|
2079
|
+
break
|
2080
|
+
end
|
2081
|
+
while true
|
2082
|
+
_tmp = apply(:_empty_line)
|
2083
|
+
break unless _tmp
|
2084
|
+
end
|
2085
|
+
_tmp = true
|
2086
|
+
unless _tmp
|
2087
|
+
self.pos = _save1
|
2088
|
+
end
|
2089
|
+
break
|
2090
|
+
end # end sequence
|
2091
|
+
|
2092
|
+
if _tmp
|
2093
|
+
text = get_text(_text_start)
|
2094
|
+
end
|
2095
|
+
unless _tmp
|
2096
|
+
self.pos = _save
|
2097
|
+
break
|
2098
|
+
end
|
2099
|
+
@result = begin; create_item(:line_command, c, content, raw: text) ; end
|
2100
|
+
_tmp = true
|
2101
|
+
unless _tmp
|
2102
|
+
self.pos = _save
|
2103
|
+
end
|
2104
|
+
break
|
2105
|
+
end # end sequence
|
2106
|
+
|
2107
|
+
set_failed_rule :_line_command unless _tmp
|
2108
|
+
return _tmp
|
2109
|
+
end
|
2110
|
+
|
2111
|
+
# line_block = (items_list | line_command)
|
2112
|
+
def _line_block
|
2113
|
+
|
2114
|
+
_save = self.pos
|
2115
|
+
while true # choice
|
2116
|
+
_tmp = apply(:_items_list)
|
2117
|
+
break if _tmp
|
2118
|
+
self.pos = _save
|
2119
|
+
_tmp = apply(:_line_command)
|
2120
|
+
break if _tmp
|
2121
|
+
self.pos = _save
|
2122
|
+
break
|
2123
|
+
end # end choice
|
2124
|
+
|
2125
|
+
set_failed_rule :_line_block unless _tmp
|
2126
|
+
return _tmp
|
2127
|
+
end
|
2128
|
+
|
2129
|
+
# block = (preformatted_block | headed_section | line_block | explicit_block | paragraph_group):block empty_line* {block}
|
2130
|
+
def _block
|
2131
|
+
|
2132
|
+
_save = self.pos
|
2133
|
+
while true # sequence
|
2134
|
+
|
2135
|
+
_save1 = self.pos
|
2136
|
+
while true # choice
|
2137
|
+
_tmp = apply(:_preformatted_block)
|
2138
|
+
break if _tmp
|
2139
|
+
self.pos = _save1
|
2140
|
+
_tmp = apply(:_headed_section)
|
2141
|
+
break if _tmp
|
2142
|
+
self.pos = _save1
|
2143
|
+
_tmp = apply(:_line_block)
|
2144
|
+
break if _tmp
|
2145
|
+
self.pos = _save1
|
2146
|
+
_tmp = apply(:_explicit_block)
|
2147
|
+
break if _tmp
|
2148
|
+
self.pos = _save1
|
2149
|
+
_tmp = apply(:_paragraph_group)
|
2150
|
+
break if _tmp
|
2151
|
+
self.pos = _save1
|
2152
|
+
break
|
2153
|
+
end # end choice
|
2154
|
+
|
2155
|
+
block = @result
|
2156
|
+
unless _tmp
|
2157
|
+
self.pos = _save
|
2158
|
+
break
|
2159
|
+
end
|
2160
|
+
while true
|
2161
|
+
_tmp = apply(:_empty_line)
|
2162
|
+
break unless _tmp
|
2163
|
+
end
|
2164
|
+
_tmp = true
|
2165
|
+
unless _tmp
|
2166
|
+
self.pos = _save
|
2167
|
+
break
|
2168
|
+
end
|
2169
|
+
@result = begin; block; end
|
2170
|
+
_tmp = true
|
2171
|
+
unless _tmp
|
2172
|
+
self.pos = _save
|
2173
|
+
end
|
2174
|
+
break
|
2175
|
+
end # end sequence
|
2176
|
+
|
2177
|
+
set_failed_rule :_block unless _tmp
|
2178
|
+
return _tmp
|
2179
|
+
end
|
2180
|
+
|
2181
|
+
# block_delimiter = (blockhead | blockend)
|
2182
|
+
def _block_delimiter
|
2183
|
+
|
2184
|
+
_save = self.pos
|
2185
|
+
while true # choice
|
2186
|
+
_tmp = apply(:_blockhead)
|
2187
|
+
break if _tmp
|
2188
|
+
self.pos = _save
|
2189
|
+
_tmp = apply(:_blockend)
|
2190
|
+
break if _tmp
|
2191
|
+
self.pos = _save
|
2192
|
+
break
|
2193
|
+
end # end choice
|
2194
|
+
|
2195
|
+
set_failed_rule :_block_delimiter unless _tmp
|
2196
|
+
return _tmp
|
2197
|
+
end
|
2198
|
+
|
2199
|
+
# paragraph_delimiter = (block_delimiter | preformatted_command_head | line_block | newpage | headed_start)
|
2200
|
+
def _paragraph_delimiter
|
2201
|
+
|
2202
|
+
_save = self.pos
|
2203
|
+
while true # choice
|
2204
|
+
_tmp = apply(:_block_delimiter)
|
2205
|
+
break if _tmp
|
2206
|
+
self.pos = _save
|
2207
|
+
_tmp = apply(:_preformatted_command_head)
|
2208
|
+
break if _tmp
|
2209
|
+
self.pos = _save
|
2210
|
+
_tmp = apply(:_line_block)
|
2211
|
+
break if _tmp
|
2212
|
+
self.pos = _save
|
2213
|
+
_tmp = apply(:_newpage)
|
2214
|
+
break if _tmp
|
2215
|
+
self.pos = _save
|
2216
|
+
_tmp = apply(:_headed_start)
|
2217
|
+
break if _tmp
|
2218
|
+
self.pos = _save
|
2219
|
+
break
|
2220
|
+
end # end choice
|
2221
|
+
|
2222
|
+
set_failed_rule :_paragraph_delimiter unless _tmp
|
2223
|
+
return _tmp
|
2224
|
+
end
|
2225
|
+
|
2226
|
+
# h_start_mark = < "="+ ":" > &{ text.length - 1 == n }
|
2227
|
+
def _h_start_mark(n)
|
2228
|
+
|
2229
|
+
_save = self.pos
|
2230
|
+
while true # sequence
|
2231
|
+
_text_start = self.pos
|
2232
|
+
|
2233
|
+
_save1 = self.pos
|
2234
|
+
while true # sequence
|
2235
|
+
_save2 = self.pos
|
2236
|
+
_tmp = match_string("=")
|
2237
|
+
if _tmp
|
2238
|
+
while true
|
2239
|
+
_tmp = match_string("=")
|
2240
|
+
break unless _tmp
|
2241
|
+
end
|
2242
|
+
_tmp = true
|
2243
|
+
else
|
2244
|
+
self.pos = _save2
|
2245
|
+
end
|
2246
|
+
unless _tmp
|
2247
|
+
self.pos = _save1
|
2248
|
+
break
|
2249
|
+
end
|
2250
|
+
_tmp = match_string(":")
|
2251
|
+
unless _tmp
|
2252
|
+
self.pos = _save1
|
2253
|
+
end
|
2254
|
+
break
|
2255
|
+
end # end sequence
|
2256
|
+
|
2257
|
+
if _tmp
|
2258
|
+
text = get_text(_text_start)
|
2259
|
+
end
|
2260
|
+
unless _tmp
|
2261
|
+
self.pos = _save
|
2262
|
+
break
|
2263
|
+
end
|
2264
|
+
_save3 = self.pos
|
2265
|
+
_tmp = begin; text.length - 1 == n ; end
|
2266
|
+
self.pos = _save3
|
2267
|
+
unless _tmp
|
2268
|
+
self.pos = _save
|
2269
|
+
end
|
2270
|
+
break
|
2271
|
+
end # end sequence
|
2272
|
+
|
2273
|
+
set_failed_rule :_h_start_mark unless _tmp
|
2274
|
+
return _tmp
|
2275
|
+
end
|
2276
|
+
|
2277
|
+
# h_markup_terminator = lh - < "="+ ":" > &{ text.length - 1 <= n }
|
2278
|
+
def _h_markup_terminator(n)
|
2279
|
+
|
2280
|
+
_save = self.pos
|
2281
|
+
while true # sequence
|
2282
|
+
_tmp = apply(:_lh)
|
2283
|
+
unless _tmp
|
2284
|
+
self.pos = _save
|
2285
|
+
break
|
2286
|
+
end
|
2287
|
+
_tmp = apply(:__hyphen_)
|
2288
|
+
unless _tmp
|
2289
|
+
self.pos = _save
|
2290
|
+
break
|
2291
|
+
end
|
2292
|
+
_text_start = self.pos
|
2293
|
+
|
2294
|
+
_save1 = self.pos
|
2295
|
+
while true # sequence
|
2296
|
+
_save2 = self.pos
|
2297
|
+
_tmp = match_string("=")
|
2298
|
+
if _tmp
|
2299
|
+
while true
|
2300
|
+
_tmp = match_string("=")
|
2301
|
+
break unless _tmp
|
2302
|
+
end
|
2303
|
+
_tmp = true
|
2304
|
+
else
|
2305
|
+
self.pos = _save2
|
2306
|
+
end
|
2307
|
+
unless _tmp
|
2308
|
+
self.pos = _save1
|
2309
|
+
break
|
2310
|
+
end
|
2311
|
+
_tmp = match_string(":")
|
2312
|
+
unless _tmp
|
2313
|
+
self.pos = _save1
|
2314
|
+
end
|
2315
|
+
break
|
2316
|
+
end # end sequence
|
2317
|
+
|
2318
|
+
if _tmp
|
2319
|
+
text = get_text(_text_start)
|
2320
|
+
end
|
2321
|
+
unless _tmp
|
2322
|
+
self.pos = _save
|
2323
|
+
break
|
2324
|
+
end
|
2325
|
+
_save3 = self.pos
|
2326
|
+
_tmp = begin; text.length - 1 <= n ; end
|
2327
|
+
self.pos = _save3
|
2328
|
+
unless _tmp
|
2329
|
+
self.pos = _save
|
2330
|
+
end
|
2331
|
+
break
|
2332
|
+
end # end sequence
|
2333
|
+
|
2334
|
+
set_failed_rule :_h_markup_terminator unless _tmp
|
2335
|
+
return _tmp
|
2336
|
+
end
|
2337
|
+
|
2338
|
+
# h_start = lh - h_start_mark(n) charstring:s le { { level: n, heading: s } }
|
2339
|
+
def _h_start(n)
|
2340
|
+
|
2341
|
+
_save = self.pos
|
2342
|
+
while true # sequence
|
2343
|
+
_tmp = apply(:_lh)
|
2344
|
+
unless _tmp
|
2345
|
+
self.pos = _save
|
2346
|
+
break
|
2347
|
+
end
|
2348
|
+
_tmp = apply(:__hyphen_)
|
2349
|
+
unless _tmp
|
2350
|
+
self.pos = _save
|
2351
|
+
break
|
2352
|
+
end
|
2353
|
+
_tmp = apply_with_args(:_h_start_mark, n)
|
2354
|
+
unless _tmp
|
2355
|
+
self.pos = _save
|
2356
|
+
break
|
2357
|
+
end
|
2358
|
+
_tmp = apply(:_charstring)
|
2359
|
+
s = @result
|
2360
|
+
unless _tmp
|
2361
|
+
self.pos = _save
|
2362
|
+
break
|
2363
|
+
end
|
2364
|
+
_tmp = apply(:_le)
|
2365
|
+
unless _tmp
|
2366
|
+
self.pos = _save
|
2367
|
+
break
|
2368
|
+
end
|
2369
|
+
@result = begin; { level: n, heading: s } ; end
|
2370
|
+
_tmp = true
|
2371
|
+
unless _tmp
|
2372
|
+
self.pos = _save
|
2373
|
+
end
|
2374
|
+
break
|
2375
|
+
end # end sequence
|
2376
|
+
|
2377
|
+
set_failed_rule :_h_start unless _tmp
|
2378
|
+
return _tmp
|
2379
|
+
end
|
2380
|
+
|
2381
|
+
# h_section = < h_start(n):h (!h_markup_terminator(n) !eof block)+:content > { create_item(:h_section, h, content, raw: text) }
|
2382
|
+
def _h_section(n)
|
2383
|
+
|
2384
|
+
_save = self.pos
|
2385
|
+
while true # sequence
|
2386
|
+
_text_start = self.pos
|
2387
|
+
|
2388
|
+
_save1 = self.pos
|
2389
|
+
while true # sequence
|
2390
|
+
_tmp = apply_with_args(:_h_start, n)
|
2391
|
+
h = @result
|
2392
|
+
unless _tmp
|
2393
|
+
self.pos = _save1
|
2394
|
+
break
|
2395
|
+
end
|
2396
|
+
_save2 = self.pos
|
2397
|
+
_ary = []
|
2398
|
+
|
2399
|
+
_save3 = self.pos
|
2400
|
+
while true # sequence
|
2401
|
+
_save4 = self.pos
|
2402
|
+
_tmp = apply_with_args(:_h_markup_terminator, n)
|
2403
|
+
_tmp = _tmp ? nil : true
|
2404
|
+
self.pos = _save4
|
2405
|
+
unless _tmp
|
2406
|
+
self.pos = _save3
|
2407
|
+
break
|
2408
|
+
end
|
2409
|
+
_save5 = self.pos
|
2410
|
+
_tmp = apply(:_eof)
|
2411
|
+
_tmp = _tmp ? nil : true
|
2412
|
+
self.pos = _save5
|
2413
|
+
unless _tmp
|
2414
|
+
self.pos = _save3
|
2415
|
+
break
|
2416
|
+
end
|
2417
|
+
_tmp = apply(:_block)
|
2418
|
+
unless _tmp
|
2419
|
+
self.pos = _save3
|
2420
|
+
end
|
2421
|
+
break
|
2422
|
+
end # end sequence
|
2423
|
+
|
2424
|
+
if _tmp
|
2425
|
+
_ary << @result
|
2426
|
+
while true
|
2427
|
+
|
2428
|
+
_save6 = self.pos
|
2429
|
+
while true # sequence
|
2430
|
+
_save7 = self.pos
|
2431
|
+
_tmp = apply_with_args(:_h_markup_terminator, n)
|
2432
|
+
_tmp = _tmp ? nil : true
|
2433
|
+
self.pos = _save7
|
2434
|
+
unless _tmp
|
2435
|
+
self.pos = _save6
|
2436
|
+
break
|
2437
|
+
end
|
2438
|
+
_save8 = self.pos
|
2439
|
+
_tmp = apply(:_eof)
|
2440
|
+
_tmp = _tmp ? nil : true
|
2441
|
+
self.pos = _save8
|
2442
|
+
unless _tmp
|
2443
|
+
self.pos = _save6
|
2444
|
+
break
|
2445
|
+
end
|
2446
|
+
_tmp = apply(:_block)
|
2447
|
+
unless _tmp
|
2448
|
+
self.pos = _save6
|
2449
|
+
end
|
2450
|
+
break
|
2451
|
+
end # end sequence
|
2452
|
+
|
2453
|
+
_ary << @result if _tmp
|
2454
|
+
break unless _tmp
|
2455
|
+
end
|
2456
|
+
_tmp = true
|
2457
|
+
@result = _ary
|
2458
|
+
else
|
2459
|
+
self.pos = _save2
|
2460
|
+
end
|
2461
|
+
content = @result
|
2462
|
+
unless _tmp
|
2463
|
+
self.pos = _save1
|
2464
|
+
end
|
2465
|
+
break
|
2466
|
+
end # end sequence
|
2467
|
+
|
2468
|
+
if _tmp
|
2469
|
+
text = get_text(_text_start)
|
2470
|
+
end
|
2471
|
+
unless _tmp
|
2472
|
+
self.pos = _save
|
2473
|
+
break
|
2474
|
+
end
|
2475
|
+
@result = begin; create_item(:h_section, h, content, raw: text) ; end
|
2476
|
+
_tmp = true
|
2477
|
+
unless _tmp
|
2478
|
+
self.pos = _save
|
2479
|
+
end
|
2480
|
+
break
|
2481
|
+
end # end sequence
|
2482
|
+
|
2483
|
+
set_failed_rule :_h_section unless _tmp
|
2484
|
+
return _tmp
|
2485
|
+
end
|
2486
|
+
|
2487
|
+
# headed_start = (h_start(1) | h_start(2) | h_start(3) | h_start(4) | h_start(5) | h_start(6))
|
2488
|
+
def _headed_start
|
2489
|
+
|
2490
|
+
_save = self.pos
|
2491
|
+
while true # choice
|
2492
|
+
_tmp = apply_with_args(:_h_start, 1)
|
2493
|
+
break if _tmp
|
2494
|
+
self.pos = _save
|
2495
|
+
_tmp = apply_with_args(:_h_start, 2)
|
2496
|
+
break if _tmp
|
2497
|
+
self.pos = _save
|
2498
|
+
_tmp = apply_with_args(:_h_start, 3)
|
2499
|
+
break if _tmp
|
2500
|
+
self.pos = _save
|
2501
|
+
_tmp = apply_with_args(:_h_start, 4)
|
2502
|
+
break if _tmp
|
2503
|
+
self.pos = _save
|
2504
|
+
_tmp = apply_with_args(:_h_start, 5)
|
2505
|
+
break if _tmp
|
2506
|
+
self.pos = _save
|
2507
|
+
_tmp = apply_with_args(:_h_start, 6)
|
2508
|
+
break if _tmp
|
2509
|
+
self.pos = _save
|
2510
|
+
break
|
2511
|
+
end # end choice
|
2512
|
+
|
2513
|
+
set_failed_rule :_headed_start unless _tmp
|
2514
|
+
return _tmp
|
2515
|
+
end
|
2516
|
+
|
2517
|
+
# headed_section = (h_section(1) | h_section(2) | h_section(3) | h_section(4) | h_section(5) | h_section(6))
|
2518
|
+
def _headed_section
|
2519
|
+
|
2520
|
+
_save = self.pos
|
2521
|
+
while true # choice
|
2522
|
+
_tmp = apply_with_args(:_h_section, 1)
|
2523
|
+
break if _tmp
|
2524
|
+
self.pos = _save
|
2525
|
+
_tmp = apply_with_args(:_h_section, 2)
|
2526
|
+
break if _tmp
|
2527
|
+
self.pos = _save
|
2528
|
+
_tmp = apply_with_args(:_h_section, 3)
|
2529
|
+
break if _tmp
|
2530
|
+
self.pos = _save
|
2531
|
+
_tmp = apply_with_args(:_h_section, 4)
|
2532
|
+
break if _tmp
|
2533
|
+
self.pos = _save
|
2534
|
+
_tmp = apply_with_args(:_h_section, 5)
|
2535
|
+
break if _tmp
|
2536
|
+
self.pos = _save
|
2537
|
+
_tmp = apply_with_args(:_h_section, 6)
|
2538
|
+
break if _tmp
|
2539
|
+
self.pos = _save
|
2540
|
+
break
|
2541
|
+
end # end choice
|
2542
|
+
|
2543
|
+
set_failed_rule :_headed_section unless _tmp
|
2544
|
+
return _tmp
|
2545
|
+
end
|
2546
|
+
|
2547
|
+
# stylesheets = < lh - "stylesheets:" !le charstring:s nl > { create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) }
|
2548
|
+
def _stylesheets
|
2549
|
+
|
2550
|
+
_save = self.pos
|
2551
|
+
while true # sequence
|
2552
|
+
_text_start = self.pos
|
2553
|
+
|
2554
|
+
_save1 = self.pos
|
2555
|
+
while true # sequence
|
2556
|
+
_tmp = apply(:_lh)
|
2557
|
+
unless _tmp
|
2558
|
+
self.pos = _save1
|
2559
|
+
break
|
2560
|
+
end
|
2561
|
+
_tmp = apply(:__hyphen_)
|
2562
|
+
unless _tmp
|
2563
|
+
self.pos = _save1
|
2564
|
+
break
|
2565
|
+
end
|
2566
|
+
_tmp = match_string("stylesheets:")
|
2567
|
+
unless _tmp
|
2568
|
+
self.pos = _save1
|
2569
|
+
break
|
2570
|
+
end
|
2571
|
+
_save2 = self.pos
|
2572
|
+
_tmp = apply(:_le)
|
2573
|
+
_tmp = _tmp ? nil : true
|
2574
|
+
self.pos = _save2
|
2575
|
+
unless _tmp
|
2576
|
+
self.pos = _save1
|
2577
|
+
break
|
2578
|
+
end
|
2579
|
+
_tmp = apply(:_charstring)
|
2580
|
+
s = @result
|
2581
|
+
unless _tmp
|
2582
|
+
self.pos = _save1
|
2583
|
+
break
|
2584
|
+
end
|
2585
|
+
_tmp = apply(:_nl)
|
2586
|
+
unless _tmp
|
2587
|
+
self.pos = _save1
|
2588
|
+
end
|
2589
|
+
break
|
2590
|
+
end # end sequence
|
2591
|
+
|
2592
|
+
if _tmp
|
2593
|
+
text = get_text(_text_start)
|
2594
|
+
end
|
2595
|
+
unless _tmp
|
2596
|
+
self.pos = _save
|
2597
|
+
break
|
2598
|
+
end
|
2599
|
+
@result = begin; create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) ; end
|
2600
|
+
_tmp = true
|
2601
|
+
unless _tmp
|
2602
|
+
self.pos = _save
|
2603
|
+
end
|
2604
|
+
break
|
2605
|
+
end # end sequence
|
2606
|
+
|
2607
|
+
set_failed_rule :_stylesheets unless _tmp
|
2608
|
+
return _tmp
|
2609
|
+
end
|
2610
|
+
|
2611
|
+
# title = < lh - "title:" !le charstring:t nl > { create_item(:title, {:title => t }, nil, raw:text) }
|
2612
|
+
def _title
|
2613
|
+
|
2614
|
+
_save = self.pos
|
2615
|
+
while true # sequence
|
2616
|
+
_text_start = self.pos
|
2617
|
+
|
2618
|
+
_save1 = self.pos
|
2619
|
+
while true # sequence
|
2620
|
+
_tmp = apply(:_lh)
|
2621
|
+
unless _tmp
|
2622
|
+
self.pos = _save1
|
2623
|
+
break
|
2624
|
+
end
|
2625
|
+
_tmp = apply(:__hyphen_)
|
2626
|
+
unless _tmp
|
2627
|
+
self.pos = _save1
|
2628
|
+
break
|
2629
|
+
end
|
2630
|
+
_tmp = match_string("title:")
|
2631
|
+
unless _tmp
|
2632
|
+
self.pos = _save1
|
2633
|
+
break
|
2634
|
+
end
|
2635
|
+
_save2 = self.pos
|
2636
|
+
_tmp = apply(:_le)
|
2637
|
+
_tmp = _tmp ? nil : true
|
2638
|
+
self.pos = _save2
|
2639
|
+
unless _tmp
|
2640
|
+
self.pos = _save1
|
2641
|
+
break
|
2642
|
+
end
|
2643
|
+
_tmp = apply(:_charstring)
|
2644
|
+
t = @result
|
2645
|
+
unless _tmp
|
2646
|
+
self.pos = _save1
|
2647
|
+
break
|
2648
|
+
end
|
2649
|
+
_tmp = apply(:_nl)
|
2650
|
+
unless _tmp
|
2651
|
+
self.pos = _save1
|
2652
|
+
end
|
2653
|
+
break
|
2654
|
+
end # end sequence
|
2655
|
+
|
2656
|
+
if _tmp
|
2657
|
+
text = get_text(_text_start)
|
2658
|
+
end
|
2659
|
+
unless _tmp
|
2660
|
+
self.pos = _save
|
2661
|
+
break
|
2662
|
+
end
|
2663
|
+
@result = begin; create_item(:title, {:title => t }, nil, raw:text) ; end
|
2664
|
+
_tmp = true
|
2665
|
+
unless _tmp
|
2666
|
+
self.pos = _save
|
2667
|
+
end
|
2668
|
+
break
|
2669
|
+
end # end sequence
|
2670
|
+
|
2671
|
+
set_failed_rule :_title unless _tmp
|
2672
|
+
return _tmp
|
2673
|
+
end
|
2674
|
+
|
2675
|
+
# lang = < lh - "lang:" !le charstring:l nl > { create_item(:lang, {:lang => l }, nil, raw:text) }
|
2676
|
+
def _lang
|
2677
|
+
|
2678
|
+
_save = self.pos
|
2679
|
+
while true # sequence
|
2680
|
+
_text_start = self.pos
|
2681
|
+
|
2682
|
+
_save1 = self.pos
|
2683
|
+
while true # sequence
|
2684
|
+
_tmp = apply(:_lh)
|
2685
|
+
unless _tmp
|
2686
|
+
self.pos = _save1
|
2687
|
+
break
|
2688
|
+
end
|
2689
|
+
_tmp = apply(:__hyphen_)
|
2690
|
+
unless _tmp
|
2691
|
+
self.pos = _save1
|
2692
|
+
break
|
2693
|
+
end
|
2694
|
+
_tmp = match_string("lang:")
|
2695
|
+
unless _tmp
|
2696
|
+
self.pos = _save1
|
2697
|
+
break
|
2698
|
+
end
|
2699
|
+
_save2 = self.pos
|
2700
|
+
_tmp = apply(:_le)
|
2701
|
+
_tmp = _tmp ? nil : true
|
2702
|
+
self.pos = _save2
|
2703
|
+
unless _tmp
|
2704
|
+
self.pos = _save1
|
2705
|
+
break
|
2706
|
+
end
|
2707
|
+
_tmp = apply(:_charstring)
|
2708
|
+
l = @result
|
2709
|
+
unless _tmp
|
2710
|
+
self.pos = _save1
|
2711
|
+
break
|
2712
|
+
end
|
2713
|
+
_tmp = apply(:_nl)
|
2714
|
+
unless _tmp
|
2715
|
+
self.pos = _save1
|
2716
|
+
end
|
2717
|
+
break
|
2718
|
+
end # end sequence
|
2719
|
+
|
2720
|
+
if _tmp
|
2721
|
+
text = get_text(_text_start)
|
2722
|
+
end
|
2723
|
+
unless _tmp
|
2724
|
+
self.pos = _save
|
2725
|
+
break
|
2726
|
+
end
|
2727
|
+
@result = begin; create_item(:lang, {:lang => l }, nil, raw:text) ; end
|
2728
|
+
_tmp = true
|
2729
|
+
unless _tmp
|
2730
|
+
self.pos = _save
|
2731
|
+
end
|
2732
|
+
break
|
2733
|
+
end # end sequence
|
2734
|
+
|
2735
|
+
set_failed_rule :_lang unless _tmp
|
2736
|
+
return _tmp
|
2737
|
+
end
|
2738
|
+
|
2739
|
+
# paragraph_style = < lh - "paragraph-style:" !le charstring:l nl > { create_item(:paragraph_style, {:paragraph_style => l }, nil, raw:text) }
|
2740
|
+
def _paragraph_style
|
2741
|
+
|
2742
|
+
_save = self.pos
|
2743
|
+
while true # sequence
|
2744
|
+
_text_start = self.pos
|
2745
|
+
|
2746
|
+
_save1 = self.pos
|
2747
|
+
while true # sequence
|
2748
|
+
_tmp = apply(:_lh)
|
2749
|
+
unless _tmp
|
2750
|
+
self.pos = _save1
|
2751
|
+
break
|
2752
|
+
end
|
2753
|
+
_tmp = apply(:__hyphen_)
|
2754
|
+
unless _tmp
|
2755
|
+
self.pos = _save1
|
2756
|
+
break
|
2757
|
+
end
|
2758
|
+
_tmp = match_string("paragraph-style:")
|
2759
|
+
unless _tmp
|
2760
|
+
self.pos = _save1
|
2761
|
+
break
|
2762
|
+
end
|
2763
|
+
_save2 = self.pos
|
2764
|
+
_tmp = apply(:_le)
|
2765
|
+
_tmp = _tmp ? nil : true
|
2766
|
+
self.pos = _save2
|
2767
|
+
unless _tmp
|
2768
|
+
self.pos = _save1
|
2769
|
+
break
|
2770
|
+
end
|
2771
|
+
_tmp = apply(:_charstring)
|
2772
|
+
l = @result
|
2773
|
+
unless _tmp
|
2774
|
+
self.pos = _save1
|
2775
|
+
break
|
2776
|
+
end
|
2777
|
+
_tmp = apply(:_nl)
|
2778
|
+
unless _tmp
|
2779
|
+
self.pos = _save1
|
2780
|
+
end
|
2781
|
+
break
|
2782
|
+
end # end sequence
|
2783
|
+
|
2784
|
+
if _tmp
|
2785
|
+
text = get_text(_text_start)
|
2786
|
+
end
|
2787
|
+
unless _tmp
|
2788
|
+
self.pos = _save
|
2789
|
+
break
|
2790
|
+
end
|
2791
|
+
@result = begin; create_item(:paragraph_style, {:paragraph_style => l }, nil, raw:text) ; end
|
2792
|
+
_tmp = true
|
2793
|
+
unless _tmp
|
2794
|
+
self.pos = _save
|
2795
|
+
end
|
2796
|
+
break
|
2797
|
+
end # end sequence
|
2798
|
+
|
2799
|
+
set_failed_rule :_paragraph_style unless _tmp
|
2800
|
+
return _tmp
|
2801
|
+
end
|
2802
|
+
|
2803
|
+
# header = (stylesheets | title | lang | paragraph_style) empty_line*
|
2804
|
+
def _header
|
2805
|
+
|
2806
|
+
_save = self.pos
|
2807
|
+
while true # sequence
|
2808
|
+
|
2809
|
+
_save1 = self.pos
|
2810
|
+
while true # choice
|
2811
|
+
_tmp = apply(:_stylesheets)
|
2812
|
+
break if _tmp
|
2813
|
+
self.pos = _save1
|
2814
|
+
_tmp = apply(:_title)
|
2815
|
+
break if _tmp
|
2816
|
+
self.pos = _save1
|
2817
|
+
_tmp = apply(:_lang)
|
2818
|
+
break if _tmp
|
2819
|
+
self.pos = _save1
|
2820
|
+
_tmp = apply(:_paragraph_style)
|
2821
|
+
break if _tmp
|
2822
|
+
self.pos = _save1
|
2823
|
+
break
|
2824
|
+
end # end choice
|
2825
|
+
|
2826
|
+
unless _tmp
|
2827
|
+
self.pos = _save
|
2828
|
+
break
|
2829
|
+
end
|
2830
|
+
while true
|
2831
|
+
_tmp = apply(:_empty_line)
|
2832
|
+
break unless _tmp
|
2833
|
+
end
|
2834
|
+
_tmp = true
|
2835
|
+
unless _tmp
|
2836
|
+
self.pos = _save
|
2837
|
+
end
|
2838
|
+
break
|
2839
|
+
end # end sequence
|
2840
|
+
|
2841
|
+
set_failed_rule :_header unless _tmp
|
2842
|
+
return _tmp
|
2843
|
+
end
|
2844
|
+
|
2845
|
+
# char = < /[[:print:]]/ > { text }
|
2846
|
+
def _char
|
2847
|
+
|
2848
|
+
_save = self.pos
|
2849
|
+
while true # sequence
|
2850
|
+
_text_start = self.pos
|
2851
|
+
_tmp = scan(/\A(?-mix:[[:print:]])/)
|
2852
|
+
if _tmp
|
2853
|
+
text = get_text(_text_start)
|
2854
|
+
end
|
2855
|
+
unless _tmp
|
2856
|
+
self.pos = _save
|
2857
|
+
break
|
2858
|
+
end
|
2859
|
+
@result = begin; text ; end
|
2860
|
+
_tmp = true
|
2861
|
+
unless _tmp
|
2862
|
+
self.pos = _save
|
2863
|
+
end
|
2864
|
+
break
|
2865
|
+
end # end sequence
|
2866
|
+
|
2867
|
+
set_failed_rule :_char unless _tmp
|
2868
|
+
return _tmp
|
2869
|
+
end
|
2870
|
+
|
2871
|
+
# charstring = < char* > { text }
|
2872
|
+
def _charstring
|
2873
|
+
|
2874
|
+
_save = self.pos
|
2875
|
+
while true # sequence
|
2876
|
+
_text_start = self.pos
|
2877
|
+
while true
|
2878
|
+
_tmp = apply(:_char)
|
2879
|
+
break unless _tmp
|
2880
|
+
end
|
2881
|
+
_tmp = true
|
2882
|
+
if _tmp
|
2883
|
+
text = get_text(_text_start)
|
2884
|
+
end
|
2885
|
+
unless _tmp
|
2886
|
+
self.pos = _save
|
2887
|
+
break
|
2888
|
+
end
|
2889
|
+
@result = begin; text ; end
|
2890
|
+
_tmp = true
|
2891
|
+
unless _tmp
|
2892
|
+
self.pos = _save
|
2893
|
+
end
|
2894
|
+
break
|
2895
|
+
end # end sequence
|
2896
|
+
|
2897
|
+
set_failed_rule :_charstring unless _tmp
|
2898
|
+
return _tmp
|
2899
|
+
end
|
2900
|
+
|
2901
|
+
# char_except = char:c &{ c != e }
|
2902
|
+
def _char_except(e)
|
2903
|
+
|
2904
|
+
_save = self.pos
|
2905
|
+
while true # sequence
|
2906
|
+
_tmp = apply(:_char)
|
2907
|
+
c = @result
|
2908
|
+
unless _tmp
|
2909
|
+
self.pos = _save
|
2910
|
+
break
|
2911
|
+
end
|
2912
|
+
_save1 = self.pos
|
2913
|
+
_tmp = begin; c != e ; end
|
2914
|
+
self.pos = _save1
|
2915
|
+
unless _tmp
|
2916
|
+
self.pos = _save
|
2917
|
+
end
|
2918
|
+
break
|
2919
|
+
end # end sequence
|
2920
|
+
|
2921
|
+
set_failed_rule :_char_except unless _tmp
|
2922
|
+
return _tmp
|
2923
|
+
end
|
2924
|
+
|
2925
|
+
# charstring_except = < char_except(e)* > { text }
|
2926
|
+
def _charstring_except(e)
|
2927
|
+
|
2928
|
+
_save = self.pos
|
2929
|
+
while true # sequence
|
2930
|
+
_text_start = self.pos
|
2931
|
+
while true
|
2932
|
+
_tmp = apply_with_args(:_char_except, e)
|
2933
|
+
break unless _tmp
|
2934
|
+
end
|
2935
|
+
_tmp = true
|
2936
|
+
if _tmp
|
2937
|
+
text = get_text(_text_start)
|
2938
|
+
end
|
2939
|
+
unless _tmp
|
2940
|
+
self.pos = _save
|
2941
|
+
break
|
2942
|
+
end
|
2943
|
+
@result = begin; text ; end
|
2944
|
+
_tmp = true
|
2945
|
+
unless _tmp
|
2946
|
+
self.pos = _save
|
2947
|
+
end
|
2948
|
+
break
|
2949
|
+
end # end sequence
|
2950
|
+
|
2951
|
+
set_failed_rule :_charstring_except unless _tmp
|
2952
|
+
return _tmp
|
2953
|
+
end
|
2954
|
+
|
2955
|
+
# documentcontent_except = (inline | !inline char_except(e))+:content {parse_text(content)}
|
2956
|
+
def _documentcontent_except(e)
|
2957
|
+
|
2958
|
+
_save = self.pos
|
2959
|
+
while true # sequence
|
2960
|
+
_save1 = self.pos
|
2961
|
+
_ary = []
|
2962
|
+
|
2963
|
+
_save2 = self.pos
|
2964
|
+
while true # choice
|
2965
|
+
_tmp = apply(:_inline)
|
2966
|
+
break if _tmp
|
2967
|
+
self.pos = _save2
|
2968
|
+
|
2969
|
+
_save3 = self.pos
|
2970
|
+
while true # sequence
|
2971
|
+
_save4 = self.pos
|
2972
|
+
_tmp = apply(:_inline)
|
2973
|
+
_tmp = _tmp ? nil : true
|
2974
|
+
self.pos = _save4
|
2975
|
+
unless _tmp
|
2976
|
+
self.pos = _save3
|
2977
|
+
break
|
2978
|
+
end
|
2979
|
+
_tmp = apply_with_args(:_char_except, e)
|
2980
|
+
unless _tmp
|
2981
|
+
self.pos = _save3
|
2982
|
+
end
|
2983
|
+
break
|
2984
|
+
end # end sequence
|
2985
|
+
|
2986
|
+
break if _tmp
|
2987
|
+
self.pos = _save2
|
2988
|
+
break
|
2989
|
+
end # end choice
|
2990
|
+
|
2991
|
+
if _tmp
|
2992
|
+
_ary << @result
|
2993
|
+
while true
|
2994
|
+
|
2995
|
+
_save5 = self.pos
|
2996
|
+
while true # choice
|
2997
|
+
_tmp = apply(:_inline)
|
2998
|
+
break if _tmp
|
2999
|
+
self.pos = _save5
|
3000
|
+
|
3001
|
+
_save6 = self.pos
|
3002
|
+
while true # sequence
|
3003
|
+
_save7 = self.pos
|
3004
|
+
_tmp = apply(:_inline)
|
3005
|
+
_tmp = _tmp ? nil : true
|
3006
|
+
self.pos = _save7
|
3007
|
+
unless _tmp
|
3008
|
+
self.pos = _save6
|
3009
|
+
break
|
3010
|
+
end
|
3011
|
+
_tmp = apply_with_args(:_char_except, e)
|
3012
|
+
unless _tmp
|
3013
|
+
self.pos = _save6
|
3014
|
+
end
|
3015
|
+
break
|
3016
|
+
end # end sequence
|
3017
|
+
|
3018
|
+
break if _tmp
|
3019
|
+
self.pos = _save5
|
3020
|
+
break
|
3021
|
+
end # end choice
|
3022
|
+
|
3023
|
+
_ary << @result if _tmp
|
3024
|
+
break unless _tmp
|
3025
|
+
end
|
3026
|
+
_tmp = true
|
3027
|
+
@result = _ary
|
3028
|
+
else
|
3029
|
+
self.pos = _save1
|
3030
|
+
end
|
3031
|
+
content = @result
|
3032
|
+
unless _tmp
|
3033
|
+
self.pos = _save
|
3034
|
+
break
|
3035
|
+
end
|
3036
|
+
@result = begin; parse_text(content); end
|
3037
|
+
_tmp = true
|
3038
|
+
unless _tmp
|
3039
|
+
self.pos = _save
|
3040
|
+
end
|
3041
|
+
break
|
3042
|
+
end # end sequence
|
3043
|
+
|
3044
|
+
set_failed_rule :_documentcontent_except unless _tmp
|
3045
|
+
return _tmp
|
3046
|
+
end
|
3047
|
+
|
3048
|
+
# documentcontent = (inline | !inline char)+:content {parse_text(content)}
|
3049
|
+
def _documentcontent
|
3050
|
+
|
3051
|
+
_save = self.pos
|
3052
|
+
while true # sequence
|
3053
|
+
_save1 = self.pos
|
3054
|
+
_ary = []
|
3055
|
+
|
3056
|
+
_save2 = self.pos
|
3057
|
+
while true # choice
|
3058
|
+
_tmp = apply(:_inline)
|
3059
|
+
break if _tmp
|
3060
|
+
self.pos = _save2
|
3061
|
+
|
3062
|
+
_save3 = self.pos
|
3063
|
+
while true # sequence
|
3064
|
+
_save4 = self.pos
|
3065
|
+
_tmp = apply(:_inline)
|
3066
|
+
_tmp = _tmp ? nil : true
|
3067
|
+
self.pos = _save4
|
3068
|
+
unless _tmp
|
3069
|
+
self.pos = _save3
|
3070
|
+
break
|
3071
|
+
end
|
3072
|
+
_tmp = apply(:_char)
|
3073
|
+
unless _tmp
|
3074
|
+
self.pos = _save3
|
3075
|
+
end
|
3076
|
+
break
|
3077
|
+
end # end sequence
|
3078
|
+
|
3079
|
+
break if _tmp
|
3080
|
+
self.pos = _save2
|
3081
|
+
break
|
3082
|
+
end # end choice
|
3083
|
+
|
3084
|
+
if _tmp
|
3085
|
+
_ary << @result
|
3086
|
+
while true
|
3087
|
+
|
3088
|
+
_save5 = self.pos
|
3089
|
+
while true # choice
|
3090
|
+
_tmp = apply(:_inline)
|
3091
|
+
break if _tmp
|
3092
|
+
self.pos = _save5
|
3093
|
+
|
3094
|
+
_save6 = self.pos
|
3095
|
+
while true # sequence
|
3096
|
+
_save7 = self.pos
|
3097
|
+
_tmp = apply(:_inline)
|
3098
|
+
_tmp = _tmp ? nil : true
|
3099
|
+
self.pos = _save7
|
3100
|
+
unless _tmp
|
3101
|
+
self.pos = _save6
|
3102
|
+
break
|
3103
|
+
end
|
3104
|
+
_tmp = apply(:_char)
|
3105
|
+
unless _tmp
|
3106
|
+
self.pos = _save6
|
3107
|
+
end
|
3108
|
+
break
|
3109
|
+
end # end sequence
|
3110
|
+
|
3111
|
+
break if _tmp
|
3112
|
+
self.pos = _save5
|
3113
|
+
break
|
3114
|
+
end # end choice
|
3115
|
+
|
3116
|
+
_ary << @result if _tmp
|
3117
|
+
break unless _tmp
|
3118
|
+
end
|
3119
|
+
_tmp = true
|
3120
|
+
@result = _ary
|
3121
|
+
else
|
3122
|
+
self.pos = _save1
|
3123
|
+
end
|
3124
|
+
content = @result
|
3125
|
+
unless _tmp
|
3126
|
+
self.pos = _save
|
3127
|
+
break
|
3128
|
+
end
|
3129
|
+
@result = begin; parse_text(content); end
|
3130
|
+
_tmp = true
|
3131
|
+
unless _tmp
|
3132
|
+
self.pos = _save
|
3133
|
+
end
|
3134
|
+
break
|
3135
|
+
end # end sequence
|
3136
|
+
|
3137
|
+
set_failed_rule :_documentcontent unless _tmp
|
3138
|
+
return _tmp
|
3139
|
+
end
|
3140
|
+
|
3141
|
+
# documentline = lh documentcontent:content le { content }
|
3142
|
+
def _documentline
|
3143
|
+
|
3144
|
+
_save = self.pos
|
3145
|
+
while true # sequence
|
3146
|
+
_tmp = apply(:_lh)
|
3147
|
+
unless _tmp
|
3148
|
+
self.pos = _save
|
3149
|
+
break
|
3150
|
+
end
|
3151
|
+
_tmp = apply(:_documentcontent)
|
3152
|
+
content = @result
|
3153
|
+
unless _tmp
|
3154
|
+
self.pos = _save
|
3155
|
+
break
|
3156
|
+
end
|
3157
|
+
_tmp = apply(:_le)
|
3158
|
+
unless _tmp
|
3159
|
+
self.pos = _save
|
3160
|
+
break
|
3161
|
+
end
|
3162
|
+
@result = begin; content ; end
|
3163
|
+
_tmp = true
|
3164
|
+
unless _tmp
|
3165
|
+
self.pos = _save
|
3166
|
+
end
|
3167
|
+
break
|
3168
|
+
end # end sequence
|
3169
|
+
|
3170
|
+
set_failed_rule :_documentline unless _tmp
|
3171
|
+
return _tmp
|
3172
|
+
end
|
3173
|
+
|
3174
|
+
# headers = header*:headers { create_item(:headers, nil, headers) }
|
3175
|
+
def _headers
|
3176
|
+
|
3177
|
+
_save = self.pos
|
3178
|
+
while true # sequence
|
3179
|
+
_ary = []
|
3180
|
+
while true
|
3181
|
+
_tmp = apply(:_header)
|
3182
|
+
_ary << @result if _tmp
|
3183
|
+
break unless _tmp
|
3184
|
+
end
|
3185
|
+
_tmp = true
|
3186
|
+
@result = _ary
|
3187
|
+
headers = @result
|
3188
|
+
unless _tmp
|
3189
|
+
self.pos = _save
|
3190
|
+
break
|
3191
|
+
end
|
3192
|
+
@result = begin; create_item(:headers, nil, headers) ; end
|
3193
|
+
_tmp = true
|
3194
|
+
unless _tmp
|
3195
|
+
self.pos = _save
|
3196
|
+
end
|
3197
|
+
break
|
3198
|
+
end # end sequence
|
3199
|
+
|
3200
|
+
set_failed_rule :_headers unless _tmp
|
3201
|
+
return _tmp
|
3202
|
+
end
|
3203
|
+
|
3204
|
+
# page = headers:headers - (!newpage block)*:blocks { create_item(:page, nil, [headers] + blocks.select{ |x| !x.nil?}) }
|
3205
|
+
def _page
|
3206
|
+
|
3207
|
+
_save = self.pos
|
3208
|
+
while true # sequence
|
3209
|
+
_tmp = apply(:_headers)
|
3210
|
+
headers = @result
|
3211
|
+
unless _tmp
|
3212
|
+
self.pos = _save
|
3213
|
+
break
|
3214
|
+
end
|
3215
|
+
_tmp = apply(:__hyphen_)
|
3216
|
+
unless _tmp
|
3217
|
+
self.pos = _save
|
3218
|
+
break
|
3219
|
+
end
|
3220
|
+
_ary = []
|
3221
|
+
while true
|
3222
|
+
|
3223
|
+
_save2 = self.pos
|
3224
|
+
while true # sequence
|
3225
|
+
_save3 = self.pos
|
3226
|
+
_tmp = apply(:_newpage)
|
3227
|
+
_tmp = _tmp ? nil : true
|
3228
|
+
self.pos = _save3
|
3229
|
+
unless _tmp
|
3230
|
+
self.pos = _save2
|
3231
|
+
break
|
3232
|
+
end
|
3233
|
+
_tmp = apply(:_block)
|
3234
|
+
unless _tmp
|
3235
|
+
self.pos = _save2
|
3236
|
+
end
|
3237
|
+
break
|
3238
|
+
end # end sequence
|
3239
|
+
|
3240
|
+
_ary << @result if _tmp
|
3241
|
+
break unless _tmp
|
3242
|
+
end
|
3243
|
+
_tmp = true
|
3244
|
+
@result = _ary
|
3245
|
+
blocks = @result
|
3246
|
+
unless _tmp
|
3247
|
+
self.pos = _save
|
3248
|
+
break
|
3249
|
+
end
|
3250
|
+
@result = begin; create_item(:page, nil, [headers] + blocks.select{ |x| !x.nil?}) ; end
|
3251
|
+
_tmp = true
|
3252
|
+
unless _tmp
|
3253
|
+
self.pos = _save
|
3254
|
+
end
|
3255
|
+
break
|
3256
|
+
end # end sequence
|
3257
|
+
|
3258
|
+
set_failed_rule :_page unless _tmp
|
3259
|
+
return _tmp
|
3260
|
+
end
|
3261
|
+
|
3262
|
+
# newpaged_page = newpage:newpage page:page { page[:children] = page[:children].unshift newpage; page }
|
3263
|
+
def _newpaged_page
|
3264
|
+
|
3265
|
+
_save = self.pos
|
3266
|
+
while true # sequence
|
3267
|
+
_tmp = apply(:_newpage)
|
3268
|
+
newpage = @result
|
3269
|
+
unless _tmp
|
3270
|
+
self.pos = _save
|
3271
|
+
break
|
3272
|
+
end
|
3273
|
+
_tmp = apply(:_page)
|
3274
|
+
page = @result
|
3275
|
+
unless _tmp
|
3276
|
+
self.pos = _save
|
3277
|
+
break
|
3278
|
+
end
|
3279
|
+
@result = begin; page[:children] = page[:children].unshift newpage; page ; end
|
3280
|
+
_tmp = true
|
3281
|
+
unless _tmp
|
3282
|
+
self.pos = _save
|
3283
|
+
end
|
3284
|
+
break
|
3285
|
+
end # end sequence
|
3286
|
+
|
3287
|
+
set_failed_rule :_newpaged_page unless _tmp
|
3288
|
+
return _tmp
|
3289
|
+
end
|
3290
|
+
|
3291
|
+
# root = page:page newpaged_page*:pages - eof_comment? eof { [ page ] + pages }
|
3292
|
+
def _root
|
3293
|
+
|
3294
|
+
_save = self.pos
|
3295
|
+
while true # sequence
|
3296
|
+
_tmp = apply(:_page)
|
3297
|
+
page = @result
|
3298
|
+
unless _tmp
|
3299
|
+
self.pos = _save
|
3300
|
+
break
|
3301
|
+
end
|
3302
|
+
_ary = []
|
3303
|
+
while true
|
3304
|
+
_tmp = apply(:_newpaged_page)
|
3305
|
+
_ary << @result if _tmp
|
3306
|
+
break unless _tmp
|
3307
|
+
end
|
3308
|
+
_tmp = true
|
3309
|
+
@result = _ary
|
3310
|
+
pages = @result
|
3311
|
+
unless _tmp
|
3312
|
+
self.pos = _save
|
3313
|
+
break
|
3314
|
+
end
|
3315
|
+
_tmp = apply(:__hyphen_)
|
3316
|
+
unless _tmp
|
3317
|
+
self.pos = _save
|
3318
|
+
break
|
3319
|
+
end
|
3320
|
+
_save2 = self.pos
|
3321
|
+
_tmp = apply(:_eof_comment)
|
3322
|
+
unless _tmp
|
3323
|
+
_tmp = true
|
3324
|
+
self.pos = _save2
|
3325
|
+
end
|
3326
|
+
unless _tmp
|
3327
|
+
self.pos = _save
|
3328
|
+
break
|
3329
|
+
end
|
3330
|
+
_tmp = apply(:_eof)
|
3331
|
+
unless _tmp
|
3332
|
+
self.pos = _save
|
3333
|
+
break
|
3334
|
+
end
|
3335
|
+
@result = begin; [ page ] + pages ; end
|
3336
|
+
_tmp = true
|
3337
|
+
unless _tmp
|
3338
|
+
self.pos = _save
|
3339
|
+
end
|
3340
|
+
break
|
3341
|
+
end # end sequence
|
3342
|
+
|
3343
|
+
set_failed_rule :_root unless _tmp
|
3344
|
+
return _tmp
|
3345
|
+
end
|
3346
|
+
|
3347
|
+
Rules = {}
|
3348
|
+
Rules[:_eof] = rule_info("eof", "!.")
|
3349
|
+
Rules[:_space] = rule_info("space", "(\" \" | \"\\\\t\")")
|
3350
|
+
Rules[:_eof_comment] = rule_info("eof_comment", "lh space* \"\#\" (!eof .)*")
|
3351
|
+
Rules[:_comment] = rule_info("comment", "lh space* \"\#\" (!nl .)* nl empty_line*")
|
3352
|
+
Rules[:__hyphen_] = rule_info("-", "(space | comment)*")
|
3353
|
+
Rules[:_empty_line] = rule_info("empty_line", "lh - nl")
|
3354
|
+
Rules[:_nl] = rule_info("nl", "/\\r?\\n/")
|
3355
|
+
Rules[:_lh] = rule_info("lh", "/^/")
|
3356
|
+
Rules[:_le] = rule_info("le", "(nl | eof)")
|
3357
|
+
Rules[:_word] = rule_info("word", "< /[\\w0-9]/ (\"-\" | /[\\w0-9]/)* > { text }")
|
3358
|
+
Rules[:_num] = rule_info("num", "< [0-9]+ > { text.to_i }")
|
3359
|
+
Rules[:_classname] = rule_info("classname", "\".\" word:classname { classname }")
|
3360
|
+
Rules[:_classnames] = rule_info("classnames", "classname*:classnames { classnames }")
|
3361
|
+
Rules[:_idname] = rule_info("idname", "\"\#\" word:idname { idname }")
|
3362
|
+
Rules[:_idnames] = rule_info("idnames", "idname*:idnames { idnames }")
|
3363
|
+
Rules[:_commandname] = rule_info("commandname", "word:name idnames?:idnames classnames?:classes { {:name => name, :ids => idnames, :classes => classes} }")
|
3364
|
+
Rules[:_parameter] = rule_info("parameter", "< (/[^,)]/* | \"\\\"\" /[^\"]/* \"\\\"\" | \"'\" /[^']/* \"'\") > { text }")
|
3365
|
+
Rules[:_parameters] = rule_info("parameters", "< parameter (\",\" parameter)* > { text }")
|
3366
|
+
Rules[:_command] = rule_info("command", "commandname:cn (\"(\" - parameters:arg - \")\")? { arg ||= ''; cn.merge({ :args => arg.split(',') }) }")
|
3367
|
+
Rules[:_implicit_paragraph] = rule_info("implicit_paragraph", "< !paragraph_delimiter - documentline:p - > { create_item(:paragraph, nil, p, raw: text) }")
|
3368
|
+
Rules[:_paragraph] = rule_info("paragraph", "(explicit_paragraph | implicit_paragraph)")
|
3369
|
+
Rules[:_paragraph_group] = rule_info("paragraph_group", "< paragraph+:p empty_line* > { create_item(:paragraph_group, nil, p, raw: text) }")
|
3370
|
+
Rules[:_blockhead] = rule_info("blockhead", "lh - command:command - \"{\" - nl empty_line* { command }")
|
3371
|
+
Rules[:_blockend] = rule_info("blockend", "lh - \"}\" - le empty_line*")
|
3372
|
+
Rules[:_blockbody] = rule_info("blockbody", "(!blockend block)+:body { body }")
|
3373
|
+
Rules[:_explicit_block] = rule_info("explicit_block", "< blockhead:head - blockbody:body - blockend > { create_item(:block, head, body, raw: text) }")
|
3374
|
+
Rules[:_preformatted_command] = rule_info("preformatted_command", "command:command &{ ['pre', 'precode'].include? command[:name] }")
|
3375
|
+
Rules[:_preformatted_command_head] = rule_info("preformatted_command_head", "lh - preformatted_command:command - \"<<\" &/[\\w0-9]/ { command }")
|
3376
|
+
Rules[:_preformat_end] = rule_info("preformat_end", "lh word:delimiter &{ delimiter == start }")
|
3377
|
+
Rules[:_preformatted_block] = rule_info("preformatted_block", "< lh - preformatted_command_head:command !nl word:delimiter nl (!preformat_end(delimiter) lh charstring nl)+:content preformat_end(delimiter) > { create_item(:preformatted, command, content, raw: text) }")
|
3378
|
+
Rules[:_inline] = rule_info("inline", "(img_inline | common_inline)")
|
3379
|
+
Rules[:_common_inline] = rule_info("common_inline", "< \"[\" command:c \"{\" documentcontent_except('}'):content \"}\" \"]\" > { create_item(:inline, c, content, raw: text) }")
|
3380
|
+
Rules[:_img_command] = rule_info("img_command", "command:c &{ c[:name] == 'img' && c[:args].size == 2}")
|
3381
|
+
Rules[:_img_inline] = rule_info("img_inline", "< \"[\" img_command:c \"]\" > { create_item(:inline, c, nil, raw: text) }")
|
3382
|
+
Rules[:_commandname_for_special_line_command] = rule_info("commandname_for_special_line_command", "(newpage_command | explicit_paragraph_command)")
|
3383
|
+
Rules[:_newpage_command] = rule_info("newpage_command", "command:command &{ command[:name] == 'newpage' }")
|
3384
|
+
Rules[:_newpage] = rule_info("newpage", "< lh - newpage_command:c \":\" documentcontent?:content - nl > { create_item(:newpage, c, content, raw:text) }")
|
3385
|
+
Rules[:_explicit_paragraph_command] = rule_info("explicit_paragraph_command", "command:c &{ c[:name] == 'p' }")
|
3386
|
+
Rules[:_explicit_paragraph] = rule_info("explicit_paragraph", "< lh - explicit_paragraph_command:c \":\" documentcontent?:content le empty_line* > { create_item(:paragraph, c, content, raw:text) }")
|
3387
|
+
Rules[:_unordered_list] = rule_info("unordered_list", "< unordered_item+:items > { create_item(:ul, nil, items, raw: text) }")
|
3388
|
+
Rules[:_unordered_item] = rule_info("unordered_item", "< lh \"*:\" documentcontent:content le > { create_item(:li, nil, content, raw: text) }")
|
3389
|
+
Rules[:_ordered_list] = rule_info("ordered_list", "< ordered_item+:items > { create_item(:ol, nil, items, raw: text) }")
|
3390
|
+
Rules[:_ordered_item] = rule_info("ordered_item", "< lh num \":\" documentcontent:content le > { create_item(:li, nil, content, raw: text) }")
|
3391
|
+
Rules[:_definition_list] = rule_info("definition_list", "< definition_item+:items > { create_item(:dl, nil, items, raw: text) }")
|
3392
|
+
Rules[:_definition_item] = rule_info("definition_item", "< lh \";:\" - documentcontent_except(':'):term \":\" - documentcontent:definition le > { create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) }")
|
3393
|
+
Rules[:_items_list] = rule_info("items_list", "(unordered_list | ordered_list | definition_list)")
|
3394
|
+
Rules[:_line_command] = rule_info("line_command", "< lh - !commandname_for_special_line_command command:c \":\" documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }")
|
3395
|
+
Rules[:_line_block] = rule_info("line_block", "(items_list | line_command)")
|
3396
|
+
Rules[:_block] = rule_info("block", "(preformatted_block | headed_section | line_block | explicit_block | paragraph_group):block empty_line* {block}")
|
3397
|
+
Rules[:_block_delimiter] = rule_info("block_delimiter", "(blockhead | blockend)")
|
3398
|
+
Rules[:_paragraph_delimiter] = rule_info("paragraph_delimiter", "(block_delimiter | preformatted_command_head | line_block | newpage | headed_start)")
|
3399
|
+
Rules[:_h_start_mark] = rule_info("h_start_mark", "< \"=\"+ \":\" > &{ text.length - 1 == n }")
|
3400
|
+
Rules[:_h_markup_terminator] = rule_info("h_markup_terminator", "lh - < \"=\"+ \":\" > &{ text.length - 1 <= n }")
|
3401
|
+
Rules[:_h_start] = rule_info("h_start", "lh - h_start_mark(n) charstring:s le { { level: n, heading: s } }")
|
3402
|
+
Rules[:_h_section] = rule_info("h_section", "< h_start(n):h (!h_markup_terminator(n) !eof block)+:content > { create_item(:h_section, h, content, raw: text) }")
|
3403
|
+
Rules[:_headed_start] = rule_info("headed_start", "(h_start(1) | h_start(2) | h_start(3) | h_start(4) | h_start(5) | h_start(6))")
|
3404
|
+
Rules[:_headed_section] = rule_info("headed_section", "(h_section(1) | h_section(2) | h_section(3) | h_section(4) | h_section(5) | h_section(6))")
|
3405
|
+
Rules[:_stylesheets] = rule_info("stylesheets", "< lh - \"stylesheets:\" !le charstring:s nl > { create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) }")
|
3406
|
+
Rules[:_title] = rule_info("title", "< lh - \"title:\" !le charstring:t nl > { create_item(:title, {:title => t }, nil, raw:text) }")
|
3407
|
+
Rules[:_lang] = rule_info("lang", "< lh - \"lang:\" !le charstring:l nl > { create_item(:lang, {:lang => l }, nil, raw:text) }")
|
3408
|
+
Rules[:_paragraph_style] = rule_info("paragraph_style", "< lh - \"paragraph-style:\" !le charstring:l nl > { create_item(:paragraph_style, {:paragraph_style => l }, nil, raw:text) }")
|
3409
|
+
Rules[:_header] = rule_info("header", "(stylesheets | title | lang | paragraph_style) empty_line*")
|
3410
|
+
Rules[:_char] = rule_info("char", "< /[[:print:]]/ > { text }")
|
3411
|
+
Rules[:_charstring] = rule_info("charstring", "< char* > { text }")
|
3412
|
+
Rules[:_char_except] = rule_info("char_except", "char:c &{ c != e }")
|
3413
|
+
Rules[:_charstring_except] = rule_info("charstring_except", "< char_except(e)* > { text }")
|
3414
|
+
Rules[:_documentcontent_except] = rule_info("documentcontent_except", "(inline | !inline char_except(e))+:content {parse_text(content)}")
|
3415
|
+
Rules[:_documentcontent] = rule_info("documentcontent", "(inline | !inline char)+:content {parse_text(content)}")
|
3416
|
+
Rules[:_documentline] = rule_info("documentline", "lh documentcontent:content le { content }")
|
3417
|
+
Rules[:_headers] = rule_info("headers", "header*:headers { create_item(:headers, nil, headers) }")
|
3418
|
+
Rules[:_page] = rule_info("page", "headers:headers - (!newpage block)*:blocks { create_item(:page, nil, [headers] + blocks.select{ |x| !x.nil?}) }")
|
3419
|
+
Rules[:_newpaged_page] = rule_info("newpaged_page", "newpage:newpage page:page { page[:children] = page[:children].unshift newpage; page }")
|
3420
|
+
Rules[:_root] = rule_info("root", "page:page newpaged_page*:pages - eof_comment? eof { [ page ] + pages }")
|
3421
|
+
# :startdoc:
|
3422
|
+
end
|