kpeg 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.hoeignore +12 -0
- data/Gemfile +3 -0
- data/Manifest.txt +9 -0
- data/README.rdoc +3 -3
- data/Rakefile +2 -0
- data/bin/kpeg +9 -2
- data/examples/lua_string/lua_string.kpeg.rb +0 -2
- data/examples/tiny_markdown/Rakefile +3 -0
- data/examples/tiny_markdown/driver.rb +10 -0
- data/examples/tiny_markdown/node.rb +107 -0
- data/examples/tiny_markdown/sample.md +51 -0
- data/examples/tiny_markdown/tiny_markdown.kpeg +199 -0
- data/examples/tiny_markdown/tiny_markdown.kpeg.rb +3892 -0
- data/lib/kpeg.rb +1 -1
- data/lib/kpeg/compiled_parser.rb +0 -4
- data/lib/kpeg/format_parser.kpeg +1 -1
- data/lib/kpeg/format_parser.rb +0 -4
- data/lib/kpeg/string_escape.rb +0 -4
- data/test/test_kpeg_format.rb +19 -0
- metadata +30 -30
- data/.gemtest +0 -0
@@ -0,0 +1,3892 @@
|
|
1
|
+
class TinyMarkdown::Parser
|
2
|
+
# :stopdoc:
|
3
|
+
|
4
|
+
# This is distinct from setup_parser so that a standalone parser
|
5
|
+
# can redefine #initialize and still have access to the proper
|
6
|
+
# parser setup code.
|
7
|
+
def initialize(str, debug=false)
|
8
|
+
setup_parser(str, debug)
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# Prepares for parsing +str+. If you define a custom initialize you must
|
14
|
+
# call this method before #parse
|
15
|
+
def setup_parser(str, debug=false)
|
16
|
+
set_string str, 0
|
17
|
+
@memoizations = Hash.new { |h,k| h[k] = {} }
|
18
|
+
@result = nil
|
19
|
+
@failed_rule = nil
|
20
|
+
@failing_rule_offset = -1
|
21
|
+
|
22
|
+
setup_foreign_grammar
|
23
|
+
end
|
24
|
+
|
25
|
+
attr_reader :string
|
26
|
+
attr_reader :failing_rule_offset
|
27
|
+
attr_accessor :result, :pos
|
28
|
+
|
29
|
+
def current_column(target=pos)
|
30
|
+
if c = string.rindex("\n", target-1)
|
31
|
+
return target - c - 1
|
32
|
+
end
|
33
|
+
|
34
|
+
target + 1
|
35
|
+
end
|
36
|
+
|
37
|
+
def current_line(target=pos)
|
38
|
+
cur_offset = 0
|
39
|
+
cur_line = 0
|
40
|
+
|
41
|
+
string.each_line do |line|
|
42
|
+
cur_line += 1
|
43
|
+
cur_offset += line.size
|
44
|
+
return cur_line if cur_offset >= target
|
45
|
+
end
|
46
|
+
|
47
|
+
-1
|
48
|
+
end
|
49
|
+
|
50
|
+
def lines
|
51
|
+
lines = []
|
52
|
+
string.each_line { |l| lines << l }
|
53
|
+
lines
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
def get_text(start)
|
59
|
+
@string[start..@pos-1]
|
60
|
+
end
|
61
|
+
|
62
|
+
# Sets the string and current parsing position for the parser.
|
63
|
+
def set_string string, pos
|
64
|
+
@string = string
|
65
|
+
@string_size = string ? string.size : 0
|
66
|
+
@pos = pos
|
67
|
+
end
|
68
|
+
|
69
|
+
def show_pos
|
70
|
+
width = 10
|
71
|
+
if @pos < width
|
72
|
+
"#{@pos} (\"#{@string[0,@pos]}\" @ \"#{@string[@pos,width]}\")"
|
73
|
+
else
|
74
|
+
"#{@pos} (\"... #{@string[@pos - width, width]}\" @ \"#{@string[@pos,width]}\")"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def failure_info
|
79
|
+
l = current_line @failing_rule_offset
|
80
|
+
c = current_column @failing_rule_offset
|
81
|
+
|
82
|
+
if @failed_rule.kind_of? Symbol
|
83
|
+
info = self.class::Rules[@failed_rule]
|
84
|
+
"line #{l}, column #{c}: failed rule '#{info.name}' = '#{info.rendered}'"
|
85
|
+
else
|
86
|
+
"line #{l}, column #{c}: failed rule '#{@failed_rule}'"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def failure_caret
|
91
|
+
l = current_line @failing_rule_offset
|
92
|
+
c = current_column @failing_rule_offset
|
93
|
+
|
94
|
+
line = lines[l-1]
|
95
|
+
"#{line}\n#{' ' * (c - 1)}^"
|
96
|
+
end
|
97
|
+
|
98
|
+
def failure_character
|
99
|
+
l = current_line @failing_rule_offset
|
100
|
+
c = current_column @failing_rule_offset
|
101
|
+
lines[l-1][c-1, 1]
|
102
|
+
end
|
103
|
+
|
104
|
+
def failure_oneline
|
105
|
+
l = current_line @failing_rule_offset
|
106
|
+
c = current_column @failing_rule_offset
|
107
|
+
|
108
|
+
char = lines[l-1][c-1, 1]
|
109
|
+
|
110
|
+
if @failed_rule.kind_of? Symbol
|
111
|
+
info = self.class::Rules[@failed_rule]
|
112
|
+
"@#{l}:#{c} failed rule '#{info.name}', got '#{char}'"
|
113
|
+
else
|
114
|
+
"@#{l}:#{c} failed rule '#{@failed_rule}', got '#{char}'"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
class ParseError < RuntimeError
|
119
|
+
end
|
120
|
+
|
121
|
+
def raise_error
|
122
|
+
raise ParseError, failure_oneline
|
123
|
+
end
|
124
|
+
|
125
|
+
def show_error(io=STDOUT)
|
126
|
+
error_pos = @failing_rule_offset
|
127
|
+
line_no = current_line(error_pos)
|
128
|
+
col_no = current_column(error_pos)
|
129
|
+
|
130
|
+
io.puts "On line #{line_no}, column #{col_no}:"
|
131
|
+
|
132
|
+
if @failed_rule.kind_of? Symbol
|
133
|
+
info = self.class::Rules[@failed_rule]
|
134
|
+
io.puts "Failed to match '#{info.rendered}' (rule '#{info.name}')"
|
135
|
+
else
|
136
|
+
io.puts "Failed to match rule '#{@failed_rule}'"
|
137
|
+
end
|
138
|
+
|
139
|
+
io.puts "Got: #{string[error_pos,1].inspect}"
|
140
|
+
line = lines[line_no-1]
|
141
|
+
io.puts "=> #{line}"
|
142
|
+
io.print(" " * (col_no + 3))
|
143
|
+
io.puts "^"
|
144
|
+
end
|
145
|
+
|
146
|
+
def set_failed_rule(name)
|
147
|
+
if @pos > @failing_rule_offset
|
148
|
+
@failed_rule = name
|
149
|
+
@failing_rule_offset = @pos
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
attr_reader :failed_rule
|
154
|
+
|
155
|
+
def match_string(str)
|
156
|
+
len = str.size
|
157
|
+
if @string[pos,len] == str
|
158
|
+
@pos += len
|
159
|
+
return str
|
160
|
+
end
|
161
|
+
|
162
|
+
return nil
|
163
|
+
end
|
164
|
+
|
165
|
+
def scan(reg)
|
166
|
+
if m = reg.match(@string[@pos..-1])
|
167
|
+
width = m.end(0)
|
168
|
+
@pos += width
|
169
|
+
return true
|
170
|
+
end
|
171
|
+
|
172
|
+
return nil
|
173
|
+
end
|
174
|
+
|
175
|
+
if "".respond_to? :ord
|
176
|
+
def get_byte
|
177
|
+
if @pos >= @string_size
|
178
|
+
return nil
|
179
|
+
end
|
180
|
+
|
181
|
+
s = @string[@pos].ord
|
182
|
+
@pos += 1
|
183
|
+
s
|
184
|
+
end
|
185
|
+
else
|
186
|
+
def get_byte
|
187
|
+
if @pos >= @string_size
|
188
|
+
return nil
|
189
|
+
end
|
190
|
+
|
191
|
+
s = @string[@pos]
|
192
|
+
@pos += 1
|
193
|
+
s
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def parse(rule=nil)
|
198
|
+
# We invoke the rules indirectly via apply
|
199
|
+
# instead of by just calling them as methods because
|
200
|
+
# if the rules use left recursion, apply needs to
|
201
|
+
# manage that.
|
202
|
+
|
203
|
+
if !rule
|
204
|
+
apply(:_root)
|
205
|
+
else
|
206
|
+
method = rule.gsub("-","_hyphen_")
|
207
|
+
apply :"_#{method}"
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
class MemoEntry
|
212
|
+
def initialize(ans, pos)
|
213
|
+
@ans = ans
|
214
|
+
@pos = pos
|
215
|
+
@result = nil
|
216
|
+
@set = false
|
217
|
+
@left_rec = false
|
218
|
+
end
|
219
|
+
|
220
|
+
attr_reader :ans, :pos, :result, :set
|
221
|
+
attr_accessor :left_rec
|
222
|
+
|
223
|
+
def move!(ans, pos, result)
|
224
|
+
@ans = ans
|
225
|
+
@pos = pos
|
226
|
+
@result = result
|
227
|
+
@set = true
|
228
|
+
@left_rec = false
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
def external_invoke(other, rule, *args)
|
233
|
+
old_pos = @pos
|
234
|
+
old_string = @string
|
235
|
+
|
236
|
+
set_string other.string, other.pos
|
237
|
+
|
238
|
+
begin
|
239
|
+
if val = __send__(rule, *args)
|
240
|
+
other.pos = @pos
|
241
|
+
other.result = @result
|
242
|
+
else
|
243
|
+
other.set_failed_rule "#{self.class}##{rule}"
|
244
|
+
end
|
245
|
+
val
|
246
|
+
ensure
|
247
|
+
set_string old_string, old_pos
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
def apply_with_args(rule, *args)
|
252
|
+
memo_key = [rule, args]
|
253
|
+
if m = @memoizations[memo_key][@pos]
|
254
|
+
@pos = m.pos
|
255
|
+
if !m.set
|
256
|
+
m.left_rec = true
|
257
|
+
return nil
|
258
|
+
end
|
259
|
+
|
260
|
+
@result = m.result
|
261
|
+
|
262
|
+
return m.ans
|
263
|
+
else
|
264
|
+
m = MemoEntry.new(nil, @pos)
|
265
|
+
@memoizations[memo_key][@pos] = m
|
266
|
+
start_pos = @pos
|
267
|
+
|
268
|
+
ans = __send__ rule, *args
|
269
|
+
|
270
|
+
lr = m.left_rec
|
271
|
+
|
272
|
+
m.move! ans, @pos, @result
|
273
|
+
|
274
|
+
# Don't bother trying to grow the left recursion
|
275
|
+
# if it's failing straight away (thus there is no seed)
|
276
|
+
if ans and lr
|
277
|
+
return grow_lr(rule, args, start_pos, m)
|
278
|
+
else
|
279
|
+
return ans
|
280
|
+
end
|
281
|
+
|
282
|
+
return ans
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
def apply(rule)
|
287
|
+
if m = @memoizations[rule][@pos]
|
288
|
+
@pos = m.pos
|
289
|
+
if !m.set
|
290
|
+
m.left_rec = true
|
291
|
+
return nil
|
292
|
+
end
|
293
|
+
|
294
|
+
@result = m.result
|
295
|
+
|
296
|
+
return m.ans
|
297
|
+
else
|
298
|
+
m = MemoEntry.new(nil, @pos)
|
299
|
+
@memoizations[rule][@pos] = m
|
300
|
+
start_pos = @pos
|
301
|
+
|
302
|
+
ans = __send__ rule
|
303
|
+
|
304
|
+
lr = m.left_rec
|
305
|
+
|
306
|
+
m.move! ans, @pos, @result
|
307
|
+
|
308
|
+
# Don't bother trying to grow the left recursion
|
309
|
+
# if it's failing straight away (thus there is no seed)
|
310
|
+
if ans and lr
|
311
|
+
return grow_lr(rule, nil, start_pos, m)
|
312
|
+
else
|
313
|
+
return ans
|
314
|
+
end
|
315
|
+
|
316
|
+
return ans
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
def grow_lr(rule, args, start_pos, m)
|
321
|
+
while true
|
322
|
+
@pos = start_pos
|
323
|
+
@result = m.result
|
324
|
+
|
325
|
+
if args
|
326
|
+
ans = __send__ rule, *args
|
327
|
+
else
|
328
|
+
ans = __send__ rule
|
329
|
+
end
|
330
|
+
return nil unless ans
|
331
|
+
|
332
|
+
break if @pos <= m.pos
|
333
|
+
|
334
|
+
m.move! ans, @pos, @result
|
335
|
+
end
|
336
|
+
|
337
|
+
@result = m.result
|
338
|
+
@pos = m.pos
|
339
|
+
return m.ans
|
340
|
+
end
|
341
|
+
|
342
|
+
class RuleInfo
|
343
|
+
def initialize(name, rendered)
|
344
|
+
@name = name
|
345
|
+
@rendered = rendered
|
346
|
+
end
|
347
|
+
|
348
|
+
attr_reader :name, :rendered
|
349
|
+
end
|
350
|
+
|
351
|
+
def self.rule_info(name, rendered)
|
352
|
+
RuleInfo.new(name, rendered)
|
353
|
+
end
|
354
|
+
|
355
|
+
|
356
|
+
# :startdoc:
|
357
|
+
|
358
|
+
|
359
|
+
attr_reader :ast
|
360
|
+
|
361
|
+
class Position
|
362
|
+
attr_accessor :pos, :line, :col
|
363
|
+
def initialize(compiler)
|
364
|
+
@pos = compiler.pos
|
365
|
+
@line = compiler.current_line
|
366
|
+
@col = compiler.current_column
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
def position
|
371
|
+
Position.new(self)
|
372
|
+
end
|
373
|
+
|
374
|
+
|
375
|
+
# :stopdoc:
|
376
|
+
|
377
|
+
module ::TinyMarkdown
|
378
|
+
class Node; end
|
379
|
+
class BlockQuoteNode < Node
|
380
|
+
def initialize(compiler, position, content)
|
381
|
+
@compiler = compiler
|
382
|
+
@position = position
|
383
|
+
@content = content
|
384
|
+
end
|
385
|
+
attr_reader :compiler
|
386
|
+
attr_reader :position
|
387
|
+
attr_reader :content
|
388
|
+
end
|
389
|
+
class BulletListNode < Node
|
390
|
+
def initialize(compiler, position, content)
|
391
|
+
@compiler = compiler
|
392
|
+
@position = position
|
393
|
+
@content = content
|
394
|
+
end
|
395
|
+
attr_reader :compiler
|
396
|
+
attr_reader :position
|
397
|
+
attr_reader :content
|
398
|
+
end
|
399
|
+
class BulletListItemNode < Node
|
400
|
+
def initialize(compiler, position, content)
|
401
|
+
@compiler = compiler
|
402
|
+
@position = position
|
403
|
+
@content = content
|
404
|
+
end
|
405
|
+
attr_reader :compiler
|
406
|
+
attr_reader :position
|
407
|
+
attr_reader :content
|
408
|
+
end
|
409
|
+
class DocumentNode < Node
|
410
|
+
def initialize(compiler, position, content)
|
411
|
+
@compiler = compiler
|
412
|
+
@position = position
|
413
|
+
@content = content
|
414
|
+
end
|
415
|
+
attr_reader :compiler
|
416
|
+
attr_reader :position
|
417
|
+
attr_reader :content
|
418
|
+
end
|
419
|
+
class HeadlineNode < Node
|
420
|
+
def initialize(compiler, position, level, content)
|
421
|
+
@compiler = compiler
|
422
|
+
@position = position
|
423
|
+
@level = level
|
424
|
+
@content = content
|
425
|
+
end
|
426
|
+
attr_reader :compiler
|
427
|
+
attr_reader :position
|
428
|
+
attr_reader :level
|
429
|
+
attr_reader :content
|
430
|
+
end
|
431
|
+
class HorizontalRuleNode < Node
|
432
|
+
def initialize(compiler, position)
|
433
|
+
@compiler = compiler
|
434
|
+
@position = position
|
435
|
+
end
|
436
|
+
attr_reader :compiler
|
437
|
+
attr_reader :position
|
438
|
+
end
|
439
|
+
class InlineElementNode < Node
|
440
|
+
def initialize(compiler, position, name, content)
|
441
|
+
@compiler = compiler
|
442
|
+
@position = position
|
443
|
+
@name = name
|
444
|
+
@content = content
|
445
|
+
end
|
446
|
+
attr_reader :compiler
|
447
|
+
attr_reader :position
|
448
|
+
attr_reader :name
|
449
|
+
attr_reader :content
|
450
|
+
end
|
451
|
+
class LineBreakNode < Node
|
452
|
+
def initialize(compiler, position)
|
453
|
+
@compiler = compiler
|
454
|
+
@position = position
|
455
|
+
end
|
456
|
+
attr_reader :compiler
|
457
|
+
attr_reader :position
|
458
|
+
end
|
459
|
+
class ListNode < Node
|
460
|
+
def initialize(compiler, position, content)
|
461
|
+
@compiler = compiler
|
462
|
+
@position = position
|
463
|
+
@content = content
|
464
|
+
end
|
465
|
+
attr_reader :compiler
|
466
|
+
attr_reader :position
|
467
|
+
attr_reader :content
|
468
|
+
end
|
469
|
+
class ParaNode < Node
|
470
|
+
def initialize(compiler, position, content)
|
471
|
+
@compiler = compiler
|
472
|
+
@position = position
|
473
|
+
@content = content
|
474
|
+
end
|
475
|
+
attr_reader :compiler
|
476
|
+
attr_reader :position
|
477
|
+
attr_reader :content
|
478
|
+
end
|
479
|
+
class PlainNode < Node
|
480
|
+
def initialize(compiler, position, content)
|
481
|
+
@compiler = compiler
|
482
|
+
@position = position
|
483
|
+
@content = content
|
484
|
+
end
|
485
|
+
attr_reader :compiler
|
486
|
+
attr_reader :position
|
487
|
+
attr_reader :content
|
488
|
+
end
|
489
|
+
class TextNode < Node
|
490
|
+
def initialize(compiler, position, content)
|
491
|
+
@compiler = compiler
|
492
|
+
@position = position
|
493
|
+
@content = content
|
494
|
+
end
|
495
|
+
attr_reader :compiler
|
496
|
+
attr_reader :position
|
497
|
+
attr_reader :content
|
498
|
+
end
|
499
|
+
class VerbatimNode < Node
|
500
|
+
def initialize(compiler, position, content)
|
501
|
+
@compiler = compiler
|
502
|
+
@position = position
|
503
|
+
@content = content
|
504
|
+
end
|
505
|
+
attr_reader :compiler
|
506
|
+
attr_reader :position
|
507
|
+
attr_reader :content
|
508
|
+
end
|
509
|
+
end
|
510
|
+
module ::TinyMarkdownConstruction
|
511
|
+
def block_quote(compiler, position, content)
|
512
|
+
::TinyMarkdown::BlockQuoteNode.new(compiler, position, content)
|
513
|
+
end
|
514
|
+
def bullet_list(compiler, position, content)
|
515
|
+
::TinyMarkdown::BulletListNode.new(compiler, position, content)
|
516
|
+
end
|
517
|
+
def bullet_list_item(compiler, position, content)
|
518
|
+
::TinyMarkdown::BulletListItemNode.new(compiler, position, content)
|
519
|
+
end
|
520
|
+
def document(compiler, position, content)
|
521
|
+
::TinyMarkdown::DocumentNode.new(compiler, position, content)
|
522
|
+
end
|
523
|
+
def headline(compiler, position, level, content)
|
524
|
+
::TinyMarkdown::HeadlineNode.new(compiler, position, level, content)
|
525
|
+
end
|
526
|
+
def horizontal_rule(compiler, position)
|
527
|
+
::TinyMarkdown::HorizontalRuleNode.new(compiler, position)
|
528
|
+
end
|
529
|
+
def inline_element(compiler, position, name, content)
|
530
|
+
::TinyMarkdown::InlineElementNode.new(compiler, position, name, content)
|
531
|
+
end
|
532
|
+
def linebreak(compiler, position)
|
533
|
+
::TinyMarkdown::LineBreakNode.new(compiler, position)
|
534
|
+
end
|
535
|
+
def list(compiler, position, content)
|
536
|
+
::TinyMarkdown::ListNode.new(compiler, position, content)
|
537
|
+
end
|
538
|
+
def para(compiler, position, content)
|
539
|
+
::TinyMarkdown::ParaNode.new(compiler, position, content)
|
540
|
+
end
|
541
|
+
def plain(compiler, position, content)
|
542
|
+
::TinyMarkdown::PlainNode.new(compiler, position, content)
|
543
|
+
end
|
544
|
+
def text(compiler, position, content)
|
545
|
+
::TinyMarkdown::TextNode.new(compiler, position, content)
|
546
|
+
end
|
547
|
+
def verbatim(compiler, position, content)
|
548
|
+
::TinyMarkdown::VerbatimNode.new(compiler, position, content)
|
549
|
+
end
|
550
|
+
end
|
551
|
+
include ::TinyMarkdownConstruction
|
552
|
+
def setup_foreign_grammar; end
|
553
|
+
|
554
|
+
# root = Start
|
555
|
+
def _root
|
556
|
+
_tmp = apply(:_Start)
|
557
|
+
set_failed_rule :_root unless _tmp
|
558
|
+
return _tmp
|
559
|
+
end
|
560
|
+
|
561
|
+
# Start = &. Doc:c { @ast = c }
|
562
|
+
def _Start
|
563
|
+
|
564
|
+
_save = self.pos
|
565
|
+
while true # sequence
|
566
|
+
_save1 = self.pos
|
567
|
+
_tmp = get_byte
|
568
|
+
self.pos = _save1
|
569
|
+
unless _tmp
|
570
|
+
self.pos = _save
|
571
|
+
break
|
572
|
+
end
|
573
|
+
_tmp = apply(:_Doc)
|
574
|
+
c = @result
|
575
|
+
unless _tmp
|
576
|
+
self.pos = _save
|
577
|
+
break
|
578
|
+
end
|
579
|
+
@result = begin; @ast = c ; end
|
580
|
+
_tmp = true
|
581
|
+
unless _tmp
|
582
|
+
self.pos = _save
|
583
|
+
end
|
584
|
+
break
|
585
|
+
end # end sequence
|
586
|
+
|
587
|
+
set_failed_rule :_Start unless _tmp
|
588
|
+
return _tmp
|
589
|
+
end
|
590
|
+
|
591
|
+
# Doc = Block*:c {document(self, position, c)}
|
592
|
+
def _Doc
|
593
|
+
|
594
|
+
_save = self.pos
|
595
|
+
while true # sequence
|
596
|
+
_ary = []
|
597
|
+
while true
|
598
|
+
_tmp = apply(:_Block)
|
599
|
+
_ary << @result if _tmp
|
600
|
+
break unless _tmp
|
601
|
+
end
|
602
|
+
_tmp = true
|
603
|
+
@result = _ary
|
604
|
+
c = @result
|
605
|
+
unless _tmp
|
606
|
+
self.pos = _save
|
607
|
+
break
|
608
|
+
end
|
609
|
+
@result = begin; document(self, position, c); end
|
610
|
+
_tmp = true
|
611
|
+
unless _tmp
|
612
|
+
self.pos = _save
|
613
|
+
end
|
614
|
+
break
|
615
|
+
end # end sequence
|
616
|
+
|
617
|
+
set_failed_rule :_Doc unless _tmp
|
618
|
+
return _tmp
|
619
|
+
end
|
620
|
+
|
621
|
+
# Block = BlankLine* (BlockQuote | Verbatim | HorizontalRule | Heading | BulletList | Para | Plain)
|
622
|
+
def _Block
|
623
|
+
|
624
|
+
_save = self.pos
|
625
|
+
while true # sequence
|
626
|
+
while true
|
627
|
+
_tmp = apply(:_BlankLine)
|
628
|
+
break unless _tmp
|
629
|
+
end
|
630
|
+
_tmp = true
|
631
|
+
unless _tmp
|
632
|
+
self.pos = _save
|
633
|
+
break
|
634
|
+
end
|
635
|
+
|
636
|
+
_save2 = self.pos
|
637
|
+
while true # choice
|
638
|
+
_tmp = apply(:_BlockQuote)
|
639
|
+
break if _tmp
|
640
|
+
self.pos = _save2
|
641
|
+
_tmp = apply(:_Verbatim)
|
642
|
+
break if _tmp
|
643
|
+
self.pos = _save2
|
644
|
+
_tmp = apply(:_HorizontalRule)
|
645
|
+
break if _tmp
|
646
|
+
self.pos = _save2
|
647
|
+
_tmp = apply(:_Heading)
|
648
|
+
break if _tmp
|
649
|
+
self.pos = _save2
|
650
|
+
_tmp = apply(:_BulletList)
|
651
|
+
break if _tmp
|
652
|
+
self.pos = _save2
|
653
|
+
_tmp = apply(:_Para)
|
654
|
+
break if _tmp
|
655
|
+
self.pos = _save2
|
656
|
+
_tmp = apply(:_Plain)
|
657
|
+
break if _tmp
|
658
|
+
self.pos = _save2
|
659
|
+
break
|
660
|
+
end # end choice
|
661
|
+
|
662
|
+
unless _tmp
|
663
|
+
self.pos = _save
|
664
|
+
end
|
665
|
+
break
|
666
|
+
end # end sequence
|
667
|
+
|
668
|
+
set_failed_rule :_Block unless _tmp
|
669
|
+
return _tmp
|
670
|
+
end
|
671
|
+
|
672
|
+
# Para = NonindentSpace Inlines:a BlankLine+ {para(self, position, a)}
|
673
|
+
def _Para
|
674
|
+
|
675
|
+
_save = self.pos
|
676
|
+
while true # sequence
|
677
|
+
_tmp = apply(:_NonindentSpace)
|
678
|
+
unless _tmp
|
679
|
+
self.pos = _save
|
680
|
+
break
|
681
|
+
end
|
682
|
+
_tmp = apply(:_Inlines)
|
683
|
+
a = @result
|
684
|
+
unless _tmp
|
685
|
+
self.pos = _save
|
686
|
+
break
|
687
|
+
end
|
688
|
+
_save1 = self.pos
|
689
|
+
_tmp = apply(:_BlankLine)
|
690
|
+
if _tmp
|
691
|
+
while true
|
692
|
+
_tmp = apply(:_BlankLine)
|
693
|
+
break unless _tmp
|
694
|
+
end
|
695
|
+
_tmp = true
|
696
|
+
else
|
697
|
+
self.pos = _save1
|
698
|
+
end
|
699
|
+
unless _tmp
|
700
|
+
self.pos = _save
|
701
|
+
break
|
702
|
+
end
|
703
|
+
@result = begin; para(self, position, a); end
|
704
|
+
_tmp = true
|
705
|
+
unless _tmp
|
706
|
+
self.pos = _save
|
707
|
+
end
|
708
|
+
break
|
709
|
+
end # end sequence
|
710
|
+
|
711
|
+
set_failed_rule :_Para unless _tmp
|
712
|
+
return _tmp
|
713
|
+
end
|
714
|
+
|
715
|
+
# Plain = Inlines:a {plain(self, position, a)}
|
716
|
+
def _Plain
|
717
|
+
|
718
|
+
_save = self.pos
|
719
|
+
while true # sequence
|
720
|
+
_tmp = apply(:_Inlines)
|
721
|
+
a = @result
|
722
|
+
unless _tmp
|
723
|
+
self.pos = _save
|
724
|
+
break
|
725
|
+
end
|
726
|
+
@result = begin; plain(self, position, a); end
|
727
|
+
_tmp = true
|
728
|
+
unless _tmp
|
729
|
+
self.pos = _save
|
730
|
+
end
|
731
|
+
break
|
732
|
+
end # end sequence
|
733
|
+
|
734
|
+
set_failed_rule :_Plain unless _tmp
|
735
|
+
return _tmp
|
736
|
+
end
|
737
|
+
|
738
|
+
# AtxInline = !Newline !(Sp "#"* Sp Newline) Inline:c { c }
|
739
|
+
def _AtxInline
|
740
|
+
|
741
|
+
_save = self.pos
|
742
|
+
while true # sequence
|
743
|
+
_save1 = self.pos
|
744
|
+
_tmp = apply(:_Newline)
|
745
|
+
_tmp = _tmp ? nil : true
|
746
|
+
self.pos = _save1
|
747
|
+
unless _tmp
|
748
|
+
self.pos = _save
|
749
|
+
break
|
750
|
+
end
|
751
|
+
_save2 = self.pos
|
752
|
+
|
753
|
+
_save3 = self.pos
|
754
|
+
while true # sequence
|
755
|
+
_tmp = apply(:_Sp)
|
756
|
+
unless _tmp
|
757
|
+
self.pos = _save3
|
758
|
+
break
|
759
|
+
end
|
760
|
+
while true
|
761
|
+
_tmp = match_string("#")
|
762
|
+
break unless _tmp
|
763
|
+
end
|
764
|
+
_tmp = true
|
765
|
+
unless _tmp
|
766
|
+
self.pos = _save3
|
767
|
+
break
|
768
|
+
end
|
769
|
+
_tmp = apply(:_Sp)
|
770
|
+
unless _tmp
|
771
|
+
self.pos = _save3
|
772
|
+
break
|
773
|
+
end
|
774
|
+
_tmp = apply(:_Newline)
|
775
|
+
unless _tmp
|
776
|
+
self.pos = _save3
|
777
|
+
end
|
778
|
+
break
|
779
|
+
end # end sequence
|
780
|
+
|
781
|
+
_tmp = _tmp ? nil : true
|
782
|
+
self.pos = _save2
|
783
|
+
unless _tmp
|
784
|
+
self.pos = _save
|
785
|
+
break
|
786
|
+
end
|
787
|
+
_tmp = apply(:_Inline)
|
788
|
+
c = @result
|
789
|
+
unless _tmp
|
790
|
+
self.pos = _save
|
791
|
+
break
|
792
|
+
end
|
793
|
+
@result = begin; c ; end
|
794
|
+
_tmp = true
|
795
|
+
unless _tmp
|
796
|
+
self.pos = _save
|
797
|
+
end
|
798
|
+
break
|
799
|
+
end # end sequence
|
800
|
+
|
801
|
+
set_failed_rule :_AtxInline unless _tmp
|
802
|
+
return _tmp
|
803
|
+
end
|
804
|
+
|
805
|
+
# AtxStart = < /######|#####|####|###|##|#/ > { text.length }
|
806
|
+
def _AtxStart
|
807
|
+
|
808
|
+
_save = self.pos
|
809
|
+
while true # sequence
|
810
|
+
_text_start = self.pos
|
811
|
+
_tmp = scan(/\A(?-mix:######|#####|####|###|##|#)/)
|
812
|
+
if _tmp
|
813
|
+
text = get_text(_text_start)
|
814
|
+
end
|
815
|
+
unless _tmp
|
816
|
+
self.pos = _save
|
817
|
+
break
|
818
|
+
end
|
819
|
+
@result = begin; text.length ; end
|
820
|
+
_tmp = true
|
821
|
+
unless _tmp
|
822
|
+
self.pos = _save
|
823
|
+
end
|
824
|
+
break
|
825
|
+
end # end sequence
|
826
|
+
|
827
|
+
set_failed_rule :_AtxStart unless _tmp
|
828
|
+
return _tmp
|
829
|
+
end
|
830
|
+
|
831
|
+
# AtxHeading = AtxStart:level Sp AtxInline+:c (Sp "#"* Sp)? Newline {headline(self, position, level, c)}
|
832
|
+
def _AtxHeading
|
833
|
+
|
834
|
+
_save = self.pos
|
835
|
+
while true # sequence
|
836
|
+
_tmp = apply(:_AtxStart)
|
837
|
+
level = @result
|
838
|
+
unless _tmp
|
839
|
+
self.pos = _save
|
840
|
+
break
|
841
|
+
end
|
842
|
+
_tmp = apply(:_Sp)
|
843
|
+
unless _tmp
|
844
|
+
self.pos = _save
|
845
|
+
break
|
846
|
+
end
|
847
|
+
_save1 = self.pos
|
848
|
+
_ary = []
|
849
|
+
_tmp = apply(:_AtxInline)
|
850
|
+
if _tmp
|
851
|
+
_ary << @result
|
852
|
+
while true
|
853
|
+
_tmp = apply(:_AtxInline)
|
854
|
+
_ary << @result if _tmp
|
855
|
+
break unless _tmp
|
856
|
+
end
|
857
|
+
_tmp = true
|
858
|
+
@result = _ary
|
859
|
+
else
|
860
|
+
self.pos = _save1
|
861
|
+
end
|
862
|
+
c = @result
|
863
|
+
unless _tmp
|
864
|
+
self.pos = _save
|
865
|
+
break
|
866
|
+
end
|
867
|
+
_save2 = self.pos
|
868
|
+
|
869
|
+
_save3 = self.pos
|
870
|
+
while true # sequence
|
871
|
+
_tmp = apply(:_Sp)
|
872
|
+
unless _tmp
|
873
|
+
self.pos = _save3
|
874
|
+
break
|
875
|
+
end
|
876
|
+
while true
|
877
|
+
_tmp = match_string("#")
|
878
|
+
break unless _tmp
|
879
|
+
end
|
880
|
+
_tmp = true
|
881
|
+
unless _tmp
|
882
|
+
self.pos = _save3
|
883
|
+
break
|
884
|
+
end
|
885
|
+
_tmp = apply(:_Sp)
|
886
|
+
unless _tmp
|
887
|
+
self.pos = _save3
|
888
|
+
end
|
889
|
+
break
|
890
|
+
end # end sequence
|
891
|
+
|
892
|
+
unless _tmp
|
893
|
+
_tmp = true
|
894
|
+
self.pos = _save2
|
895
|
+
end
|
896
|
+
unless _tmp
|
897
|
+
self.pos = _save
|
898
|
+
break
|
899
|
+
end
|
900
|
+
_tmp = apply(:_Newline)
|
901
|
+
unless _tmp
|
902
|
+
self.pos = _save
|
903
|
+
break
|
904
|
+
end
|
905
|
+
@result = begin; headline(self, position, level, c); end
|
906
|
+
_tmp = true
|
907
|
+
unless _tmp
|
908
|
+
self.pos = _save
|
909
|
+
end
|
910
|
+
break
|
911
|
+
end # end sequence
|
912
|
+
|
913
|
+
set_failed_rule :_AtxHeading unless _tmp
|
914
|
+
return _tmp
|
915
|
+
end
|
916
|
+
|
917
|
+
# Heading = AtxHeading
|
918
|
+
def _Heading
|
919
|
+
_tmp = apply(:_AtxHeading)
|
920
|
+
set_failed_rule :_Heading unless _tmp
|
921
|
+
return _tmp
|
922
|
+
end
|
923
|
+
|
924
|
+
# BlockQuote = BlockQuoteRaw:c {block_quote(self, position, c)}
|
925
|
+
def _BlockQuote
|
926
|
+
|
927
|
+
_save = self.pos
|
928
|
+
while true # sequence
|
929
|
+
_tmp = apply(:_BlockQuoteRaw)
|
930
|
+
c = @result
|
931
|
+
unless _tmp
|
932
|
+
self.pos = _save
|
933
|
+
break
|
934
|
+
end
|
935
|
+
@result = begin; block_quote(self, position, c); end
|
936
|
+
_tmp = true
|
937
|
+
unless _tmp
|
938
|
+
self.pos = _save
|
939
|
+
end
|
940
|
+
break
|
941
|
+
end # end sequence
|
942
|
+
|
943
|
+
set_failed_rule :_BlockQuote unless _tmp
|
944
|
+
return _tmp
|
945
|
+
end
|
946
|
+
|
947
|
+
# BlockQuoteRaw = (">" " "? Line:c { c })+:cc { cc }
|
948
|
+
def _BlockQuoteRaw
|
949
|
+
|
950
|
+
_save = self.pos
|
951
|
+
while true # sequence
|
952
|
+
_save1 = self.pos
|
953
|
+
_ary = []
|
954
|
+
|
955
|
+
_save2 = self.pos
|
956
|
+
while true # sequence
|
957
|
+
_tmp = match_string(">")
|
958
|
+
unless _tmp
|
959
|
+
self.pos = _save2
|
960
|
+
break
|
961
|
+
end
|
962
|
+
_save3 = self.pos
|
963
|
+
_tmp = match_string(" ")
|
964
|
+
unless _tmp
|
965
|
+
_tmp = true
|
966
|
+
self.pos = _save3
|
967
|
+
end
|
968
|
+
unless _tmp
|
969
|
+
self.pos = _save2
|
970
|
+
break
|
971
|
+
end
|
972
|
+
_tmp = apply(:_Line)
|
973
|
+
c = @result
|
974
|
+
unless _tmp
|
975
|
+
self.pos = _save2
|
976
|
+
break
|
977
|
+
end
|
978
|
+
@result = begin; c ; end
|
979
|
+
_tmp = true
|
980
|
+
unless _tmp
|
981
|
+
self.pos = _save2
|
982
|
+
end
|
983
|
+
break
|
984
|
+
end # end sequence
|
985
|
+
|
986
|
+
if _tmp
|
987
|
+
_ary << @result
|
988
|
+
while true
|
989
|
+
|
990
|
+
_save4 = self.pos
|
991
|
+
while true # sequence
|
992
|
+
_tmp = match_string(">")
|
993
|
+
unless _tmp
|
994
|
+
self.pos = _save4
|
995
|
+
break
|
996
|
+
end
|
997
|
+
_save5 = self.pos
|
998
|
+
_tmp = match_string(" ")
|
999
|
+
unless _tmp
|
1000
|
+
_tmp = true
|
1001
|
+
self.pos = _save5
|
1002
|
+
end
|
1003
|
+
unless _tmp
|
1004
|
+
self.pos = _save4
|
1005
|
+
break
|
1006
|
+
end
|
1007
|
+
_tmp = apply(:_Line)
|
1008
|
+
c = @result
|
1009
|
+
unless _tmp
|
1010
|
+
self.pos = _save4
|
1011
|
+
break
|
1012
|
+
end
|
1013
|
+
@result = begin; c ; end
|
1014
|
+
_tmp = true
|
1015
|
+
unless _tmp
|
1016
|
+
self.pos = _save4
|
1017
|
+
end
|
1018
|
+
break
|
1019
|
+
end # end sequence
|
1020
|
+
|
1021
|
+
_ary << @result if _tmp
|
1022
|
+
break unless _tmp
|
1023
|
+
end
|
1024
|
+
_tmp = true
|
1025
|
+
@result = _ary
|
1026
|
+
else
|
1027
|
+
self.pos = _save1
|
1028
|
+
end
|
1029
|
+
cc = @result
|
1030
|
+
unless _tmp
|
1031
|
+
self.pos = _save
|
1032
|
+
break
|
1033
|
+
end
|
1034
|
+
@result = begin; cc ; end
|
1035
|
+
_tmp = true
|
1036
|
+
unless _tmp
|
1037
|
+
self.pos = _save
|
1038
|
+
end
|
1039
|
+
break
|
1040
|
+
end # end sequence
|
1041
|
+
|
1042
|
+
set_failed_rule :_BlockQuoteRaw unless _tmp
|
1043
|
+
return _tmp
|
1044
|
+
end
|
1045
|
+
|
1046
|
+
# NonblankIndentedLine = !BlankLine IndentedLine:c { c }
|
1047
|
+
def _NonblankIndentedLine
|
1048
|
+
|
1049
|
+
_save = self.pos
|
1050
|
+
while true # sequence
|
1051
|
+
_save1 = self.pos
|
1052
|
+
_tmp = apply(:_BlankLine)
|
1053
|
+
_tmp = _tmp ? nil : true
|
1054
|
+
self.pos = _save1
|
1055
|
+
unless _tmp
|
1056
|
+
self.pos = _save
|
1057
|
+
break
|
1058
|
+
end
|
1059
|
+
_tmp = apply(:_IndentedLine)
|
1060
|
+
c = @result
|
1061
|
+
unless _tmp
|
1062
|
+
self.pos = _save
|
1063
|
+
break
|
1064
|
+
end
|
1065
|
+
@result = begin; c ; end
|
1066
|
+
_tmp = true
|
1067
|
+
unless _tmp
|
1068
|
+
self.pos = _save
|
1069
|
+
end
|
1070
|
+
break
|
1071
|
+
end # end sequence
|
1072
|
+
|
1073
|
+
set_failed_rule :_NonblankIndentedLine unless _tmp
|
1074
|
+
return _tmp
|
1075
|
+
end
|
1076
|
+
|
1077
|
+
# VerbatimChunk = (BlankLine { text(self,position,"\n") })*:c1 (NonblankIndentedLine:c { [c, text(self,position,"\n")] })+:c2 { c1 + c2.flatten }
|
1078
|
+
def _VerbatimChunk
|
1079
|
+
|
1080
|
+
_save = self.pos
|
1081
|
+
while true # sequence
|
1082
|
+
_ary = []
|
1083
|
+
while true
|
1084
|
+
|
1085
|
+
_save2 = self.pos
|
1086
|
+
while true # sequence
|
1087
|
+
_tmp = apply(:_BlankLine)
|
1088
|
+
unless _tmp
|
1089
|
+
self.pos = _save2
|
1090
|
+
break
|
1091
|
+
end
|
1092
|
+
@result = begin; text(self,position,"\n") ; end
|
1093
|
+
_tmp = true
|
1094
|
+
unless _tmp
|
1095
|
+
self.pos = _save2
|
1096
|
+
end
|
1097
|
+
break
|
1098
|
+
end # end sequence
|
1099
|
+
|
1100
|
+
_ary << @result if _tmp
|
1101
|
+
break unless _tmp
|
1102
|
+
end
|
1103
|
+
_tmp = true
|
1104
|
+
@result = _ary
|
1105
|
+
c1 = @result
|
1106
|
+
unless _tmp
|
1107
|
+
self.pos = _save
|
1108
|
+
break
|
1109
|
+
end
|
1110
|
+
_save3 = self.pos
|
1111
|
+
_ary = []
|
1112
|
+
|
1113
|
+
_save4 = self.pos
|
1114
|
+
while true # sequence
|
1115
|
+
_tmp = apply(:_NonblankIndentedLine)
|
1116
|
+
c = @result
|
1117
|
+
unless _tmp
|
1118
|
+
self.pos = _save4
|
1119
|
+
break
|
1120
|
+
end
|
1121
|
+
@result = begin; [c, text(self,position,"\n")] ; end
|
1122
|
+
_tmp = true
|
1123
|
+
unless _tmp
|
1124
|
+
self.pos = _save4
|
1125
|
+
end
|
1126
|
+
break
|
1127
|
+
end # end sequence
|
1128
|
+
|
1129
|
+
if _tmp
|
1130
|
+
_ary << @result
|
1131
|
+
while true
|
1132
|
+
|
1133
|
+
_save5 = self.pos
|
1134
|
+
while true # sequence
|
1135
|
+
_tmp = apply(:_NonblankIndentedLine)
|
1136
|
+
c = @result
|
1137
|
+
unless _tmp
|
1138
|
+
self.pos = _save5
|
1139
|
+
break
|
1140
|
+
end
|
1141
|
+
@result = begin; [c, text(self,position,"\n")] ; end
|
1142
|
+
_tmp = true
|
1143
|
+
unless _tmp
|
1144
|
+
self.pos = _save5
|
1145
|
+
end
|
1146
|
+
break
|
1147
|
+
end # end sequence
|
1148
|
+
|
1149
|
+
_ary << @result if _tmp
|
1150
|
+
break unless _tmp
|
1151
|
+
end
|
1152
|
+
_tmp = true
|
1153
|
+
@result = _ary
|
1154
|
+
else
|
1155
|
+
self.pos = _save3
|
1156
|
+
end
|
1157
|
+
c2 = @result
|
1158
|
+
unless _tmp
|
1159
|
+
self.pos = _save
|
1160
|
+
break
|
1161
|
+
end
|
1162
|
+
@result = begin; c1 + c2.flatten ; end
|
1163
|
+
_tmp = true
|
1164
|
+
unless _tmp
|
1165
|
+
self.pos = _save
|
1166
|
+
end
|
1167
|
+
break
|
1168
|
+
end # end sequence
|
1169
|
+
|
1170
|
+
set_failed_rule :_VerbatimChunk unless _tmp
|
1171
|
+
return _tmp
|
1172
|
+
end
|
1173
|
+
|
1174
|
+
# Verbatim = VerbatimChunk+:cc {verbatim(self, position, cc.flatten)}
|
1175
|
+
def _Verbatim
|
1176
|
+
|
1177
|
+
_save = self.pos
|
1178
|
+
while true # sequence
|
1179
|
+
_save1 = self.pos
|
1180
|
+
_ary = []
|
1181
|
+
_tmp = apply(:_VerbatimChunk)
|
1182
|
+
if _tmp
|
1183
|
+
_ary << @result
|
1184
|
+
while true
|
1185
|
+
_tmp = apply(:_VerbatimChunk)
|
1186
|
+
_ary << @result if _tmp
|
1187
|
+
break unless _tmp
|
1188
|
+
end
|
1189
|
+
_tmp = true
|
1190
|
+
@result = _ary
|
1191
|
+
else
|
1192
|
+
self.pos = _save1
|
1193
|
+
end
|
1194
|
+
cc = @result
|
1195
|
+
unless _tmp
|
1196
|
+
self.pos = _save
|
1197
|
+
break
|
1198
|
+
end
|
1199
|
+
@result = begin; verbatim(self, position, cc.flatten); end
|
1200
|
+
_tmp = true
|
1201
|
+
unless _tmp
|
1202
|
+
self.pos = _save
|
1203
|
+
end
|
1204
|
+
break
|
1205
|
+
end # end sequence
|
1206
|
+
|
1207
|
+
set_failed_rule :_Verbatim unless _tmp
|
1208
|
+
return _tmp
|
1209
|
+
end
|
1210
|
+
|
1211
|
+
# HorizontalRule = NonindentSpace ("*" Sp "*" Sp "*" (Sp "*")* | "-" Sp "-" Sp "-" (Sp "-")* | "_" Sp "_" Sp "_" (Sp "_")*) Sp Newline BlankLine+ {horizontal_rule(self, position)}
|
1212
|
+
def _HorizontalRule
|
1213
|
+
|
1214
|
+
_save = self.pos
|
1215
|
+
while true # sequence
|
1216
|
+
_tmp = apply(:_NonindentSpace)
|
1217
|
+
unless _tmp
|
1218
|
+
self.pos = _save
|
1219
|
+
break
|
1220
|
+
end
|
1221
|
+
|
1222
|
+
_save1 = self.pos
|
1223
|
+
while true # choice
|
1224
|
+
|
1225
|
+
_save2 = self.pos
|
1226
|
+
while true # sequence
|
1227
|
+
_tmp = match_string("*")
|
1228
|
+
unless _tmp
|
1229
|
+
self.pos = _save2
|
1230
|
+
break
|
1231
|
+
end
|
1232
|
+
_tmp = apply(:_Sp)
|
1233
|
+
unless _tmp
|
1234
|
+
self.pos = _save2
|
1235
|
+
break
|
1236
|
+
end
|
1237
|
+
_tmp = match_string("*")
|
1238
|
+
unless _tmp
|
1239
|
+
self.pos = _save2
|
1240
|
+
break
|
1241
|
+
end
|
1242
|
+
_tmp = apply(:_Sp)
|
1243
|
+
unless _tmp
|
1244
|
+
self.pos = _save2
|
1245
|
+
break
|
1246
|
+
end
|
1247
|
+
_tmp = match_string("*")
|
1248
|
+
unless _tmp
|
1249
|
+
self.pos = _save2
|
1250
|
+
break
|
1251
|
+
end
|
1252
|
+
while true
|
1253
|
+
|
1254
|
+
_save4 = self.pos
|
1255
|
+
while true # sequence
|
1256
|
+
_tmp = apply(:_Sp)
|
1257
|
+
unless _tmp
|
1258
|
+
self.pos = _save4
|
1259
|
+
break
|
1260
|
+
end
|
1261
|
+
_tmp = match_string("*")
|
1262
|
+
unless _tmp
|
1263
|
+
self.pos = _save4
|
1264
|
+
end
|
1265
|
+
break
|
1266
|
+
end # end sequence
|
1267
|
+
|
1268
|
+
break unless _tmp
|
1269
|
+
end
|
1270
|
+
_tmp = true
|
1271
|
+
unless _tmp
|
1272
|
+
self.pos = _save2
|
1273
|
+
end
|
1274
|
+
break
|
1275
|
+
end # end sequence
|
1276
|
+
|
1277
|
+
break if _tmp
|
1278
|
+
self.pos = _save1
|
1279
|
+
|
1280
|
+
_save5 = self.pos
|
1281
|
+
while true # sequence
|
1282
|
+
_tmp = match_string("-")
|
1283
|
+
unless _tmp
|
1284
|
+
self.pos = _save5
|
1285
|
+
break
|
1286
|
+
end
|
1287
|
+
_tmp = apply(:_Sp)
|
1288
|
+
unless _tmp
|
1289
|
+
self.pos = _save5
|
1290
|
+
break
|
1291
|
+
end
|
1292
|
+
_tmp = match_string("-")
|
1293
|
+
unless _tmp
|
1294
|
+
self.pos = _save5
|
1295
|
+
break
|
1296
|
+
end
|
1297
|
+
_tmp = apply(:_Sp)
|
1298
|
+
unless _tmp
|
1299
|
+
self.pos = _save5
|
1300
|
+
break
|
1301
|
+
end
|
1302
|
+
_tmp = match_string("-")
|
1303
|
+
unless _tmp
|
1304
|
+
self.pos = _save5
|
1305
|
+
break
|
1306
|
+
end
|
1307
|
+
while true
|
1308
|
+
|
1309
|
+
_save7 = self.pos
|
1310
|
+
while true # sequence
|
1311
|
+
_tmp = apply(:_Sp)
|
1312
|
+
unless _tmp
|
1313
|
+
self.pos = _save7
|
1314
|
+
break
|
1315
|
+
end
|
1316
|
+
_tmp = match_string("-")
|
1317
|
+
unless _tmp
|
1318
|
+
self.pos = _save7
|
1319
|
+
end
|
1320
|
+
break
|
1321
|
+
end # end sequence
|
1322
|
+
|
1323
|
+
break unless _tmp
|
1324
|
+
end
|
1325
|
+
_tmp = true
|
1326
|
+
unless _tmp
|
1327
|
+
self.pos = _save5
|
1328
|
+
end
|
1329
|
+
break
|
1330
|
+
end # end sequence
|
1331
|
+
|
1332
|
+
break if _tmp
|
1333
|
+
self.pos = _save1
|
1334
|
+
|
1335
|
+
_save8 = self.pos
|
1336
|
+
while true # sequence
|
1337
|
+
_tmp = match_string("_")
|
1338
|
+
unless _tmp
|
1339
|
+
self.pos = _save8
|
1340
|
+
break
|
1341
|
+
end
|
1342
|
+
_tmp = apply(:_Sp)
|
1343
|
+
unless _tmp
|
1344
|
+
self.pos = _save8
|
1345
|
+
break
|
1346
|
+
end
|
1347
|
+
_tmp = match_string("_")
|
1348
|
+
unless _tmp
|
1349
|
+
self.pos = _save8
|
1350
|
+
break
|
1351
|
+
end
|
1352
|
+
_tmp = apply(:_Sp)
|
1353
|
+
unless _tmp
|
1354
|
+
self.pos = _save8
|
1355
|
+
break
|
1356
|
+
end
|
1357
|
+
_tmp = match_string("_")
|
1358
|
+
unless _tmp
|
1359
|
+
self.pos = _save8
|
1360
|
+
break
|
1361
|
+
end
|
1362
|
+
while true
|
1363
|
+
|
1364
|
+
_save10 = self.pos
|
1365
|
+
while true # sequence
|
1366
|
+
_tmp = apply(:_Sp)
|
1367
|
+
unless _tmp
|
1368
|
+
self.pos = _save10
|
1369
|
+
break
|
1370
|
+
end
|
1371
|
+
_tmp = match_string("_")
|
1372
|
+
unless _tmp
|
1373
|
+
self.pos = _save10
|
1374
|
+
end
|
1375
|
+
break
|
1376
|
+
end # end sequence
|
1377
|
+
|
1378
|
+
break unless _tmp
|
1379
|
+
end
|
1380
|
+
_tmp = true
|
1381
|
+
unless _tmp
|
1382
|
+
self.pos = _save8
|
1383
|
+
end
|
1384
|
+
break
|
1385
|
+
end # end sequence
|
1386
|
+
|
1387
|
+
break if _tmp
|
1388
|
+
self.pos = _save1
|
1389
|
+
break
|
1390
|
+
end # end choice
|
1391
|
+
|
1392
|
+
unless _tmp
|
1393
|
+
self.pos = _save
|
1394
|
+
break
|
1395
|
+
end
|
1396
|
+
_tmp = apply(:_Sp)
|
1397
|
+
unless _tmp
|
1398
|
+
self.pos = _save
|
1399
|
+
break
|
1400
|
+
end
|
1401
|
+
_tmp = apply(:_Newline)
|
1402
|
+
unless _tmp
|
1403
|
+
self.pos = _save
|
1404
|
+
break
|
1405
|
+
end
|
1406
|
+
_save11 = self.pos
|
1407
|
+
_tmp = apply(:_BlankLine)
|
1408
|
+
if _tmp
|
1409
|
+
while true
|
1410
|
+
_tmp = apply(:_BlankLine)
|
1411
|
+
break unless _tmp
|
1412
|
+
end
|
1413
|
+
_tmp = true
|
1414
|
+
else
|
1415
|
+
self.pos = _save11
|
1416
|
+
end
|
1417
|
+
unless _tmp
|
1418
|
+
self.pos = _save
|
1419
|
+
break
|
1420
|
+
end
|
1421
|
+
@result = begin; horizontal_rule(self, position); end
|
1422
|
+
_tmp = true
|
1423
|
+
unless _tmp
|
1424
|
+
self.pos = _save
|
1425
|
+
end
|
1426
|
+
break
|
1427
|
+
end # end sequence
|
1428
|
+
|
1429
|
+
set_failed_rule :_HorizontalRule unless _tmp
|
1430
|
+
return _tmp
|
1431
|
+
end
|
1432
|
+
|
1433
|
+
# Bullet = !HorizontalRule NonindentSpace ("+" | "*" | "-") Spacechar+
|
1434
|
+
def _Bullet
|
1435
|
+
|
1436
|
+
_save = self.pos
|
1437
|
+
while true # sequence
|
1438
|
+
_save1 = self.pos
|
1439
|
+
_tmp = apply(:_HorizontalRule)
|
1440
|
+
_tmp = _tmp ? nil : true
|
1441
|
+
self.pos = _save1
|
1442
|
+
unless _tmp
|
1443
|
+
self.pos = _save
|
1444
|
+
break
|
1445
|
+
end
|
1446
|
+
_tmp = apply(:_NonindentSpace)
|
1447
|
+
unless _tmp
|
1448
|
+
self.pos = _save
|
1449
|
+
break
|
1450
|
+
end
|
1451
|
+
|
1452
|
+
_save2 = self.pos
|
1453
|
+
while true # choice
|
1454
|
+
_tmp = match_string("+")
|
1455
|
+
break if _tmp
|
1456
|
+
self.pos = _save2
|
1457
|
+
_tmp = match_string("*")
|
1458
|
+
break if _tmp
|
1459
|
+
self.pos = _save2
|
1460
|
+
_tmp = match_string("-")
|
1461
|
+
break if _tmp
|
1462
|
+
self.pos = _save2
|
1463
|
+
break
|
1464
|
+
end # end choice
|
1465
|
+
|
1466
|
+
unless _tmp
|
1467
|
+
self.pos = _save
|
1468
|
+
break
|
1469
|
+
end
|
1470
|
+
_save3 = self.pos
|
1471
|
+
_tmp = apply(:_Spacechar)
|
1472
|
+
if _tmp
|
1473
|
+
while true
|
1474
|
+
_tmp = apply(:_Spacechar)
|
1475
|
+
break unless _tmp
|
1476
|
+
end
|
1477
|
+
_tmp = true
|
1478
|
+
else
|
1479
|
+
self.pos = _save3
|
1480
|
+
end
|
1481
|
+
unless _tmp
|
1482
|
+
self.pos = _save
|
1483
|
+
end
|
1484
|
+
break
|
1485
|
+
end # end sequence
|
1486
|
+
|
1487
|
+
set_failed_rule :_Bullet unless _tmp
|
1488
|
+
return _tmp
|
1489
|
+
end
|
1490
|
+
|
1491
|
+
# BulletList = &Bullet ListTight:c {bullet_list(self, position, c)}
|
1492
|
+
def _BulletList
|
1493
|
+
|
1494
|
+
_save = self.pos
|
1495
|
+
while true # sequence
|
1496
|
+
_save1 = self.pos
|
1497
|
+
_tmp = apply(:_Bullet)
|
1498
|
+
self.pos = _save1
|
1499
|
+
unless _tmp
|
1500
|
+
self.pos = _save
|
1501
|
+
break
|
1502
|
+
end
|
1503
|
+
_tmp = apply(:_ListTight)
|
1504
|
+
c = @result
|
1505
|
+
unless _tmp
|
1506
|
+
self.pos = _save
|
1507
|
+
break
|
1508
|
+
end
|
1509
|
+
@result = begin; bullet_list(self, position, c); end
|
1510
|
+
_tmp = true
|
1511
|
+
unless _tmp
|
1512
|
+
self.pos = _save
|
1513
|
+
end
|
1514
|
+
break
|
1515
|
+
end # end sequence
|
1516
|
+
|
1517
|
+
set_failed_rule :_BulletList unless _tmp
|
1518
|
+
return _tmp
|
1519
|
+
end
|
1520
|
+
|
1521
|
+
# ListTight = ListItemTight+:cc BlankLine* !Bullet { cc }
|
1522
|
+
def _ListTight
|
1523
|
+
|
1524
|
+
_save = self.pos
|
1525
|
+
while true # sequence
|
1526
|
+
_save1 = self.pos
|
1527
|
+
_ary = []
|
1528
|
+
_tmp = apply(:_ListItemTight)
|
1529
|
+
if _tmp
|
1530
|
+
_ary << @result
|
1531
|
+
while true
|
1532
|
+
_tmp = apply(:_ListItemTight)
|
1533
|
+
_ary << @result if _tmp
|
1534
|
+
break unless _tmp
|
1535
|
+
end
|
1536
|
+
_tmp = true
|
1537
|
+
@result = _ary
|
1538
|
+
else
|
1539
|
+
self.pos = _save1
|
1540
|
+
end
|
1541
|
+
cc = @result
|
1542
|
+
unless _tmp
|
1543
|
+
self.pos = _save
|
1544
|
+
break
|
1545
|
+
end
|
1546
|
+
while true
|
1547
|
+
_tmp = apply(:_BlankLine)
|
1548
|
+
break unless _tmp
|
1549
|
+
end
|
1550
|
+
_tmp = true
|
1551
|
+
unless _tmp
|
1552
|
+
self.pos = _save
|
1553
|
+
break
|
1554
|
+
end
|
1555
|
+
_save3 = self.pos
|
1556
|
+
_tmp = apply(:_Bullet)
|
1557
|
+
_tmp = _tmp ? nil : true
|
1558
|
+
self.pos = _save3
|
1559
|
+
unless _tmp
|
1560
|
+
self.pos = _save
|
1561
|
+
break
|
1562
|
+
end
|
1563
|
+
@result = begin; cc ; end
|
1564
|
+
_tmp = true
|
1565
|
+
unless _tmp
|
1566
|
+
self.pos = _save
|
1567
|
+
end
|
1568
|
+
break
|
1569
|
+
end # end sequence
|
1570
|
+
|
1571
|
+
set_failed_rule :_ListTight unless _tmp
|
1572
|
+
return _tmp
|
1573
|
+
end
|
1574
|
+
|
1575
|
+
# ListItemTight = Bullet ListBlock:c {bullet_list_item(self, position, c)}
|
1576
|
+
def _ListItemTight
|
1577
|
+
|
1578
|
+
_save = self.pos
|
1579
|
+
while true # sequence
|
1580
|
+
_tmp = apply(:_Bullet)
|
1581
|
+
unless _tmp
|
1582
|
+
self.pos = _save
|
1583
|
+
break
|
1584
|
+
end
|
1585
|
+
_tmp = apply(:_ListBlock)
|
1586
|
+
c = @result
|
1587
|
+
unless _tmp
|
1588
|
+
self.pos = _save
|
1589
|
+
break
|
1590
|
+
end
|
1591
|
+
@result = begin; bullet_list_item(self, position, c); end
|
1592
|
+
_tmp = true
|
1593
|
+
unless _tmp
|
1594
|
+
self.pos = _save
|
1595
|
+
end
|
1596
|
+
break
|
1597
|
+
end # end sequence
|
1598
|
+
|
1599
|
+
set_failed_rule :_ListItemTight unless _tmp
|
1600
|
+
return _tmp
|
1601
|
+
end
|
1602
|
+
|
1603
|
+
# ListBlock = !BlankLine Line:c ListBlockLine*:cc { cc.unshift(c) }
|
1604
|
+
def _ListBlock
|
1605
|
+
|
1606
|
+
_save = self.pos
|
1607
|
+
while true # sequence
|
1608
|
+
_save1 = self.pos
|
1609
|
+
_tmp = apply(:_BlankLine)
|
1610
|
+
_tmp = _tmp ? nil : true
|
1611
|
+
self.pos = _save1
|
1612
|
+
unless _tmp
|
1613
|
+
self.pos = _save
|
1614
|
+
break
|
1615
|
+
end
|
1616
|
+
_tmp = apply(:_Line)
|
1617
|
+
c = @result
|
1618
|
+
unless _tmp
|
1619
|
+
self.pos = _save
|
1620
|
+
break
|
1621
|
+
end
|
1622
|
+
_ary = []
|
1623
|
+
while true
|
1624
|
+
_tmp = apply(:_ListBlockLine)
|
1625
|
+
_ary << @result if _tmp
|
1626
|
+
break unless _tmp
|
1627
|
+
end
|
1628
|
+
_tmp = true
|
1629
|
+
@result = _ary
|
1630
|
+
cc = @result
|
1631
|
+
unless _tmp
|
1632
|
+
self.pos = _save
|
1633
|
+
break
|
1634
|
+
end
|
1635
|
+
@result = begin; cc.unshift(c) ; end
|
1636
|
+
_tmp = true
|
1637
|
+
unless _tmp
|
1638
|
+
self.pos = _save
|
1639
|
+
end
|
1640
|
+
break
|
1641
|
+
end # end sequence
|
1642
|
+
|
1643
|
+
set_failed_rule :_ListBlock unless _tmp
|
1644
|
+
return _tmp
|
1645
|
+
end
|
1646
|
+
|
1647
|
+
# ListBlockLine = !BlankLine !(Indent? Bullet) !HorizontalRule OptionallyIndentedLine
|
1648
|
+
def _ListBlockLine
|
1649
|
+
|
1650
|
+
_save = self.pos
|
1651
|
+
while true # sequence
|
1652
|
+
_save1 = self.pos
|
1653
|
+
_tmp = apply(:_BlankLine)
|
1654
|
+
_tmp = _tmp ? nil : true
|
1655
|
+
self.pos = _save1
|
1656
|
+
unless _tmp
|
1657
|
+
self.pos = _save
|
1658
|
+
break
|
1659
|
+
end
|
1660
|
+
_save2 = self.pos
|
1661
|
+
|
1662
|
+
_save3 = self.pos
|
1663
|
+
while true # sequence
|
1664
|
+
_save4 = self.pos
|
1665
|
+
_tmp = apply(:_Indent)
|
1666
|
+
unless _tmp
|
1667
|
+
_tmp = true
|
1668
|
+
self.pos = _save4
|
1669
|
+
end
|
1670
|
+
unless _tmp
|
1671
|
+
self.pos = _save3
|
1672
|
+
break
|
1673
|
+
end
|
1674
|
+
_tmp = apply(:_Bullet)
|
1675
|
+
unless _tmp
|
1676
|
+
self.pos = _save3
|
1677
|
+
end
|
1678
|
+
break
|
1679
|
+
end # end sequence
|
1680
|
+
|
1681
|
+
_tmp = _tmp ? nil : true
|
1682
|
+
self.pos = _save2
|
1683
|
+
unless _tmp
|
1684
|
+
self.pos = _save
|
1685
|
+
break
|
1686
|
+
end
|
1687
|
+
_save5 = self.pos
|
1688
|
+
_tmp = apply(:_HorizontalRule)
|
1689
|
+
_tmp = _tmp ? nil : true
|
1690
|
+
self.pos = _save5
|
1691
|
+
unless _tmp
|
1692
|
+
self.pos = _save
|
1693
|
+
break
|
1694
|
+
end
|
1695
|
+
_tmp = apply(:_OptionallyIndentedLine)
|
1696
|
+
unless _tmp
|
1697
|
+
self.pos = _save
|
1698
|
+
end
|
1699
|
+
break
|
1700
|
+
end # end sequence
|
1701
|
+
|
1702
|
+
set_failed_rule :_ListBlockLine unless _tmp
|
1703
|
+
return _tmp
|
1704
|
+
end
|
1705
|
+
|
1706
|
+
# Inlines = (!Endline Inline:c { c } | Endline:c &Inline { c })+:cc Endline? { cc }
|
1707
|
+
def _Inlines
|
1708
|
+
|
1709
|
+
_save = self.pos
|
1710
|
+
while true # sequence
|
1711
|
+
_save1 = self.pos
|
1712
|
+
_ary = []
|
1713
|
+
|
1714
|
+
_save2 = self.pos
|
1715
|
+
while true # choice
|
1716
|
+
|
1717
|
+
_save3 = self.pos
|
1718
|
+
while true # sequence
|
1719
|
+
_save4 = self.pos
|
1720
|
+
_tmp = apply(:_Endline)
|
1721
|
+
_tmp = _tmp ? nil : true
|
1722
|
+
self.pos = _save4
|
1723
|
+
unless _tmp
|
1724
|
+
self.pos = _save3
|
1725
|
+
break
|
1726
|
+
end
|
1727
|
+
_tmp = apply(:_Inline)
|
1728
|
+
c = @result
|
1729
|
+
unless _tmp
|
1730
|
+
self.pos = _save3
|
1731
|
+
break
|
1732
|
+
end
|
1733
|
+
@result = begin; c ; end
|
1734
|
+
_tmp = true
|
1735
|
+
unless _tmp
|
1736
|
+
self.pos = _save3
|
1737
|
+
end
|
1738
|
+
break
|
1739
|
+
end # end sequence
|
1740
|
+
|
1741
|
+
break if _tmp
|
1742
|
+
self.pos = _save2
|
1743
|
+
|
1744
|
+
_save5 = self.pos
|
1745
|
+
while true # sequence
|
1746
|
+
_tmp = apply(:_Endline)
|
1747
|
+
c = @result
|
1748
|
+
unless _tmp
|
1749
|
+
self.pos = _save5
|
1750
|
+
break
|
1751
|
+
end
|
1752
|
+
_save6 = self.pos
|
1753
|
+
_tmp = apply(:_Inline)
|
1754
|
+
self.pos = _save6
|
1755
|
+
unless _tmp
|
1756
|
+
self.pos = _save5
|
1757
|
+
break
|
1758
|
+
end
|
1759
|
+
@result = begin; c ; end
|
1760
|
+
_tmp = true
|
1761
|
+
unless _tmp
|
1762
|
+
self.pos = _save5
|
1763
|
+
end
|
1764
|
+
break
|
1765
|
+
end # end sequence
|
1766
|
+
|
1767
|
+
break if _tmp
|
1768
|
+
self.pos = _save2
|
1769
|
+
break
|
1770
|
+
end # end choice
|
1771
|
+
|
1772
|
+
if _tmp
|
1773
|
+
_ary << @result
|
1774
|
+
while true
|
1775
|
+
|
1776
|
+
_save7 = self.pos
|
1777
|
+
while true # choice
|
1778
|
+
|
1779
|
+
_save8 = self.pos
|
1780
|
+
while true # sequence
|
1781
|
+
_save9 = self.pos
|
1782
|
+
_tmp = apply(:_Endline)
|
1783
|
+
_tmp = _tmp ? nil : true
|
1784
|
+
self.pos = _save9
|
1785
|
+
unless _tmp
|
1786
|
+
self.pos = _save8
|
1787
|
+
break
|
1788
|
+
end
|
1789
|
+
_tmp = apply(:_Inline)
|
1790
|
+
c = @result
|
1791
|
+
unless _tmp
|
1792
|
+
self.pos = _save8
|
1793
|
+
break
|
1794
|
+
end
|
1795
|
+
@result = begin; c ; end
|
1796
|
+
_tmp = true
|
1797
|
+
unless _tmp
|
1798
|
+
self.pos = _save8
|
1799
|
+
end
|
1800
|
+
break
|
1801
|
+
end # end sequence
|
1802
|
+
|
1803
|
+
break if _tmp
|
1804
|
+
self.pos = _save7
|
1805
|
+
|
1806
|
+
_save10 = self.pos
|
1807
|
+
while true # sequence
|
1808
|
+
_tmp = apply(:_Endline)
|
1809
|
+
c = @result
|
1810
|
+
unless _tmp
|
1811
|
+
self.pos = _save10
|
1812
|
+
break
|
1813
|
+
end
|
1814
|
+
_save11 = self.pos
|
1815
|
+
_tmp = apply(:_Inline)
|
1816
|
+
self.pos = _save11
|
1817
|
+
unless _tmp
|
1818
|
+
self.pos = _save10
|
1819
|
+
break
|
1820
|
+
end
|
1821
|
+
@result = begin; c ; end
|
1822
|
+
_tmp = true
|
1823
|
+
unless _tmp
|
1824
|
+
self.pos = _save10
|
1825
|
+
end
|
1826
|
+
break
|
1827
|
+
end # end sequence
|
1828
|
+
|
1829
|
+
break if _tmp
|
1830
|
+
self.pos = _save7
|
1831
|
+
break
|
1832
|
+
end # end choice
|
1833
|
+
|
1834
|
+
_ary << @result if _tmp
|
1835
|
+
break unless _tmp
|
1836
|
+
end
|
1837
|
+
_tmp = true
|
1838
|
+
@result = _ary
|
1839
|
+
else
|
1840
|
+
self.pos = _save1
|
1841
|
+
end
|
1842
|
+
cc = @result
|
1843
|
+
unless _tmp
|
1844
|
+
self.pos = _save
|
1845
|
+
break
|
1846
|
+
end
|
1847
|
+
_save12 = self.pos
|
1848
|
+
_tmp = apply(:_Endline)
|
1849
|
+
unless _tmp
|
1850
|
+
_tmp = true
|
1851
|
+
self.pos = _save12
|
1852
|
+
end
|
1853
|
+
unless _tmp
|
1854
|
+
self.pos = _save
|
1855
|
+
break
|
1856
|
+
end
|
1857
|
+
@result = begin; cc ; end
|
1858
|
+
_tmp = true
|
1859
|
+
unless _tmp
|
1860
|
+
self.pos = _save
|
1861
|
+
end
|
1862
|
+
break
|
1863
|
+
end # end sequence
|
1864
|
+
|
1865
|
+
set_failed_rule :_Inlines unless _tmp
|
1866
|
+
return _tmp
|
1867
|
+
end
|
1868
|
+
|
1869
|
+
# Inline = (Str | Endline | Space | Strong | Emph | Code | Symbol)
|
1870
|
+
def _Inline
|
1871
|
+
|
1872
|
+
_save = self.pos
|
1873
|
+
while true # choice
|
1874
|
+
_tmp = apply(:_Str)
|
1875
|
+
break if _tmp
|
1876
|
+
self.pos = _save
|
1877
|
+
_tmp = apply(:_Endline)
|
1878
|
+
break if _tmp
|
1879
|
+
self.pos = _save
|
1880
|
+
_tmp = apply(:_Space)
|
1881
|
+
break if _tmp
|
1882
|
+
self.pos = _save
|
1883
|
+
_tmp = apply(:_Strong)
|
1884
|
+
break if _tmp
|
1885
|
+
self.pos = _save
|
1886
|
+
_tmp = apply(:_Emph)
|
1887
|
+
break if _tmp
|
1888
|
+
self.pos = _save
|
1889
|
+
_tmp = apply(:_Code)
|
1890
|
+
break if _tmp
|
1891
|
+
self.pos = _save
|
1892
|
+
_tmp = apply(:_Symbol)
|
1893
|
+
break if _tmp
|
1894
|
+
self.pos = _save
|
1895
|
+
break
|
1896
|
+
end # end choice
|
1897
|
+
|
1898
|
+
set_failed_rule :_Inline unless _tmp
|
1899
|
+
return _tmp
|
1900
|
+
end
|
1901
|
+
|
1902
|
+
# Space = Spacechar+:c {text(self, position, c.join(""))}
|
1903
|
+
def _Space
|
1904
|
+
|
1905
|
+
_save = self.pos
|
1906
|
+
while true # sequence
|
1907
|
+
_save1 = self.pos
|
1908
|
+
_ary = []
|
1909
|
+
_tmp = apply(:_Spacechar)
|
1910
|
+
if _tmp
|
1911
|
+
_ary << @result
|
1912
|
+
while true
|
1913
|
+
_tmp = apply(:_Spacechar)
|
1914
|
+
_ary << @result if _tmp
|
1915
|
+
break unless _tmp
|
1916
|
+
end
|
1917
|
+
_tmp = true
|
1918
|
+
@result = _ary
|
1919
|
+
else
|
1920
|
+
self.pos = _save1
|
1921
|
+
end
|
1922
|
+
c = @result
|
1923
|
+
unless _tmp
|
1924
|
+
self.pos = _save
|
1925
|
+
break
|
1926
|
+
end
|
1927
|
+
@result = begin; text(self, position, c.join("")); end
|
1928
|
+
_tmp = true
|
1929
|
+
unless _tmp
|
1930
|
+
self.pos = _save
|
1931
|
+
end
|
1932
|
+
break
|
1933
|
+
end # end sequence
|
1934
|
+
|
1935
|
+
set_failed_rule :_Space unless _tmp
|
1936
|
+
return _tmp
|
1937
|
+
end
|
1938
|
+
|
1939
|
+
# Str = NormalChar+:c1 StrChunk*:c2 {text(self, position, (c1+c2).join(""))}
|
1940
|
+
def _Str
|
1941
|
+
|
1942
|
+
_save = self.pos
|
1943
|
+
while true # sequence
|
1944
|
+
_save1 = self.pos
|
1945
|
+
_ary = []
|
1946
|
+
_tmp = apply(:_NormalChar)
|
1947
|
+
if _tmp
|
1948
|
+
_ary << @result
|
1949
|
+
while true
|
1950
|
+
_tmp = apply(:_NormalChar)
|
1951
|
+
_ary << @result if _tmp
|
1952
|
+
break unless _tmp
|
1953
|
+
end
|
1954
|
+
_tmp = true
|
1955
|
+
@result = _ary
|
1956
|
+
else
|
1957
|
+
self.pos = _save1
|
1958
|
+
end
|
1959
|
+
c1 = @result
|
1960
|
+
unless _tmp
|
1961
|
+
self.pos = _save
|
1962
|
+
break
|
1963
|
+
end
|
1964
|
+
_ary = []
|
1965
|
+
while true
|
1966
|
+
_tmp = apply(:_StrChunk)
|
1967
|
+
_ary << @result if _tmp
|
1968
|
+
break unless _tmp
|
1969
|
+
end
|
1970
|
+
_tmp = true
|
1971
|
+
@result = _ary
|
1972
|
+
c2 = @result
|
1973
|
+
unless _tmp
|
1974
|
+
self.pos = _save
|
1975
|
+
break
|
1976
|
+
end
|
1977
|
+
@result = begin; text(self, position, (c1+c2).join("")); end
|
1978
|
+
_tmp = true
|
1979
|
+
unless _tmp
|
1980
|
+
self.pos = _save
|
1981
|
+
end
|
1982
|
+
break
|
1983
|
+
end # end sequence
|
1984
|
+
|
1985
|
+
set_failed_rule :_Str unless _tmp
|
1986
|
+
return _tmp
|
1987
|
+
end
|
1988
|
+
|
1989
|
+
# StrChunk = (NormalChar:c { [c] } | "_"+:c1 NormalChar:c2 { c1.push(c2) })+:cc { cc.flatten }
|
1990
|
+
def _StrChunk
|
1991
|
+
|
1992
|
+
_save = self.pos
|
1993
|
+
while true # sequence
|
1994
|
+
_save1 = self.pos
|
1995
|
+
_ary = []
|
1996
|
+
|
1997
|
+
_save2 = self.pos
|
1998
|
+
while true # choice
|
1999
|
+
|
2000
|
+
_save3 = self.pos
|
2001
|
+
while true # sequence
|
2002
|
+
_tmp = apply(:_NormalChar)
|
2003
|
+
c = @result
|
2004
|
+
unless _tmp
|
2005
|
+
self.pos = _save3
|
2006
|
+
break
|
2007
|
+
end
|
2008
|
+
@result = begin; [c] ; end
|
2009
|
+
_tmp = true
|
2010
|
+
unless _tmp
|
2011
|
+
self.pos = _save3
|
2012
|
+
end
|
2013
|
+
break
|
2014
|
+
end # end sequence
|
2015
|
+
|
2016
|
+
break if _tmp
|
2017
|
+
self.pos = _save2
|
2018
|
+
|
2019
|
+
_save4 = self.pos
|
2020
|
+
while true # sequence
|
2021
|
+
_save5 = self.pos
|
2022
|
+
_ary = []
|
2023
|
+
_tmp = match_string("_")
|
2024
|
+
if _tmp
|
2025
|
+
_ary << @result
|
2026
|
+
while true
|
2027
|
+
_tmp = match_string("_")
|
2028
|
+
_ary << @result if _tmp
|
2029
|
+
break unless _tmp
|
2030
|
+
end
|
2031
|
+
_tmp = true
|
2032
|
+
@result = _ary
|
2033
|
+
else
|
2034
|
+
self.pos = _save5
|
2035
|
+
end
|
2036
|
+
c1 = @result
|
2037
|
+
unless _tmp
|
2038
|
+
self.pos = _save4
|
2039
|
+
break
|
2040
|
+
end
|
2041
|
+
_tmp = apply(:_NormalChar)
|
2042
|
+
c2 = @result
|
2043
|
+
unless _tmp
|
2044
|
+
self.pos = _save4
|
2045
|
+
break
|
2046
|
+
end
|
2047
|
+
@result = begin; c1.push(c2) ; end
|
2048
|
+
_tmp = true
|
2049
|
+
unless _tmp
|
2050
|
+
self.pos = _save4
|
2051
|
+
end
|
2052
|
+
break
|
2053
|
+
end # end sequence
|
2054
|
+
|
2055
|
+
break if _tmp
|
2056
|
+
self.pos = _save2
|
2057
|
+
break
|
2058
|
+
end # end choice
|
2059
|
+
|
2060
|
+
if _tmp
|
2061
|
+
_ary << @result
|
2062
|
+
while true
|
2063
|
+
|
2064
|
+
_save6 = self.pos
|
2065
|
+
while true # choice
|
2066
|
+
|
2067
|
+
_save7 = self.pos
|
2068
|
+
while true # sequence
|
2069
|
+
_tmp = apply(:_NormalChar)
|
2070
|
+
c = @result
|
2071
|
+
unless _tmp
|
2072
|
+
self.pos = _save7
|
2073
|
+
break
|
2074
|
+
end
|
2075
|
+
@result = begin; [c] ; end
|
2076
|
+
_tmp = true
|
2077
|
+
unless _tmp
|
2078
|
+
self.pos = _save7
|
2079
|
+
end
|
2080
|
+
break
|
2081
|
+
end # end sequence
|
2082
|
+
|
2083
|
+
break if _tmp
|
2084
|
+
self.pos = _save6
|
2085
|
+
|
2086
|
+
_save8 = self.pos
|
2087
|
+
while true # sequence
|
2088
|
+
_save9 = self.pos
|
2089
|
+
_ary = []
|
2090
|
+
_tmp = match_string("_")
|
2091
|
+
if _tmp
|
2092
|
+
_ary << @result
|
2093
|
+
while true
|
2094
|
+
_tmp = match_string("_")
|
2095
|
+
_ary << @result if _tmp
|
2096
|
+
break unless _tmp
|
2097
|
+
end
|
2098
|
+
_tmp = true
|
2099
|
+
@result = _ary
|
2100
|
+
else
|
2101
|
+
self.pos = _save9
|
2102
|
+
end
|
2103
|
+
c1 = @result
|
2104
|
+
unless _tmp
|
2105
|
+
self.pos = _save8
|
2106
|
+
break
|
2107
|
+
end
|
2108
|
+
_tmp = apply(:_NormalChar)
|
2109
|
+
c2 = @result
|
2110
|
+
unless _tmp
|
2111
|
+
self.pos = _save8
|
2112
|
+
break
|
2113
|
+
end
|
2114
|
+
@result = begin; c1.push(c2) ; end
|
2115
|
+
_tmp = true
|
2116
|
+
unless _tmp
|
2117
|
+
self.pos = _save8
|
2118
|
+
end
|
2119
|
+
break
|
2120
|
+
end # end sequence
|
2121
|
+
|
2122
|
+
break if _tmp
|
2123
|
+
self.pos = _save6
|
2124
|
+
break
|
2125
|
+
end # end choice
|
2126
|
+
|
2127
|
+
_ary << @result if _tmp
|
2128
|
+
break unless _tmp
|
2129
|
+
end
|
2130
|
+
_tmp = true
|
2131
|
+
@result = _ary
|
2132
|
+
else
|
2133
|
+
self.pos = _save1
|
2134
|
+
end
|
2135
|
+
cc = @result
|
2136
|
+
unless _tmp
|
2137
|
+
self.pos = _save
|
2138
|
+
break
|
2139
|
+
end
|
2140
|
+
@result = begin; cc.flatten ; end
|
2141
|
+
_tmp = true
|
2142
|
+
unless _tmp
|
2143
|
+
self.pos = _save
|
2144
|
+
end
|
2145
|
+
break
|
2146
|
+
end # end sequence
|
2147
|
+
|
2148
|
+
set_failed_rule :_StrChunk unless _tmp
|
2149
|
+
return _tmp
|
2150
|
+
end
|
2151
|
+
|
2152
|
+
# Endline = (LineBreak | TerminalEndline | NormalEndline)
|
2153
|
+
def _Endline
|
2154
|
+
|
2155
|
+
_save = self.pos
|
2156
|
+
while true # choice
|
2157
|
+
_tmp = apply(:_LineBreak)
|
2158
|
+
break if _tmp
|
2159
|
+
self.pos = _save
|
2160
|
+
_tmp = apply(:_TerminalEndline)
|
2161
|
+
break if _tmp
|
2162
|
+
self.pos = _save
|
2163
|
+
_tmp = apply(:_NormalEndline)
|
2164
|
+
break if _tmp
|
2165
|
+
self.pos = _save
|
2166
|
+
break
|
2167
|
+
end # end choice
|
2168
|
+
|
2169
|
+
set_failed_rule :_Endline unless _tmp
|
2170
|
+
return _tmp
|
2171
|
+
end
|
2172
|
+
|
2173
|
+
# NormalEndline = Sp Newline !BlankLine !">" !AtxStart !(Line ("="+ | "-"+) Newline) {text(self, position, "\n")}
|
2174
|
+
def _NormalEndline
|
2175
|
+
|
2176
|
+
_save = self.pos
|
2177
|
+
while true # sequence
|
2178
|
+
_tmp = apply(:_Sp)
|
2179
|
+
unless _tmp
|
2180
|
+
self.pos = _save
|
2181
|
+
break
|
2182
|
+
end
|
2183
|
+
_tmp = apply(:_Newline)
|
2184
|
+
unless _tmp
|
2185
|
+
self.pos = _save
|
2186
|
+
break
|
2187
|
+
end
|
2188
|
+
_save1 = self.pos
|
2189
|
+
_tmp = apply(:_BlankLine)
|
2190
|
+
_tmp = _tmp ? nil : true
|
2191
|
+
self.pos = _save1
|
2192
|
+
unless _tmp
|
2193
|
+
self.pos = _save
|
2194
|
+
break
|
2195
|
+
end
|
2196
|
+
_save2 = self.pos
|
2197
|
+
_tmp = match_string(">")
|
2198
|
+
_tmp = _tmp ? nil : true
|
2199
|
+
self.pos = _save2
|
2200
|
+
unless _tmp
|
2201
|
+
self.pos = _save
|
2202
|
+
break
|
2203
|
+
end
|
2204
|
+
_save3 = self.pos
|
2205
|
+
_tmp = apply(:_AtxStart)
|
2206
|
+
_tmp = _tmp ? nil : true
|
2207
|
+
self.pos = _save3
|
2208
|
+
unless _tmp
|
2209
|
+
self.pos = _save
|
2210
|
+
break
|
2211
|
+
end
|
2212
|
+
_save4 = self.pos
|
2213
|
+
|
2214
|
+
_save5 = self.pos
|
2215
|
+
while true # sequence
|
2216
|
+
_tmp = apply(:_Line)
|
2217
|
+
unless _tmp
|
2218
|
+
self.pos = _save5
|
2219
|
+
break
|
2220
|
+
end
|
2221
|
+
|
2222
|
+
_save6 = self.pos
|
2223
|
+
while true # choice
|
2224
|
+
_save7 = self.pos
|
2225
|
+
_tmp = match_string("=")
|
2226
|
+
if _tmp
|
2227
|
+
while true
|
2228
|
+
_tmp = match_string("=")
|
2229
|
+
break unless _tmp
|
2230
|
+
end
|
2231
|
+
_tmp = true
|
2232
|
+
else
|
2233
|
+
self.pos = _save7
|
2234
|
+
end
|
2235
|
+
break if _tmp
|
2236
|
+
self.pos = _save6
|
2237
|
+
_save8 = self.pos
|
2238
|
+
_tmp = match_string("-")
|
2239
|
+
if _tmp
|
2240
|
+
while true
|
2241
|
+
_tmp = match_string("-")
|
2242
|
+
break unless _tmp
|
2243
|
+
end
|
2244
|
+
_tmp = true
|
2245
|
+
else
|
2246
|
+
self.pos = _save8
|
2247
|
+
end
|
2248
|
+
break if _tmp
|
2249
|
+
self.pos = _save6
|
2250
|
+
break
|
2251
|
+
end # end choice
|
2252
|
+
|
2253
|
+
unless _tmp
|
2254
|
+
self.pos = _save5
|
2255
|
+
break
|
2256
|
+
end
|
2257
|
+
_tmp = apply(:_Newline)
|
2258
|
+
unless _tmp
|
2259
|
+
self.pos = _save5
|
2260
|
+
end
|
2261
|
+
break
|
2262
|
+
end # end sequence
|
2263
|
+
|
2264
|
+
_tmp = _tmp ? nil : true
|
2265
|
+
self.pos = _save4
|
2266
|
+
unless _tmp
|
2267
|
+
self.pos = _save
|
2268
|
+
break
|
2269
|
+
end
|
2270
|
+
@result = begin; text(self, position, "\n"); end
|
2271
|
+
_tmp = true
|
2272
|
+
unless _tmp
|
2273
|
+
self.pos = _save
|
2274
|
+
end
|
2275
|
+
break
|
2276
|
+
end # end sequence
|
2277
|
+
|
2278
|
+
set_failed_rule :_NormalEndline unless _tmp
|
2279
|
+
return _tmp
|
2280
|
+
end
|
2281
|
+
|
2282
|
+
# TerminalEndline = Sp Newline Eof {text(self, position, "\n")}
|
2283
|
+
def _TerminalEndline
|
2284
|
+
|
2285
|
+
_save = self.pos
|
2286
|
+
while true # sequence
|
2287
|
+
_tmp = apply(:_Sp)
|
2288
|
+
unless _tmp
|
2289
|
+
self.pos = _save
|
2290
|
+
break
|
2291
|
+
end
|
2292
|
+
_tmp = apply(:_Newline)
|
2293
|
+
unless _tmp
|
2294
|
+
self.pos = _save
|
2295
|
+
break
|
2296
|
+
end
|
2297
|
+
_tmp = apply(:_Eof)
|
2298
|
+
unless _tmp
|
2299
|
+
self.pos = _save
|
2300
|
+
break
|
2301
|
+
end
|
2302
|
+
@result = begin; text(self, position, "\n"); end
|
2303
|
+
_tmp = true
|
2304
|
+
unless _tmp
|
2305
|
+
self.pos = _save
|
2306
|
+
end
|
2307
|
+
break
|
2308
|
+
end # end sequence
|
2309
|
+
|
2310
|
+
set_failed_rule :_TerminalEndline unless _tmp
|
2311
|
+
return _tmp
|
2312
|
+
end
|
2313
|
+
|
2314
|
+
# LineBreak = " " NormalEndline {linebreak(self, position)}
|
2315
|
+
def _LineBreak
|
2316
|
+
|
2317
|
+
_save = self.pos
|
2318
|
+
while true # sequence
|
2319
|
+
_tmp = match_string(" ")
|
2320
|
+
unless _tmp
|
2321
|
+
self.pos = _save
|
2322
|
+
break
|
2323
|
+
end
|
2324
|
+
_tmp = apply(:_NormalEndline)
|
2325
|
+
unless _tmp
|
2326
|
+
self.pos = _save
|
2327
|
+
break
|
2328
|
+
end
|
2329
|
+
@result = begin; linebreak(self, position); end
|
2330
|
+
_tmp = true
|
2331
|
+
unless _tmp
|
2332
|
+
self.pos = _save
|
2333
|
+
end
|
2334
|
+
break
|
2335
|
+
end # end sequence
|
2336
|
+
|
2337
|
+
set_failed_rule :_LineBreak unless _tmp
|
2338
|
+
return _tmp
|
2339
|
+
end
|
2340
|
+
|
2341
|
+
# Symbol = SpecialChar:c {text(self, position, c)}
|
2342
|
+
def _Symbol
|
2343
|
+
|
2344
|
+
_save = self.pos
|
2345
|
+
while true # sequence
|
2346
|
+
_tmp = apply(:_SpecialChar)
|
2347
|
+
c = @result
|
2348
|
+
unless _tmp
|
2349
|
+
self.pos = _save
|
2350
|
+
break
|
2351
|
+
end
|
2352
|
+
@result = begin; text(self, position, c); end
|
2353
|
+
_tmp = true
|
2354
|
+
unless _tmp
|
2355
|
+
self.pos = _save
|
2356
|
+
end
|
2357
|
+
break
|
2358
|
+
end # end sequence
|
2359
|
+
|
2360
|
+
set_failed_rule :_Symbol unless _tmp
|
2361
|
+
return _tmp
|
2362
|
+
end
|
2363
|
+
|
2364
|
+
# Emph = (EmphStar | EmphUl)
|
2365
|
+
def _Emph
|
2366
|
+
|
2367
|
+
_save = self.pos
|
2368
|
+
while true # choice
|
2369
|
+
_tmp = apply(:_EmphStar)
|
2370
|
+
break if _tmp
|
2371
|
+
self.pos = _save
|
2372
|
+
_tmp = apply(:_EmphUl)
|
2373
|
+
break if _tmp
|
2374
|
+
self.pos = _save
|
2375
|
+
break
|
2376
|
+
end # end choice
|
2377
|
+
|
2378
|
+
set_failed_rule :_Emph unless _tmp
|
2379
|
+
return _tmp
|
2380
|
+
end
|
2381
|
+
|
2382
|
+
# Whitespace = (Spacechar | Newline)
|
2383
|
+
def _Whitespace
|
2384
|
+
|
2385
|
+
_save = self.pos
|
2386
|
+
while true # choice
|
2387
|
+
_tmp = apply(:_Spacechar)
|
2388
|
+
break if _tmp
|
2389
|
+
self.pos = _save
|
2390
|
+
_tmp = apply(:_Newline)
|
2391
|
+
break if _tmp
|
2392
|
+
self.pos = _save
|
2393
|
+
break
|
2394
|
+
end # end choice
|
2395
|
+
|
2396
|
+
set_failed_rule :_Whitespace unless _tmp
|
2397
|
+
return _tmp
|
2398
|
+
end
|
2399
|
+
|
2400
|
+
# EmphStar = "*" !Whitespace (!"*" Inline:b { b } | StrongStar:b { b })+:c "*" {inline_element(self, position, :em, c)}
|
2401
|
+
def _EmphStar
|
2402
|
+
|
2403
|
+
_save = self.pos
|
2404
|
+
while true # sequence
|
2405
|
+
_tmp = match_string("*")
|
2406
|
+
unless _tmp
|
2407
|
+
self.pos = _save
|
2408
|
+
break
|
2409
|
+
end
|
2410
|
+
_save1 = self.pos
|
2411
|
+
_tmp = apply(:_Whitespace)
|
2412
|
+
_tmp = _tmp ? nil : true
|
2413
|
+
self.pos = _save1
|
2414
|
+
unless _tmp
|
2415
|
+
self.pos = _save
|
2416
|
+
break
|
2417
|
+
end
|
2418
|
+
_save2 = self.pos
|
2419
|
+
_ary = []
|
2420
|
+
|
2421
|
+
_save3 = self.pos
|
2422
|
+
while true # choice
|
2423
|
+
|
2424
|
+
_save4 = self.pos
|
2425
|
+
while true # sequence
|
2426
|
+
_save5 = self.pos
|
2427
|
+
_tmp = match_string("*")
|
2428
|
+
_tmp = _tmp ? nil : true
|
2429
|
+
self.pos = _save5
|
2430
|
+
unless _tmp
|
2431
|
+
self.pos = _save4
|
2432
|
+
break
|
2433
|
+
end
|
2434
|
+
_tmp = apply(:_Inline)
|
2435
|
+
b = @result
|
2436
|
+
unless _tmp
|
2437
|
+
self.pos = _save4
|
2438
|
+
break
|
2439
|
+
end
|
2440
|
+
@result = begin; b ; end
|
2441
|
+
_tmp = true
|
2442
|
+
unless _tmp
|
2443
|
+
self.pos = _save4
|
2444
|
+
end
|
2445
|
+
break
|
2446
|
+
end # end sequence
|
2447
|
+
|
2448
|
+
break if _tmp
|
2449
|
+
self.pos = _save3
|
2450
|
+
|
2451
|
+
_save6 = self.pos
|
2452
|
+
while true # sequence
|
2453
|
+
_tmp = apply(:_StrongStar)
|
2454
|
+
b = @result
|
2455
|
+
unless _tmp
|
2456
|
+
self.pos = _save6
|
2457
|
+
break
|
2458
|
+
end
|
2459
|
+
@result = begin; b ; end
|
2460
|
+
_tmp = true
|
2461
|
+
unless _tmp
|
2462
|
+
self.pos = _save6
|
2463
|
+
end
|
2464
|
+
break
|
2465
|
+
end # end sequence
|
2466
|
+
|
2467
|
+
break if _tmp
|
2468
|
+
self.pos = _save3
|
2469
|
+
break
|
2470
|
+
end # end choice
|
2471
|
+
|
2472
|
+
if _tmp
|
2473
|
+
_ary << @result
|
2474
|
+
while true
|
2475
|
+
|
2476
|
+
_save7 = self.pos
|
2477
|
+
while true # choice
|
2478
|
+
|
2479
|
+
_save8 = self.pos
|
2480
|
+
while true # sequence
|
2481
|
+
_save9 = self.pos
|
2482
|
+
_tmp = match_string("*")
|
2483
|
+
_tmp = _tmp ? nil : true
|
2484
|
+
self.pos = _save9
|
2485
|
+
unless _tmp
|
2486
|
+
self.pos = _save8
|
2487
|
+
break
|
2488
|
+
end
|
2489
|
+
_tmp = apply(:_Inline)
|
2490
|
+
b = @result
|
2491
|
+
unless _tmp
|
2492
|
+
self.pos = _save8
|
2493
|
+
break
|
2494
|
+
end
|
2495
|
+
@result = begin; b ; end
|
2496
|
+
_tmp = true
|
2497
|
+
unless _tmp
|
2498
|
+
self.pos = _save8
|
2499
|
+
end
|
2500
|
+
break
|
2501
|
+
end # end sequence
|
2502
|
+
|
2503
|
+
break if _tmp
|
2504
|
+
self.pos = _save7
|
2505
|
+
|
2506
|
+
_save10 = self.pos
|
2507
|
+
while true # sequence
|
2508
|
+
_tmp = apply(:_StrongStar)
|
2509
|
+
b = @result
|
2510
|
+
unless _tmp
|
2511
|
+
self.pos = _save10
|
2512
|
+
break
|
2513
|
+
end
|
2514
|
+
@result = begin; b ; end
|
2515
|
+
_tmp = true
|
2516
|
+
unless _tmp
|
2517
|
+
self.pos = _save10
|
2518
|
+
end
|
2519
|
+
break
|
2520
|
+
end # end sequence
|
2521
|
+
|
2522
|
+
break if _tmp
|
2523
|
+
self.pos = _save7
|
2524
|
+
break
|
2525
|
+
end # end choice
|
2526
|
+
|
2527
|
+
_ary << @result if _tmp
|
2528
|
+
break unless _tmp
|
2529
|
+
end
|
2530
|
+
_tmp = true
|
2531
|
+
@result = _ary
|
2532
|
+
else
|
2533
|
+
self.pos = _save2
|
2534
|
+
end
|
2535
|
+
c = @result
|
2536
|
+
unless _tmp
|
2537
|
+
self.pos = _save
|
2538
|
+
break
|
2539
|
+
end
|
2540
|
+
_tmp = match_string("*")
|
2541
|
+
unless _tmp
|
2542
|
+
self.pos = _save
|
2543
|
+
break
|
2544
|
+
end
|
2545
|
+
@result = begin; inline_element(self, position, :em, c); end
|
2546
|
+
_tmp = true
|
2547
|
+
unless _tmp
|
2548
|
+
self.pos = _save
|
2549
|
+
end
|
2550
|
+
break
|
2551
|
+
end # end sequence
|
2552
|
+
|
2553
|
+
set_failed_rule :_EmphStar unless _tmp
|
2554
|
+
return _tmp
|
2555
|
+
end
|
2556
|
+
|
2557
|
+
# EmphUl = "_" !Whitespace (!"_" Inline:b { b } | StrongUl:b { b })+:c "_" {inline_element(self, position, :em, c)}
|
2558
|
+
def _EmphUl
|
2559
|
+
|
2560
|
+
_save = self.pos
|
2561
|
+
while true # sequence
|
2562
|
+
_tmp = match_string("_")
|
2563
|
+
unless _tmp
|
2564
|
+
self.pos = _save
|
2565
|
+
break
|
2566
|
+
end
|
2567
|
+
_save1 = self.pos
|
2568
|
+
_tmp = apply(:_Whitespace)
|
2569
|
+
_tmp = _tmp ? nil : true
|
2570
|
+
self.pos = _save1
|
2571
|
+
unless _tmp
|
2572
|
+
self.pos = _save
|
2573
|
+
break
|
2574
|
+
end
|
2575
|
+
_save2 = self.pos
|
2576
|
+
_ary = []
|
2577
|
+
|
2578
|
+
_save3 = self.pos
|
2579
|
+
while true # choice
|
2580
|
+
|
2581
|
+
_save4 = self.pos
|
2582
|
+
while true # sequence
|
2583
|
+
_save5 = self.pos
|
2584
|
+
_tmp = match_string("_")
|
2585
|
+
_tmp = _tmp ? nil : true
|
2586
|
+
self.pos = _save5
|
2587
|
+
unless _tmp
|
2588
|
+
self.pos = _save4
|
2589
|
+
break
|
2590
|
+
end
|
2591
|
+
_tmp = apply(:_Inline)
|
2592
|
+
b = @result
|
2593
|
+
unless _tmp
|
2594
|
+
self.pos = _save4
|
2595
|
+
break
|
2596
|
+
end
|
2597
|
+
@result = begin; b ; end
|
2598
|
+
_tmp = true
|
2599
|
+
unless _tmp
|
2600
|
+
self.pos = _save4
|
2601
|
+
end
|
2602
|
+
break
|
2603
|
+
end # end sequence
|
2604
|
+
|
2605
|
+
break if _tmp
|
2606
|
+
self.pos = _save3
|
2607
|
+
|
2608
|
+
_save6 = self.pos
|
2609
|
+
while true # sequence
|
2610
|
+
_tmp = apply(:_StrongUl)
|
2611
|
+
b = @result
|
2612
|
+
unless _tmp
|
2613
|
+
self.pos = _save6
|
2614
|
+
break
|
2615
|
+
end
|
2616
|
+
@result = begin; b ; end
|
2617
|
+
_tmp = true
|
2618
|
+
unless _tmp
|
2619
|
+
self.pos = _save6
|
2620
|
+
end
|
2621
|
+
break
|
2622
|
+
end # end sequence
|
2623
|
+
|
2624
|
+
break if _tmp
|
2625
|
+
self.pos = _save3
|
2626
|
+
break
|
2627
|
+
end # end choice
|
2628
|
+
|
2629
|
+
if _tmp
|
2630
|
+
_ary << @result
|
2631
|
+
while true
|
2632
|
+
|
2633
|
+
_save7 = self.pos
|
2634
|
+
while true # choice
|
2635
|
+
|
2636
|
+
_save8 = self.pos
|
2637
|
+
while true # sequence
|
2638
|
+
_save9 = self.pos
|
2639
|
+
_tmp = match_string("_")
|
2640
|
+
_tmp = _tmp ? nil : true
|
2641
|
+
self.pos = _save9
|
2642
|
+
unless _tmp
|
2643
|
+
self.pos = _save8
|
2644
|
+
break
|
2645
|
+
end
|
2646
|
+
_tmp = apply(:_Inline)
|
2647
|
+
b = @result
|
2648
|
+
unless _tmp
|
2649
|
+
self.pos = _save8
|
2650
|
+
break
|
2651
|
+
end
|
2652
|
+
@result = begin; b ; end
|
2653
|
+
_tmp = true
|
2654
|
+
unless _tmp
|
2655
|
+
self.pos = _save8
|
2656
|
+
end
|
2657
|
+
break
|
2658
|
+
end # end sequence
|
2659
|
+
|
2660
|
+
break if _tmp
|
2661
|
+
self.pos = _save7
|
2662
|
+
|
2663
|
+
_save10 = self.pos
|
2664
|
+
while true # sequence
|
2665
|
+
_tmp = apply(:_StrongUl)
|
2666
|
+
b = @result
|
2667
|
+
unless _tmp
|
2668
|
+
self.pos = _save10
|
2669
|
+
break
|
2670
|
+
end
|
2671
|
+
@result = begin; b ; end
|
2672
|
+
_tmp = true
|
2673
|
+
unless _tmp
|
2674
|
+
self.pos = _save10
|
2675
|
+
end
|
2676
|
+
break
|
2677
|
+
end # end sequence
|
2678
|
+
|
2679
|
+
break if _tmp
|
2680
|
+
self.pos = _save7
|
2681
|
+
break
|
2682
|
+
end # end choice
|
2683
|
+
|
2684
|
+
_ary << @result if _tmp
|
2685
|
+
break unless _tmp
|
2686
|
+
end
|
2687
|
+
_tmp = true
|
2688
|
+
@result = _ary
|
2689
|
+
else
|
2690
|
+
self.pos = _save2
|
2691
|
+
end
|
2692
|
+
c = @result
|
2693
|
+
unless _tmp
|
2694
|
+
self.pos = _save
|
2695
|
+
break
|
2696
|
+
end
|
2697
|
+
_tmp = match_string("_")
|
2698
|
+
unless _tmp
|
2699
|
+
self.pos = _save
|
2700
|
+
break
|
2701
|
+
end
|
2702
|
+
@result = begin; inline_element(self, position, :em, c); end
|
2703
|
+
_tmp = true
|
2704
|
+
unless _tmp
|
2705
|
+
self.pos = _save
|
2706
|
+
end
|
2707
|
+
break
|
2708
|
+
end # end sequence
|
2709
|
+
|
2710
|
+
set_failed_rule :_EmphUl unless _tmp
|
2711
|
+
return _tmp
|
2712
|
+
end
|
2713
|
+
|
2714
|
+
# Strong = (StrongStar | StrongUl)
|
2715
|
+
def _Strong
|
2716
|
+
|
2717
|
+
_save = self.pos
|
2718
|
+
while true # choice
|
2719
|
+
_tmp = apply(:_StrongStar)
|
2720
|
+
break if _tmp
|
2721
|
+
self.pos = _save
|
2722
|
+
_tmp = apply(:_StrongUl)
|
2723
|
+
break if _tmp
|
2724
|
+
self.pos = _save
|
2725
|
+
break
|
2726
|
+
end # end choice
|
2727
|
+
|
2728
|
+
set_failed_rule :_Strong unless _tmp
|
2729
|
+
return _tmp
|
2730
|
+
end
|
2731
|
+
|
2732
|
+
# StrongStar = "**" !Whitespace (!"**" Inline:b { b })+:c "**" {inline_element(self, position, :strong, c)}
|
2733
|
+
def _StrongStar
|
2734
|
+
|
2735
|
+
_save = self.pos
|
2736
|
+
while true # sequence
|
2737
|
+
_tmp = match_string("**")
|
2738
|
+
unless _tmp
|
2739
|
+
self.pos = _save
|
2740
|
+
break
|
2741
|
+
end
|
2742
|
+
_save1 = self.pos
|
2743
|
+
_tmp = apply(:_Whitespace)
|
2744
|
+
_tmp = _tmp ? nil : true
|
2745
|
+
self.pos = _save1
|
2746
|
+
unless _tmp
|
2747
|
+
self.pos = _save
|
2748
|
+
break
|
2749
|
+
end
|
2750
|
+
_save2 = self.pos
|
2751
|
+
_ary = []
|
2752
|
+
|
2753
|
+
_save3 = self.pos
|
2754
|
+
while true # sequence
|
2755
|
+
_save4 = self.pos
|
2756
|
+
_tmp = match_string("**")
|
2757
|
+
_tmp = _tmp ? nil : true
|
2758
|
+
self.pos = _save4
|
2759
|
+
unless _tmp
|
2760
|
+
self.pos = _save3
|
2761
|
+
break
|
2762
|
+
end
|
2763
|
+
_tmp = apply(:_Inline)
|
2764
|
+
b = @result
|
2765
|
+
unless _tmp
|
2766
|
+
self.pos = _save3
|
2767
|
+
break
|
2768
|
+
end
|
2769
|
+
@result = begin; b ; end
|
2770
|
+
_tmp = true
|
2771
|
+
unless _tmp
|
2772
|
+
self.pos = _save3
|
2773
|
+
end
|
2774
|
+
break
|
2775
|
+
end # end sequence
|
2776
|
+
|
2777
|
+
if _tmp
|
2778
|
+
_ary << @result
|
2779
|
+
while true
|
2780
|
+
|
2781
|
+
_save5 = self.pos
|
2782
|
+
while true # sequence
|
2783
|
+
_save6 = self.pos
|
2784
|
+
_tmp = match_string("**")
|
2785
|
+
_tmp = _tmp ? nil : true
|
2786
|
+
self.pos = _save6
|
2787
|
+
unless _tmp
|
2788
|
+
self.pos = _save5
|
2789
|
+
break
|
2790
|
+
end
|
2791
|
+
_tmp = apply(:_Inline)
|
2792
|
+
b = @result
|
2793
|
+
unless _tmp
|
2794
|
+
self.pos = _save5
|
2795
|
+
break
|
2796
|
+
end
|
2797
|
+
@result = begin; b ; end
|
2798
|
+
_tmp = true
|
2799
|
+
unless _tmp
|
2800
|
+
self.pos = _save5
|
2801
|
+
end
|
2802
|
+
break
|
2803
|
+
end # end sequence
|
2804
|
+
|
2805
|
+
_ary << @result if _tmp
|
2806
|
+
break unless _tmp
|
2807
|
+
end
|
2808
|
+
_tmp = true
|
2809
|
+
@result = _ary
|
2810
|
+
else
|
2811
|
+
self.pos = _save2
|
2812
|
+
end
|
2813
|
+
c = @result
|
2814
|
+
unless _tmp
|
2815
|
+
self.pos = _save
|
2816
|
+
break
|
2817
|
+
end
|
2818
|
+
_tmp = match_string("**")
|
2819
|
+
unless _tmp
|
2820
|
+
self.pos = _save
|
2821
|
+
break
|
2822
|
+
end
|
2823
|
+
@result = begin; inline_element(self, position, :strong, c); end
|
2824
|
+
_tmp = true
|
2825
|
+
unless _tmp
|
2826
|
+
self.pos = _save
|
2827
|
+
end
|
2828
|
+
break
|
2829
|
+
end # end sequence
|
2830
|
+
|
2831
|
+
set_failed_rule :_StrongStar unless _tmp
|
2832
|
+
return _tmp
|
2833
|
+
end
|
2834
|
+
|
2835
|
+
# StrongUl = "__" !Whitespace (!"__" Inline:b { b })+:c "__" {inline_element(self, position, :strong, c)}
|
2836
|
+
def _StrongUl
|
2837
|
+
|
2838
|
+
_save = self.pos
|
2839
|
+
while true # sequence
|
2840
|
+
_tmp = match_string("__")
|
2841
|
+
unless _tmp
|
2842
|
+
self.pos = _save
|
2843
|
+
break
|
2844
|
+
end
|
2845
|
+
_save1 = self.pos
|
2846
|
+
_tmp = apply(:_Whitespace)
|
2847
|
+
_tmp = _tmp ? nil : true
|
2848
|
+
self.pos = _save1
|
2849
|
+
unless _tmp
|
2850
|
+
self.pos = _save
|
2851
|
+
break
|
2852
|
+
end
|
2853
|
+
_save2 = self.pos
|
2854
|
+
_ary = []
|
2855
|
+
|
2856
|
+
_save3 = self.pos
|
2857
|
+
while true # sequence
|
2858
|
+
_save4 = self.pos
|
2859
|
+
_tmp = match_string("__")
|
2860
|
+
_tmp = _tmp ? nil : true
|
2861
|
+
self.pos = _save4
|
2862
|
+
unless _tmp
|
2863
|
+
self.pos = _save3
|
2864
|
+
break
|
2865
|
+
end
|
2866
|
+
_tmp = apply(:_Inline)
|
2867
|
+
b = @result
|
2868
|
+
unless _tmp
|
2869
|
+
self.pos = _save3
|
2870
|
+
break
|
2871
|
+
end
|
2872
|
+
@result = begin; b ; end
|
2873
|
+
_tmp = true
|
2874
|
+
unless _tmp
|
2875
|
+
self.pos = _save3
|
2876
|
+
end
|
2877
|
+
break
|
2878
|
+
end # end sequence
|
2879
|
+
|
2880
|
+
if _tmp
|
2881
|
+
_ary << @result
|
2882
|
+
while true
|
2883
|
+
|
2884
|
+
_save5 = self.pos
|
2885
|
+
while true # sequence
|
2886
|
+
_save6 = self.pos
|
2887
|
+
_tmp = match_string("__")
|
2888
|
+
_tmp = _tmp ? nil : true
|
2889
|
+
self.pos = _save6
|
2890
|
+
unless _tmp
|
2891
|
+
self.pos = _save5
|
2892
|
+
break
|
2893
|
+
end
|
2894
|
+
_tmp = apply(:_Inline)
|
2895
|
+
b = @result
|
2896
|
+
unless _tmp
|
2897
|
+
self.pos = _save5
|
2898
|
+
break
|
2899
|
+
end
|
2900
|
+
@result = begin; b ; end
|
2901
|
+
_tmp = true
|
2902
|
+
unless _tmp
|
2903
|
+
self.pos = _save5
|
2904
|
+
end
|
2905
|
+
break
|
2906
|
+
end # end sequence
|
2907
|
+
|
2908
|
+
_ary << @result if _tmp
|
2909
|
+
break unless _tmp
|
2910
|
+
end
|
2911
|
+
_tmp = true
|
2912
|
+
@result = _ary
|
2913
|
+
else
|
2914
|
+
self.pos = _save2
|
2915
|
+
end
|
2916
|
+
c = @result
|
2917
|
+
unless _tmp
|
2918
|
+
self.pos = _save
|
2919
|
+
break
|
2920
|
+
end
|
2921
|
+
_tmp = match_string("__")
|
2922
|
+
unless _tmp
|
2923
|
+
self.pos = _save
|
2924
|
+
break
|
2925
|
+
end
|
2926
|
+
@result = begin; inline_element(self, position, :strong, c); end
|
2927
|
+
_tmp = true
|
2928
|
+
unless _tmp
|
2929
|
+
self.pos = _save
|
2930
|
+
end
|
2931
|
+
break
|
2932
|
+
end # end sequence
|
2933
|
+
|
2934
|
+
set_failed_rule :_StrongUl unless _tmp
|
2935
|
+
return _tmp
|
2936
|
+
end
|
2937
|
+
|
2938
|
+
# Ticks1 = < /`/ > !"`" { text }
|
2939
|
+
def _Ticks1
|
2940
|
+
|
2941
|
+
_save = self.pos
|
2942
|
+
while true # sequence
|
2943
|
+
_text_start = self.pos
|
2944
|
+
_tmp = scan(/\A(?-mix:`)/)
|
2945
|
+
if _tmp
|
2946
|
+
text = get_text(_text_start)
|
2947
|
+
end
|
2948
|
+
unless _tmp
|
2949
|
+
self.pos = _save
|
2950
|
+
break
|
2951
|
+
end
|
2952
|
+
_save1 = self.pos
|
2953
|
+
_tmp = match_string("`")
|
2954
|
+
_tmp = _tmp ? nil : true
|
2955
|
+
self.pos = _save1
|
2956
|
+
unless _tmp
|
2957
|
+
self.pos = _save
|
2958
|
+
break
|
2959
|
+
end
|
2960
|
+
@result = begin; text ; end
|
2961
|
+
_tmp = true
|
2962
|
+
unless _tmp
|
2963
|
+
self.pos = _save
|
2964
|
+
end
|
2965
|
+
break
|
2966
|
+
end # end sequence
|
2967
|
+
|
2968
|
+
set_failed_rule :_Ticks1 unless _tmp
|
2969
|
+
return _tmp
|
2970
|
+
end
|
2971
|
+
|
2972
|
+
# Ticks2 = < /``/ > !"`" { text }
|
2973
|
+
def _Ticks2
|
2974
|
+
|
2975
|
+
_save = self.pos
|
2976
|
+
while true # sequence
|
2977
|
+
_text_start = self.pos
|
2978
|
+
_tmp = scan(/\A(?-mix:``)/)
|
2979
|
+
if _tmp
|
2980
|
+
text = get_text(_text_start)
|
2981
|
+
end
|
2982
|
+
unless _tmp
|
2983
|
+
self.pos = _save
|
2984
|
+
break
|
2985
|
+
end
|
2986
|
+
_save1 = self.pos
|
2987
|
+
_tmp = match_string("`")
|
2988
|
+
_tmp = _tmp ? nil : true
|
2989
|
+
self.pos = _save1
|
2990
|
+
unless _tmp
|
2991
|
+
self.pos = _save
|
2992
|
+
break
|
2993
|
+
end
|
2994
|
+
@result = begin; text ; end
|
2995
|
+
_tmp = true
|
2996
|
+
unless _tmp
|
2997
|
+
self.pos = _save
|
2998
|
+
end
|
2999
|
+
break
|
3000
|
+
end # end sequence
|
3001
|
+
|
3002
|
+
set_failed_rule :_Ticks2 unless _tmp
|
3003
|
+
return _tmp
|
3004
|
+
end
|
3005
|
+
|
3006
|
+
# Code = (Ticks1 Sp (!"`" Nonspacechar)+:c Sp Ticks1 {text(self, position, c.join(""))} | Ticks2 Sp (!"``" Nonspacechar)+:c Sp Ticks2 {text(self, position, c.join(""))}):cc {inline_element(self, position, :code, [cc])}
|
3007
|
+
def _Code
|
3008
|
+
|
3009
|
+
_save = self.pos
|
3010
|
+
while true # sequence
|
3011
|
+
|
3012
|
+
_save1 = self.pos
|
3013
|
+
while true # choice
|
3014
|
+
|
3015
|
+
_save2 = self.pos
|
3016
|
+
while true # sequence
|
3017
|
+
_tmp = apply(:_Ticks1)
|
3018
|
+
unless _tmp
|
3019
|
+
self.pos = _save2
|
3020
|
+
break
|
3021
|
+
end
|
3022
|
+
_tmp = apply(:_Sp)
|
3023
|
+
unless _tmp
|
3024
|
+
self.pos = _save2
|
3025
|
+
break
|
3026
|
+
end
|
3027
|
+
_save3 = self.pos
|
3028
|
+
_ary = []
|
3029
|
+
|
3030
|
+
_save4 = self.pos
|
3031
|
+
while true # sequence
|
3032
|
+
_save5 = self.pos
|
3033
|
+
_tmp = match_string("`")
|
3034
|
+
_tmp = _tmp ? nil : true
|
3035
|
+
self.pos = _save5
|
3036
|
+
unless _tmp
|
3037
|
+
self.pos = _save4
|
3038
|
+
break
|
3039
|
+
end
|
3040
|
+
_tmp = apply(:_Nonspacechar)
|
3041
|
+
unless _tmp
|
3042
|
+
self.pos = _save4
|
3043
|
+
end
|
3044
|
+
break
|
3045
|
+
end # end sequence
|
3046
|
+
|
3047
|
+
if _tmp
|
3048
|
+
_ary << @result
|
3049
|
+
while true
|
3050
|
+
|
3051
|
+
_save6 = self.pos
|
3052
|
+
while true # sequence
|
3053
|
+
_save7 = self.pos
|
3054
|
+
_tmp = match_string("`")
|
3055
|
+
_tmp = _tmp ? nil : true
|
3056
|
+
self.pos = _save7
|
3057
|
+
unless _tmp
|
3058
|
+
self.pos = _save6
|
3059
|
+
break
|
3060
|
+
end
|
3061
|
+
_tmp = apply(:_Nonspacechar)
|
3062
|
+
unless _tmp
|
3063
|
+
self.pos = _save6
|
3064
|
+
end
|
3065
|
+
break
|
3066
|
+
end # end sequence
|
3067
|
+
|
3068
|
+
_ary << @result if _tmp
|
3069
|
+
break unless _tmp
|
3070
|
+
end
|
3071
|
+
_tmp = true
|
3072
|
+
@result = _ary
|
3073
|
+
else
|
3074
|
+
self.pos = _save3
|
3075
|
+
end
|
3076
|
+
c = @result
|
3077
|
+
unless _tmp
|
3078
|
+
self.pos = _save2
|
3079
|
+
break
|
3080
|
+
end
|
3081
|
+
_tmp = apply(:_Sp)
|
3082
|
+
unless _tmp
|
3083
|
+
self.pos = _save2
|
3084
|
+
break
|
3085
|
+
end
|
3086
|
+
_tmp = apply(:_Ticks1)
|
3087
|
+
unless _tmp
|
3088
|
+
self.pos = _save2
|
3089
|
+
break
|
3090
|
+
end
|
3091
|
+
@result = begin; text(self, position, c.join("")); end
|
3092
|
+
_tmp = true
|
3093
|
+
unless _tmp
|
3094
|
+
self.pos = _save2
|
3095
|
+
end
|
3096
|
+
break
|
3097
|
+
end # end sequence
|
3098
|
+
|
3099
|
+
break if _tmp
|
3100
|
+
self.pos = _save1
|
3101
|
+
|
3102
|
+
_save8 = self.pos
|
3103
|
+
while true # sequence
|
3104
|
+
_tmp = apply(:_Ticks2)
|
3105
|
+
unless _tmp
|
3106
|
+
self.pos = _save8
|
3107
|
+
break
|
3108
|
+
end
|
3109
|
+
_tmp = apply(:_Sp)
|
3110
|
+
unless _tmp
|
3111
|
+
self.pos = _save8
|
3112
|
+
break
|
3113
|
+
end
|
3114
|
+
_save9 = self.pos
|
3115
|
+
_ary = []
|
3116
|
+
|
3117
|
+
_save10 = self.pos
|
3118
|
+
while true # sequence
|
3119
|
+
_save11 = self.pos
|
3120
|
+
_tmp = match_string("``")
|
3121
|
+
_tmp = _tmp ? nil : true
|
3122
|
+
self.pos = _save11
|
3123
|
+
unless _tmp
|
3124
|
+
self.pos = _save10
|
3125
|
+
break
|
3126
|
+
end
|
3127
|
+
_tmp = apply(:_Nonspacechar)
|
3128
|
+
unless _tmp
|
3129
|
+
self.pos = _save10
|
3130
|
+
end
|
3131
|
+
break
|
3132
|
+
end # end sequence
|
3133
|
+
|
3134
|
+
if _tmp
|
3135
|
+
_ary << @result
|
3136
|
+
while true
|
3137
|
+
|
3138
|
+
_save12 = self.pos
|
3139
|
+
while true # sequence
|
3140
|
+
_save13 = self.pos
|
3141
|
+
_tmp = match_string("``")
|
3142
|
+
_tmp = _tmp ? nil : true
|
3143
|
+
self.pos = _save13
|
3144
|
+
unless _tmp
|
3145
|
+
self.pos = _save12
|
3146
|
+
break
|
3147
|
+
end
|
3148
|
+
_tmp = apply(:_Nonspacechar)
|
3149
|
+
unless _tmp
|
3150
|
+
self.pos = _save12
|
3151
|
+
end
|
3152
|
+
break
|
3153
|
+
end # end sequence
|
3154
|
+
|
3155
|
+
_ary << @result if _tmp
|
3156
|
+
break unless _tmp
|
3157
|
+
end
|
3158
|
+
_tmp = true
|
3159
|
+
@result = _ary
|
3160
|
+
else
|
3161
|
+
self.pos = _save9
|
3162
|
+
end
|
3163
|
+
c = @result
|
3164
|
+
unless _tmp
|
3165
|
+
self.pos = _save8
|
3166
|
+
break
|
3167
|
+
end
|
3168
|
+
_tmp = apply(:_Sp)
|
3169
|
+
unless _tmp
|
3170
|
+
self.pos = _save8
|
3171
|
+
break
|
3172
|
+
end
|
3173
|
+
_tmp = apply(:_Ticks2)
|
3174
|
+
unless _tmp
|
3175
|
+
self.pos = _save8
|
3176
|
+
break
|
3177
|
+
end
|
3178
|
+
@result = begin; text(self, position, c.join("")); end
|
3179
|
+
_tmp = true
|
3180
|
+
unless _tmp
|
3181
|
+
self.pos = _save8
|
3182
|
+
end
|
3183
|
+
break
|
3184
|
+
end # end sequence
|
3185
|
+
|
3186
|
+
break if _tmp
|
3187
|
+
self.pos = _save1
|
3188
|
+
break
|
3189
|
+
end # end choice
|
3190
|
+
|
3191
|
+
cc = @result
|
3192
|
+
unless _tmp
|
3193
|
+
self.pos = _save
|
3194
|
+
break
|
3195
|
+
end
|
3196
|
+
@result = begin; inline_element(self, position, :code, [cc]); end
|
3197
|
+
_tmp = true
|
3198
|
+
unless _tmp
|
3199
|
+
self.pos = _save
|
3200
|
+
end
|
3201
|
+
break
|
3202
|
+
end # end sequence
|
3203
|
+
|
3204
|
+
set_failed_rule :_Code unless _tmp
|
3205
|
+
return _tmp
|
3206
|
+
end
|
3207
|
+
|
3208
|
+
# BlankLine = Sp Newline
|
3209
|
+
def _BlankLine
|
3210
|
+
|
3211
|
+
_save = self.pos
|
3212
|
+
while true # sequence
|
3213
|
+
_tmp = apply(:_Sp)
|
3214
|
+
unless _tmp
|
3215
|
+
self.pos = _save
|
3216
|
+
break
|
3217
|
+
end
|
3218
|
+
_tmp = apply(:_Newline)
|
3219
|
+
unless _tmp
|
3220
|
+
self.pos = _save
|
3221
|
+
end
|
3222
|
+
break
|
3223
|
+
end # end sequence
|
3224
|
+
|
3225
|
+
set_failed_rule :_BlankLine unless _tmp
|
3226
|
+
return _tmp
|
3227
|
+
end
|
3228
|
+
|
3229
|
+
# Quoted = ("\"" (!"\"" .)* "\"" | "'" (!"'" .)* "'")
|
3230
|
+
def _Quoted
|
3231
|
+
|
3232
|
+
_save = self.pos
|
3233
|
+
while true # choice
|
3234
|
+
|
3235
|
+
_save1 = self.pos
|
3236
|
+
while true # sequence
|
3237
|
+
_tmp = match_string("\"")
|
3238
|
+
unless _tmp
|
3239
|
+
self.pos = _save1
|
3240
|
+
break
|
3241
|
+
end
|
3242
|
+
while true
|
3243
|
+
|
3244
|
+
_save3 = self.pos
|
3245
|
+
while true # sequence
|
3246
|
+
_save4 = self.pos
|
3247
|
+
_tmp = match_string("\"")
|
3248
|
+
_tmp = _tmp ? nil : true
|
3249
|
+
self.pos = _save4
|
3250
|
+
unless _tmp
|
3251
|
+
self.pos = _save3
|
3252
|
+
break
|
3253
|
+
end
|
3254
|
+
_tmp = get_byte
|
3255
|
+
unless _tmp
|
3256
|
+
self.pos = _save3
|
3257
|
+
end
|
3258
|
+
break
|
3259
|
+
end # end sequence
|
3260
|
+
|
3261
|
+
break unless _tmp
|
3262
|
+
end
|
3263
|
+
_tmp = true
|
3264
|
+
unless _tmp
|
3265
|
+
self.pos = _save1
|
3266
|
+
break
|
3267
|
+
end
|
3268
|
+
_tmp = match_string("\"")
|
3269
|
+
unless _tmp
|
3270
|
+
self.pos = _save1
|
3271
|
+
end
|
3272
|
+
break
|
3273
|
+
end # end sequence
|
3274
|
+
|
3275
|
+
break if _tmp
|
3276
|
+
self.pos = _save
|
3277
|
+
|
3278
|
+
_save5 = self.pos
|
3279
|
+
while true # sequence
|
3280
|
+
_tmp = match_string("'")
|
3281
|
+
unless _tmp
|
3282
|
+
self.pos = _save5
|
3283
|
+
break
|
3284
|
+
end
|
3285
|
+
while true
|
3286
|
+
|
3287
|
+
_save7 = self.pos
|
3288
|
+
while true # sequence
|
3289
|
+
_save8 = self.pos
|
3290
|
+
_tmp = match_string("'")
|
3291
|
+
_tmp = _tmp ? nil : true
|
3292
|
+
self.pos = _save8
|
3293
|
+
unless _tmp
|
3294
|
+
self.pos = _save7
|
3295
|
+
break
|
3296
|
+
end
|
3297
|
+
_tmp = get_byte
|
3298
|
+
unless _tmp
|
3299
|
+
self.pos = _save7
|
3300
|
+
end
|
3301
|
+
break
|
3302
|
+
end # end sequence
|
3303
|
+
|
3304
|
+
break unless _tmp
|
3305
|
+
end
|
3306
|
+
_tmp = true
|
3307
|
+
unless _tmp
|
3308
|
+
self.pos = _save5
|
3309
|
+
break
|
3310
|
+
end
|
3311
|
+
_tmp = match_string("'")
|
3312
|
+
unless _tmp
|
3313
|
+
self.pos = _save5
|
3314
|
+
end
|
3315
|
+
break
|
3316
|
+
end # end sequence
|
3317
|
+
|
3318
|
+
break if _tmp
|
3319
|
+
self.pos = _save
|
3320
|
+
break
|
3321
|
+
end # end choice
|
3322
|
+
|
3323
|
+
set_failed_rule :_Quoted unless _tmp
|
3324
|
+
return _tmp
|
3325
|
+
end
|
3326
|
+
|
3327
|
+
# Eof = !.
|
3328
|
+
def _Eof
|
3329
|
+
_save = self.pos
|
3330
|
+
_tmp = get_byte
|
3331
|
+
_tmp = _tmp ? nil : true
|
3332
|
+
self.pos = _save
|
3333
|
+
set_failed_rule :_Eof unless _tmp
|
3334
|
+
return _tmp
|
3335
|
+
end
|
3336
|
+
|
3337
|
+
# Spacechar = < / |\t/ > { text }
|
3338
|
+
def _Spacechar
|
3339
|
+
|
3340
|
+
_save = self.pos
|
3341
|
+
while true # sequence
|
3342
|
+
_text_start = self.pos
|
3343
|
+
_tmp = scan(/\A(?-mix: |\t)/)
|
3344
|
+
if _tmp
|
3345
|
+
text = get_text(_text_start)
|
3346
|
+
end
|
3347
|
+
unless _tmp
|
3348
|
+
self.pos = _save
|
3349
|
+
break
|
3350
|
+
end
|
3351
|
+
@result = begin; text ; end
|
3352
|
+
_tmp = true
|
3353
|
+
unless _tmp
|
3354
|
+
self.pos = _save
|
3355
|
+
end
|
3356
|
+
break
|
3357
|
+
end # end sequence
|
3358
|
+
|
3359
|
+
set_failed_rule :_Spacechar unless _tmp
|
3360
|
+
return _tmp
|
3361
|
+
end
|
3362
|
+
|
3363
|
+
# Nonspacechar = !Spacechar !Newline < . > { text }
|
3364
|
+
def _Nonspacechar
|
3365
|
+
|
3366
|
+
_save = self.pos
|
3367
|
+
while true # sequence
|
3368
|
+
_save1 = self.pos
|
3369
|
+
_tmp = apply(:_Spacechar)
|
3370
|
+
_tmp = _tmp ? nil : true
|
3371
|
+
self.pos = _save1
|
3372
|
+
unless _tmp
|
3373
|
+
self.pos = _save
|
3374
|
+
break
|
3375
|
+
end
|
3376
|
+
_save2 = self.pos
|
3377
|
+
_tmp = apply(:_Newline)
|
3378
|
+
_tmp = _tmp ? nil : true
|
3379
|
+
self.pos = _save2
|
3380
|
+
unless _tmp
|
3381
|
+
self.pos = _save
|
3382
|
+
break
|
3383
|
+
end
|
3384
|
+
_text_start = self.pos
|
3385
|
+
_tmp = get_byte
|
3386
|
+
if _tmp
|
3387
|
+
text = get_text(_text_start)
|
3388
|
+
end
|
3389
|
+
unless _tmp
|
3390
|
+
self.pos = _save
|
3391
|
+
break
|
3392
|
+
end
|
3393
|
+
@result = begin; text ; end
|
3394
|
+
_tmp = true
|
3395
|
+
unless _tmp
|
3396
|
+
self.pos = _save
|
3397
|
+
end
|
3398
|
+
break
|
3399
|
+
end # end sequence
|
3400
|
+
|
3401
|
+
set_failed_rule :_Nonspacechar unless _tmp
|
3402
|
+
return _tmp
|
3403
|
+
end
|
3404
|
+
|
3405
|
+
# Newline = ("\n" | "\r" "\n"?)
|
3406
|
+
def _Newline
|
3407
|
+
|
3408
|
+
_save = self.pos
|
3409
|
+
while true # choice
|
3410
|
+
_tmp = match_string("\n")
|
3411
|
+
break if _tmp
|
3412
|
+
self.pos = _save
|
3413
|
+
|
3414
|
+
_save1 = self.pos
|
3415
|
+
while true # sequence
|
3416
|
+
_tmp = match_string("\r")
|
3417
|
+
unless _tmp
|
3418
|
+
self.pos = _save1
|
3419
|
+
break
|
3420
|
+
end
|
3421
|
+
_save2 = self.pos
|
3422
|
+
_tmp = match_string("\n")
|
3423
|
+
unless _tmp
|
3424
|
+
_tmp = true
|
3425
|
+
self.pos = _save2
|
3426
|
+
end
|
3427
|
+
unless _tmp
|
3428
|
+
self.pos = _save1
|
3429
|
+
end
|
3430
|
+
break
|
3431
|
+
end # end sequence
|
3432
|
+
|
3433
|
+
break if _tmp
|
3434
|
+
self.pos = _save
|
3435
|
+
break
|
3436
|
+
end # end choice
|
3437
|
+
|
3438
|
+
set_failed_rule :_Newline unless _tmp
|
3439
|
+
return _tmp
|
3440
|
+
end
|
3441
|
+
|
3442
|
+
# Sp = Spacechar*
|
3443
|
+
def _Sp
|
3444
|
+
while true
|
3445
|
+
_tmp = apply(:_Spacechar)
|
3446
|
+
break unless _tmp
|
3447
|
+
end
|
3448
|
+
_tmp = true
|
3449
|
+
set_failed_rule :_Sp unless _tmp
|
3450
|
+
return _tmp
|
3451
|
+
end
|
3452
|
+
|
3453
|
+
# Spnl = Sp (Newline Sp)?
|
3454
|
+
def _Spnl
|
3455
|
+
|
3456
|
+
_save = self.pos
|
3457
|
+
while true # sequence
|
3458
|
+
_tmp = apply(:_Sp)
|
3459
|
+
unless _tmp
|
3460
|
+
self.pos = _save
|
3461
|
+
break
|
3462
|
+
end
|
3463
|
+
_save1 = self.pos
|
3464
|
+
|
3465
|
+
_save2 = self.pos
|
3466
|
+
while true # sequence
|
3467
|
+
_tmp = apply(:_Newline)
|
3468
|
+
unless _tmp
|
3469
|
+
self.pos = _save2
|
3470
|
+
break
|
3471
|
+
end
|
3472
|
+
_tmp = apply(:_Sp)
|
3473
|
+
unless _tmp
|
3474
|
+
self.pos = _save2
|
3475
|
+
end
|
3476
|
+
break
|
3477
|
+
end # end sequence
|
3478
|
+
|
3479
|
+
unless _tmp
|
3480
|
+
_tmp = true
|
3481
|
+
self.pos = _save1
|
3482
|
+
end
|
3483
|
+
unless _tmp
|
3484
|
+
self.pos = _save
|
3485
|
+
end
|
3486
|
+
break
|
3487
|
+
end # end sequence
|
3488
|
+
|
3489
|
+
set_failed_rule :_Spnl unless _tmp
|
3490
|
+
return _tmp
|
3491
|
+
end
|
3492
|
+
|
3493
|
+
# SpecialChar = < /[~*_`&\[\]()<!#\\'"]/ > { text }
|
3494
|
+
def _SpecialChar
|
3495
|
+
|
3496
|
+
_save = self.pos
|
3497
|
+
while true # sequence
|
3498
|
+
_text_start = self.pos
|
3499
|
+
_tmp = scan(/\A(?-mix:[~*_`&\[\]()<!#\\'"])/)
|
3500
|
+
if _tmp
|
3501
|
+
text = get_text(_text_start)
|
3502
|
+
end
|
3503
|
+
unless _tmp
|
3504
|
+
self.pos = _save
|
3505
|
+
break
|
3506
|
+
end
|
3507
|
+
@result = begin; text ; end
|
3508
|
+
_tmp = true
|
3509
|
+
unless _tmp
|
3510
|
+
self.pos = _save
|
3511
|
+
end
|
3512
|
+
break
|
3513
|
+
end # end sequence
|
3514
|
+
|
3515
|
+
set_failed_rule :_SpecialChar unless _tmp
|
3516
|
+
return _tmp
|
3517
|
+
end
|
3518
|
+
|
3519
|
+
# NormalChar = !(SpecialChar | Spacechar | Newline) < . > { text }
|
3520
|
+
def _NormalChar
|
3521
|
+
|
3522
|
+
_save = self.pos
|
3523
|
+
while true # sequence
|
3524
|
+
_save1 = self.pos
|
3525
|
+
|
3526
|
+
_save2 = self.pos
|
3527
|
+
while true # choice
|
3528
|
+
_tmp = apply(:_SpecialChar)
|
3529
|
+
break if _tmp
|
3530
|
+
self.pos = _save2
|
3531
|
+
_tmp = apply(:_Spacechar)
|
3532
|
+
break if _tmp
|
3533
|
+
self.pos = _save2
|
3534
|
+
_tmp = apply(:_Newline)
|
3535
|
+
break if _tmp
|
3536
|
+
self.pos = _save2
|
3537
|
+
break
|
3538
|
+
end # end choice
|
3539
|
+
|
3540
|
+
_tmp = _tmp ? nil : true
|
3541
|
+
self.pos = _save1
|
3542
|
+
unless _tmp
|
3543
|
+
self.pos = _save
|
3544
|
+
break
|
3545
|
+
end
|
3546
|
+
_text_start = self.pos
|
3547
|
+
_tmp = get_byte
|
3548
|
+
if _tmp
|
3549
|
+
text = get_text(_text_start)
|
3550
|
+
end
|
3551
|
+
unless _tmp
|
3552
|
+
self.pos = _save
|
3553
|
+
break
|
3554
|
+
end
|
3555
|
+
@result = begin; text ; end
|
3556
|
+
_tmp = true
|
3557
|
+
unless _tmp
|
3558
|
+
self.pos = _save
|
3559
|
+
end
|
3560
|
+
break
|
3561
|
+
end # end sequence
|
3562
|
+
|
3563
|
+
set_failed_rule :_NormalChar unless _tmp
|
3564
|
+
return _tmp
|
3565
|
+
end
|
3566
|
+
|
3567
|
+
# AlphanumericAscii = < /[A-Za-z0-9]/ > { text }
|
3568
|
+
def _AlphanumericAscii
|
3569
|
+
|
3570
|
+
_save = self.pos
|
3571
|
+
while true # sequence
|
3572
|
+
_text_start = self.pos
|
3573
|
+
_tmp = scan(/\A(?-mix:[A-Za-z0-9])/)
|
3574
|
+
if _tmp
|
3575
|
+
text = get_text(_text_start)
|
3576
|
+
end
|
3577
|
+
unless _tmp
|
3578
|
+
self.pos = _save
|
3579
|
+
break
|
3580
|
+
end
|
3581
|
+
@result = begin; text ; end
|
3582
|
+
_tmp = true
|
3583
|
+
unless _tmp
|
3584
|
+
self.pos = _save
|
3585
|
+
end
|
3586
|
+
break
|
3587
|
+
end # end sequence
|
3588
|
+
|
3589
|
+
set_failed_rule :_AlphanumericAscii unless _tmp
|
3590
|
+
return _tmp
|
3591
|
+
end
|
3592
|
+
|
3593
|
+
# Digit = < /[0-9]/ > { text }
|
3594
|
+
def _Digit
|
3595
|
+
|
3596
|
+
_save = self.pos
|
3597
|
+
while true # sequence
|
3598
|
+
_text_start = self.pos
|
3599
|
+
_tmp = scan(/\A(?-mix:[0-9])/)
|
3600
|
+
if _tmp
|
3601
|
+
text = get_text(_text_start)
|
3602
|
+
end
|
3603
|
+
unless _tmp
|
3604
|
+
self.pos = _save
|
3605
|
+
break
|
3606
|
+
end
|
3607
|
+
@result = begin; text ; end
|
3608
|
+
_tmp = true
|
3609
|
+
unless _tmp
|
3610
|
+
self.pos = _save
|
3611
|
+
end
|
3612
|
+
break
|
3613
|
+
end # end sequence
|
3614
|
+
|
3615
|
+
set_failed_rule :_Digit unless _tmp
|
3616
|
+
return _tmp
|
3617
|
+
end
|
3618
|
+
|
3619
|
+
# NonindentSpace = < / | | |/ > { text }
|
3620
|
+
def _NonindentSpace
|
3621
|
+
|
3622
|
+
_save = self.pos
|
3623
|
+
while true # sequence
|
3624
|
+
_text_start = self.pos
|
3625
|
+
_tmp = scan(/\A(?-mix: | | |)/)
|
3626
|
+
if _tmp
|
3627
|
+
text = get_text(_text_start)
|
3628
|
+
end
|
3629
|
+
unless _tmp
|
3630
|
+
self.pos = _save
|
3631
|
+
break
|
3632
|
+
end
|
3633
|
+
@result = begin; text ; end
|
3634
|
+
_tmp = true
|
3635
|
+
unless _tmp
|
3636
|
+
self.pos = _save
|
3637
|
+
end
|
3638
|
+
break
|
3639
|
+
end # end sequence
|
3640
|
+
|
3641
|
+
set_failed_rule :_NonindentSpace unless _tmp
|
3642
|
+
return _tmp
|
3643
|
+
end
|
3644
|
+
|
3645
|
+
# Indent = < /\t| / > { text }
|
3646
|
+
def _Indent
|
3647
|
+
|
3648
|
+
_save = self.pos
|
3649
|
+
while true # sequence
|
3650
|
+
_text_start = self.pos
|
3651
|
+
_tmp = scan(/\A(?-mix:\t| )/)
|
3652
|
+
if _tmp
|
3653
|
+
text = get_text(_text_start)
|
3654
|
+
end
|
3655
|
+
unless _tmp
|
3656
|
+
self.pos = _save
|
3657
|
+
break
|
3658
|
+
end
|
3659
|
+
@result = begin; text ; end
|
3660
|
+
_tmp = true
|
3661
|
+
unless _tmp
|
3662
|
+
self.pos = _save
|
3663
|
+
end
|
3664
|
+
break
|
3665
|
+
end # end sequence
|
3666
|
+
|
3667
|
+
set_failed_rule :_Indent unless _tmp
|
3668
|
+
return _tmp
|
3669
|
+
end
|
3670
|
+
|
3671
|
+
# IndentedLine = Indent Line:c { c }
|
3672
|
+
def _IndentedLine
|
3673
|
+
|
3674
|
+
_save = self.pos
|
3675
|
+
while true # sequence
|
3676
|
+
_tmp = apply(:_Indent)
|
3677
|
+
unless _tmp
|
3678
|
+
self.pos = _save
|
3679
|
+
break
|
3680
|
+
end
|
3681
|
+
_tmp = apply(:_Line)
|
3682
|
+
c = @result
|
3683
|
+
unless _tmp
|
3684
|
+
self.pos = _save
|
3685
|
+
break
|
3686
|
+
end
|
3687
|
+
@result = begin; c ; end
|
3688
|
+
_tmp = true
|
3689
|
+
unless _tmp
|
3690
|
+
self.pos = _save
|
3691
|
+
end
|
3692
|
+
break
|
3693
|
+
end # end sequence
|
3694
|
+
|
3695
|
+
set_failed_rule :_IndentedLine unless _tmp
|
3696
|
+
return _tmp
|
3697
|
+
end
|
3698
|
+
|
3699
|
+
# OptionallyIndentedLine = Indent? Line
|
3700
|
+
def _OptionallyIndentedLine
|
3701
|
+
|
3702
|
+
_save = self.pos
|
3703
|
+
while true # sequence
|
3704
|
+
_save1 = self.pos
|
3705
|
+
_tmp = apply(:_Indent)
|
3706
|
+
unless _tmp
|
3707
|
+
_tmp = true
|
3708
|
+
self.pos = _save1
|
3709
|
+
end
|
3710
|
+
unless _tmp
|
3711
|
+
self.pos = _save
|
3712
|
+
break
|
3713
|
+
end
|
3714
|
+
_tmp = apply(:_Line)
|
3715
|
+
unless _tmp
|
3716
|
+
self.pos = _save
|
3717
|
+
end
|
3718
|
+
break
|
3719
|
+
end # end sequence
|
3720
|
+
|
3721
|
+
set_failed_rule :_OptionallyIndentedLine unless _tmp
|
3722
|
+
return _tmp
|
3723
|
+
end
|
3724
|
+
|
3725
|
+
# Line = RawLine:c { c }
|
3726
|
+
def _Line
|
3727
|
+
|
3728
|
+
_save = self.pos
|
3729
|
+
while true # sequence
|
3730
|
+
_tmp = apply(:_RawLine)
|
3731
|
+
c = @result
|
3732
|
+
unless _tmp
|
3733
|
+
self.pos = _save
|
3734
|
+
break
|
3735
|
+
end
|
3736
|
+
@result = begin; c ; end
|
3737
|
+
_tmp = true
|
3738
|
+
unless _tmp
|
3739
|
+
self.pos = _save
|
3740
|
+
end
|
3741
|
+
break
|
3742
|
+
end # end sequence
|
3743
|
+
|
3744
|
+
set_failed_rule :_Line unless _tmp
|
3745
|
+
return _tmp
|
3746
|
+
end
|
3747
|
+
|
3748
|
+
# RawLine = (< /[^\r\n]*/ > Newline { text } | < /.+/ > Eof { text }):c {text(self, position, c)}
|
3749
|
+
def _RawLine
|
3750
|
+
|
3751
|
+
_save = self.pos
|
3752
|
+
while true # sequence
|
3753
|
+
|
3754
|
+
_save1 = self.pos
|
3755
|
+
while true # choice
|
3756
|
+
|
3757
|
+
_save2 = self.pos
|
3758
|
+
while true # sequence
|
3759
|
+
_text_start = self.pos
|
3760
|
+
_tmp = scan(/\A(?-mix:[^\r\n]*)/)
|
3761
|
+
if _tmp
|
3762
|
+
text = get_text(_text_start)
|
3763
|
+
end
|
3764
|
+
unless _tmp
|
3765
|
+
self.pos = _save2
|
3766
|
+
break
|
3767
|
+
end
|
3768
|
+
_tmp = apply(:_Newline)
|
3769
|
+
unless _tmp
|
3770
|
+
self.pos = _save2
|
3771
|
+
break
|
3772
|
+
end
|
3773
|
+
@result = begin; text ; end
|
3774
|
+
_tmp = true
|
3775
|
+
unless _tmp
|
3776
|
+
self.pos = _save2
|
3777
|
+
end
|
3778
|
+
break
|
3779
|
+
end # end sequence
|
3780
|
+
|
3781
|
+
break if _tmp
|
3782
|
+
self.pos = _save1
|
3783
|
+
|
3784
|
+
_save3 = self.pos
|
3785
|
+
while true # sequence
|
3786
|
+
_text_start = self.pos
|
3787
|
+
_tmp = scan(/\A(?-mix:.+)/)
|
3788
|
+
if _tmp
|
3789
|
+
text = get_text(_text_start)
|
3790
|
+
end
|
3791
|
+
unless _tmp
|
3792
|
+
self.pos = _save3
|
3793
|
+
break
|
3794
|
+
end
|
3795
|
+
_tmp = apply(:_Eof)
|
3796
|
+
unless _tmp
|
3797
|
+
self.pos = _save3
|
3798
|
+
break
|
3799
|
+
end
|
3800
|
+
@result = begin; text ; end
|
3801
|
+
_tmp = true
|
3802
|
+
unless _tmp
|
3803
|
+
self.pos = _save3
|
3804
|
+
end
|
3805
|
+
break
|
3806
|
+
end # end sequence
|
3807
|
+
|
3808
|
+
break if _tmp
|
3809
|
+
self.pos = _save1
|
3810
|
+
break
|
3811
|
+
end # end choice
|
3812
|
+
|
3813
|
+
c = @result
|
3814
|
+
unless _tmp
|
3815
|
+
self.pos = _save
|
3816
|
+
break
|
3817
|
+
end
|
3818
|
+
@result = begin; text(self, position, c); end
|
3819
|
+
_tmp = true
|
3820
|
+
unless _tmp
|
3821
|
+
self.pos = _save
|
3822
|
+
end
|
3823
|
+
break
|
3824
|
+
end # end sequence
|
3825
|
+
|
3826
|
+
set_failed_rule :_RawLine unless _tmp
|
3827
|
+
return _tmp
|
3828
|
+
end
|
3829
|
+
|
3830
|
+
Rules = {}
|
3831
|
+
Rules[:_root] = rule_info("root", "Start")
|
3832
|
+
Rules[:_Start] = rule_info("Start", "&. Doc:c { @ast = c }")
|
3833
|
+
Rules[:_Doc] = rule_info("Doc", "Block*:c {document(self, position, c)}")
|
3834
|
+
Rules[:_Block] = rule_info("Block", "BlankLine* (BlockQuote | Verbatim | HorizontalRule | Heading | BulletList | Para | Plain)")
|
3835
|
+
Rules[:_Para] = rule_info("Para", "NonindentSpace Inlines:a BlankLine+ {para(self, position, a)}")
|
3836
|
+
Rules[:_Plain] = rule_info("Plain", "Inlines:a {plain(self, position, a)}")
|
3837
|
+
Rules[:_AtxInline] = rule_info("AtxInline", "!Newline !(Sp \"\#\"* Sp Newline) Inline:c { c }")
|
3838
|
+
Rules[:_AtxStart] = rule_info("AtxStart", "< /\#\#\#\#\#\#|\#\#\#\#\#|\#\#\#\#|\#\#\#|\#\#|\#/ > { text.length }")
|
3839
|
+
Rules[:_AtxHeading] = rule_info("AtxHeading", "AtxStart:level Sp AtxInline+:c (Sp \"\#\"* Sp)? Newline {headline(self, position, level, c)}")
|
3840
|
+
Rules[:_Heading] = rule_info("Heading", "AtxHeading")
|
3841
|
+
Rules[:_BlockQuote] = rule_info("BlockQuote", "BlockQuoteRaw:c {block_quote(self, position, c)}")
|
3842
|
+
Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "(\">\" \" \"? Line:c { c })+:cc { cc }")
|
3843
|
+
Rules[:_NonblankIndentedLine] = rule_info("NonblankIndentedLine", "!BlankLine IndentedLine:c { c }")
|
3844
|
+
Rules[:_VerbatimChunk] = rule_info("VerbatimChunk", "(BlankLine { text(self,position,\"\\n\") })*:c1 (NonblankIndentedLine:c { [c, text(self,position,\"\\n\")] })+:c2 { c1 + c2.flatten }")
|
3845
|
+
Rules[:_Verbatim] = rule_info("Verbatim", "VerbatimChunk+:cc {verbatim(self, position, cc.flatten)}")
|
3846
|
+
Rules[:_HorizontalRule] = rule_info("HorizontalRule", "NonindentSpace (\"*\" Sp \"*\" Sp \"*\" (Sp \"*\")* | \"-\" Sp \"-\" Sp \"-\" (Sp \"-\")* | \"_\" Sp \"_\" Sp \"_\" (Sp \"_\")*) Sp Newline BlankLine+ {horizontal_rule(self, position)}")
|
3847
|
+
Rules[:_Bullet] = rule_info("Bullet", "!HorizontalRule NonindentSpace (\"+\" | \"*\" | \"-\") Spacechar+")
|
3848
|
+
Rules[:_BulletList] = rule_info("BulletList", "&Bullet ListTight:c {bullet_list(self, position, c)}")
|
3849
|
+
Rules[:_ListTight] = rule_info("ListTight", "ListItemTight+:cc BlankLine* !Bullet { cc }")
|
3850
|
+
Rules[:_ListItemTight] = rule_info("ListItemTight", "Bullet ListBlock:c {bullet_list_item(self, position, c)}")
|
3851
|
+
Rules[:_ListBlock] = rule_info("ListBlock", "!BlankLine Line:c ListBlockLine*:cc { cc.unshift(c) }")
|
3852
|
+
Rules[:_ListBlockLine] = rule_info("ListBlockLine", "!BlankLine !(Indent? Bullet) !HorizontalRule OptionallyIndentedLine")
|
3853
|
+
Rules[:_Inlines] = rule_info("Inlines", "(!Endline Inline:c { c } | Endline:c &Inline { c })+:cc Endline? { cc }")
|
3854
|
+
Rules[:_Inline] = rule_info("Inline", "(Str | Endline | Space | Strong | Emph | Code | Symbol)")
|
3855
|
+
Rules[:_Space] = rule_info("Space", "Spacechar+:c {text(self, position, c.join(\"\"))}")
|
3856
|
+
Rules[:_Str] = rule_info("Str", "NormalChar+:c1 StrChunk*:c2 {text(self, position, (c1+c2).join(\"\"))}")
|
3857
|
+
Rules[:_StrChunk] = rule_info("StrChunk", "(NormalChar:c { [c] } | \"_\"+:c1 NormalChar:c2 { c1.push(c2) })+:cc { cc.flatten }")
|
3858
|
+
Rules[:_Endline] = rule_info("Endline", "(LineBreak | TerminalEndline | NormalEndline)")
|
3859
|
+
Rules[:_NormalEndline] = rule_info("NormalEndline", "Sp Newline !BlankLine !\">\" !AtxStart !(Line (\"=\"+ | \"-\"+) Newline) {text(self, position, \"\\n\")}")
|
3860
|
+
Rules[:_TerminalEndline] = rule_info("TerminalEndline", "Sp Newline Eof {text(self, position, \"\\n\")}")
|
3861
|
+
Rules[:_LineBreak] = rule_info("LineBreak", "\" \" NormalEndline {linebreak(self, position)}")
|
3862
|
+
Rules[:_Symbol] = rule_info("Symbol", "SpecialChar:c {text(self, position, c)}")
|
3863
|
+
Rules[:_Emph] = rule_info("Emph", "(EmphStar | EmphUl)")
|
3864
|
+
Rules[:_Whitespace] = rule_info("Whitespace", "(Spacechar | Newline)")
|
3865
|
+
Rules[:_EmphStar] = rule_info("EmphStar", "\"*\" !Whitespace (!\"*\" Inline:b { b } | StrongStar:b { b })+:c \"*\" {inline_element(self, position, :em, c)}")
|
3866
|
+
Rules[:_EmphUl] = rule_info("EmphUl", "\"_\" !Whitespace (!\"_\" Inline:b { b } | StrongUl:b { b })+:c \"_\" {inline_element(self, position, :em, c)}")
|
3867
|
+
Rules[:_Strong] = rule_info("Strong", "(StrongStar | StrongUl)")
|
3868
|
+
Rules[:_StrongStar] = rule_info("StrongStar", "\"**\" !Whitespace (!\"**\" Inline:b { b })+:c \"**\" {inline_element(self, position, :strong, c)}")
|
3869
|
+
Rules[:_StrongUl] = rule_info("StrongUl", "\"__\" !Whitespace (!\"__\" Inline:b { b })+:c \"__\" {inline_element(self, position, :strong, c)}")
|
3870
|
+
Rules[:_Ticks1] = rule_info("Ticks1", "< /`/ > !\"`\" { text }")
|
3871
|
+
Rules[:_Ticks2] = rule_info("Ticks2", "< /``/ > !\"`\" { text }")
|
3872
|
+
Rules[:_Code] = rule_info("Code", "(Ticks1 Sp (!\"`\" Nonspacechar)+:c Sp Ticks1 {text(self, position, c.join(\"\"))} | Ticks2 Sp (!\"``\" Nonspacechar)+:c Sp Ticks2 {text(self, position, c.join(\"\"))}):cc {inline_element(self, position, :code, [cc])}")
|
3873
|
+
Rules[:_BlankLine] = rule_info("BlankLine", "Sp Newline")
|
3874
|
+
Rules[:_Quoted] = rule_info("Quoted", "(\"\\\"\" (!\"\\\"\" .)* \"\\\"\" | \"'\" (!\"'\" .)* \"'\")")
|
3875
|
+
Rules[:_Eof] = rule_info("Eof", "!.")
|
3876
|
+
Rules[:_Spacechar] = rule_info("Spacechar", "< / |\\t/ > { text }")
|
3877
|
+
Rules[:_Nonspacechar] = rule_info("Nonspacechar", "!Spacechar !Newline < . > { text }")
|
3878
|
+
Rules[:_Newline] = rule_info("Newline", "(\"\\n\" | \"\\r\" \"\\n\"?)")
|
3879
|
+
Rules[:_Sp] = rule_info("Sp", "Spacechar*")
|
3880
|
+
Rules[:_Spnl] = rule_info("Spnl", "Sp (Newline Sp)?")
|
3881
|
+
Rules[:_SpecialChar] = rule_info("SpecialChar", "< /[~*_`&\\[\\]()<!\#\\\\'\"]/ > { text }")
|
3882
|
+
Rules[:_NormalChar] = rule_info("NormalChar", "!(SpecialChar | Spacechar | Newline) < . > { text }")
|
3883
|
+
Rules[:_AlphanumericAscii] = rule_info("AlphanumericAscii", "< /[A-Za-z0-9]/ > { text }")
|
3884
|
+
Rules[:_Digit] = rule_info("Digit", "< /[0-9]/ > { text }")
|
3885
|
+
Rules[:_NonindentSpace] = rule_info("NonindentSpace", "< / | | |/ > { text }")
|
3886
|
+
Rules[:_Indent] = rule_info("Indent", "< /\\t| / > { text }")
|
3887
|
+
Rules[:_IndentedLine] = rule_info("IndentedLine", "Indent Line:c { c }")
|
3888
|
+
Rules[:_OptionallyIndentedLine] = rule_info("OptionallyIndentedLine", "Indent? Line")
|
3889
|
+
Rules[:_Line] = rule_info("Line", "RawLine:c { c }")
|
3890
|
+
Rules[:_RawLine] = rule_info("RawLine", "(< /[^\\r\\n]*/ > Newline { text } | < /.+/ > Eof { text }):c {text(self, position, c)}")
|
3891
|
+
# :startdoc:
|
3892
|
+
end
|