1# coding: UTF-8
2# frozen_string_literal: true
3# :markup: markdown
4
5##
6# RDoc::Markdown as described by the [markdown syntax][syntax].
7#
8# To choose Markdown as your only default format see
9# RDoc::Options@Saved+Options for instructions on setting up a `.doc_options`
10# file to store your project default.
11#
12# ## Usage
13#
14# Here is a brief example of using this parse to read a markdown file by hand.
15#
16#     data = File.read("README.md")
17#     formatter = RDoc::Markup::ToHtml.new(RDoc::Options.new, nil)
18#     html = RDoc::Markdown.parse(data).accept(formatter)
19#
20#     # do something with html
21#
22# ## Extensions
23#
24# The following markdown extensions are supported by the parser, but not all
25# are used in RDoc output by default.
26#
27# ### RDoc
28#
29# The RDoc Markdown parser has the following built-in behaviors that cannot be
30# disabled.
31#
32# Underscores embedded in words are never interpreted as emphasis.  (While the
33# [markdown dingus][dingus] emphasizes in-word underscores, neither the
34# Markdown syntax nor MarkdownTest mention this behavior.)
35#
36# For HTML output, RDoc always auto-links bare URLs.
37#
38# ### Break on Newline
39#
40# The break_on_newline extension converts all newlines into hard line breaks
41# as in [Github Flavored Markdown][GFM].  This extension is disabled by
42# default.
43#
44# ### CSS
45#
46# The #css extension enables CSS blocks to be included in the output, but they
47# are not used for any built-in RDoc output format.  This extension is disabled
48# by default.
49#
50# Example:
51#
52#     <style type="text/css">
53#     h1 { font-size: 3em }
54#     </style>
55#
56# ### Definition Lists
57#
58# The definition_lists extension allows definition lists using the [PHP
59# Markdown Extra syntax][PHPE], but only one label and definition are supported
60# at this time.  This extension is enabled by default.
61#
62# Example:
63#
64# ```
65# cat
66# :   A small furry mammal
67# that seems to sleep a lot
68#
69# ant
70# :   A little insect that is known
71# to enjoy picnics
72#
73# ```
74#
75# Produces:
76#
77# cat
78# :   A small furry mammal
79# that seems to sleep a lot
80#
81# ant
82# :   A little insect that is known
83# to enjoy picnics
84#
85# ### Strike
86#
87# Example:
88#
89# ```
90# This is ~~striked~~.
91# ```
92#
93# Produces:
94#
95# This is ~~striked~~.
96#
97# ### Github
98#
99# The #github extension enables a partial set of [Github Flavored Markdown]
100# [GFM].  This extension is enabled by default.
101#
102# Supported github extensions include:
103#
104# #### Fenced code blocks
105#
106# Use ` ``` ` around a block of code instead of indenting it four spaces.
107#
108# #### Syntax highlighting
109#
110# Use ` ``` ruby ` as the start of a code fence to add syntax highlighting.
111# (Currently only `ruby` syntax is supported).
112#
113# ### HTML
114#
115# Enables raw HTML to be included in the output.  This extension is enabled by
116# default.
117#
118# Example:
119#
120#     <table>
121#     ...
122#     </table>
123#
124# ### Notes
125#
126# The #notes extension enables footnote support.  This extension is enabled by
127# default.
128#
129# Example:
130#
131#     Here is some text[^1] including an inline footnote ^[for short footnotes]
132#
133#     ...
134#
135#     [^1]: With the footnote text down at the bottom
136#
137# Produces:
138#
139# Here is some text[^1] including an inline footnote ^[for short footnotes]
140#
141# [^1]: With the footnote text down at the bottom
142#
143# ## Limitations
144#
145# * Link titles are not used
146# * Footnotes are collapsed into a single paragraph
147#
148# ## Author
149#
150# This markdown parser is a port to kpeg from [peg-markdown][pegmarkdown] by
151# John MacFarlane.
152#
153# It is used under the MIT license:
154#
155# Permission is hereby granted, free of charge, to any person obtaining a copy
156# of this software and associated documentation files (the "Software"), to deal
157# in the Software without restriction, including without limitation the rights
158# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
159# copies of the Software, and to permit persons to whom the Software is
160# furnished to do so, subject to the following conditions:
161#
162# The above copyright notice and this permission notice shall be included in
163# all copies or substantial portions of the Software.
164#
165# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
166# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
167# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
168# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
169# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
170# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
171# THE SOFTWARE.
172#
173# The port to kpeg was performed by Eric Hodel and Evan Phoenix
174#
175# [dingus]: http://daringfireball.net/projects/markdown/dingus
176# [GFM]: http://github.github.com/github-flavored-markdown/
177# [pegmarkdown]: https://github.com/jgm/peg-markdown
178# [PHPE]: http://michelf.com/projects/php-markdown/extra/#def-list
179# [syntax]: http://daringfireball.net/projects/markdown/syntax
180#--
181# Last updated to jgm/peg-markdown commit 8f8fc22ef0
182class RDoc::Markdown
183  # :stopdoc:
184
185    # This is distinct from setup_parser so that a standalone parser
186    # can redefine #initialize and still have access to the proper
187    # parser setup code.
188    def initialize(str, debug=false)
189      setup_parser(str, debug)
190    end
191
192
193
194    # Prepares for parsing +str+.  If you define a custom initialize you must
195    # call this method before #parse
196    def setup_parser(str, debug=false)
197      set_string str, 0
198      @memoizations = Hash.new { |h,k| h[k] = {} }
199      @result = nil
200      @failed_rule = nil
201      @failing_rule_offset = -1
202
203      setup_foreign_grammar
204    end
205
206    attr_reader :string
207    attr_reader :failing_rule_offset
208    attr_accessor :result, :pos
209
210    def current_column(target=pos)
211      if c = string.rindex("\n", target-1)
212        return target - c - 1
213      end
214
215      target + 1
216    end
217
218    def current_line(target=pos)
219      cur_offset = 0
220      cur_line = 0
221
222      string.each_line do |line|
223        cur_line += 1
224        cur_offset += line.size
225        return cur_line if cur_offset >= target
226      end
227
228      -1
229    end
230
231    def lines
232      lines = []
233      string.each_line { |l| lines << l }
234      lines
235    end
236
237
238
239    def get_text(start)
240      @string[start..@pos-1]
241    end
242
243    # Sets the string and current parsing position for the parser.
244    def set_string string, pos
245      @string = string
246      @string_size = string ? string.size : 0
247      @pos = pos
248    end
249
250    def show_pos
251      width = 10
252      if @pos < width
253        "#{@pos} (\"#{@string[0,@pos]}\" @ \"#{@string[@pos,width]}\")"
254      else
255        "#{@pos} (\"... #{@string[@pos - width, width]}\" @ \"#{@string[@pos,width]}\")"
256      end
257    end
258
259    def failure_info
260      l = current_line @failing_rule_offset
261      c = current_column @failing_rule_offset
262
263      if @failed_rule.kind_of? Symbol
264        info = self.class::Rules[@failed_rule]
265        "line #{l}, column #{c}: failed rule '#{info.name}' = '#{info.rendered}'"
266      else
267        "line #{l}, column #{c}: failed rule '#{@failed_rule}'"
268      end
269    end
270
271    def failure_caret
272      l = current_line @failing_rule_offset
273      c = current_column @failing_rule_offset
274
275      line = lines[l-1]
276      "#{line}\n#{' ' * (c - 1)}^"
277    end
278
279    def failure_character
280      l = current_line @failing_rule_offset
281      c = current_column @failing_rule_offset
282      lines[l-1][c-1, 1]
283    end
284
285    def failure_oneline
286      l = current_line @failing_rule_offset
287      c = current_column @failing_rule_offset
288
289      char = lines[l-1][c-1, 1]
290
291      if @failed_rule.kind_of? Symbol
292        info = self.class::Rules[@failed_rule]
293        "@#{l}:#{c} failed rule '#{info.name}', got '#{char}'"
294      else
295        "@#{l}:#{c} failed rule '#{@failed_rule}', got '#{char}'"
296      end
297    end
298
299    class ParseError < RuntimeError
300    end
301
302    def raise_error
303      raise ParseError, failure_oneline
304    end
305
306    def show_error(io=STDOUT)
307      error_pos = @failing_rule_offset
308      line_no = current_line(error_pos)
309      col_no = current_column(error_pos)
310
311      io.puts "On line #{line_no}, column #{col_no}:"
312
313      if @failed_rule.kind_of? Symbol
314        info = self.class::Rules[@failed_rule]
315        io.puts "Failed to match '#{info.rendered}' (rule '#{info.name}')"
316      else
317        io.puts "Failed to match rule '#{@failed_rule}'"
318      end
319
320      io.puts "Got: #{string[error_pos,1].inspect}"
321      line = lines[line_no-1]
322      io.puts "=> #{line}"
323      io.print(" " * (col_no + 3))
324      io.puts "^"
325    end
326
327    def set_failed_rule(name)
328      if @pos > @failing_rule_offset
329        @failed_rule = name
330        @failing_rule_offset = @pos
331      end
332    end
333
334    attr_reader :failed_rule
335
336    def match_string(str)
337      len = str.size
338      if @string[pos,len] == str
339        @pos += len
340        return str
341      end
342
343      return nil
344    end
345
346    def scan(reg)
347      if m = reg.match(@string[@pos..-1])
348        width = m.end(0)
349        @pos += width
350        return true
351      end
352
353      return nil
354    end
355
356    if "".respond_to? :ord
357      def get_byte
358        if @pos >= @string_size
359          return nil
360        end
361
362        s = @string[@pos].ord
363        @pos += 1
364        s
365      end
366    else
367      def get_byte
368        if @pos >= @string_size
369          return nil
370        end
371
372        s = @string[@pos]
373        @pos += 1
374        s
375      end
376    end
377
378    def parse(rule=nil)
379      # We invoke the rules indirectly via apply
380      # instead of by just calling them as methods because
381      # if the rules use left recursion, apply needs to
382      # manage that.
383
384      if !rule
385        apply(:_root)
386      else
387        method = rule.gsub("-","_hyphen_")
388        apply :"_#{method}"
389      end
390    end
391
392    class MemoEntry
393      def initialize(ans, pos)
394        @ans = ans
395        @pos = pos
396        @result = nil
397        @set = false
398        @left_rec = false
399      end
400
401      attr_reader :ans, :pos, :result, :set
402      attr_accessor :left_rec
403
404      def move!(ans, pos, result)
405        @ans = ans
406        @pos = pos
407        @result = result
408        @set = true
409        @left_rec = false
410      end
411    end
412
413    def external_invoke(other, rule, *args)
414      old_pos = @pos
415      old_string = @string
416
417      set_string other.string, other.pos
418
419      begin
420        if val = __send__(rule, *args)
421          other.pos = @pos
422          other.result = @result
423        else
424          other.set_failed_rule "#{self.class}##{rule}"
425        end
426        val
427      ensure
428        set_string old_string, old_pos
429      end
430    end
431
432    def apply_with_args(rule, *args)
433      memo_key = [rule, args]
434      if m = @memoizations[memo_key][@pos]
435        @pos = m.pos
436        if !m.set
437          m.left_rec = true
438          return nil
439        end
440
441        @result = m.result
442
443        return m.ans
444      else
445        m = MemoEntry.new(nil, @pos)
446        @memoizations[memo_key][@pos] = m
447        start_pos = @pos
448
449        ans = __send__ rule, *args
450
451        lr = m.left_rec
452
453        m.move! ans, @pos, @result
454
455        # Don't bother trying to grow the left recursion
456        # if it's failing straight away (thus there is no seed)
457        if ans and lr
458          return grow_lr(rule, args, start_pos, m)
459        else
460          return ans
461        end
462      end
463    end
464
465    def apply(rule)
466      if m = @memoizations[rule][@pos]
467        @pos = m.pos
468        if !m.set
469          m.left_rec = true
470          return nil
471        end
472
473        @result = m.result
474
475        return m.ans
476      else
477        m = MemoEntry.new(nil, @pos)
478        @memoizations[rule][@pos] = m
479        start_pos = @pos
480
481        ans = __send__ rule
482
483        lr = m.left_rec
484
485        m.move! ans, @pos, @result
486
487        # Don't bother trying to grow the left recursion
488        # if it's failing straight away (thus there is no seed)
489        if ans and lr
490          return grow_lr(rule, nil, start_pos, m)
491        else
492          return ans
493        end
494      end
495    end
496
497    def grow_lr(rule, args, start_pos, m)
498      while true
499        @pos = start_pos
500        @result = m.result
501
502        if args
503          ans = __send__ rule, *args
504        else
505          ans = __send__ rule
506        end
507        return nil unless ans
508
509        break if @pos <= m.pos
510
511        m.move! ans, @pos, @result
512      end
513
514      @result = m.result
515      @pos = m.pos
516      return m.ans
517    end
518
519    class RuleInfo
520      def initialize(name, rendered)
521        @name = name
522        @rendered = rendered
523      end
524
525      attr_reader :name, :rendered
526    end
527
528    def self.rule_info(name, rendered)
529      RuleInfo.new(name, rendered)
530    end
531
532
533  # :startdoc:
534
535
536
537  require 'rdoc'
538  require 'rdoc/markup/to_joined_paragraph'
539  require 'rdoc/markdown/entities'
540
541  require 'rdoc/markdown/literals'
542
543  ##
544  # Supported extensions
545
546  EXTENSIONS = []
547
548  ##
549  # Extensions enabled by default
550
551  DEFAULT_EXTENSIONS = [
552    :definition_lists,
553    :github,
554    :html,
555    :notes,
556    :strike,
557  ]
558
559  # :section: Extensions
560
561  ##
562  # Creates extension methods for the `name` extension to enable and disable
563  # the extension and to query if they are active.
564
565  def self.extension name
566    EXTENSIONS << name
567
568    define_method "#{name}?" do
569      extension? name
570    end
571
572    define_method "#{name}=" do |enable|
573      extension name, enable
574    end
575  end
576
577  ##
578  # Converts all newlines into hard breaks
579
580  extension :break_on_newline
581
582  ##
583  # Allow style blocks
584
585  extension :css
586
587  ##
588  # Allow PHP Markdown Extras style definition lists
589
590  extension :definition_lists
591
592  ##
593  # Allow Github Flavored Markdown
594
595  extension :github
596
597  ##
598  # Allow HTML
599
600  extension :html
601
602  ##
603  # Enables the notes extension
604
605  extension :notes
606
607  ##
608  # Enables the strike extension
609
610  extension :strike
611
612  # :section:
613
614  ##
615  # Parses the `markdown` document into an RDoc::Document using the default
616  # extensions.
617
618  def self.parse markdown
619    parser = new
620
621    parser.parse markdown
622  end
623
624  # TODO remove when kpeg 0.10 is released
625  alias orig_initialize initialize # :nodoc:
626
627  ##
628  # Creates a new markdown parser that enables the given +extensions+.
629
630  def initialize extensions = DEFAULT_EXTENSIONS, debug = false
631    @debug      = debug
632    @formatter  = RDoc::Markup::ToJoinedParagraph.new
633    @extensions = extensions
634
635    @references          = nil
636    @unlinked_references = nil
637
638    @footnotes       = nil
639    @note_order      = nil
640  end
641
642  ##
643  # Wraps `text` in emphasis for rdoc inline formatting
644
645  def emphasis text
646    if text =~ /\A[a-z\d.\/]+\z/i then
647      "_#{text}_"
648    else
649      "<em>#{text}</em>"
650    end
651  end
652
653  ##
654  # :category: Extensions
655  #
656  # Is the extension `name` enabled?
657
658  def extension? name
659    @extensions.include? name
660  end
661
662  ##
663  # :category: Extensions
664  #
665  # Enables or disables the extension with `name`
666
667  def extension name, enable
668    if enable then
669      @extensions |= [name]
670    else
671      @extensions -= [name]
672    end
673  end
674
675  ##
676  # Parses `text` in a clone of this parser.  This is used for handling nested
677  # lists the same way as markdown_parser.
678
679  def inner_parse text # :nodoc:
680    parser = clone
681
682    parser.setup_parser text, @debug
683
684    parser.peg_parse
685
686    doc = parser.result
687
688    doc.accept @formatter
689
690    doc.parts
691  end
692
693  ##
694  # Finds a link reference for `label` and creates a new link to it with
695  # `content` as the link text.  If `label` was not encountered in the
696  # reference-gathering parser pass the label and content are reconstructed
697  # with the linking `text` (usually whitespace).
698
699  def link_to content, label = content, text = nil
700    raise ParseError, 'enable notes extension' if
701      content.start_with? '^' and label.equal? content
702
703    if ref = @references[label] then
704      "{#{content}}[#{ref}]"
705    elsif label.equal? content then
706      "[#{content}]#{text}"
707    else
708      "[#{content}]#{text}[#{label}]"
709    end
710  end
711
712  ##
713  # Creates an RDoc::Markup::ListItem by parsing the `unparsed` content from
714  # the first parsing pass.
715
716  def list_item_from unparsed
717    parsed = inner_parse unparsed.join
718    RDoc::Markup::ListItem.new nil, *parsed
719  end
720
721  ##
722  # Stores `label` as a note and fills in previously unknown note references.
723
724  def note label
725    #foottext = "rdoc-label:foottext-#{label}:footmark-#{label}"
726
727    #ref.replace foottext if ref = @unlinked_notes.delete(label)
728
729    @notes[label] = foottext
730
731    #"{^1}[rdoc-label:footmark-#{label}:foottext-#{label}] "
732  end
733
734  ##
735  # Creates a new link for the footnote `reference` and adds the reference to
736  # the note order list for proper display at the end of the document.
737
738  def note_for ref
739    @note_order << ref
740
741    label = @note_order.length
742
743    "{*#{label}}[rdoc-label:foottext-#{label}:footmark-#{label}]"
744  end
745
746  ##
747  # The internal kpeg parse method
748
749  alias peg_parse parse # :nodoc:
750
751  ##
752  # Creates an RDoc::Markup::Paragraph from `parts` and including
753  # extension-specific behavior
754
755  def paragraph parts
756    parts = parts.map do |part|
757      if "\n" == part then
758        RDoc::Markup::HardBreak.new
759      else
760        part
761      end
762    end if break_on_newline?
763
764    RDoc::Markup::Paragraph.new(*parts)
765  end
766
767  ##
768  # Parses `markdown` into an RDoc::Document
769
770  def parse markdown
771    @references          = {}
772    @unlinked_references = {}
773
774    markdown += "\n\n"
775
776    setup_parser markdown, @debug
777    peg_parse 'References'
778
779    if notes? then
780      @footnotes       = {}
781
782      setup_parser markdown, @debug
783      peg_parse 'Notes'
784
785      # using note_order on the first pass would be a bug
786      @note_order      = []
787    end
788
789    setup_parser markdown, @debug
790    peg_parse
791
792    doc = result
793
794    if notes? and not @footnotes.empty? then
795      doc << RDoc::Markup::Rule.new(1)
796
797      @note_order.each_with_index do |ref, index|
798        label = index + 1
799        note = @footnotes[ref]
800
801        link = "{^#{label}}[rdoc-label:footmark-#{label}:foottext-#{label}] "
802        note.parts.unshift link
803
804        doc << note
805      end
806    end
807
808    doc.accept @formatter
809
810    doc
811  end
812
813  ##
814  # Stores `label` as a reference to `link` and fills in previously unknown
815  # link references.
816
817  def reference label, link
818    if ref = @unlinked_references.delete(label) then
819      ref.replace link
820    end
821
822    @references[label] = link
823  end
824
825  ##
826  # Wraps `text` in strong markup for rdoc inline formatting
827
828  def strong text
829    if text =~ /\A[a-z\d.\/-]+\z/i then
830      "*#{text}*"
831    else
832      "<b>#{text}</b>"
833    end
834  end
835
836  ##
837  # Wraps `text` in strike markup for rdoc inline formatting
838
839  def strike text
840    if text =~ /\A[a-z\d.\/-]+\z/i then
841      "~#{text}~"
842    else
843      "<s>#{text}</s>"
844    end
845  end
846
847
848  # :stopdoc:
849  def setup_foreign_grammar
850    @_grammar_literals = RDoc::Markdown::Literals.new(nil)
851  end
852
853  # root = Doc
854  def _root
855    _tmp = apply(:_Doc)
856    set_failed_rule :_root unless _tmp
857    return _tmp
858  end
859
860  # Doc = BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }
861  def _Doc
862
863    _save = self.pos
864    while true # sequence
865      _save1 = self.pos
866      _tmp = apply(:_BOM)
867      unless _tmp
868        _tmp = true
869        self.pos = _save1
870      end
871      unless _tmp
872        self.pos = _save
873        break
874      end
875      _ary = []
876      while true
877        _tmp = apply(:_Block)
878        _ary << @result if _tmp
879        break unless _tmp
880      end
881      _tmp = true
882      @result = _ary
883      a = @result
884      unless _tmp
885        self.pos = _save
886        break
887      end
888      @result = begin;  RDoc::Markup::Document.new(*a.compact) ; end
889      _tmp = true
890      unless _tmp
891        self.pos = _save
892      end
893      break
894    end # end sequence
895
896    set_failed_rule :_Doc unless _tmp
897    return _tmp
898  end
899
900  # Block = @BlankLine* (BlockQuote | Verbatim | CodeFence | Note | Reference | HorizontalRule | Heading | OrderedList | BulletList | DefinitionList | HtmlBlock | StyleBlock | Para | Plain)
901  def _Block
902
903    _save = self.pos
904    while true # sequence
905      while true
906        _tmp = _BlankLine()
907        break unless _tmp
908      end
909      _tmp = true
910      unless _tmp
911        self.pos = _save
912        break
913      end
914
915      _save2 = self.pos
916      while true # choice
917        _tmp = apply(:_BlockQuote)
918        break if _tmp
919        self.pos = _save2
920        _tmp = apply(:_Verbatim)
921        break if _tmp
922        self.pos = _save2
923        _tmp = apply(:_CodeFence)
924        break if _tmp
925        self.pos = _save2
926        _tmp = apply(:_Note)
927        break if _tmp
928        self.pos = _save2
929        _tmp = apply(:_Reference)
930        break if _tmp
931        self.pos = _save2
932        _tmp = apply(:_HorizontalRule)
933        break if _tmp
934        self.pos = _save2
935        _tmp = apply(:_Heading)
936        break if _tmp
937        self.pos = _save2
938        _tmp = apply(:_OrderedList)
939        break if _tmp
940        self.pos = _save2
941        _tmp = apply(:_BulletList)
942        break if _tmp
943        self.pos = _save2
944        _tmp = apply(:_DefinitionList)
945        break if _tmp
946        self.pos = _save2
947        _tmp = apply(:_HtmlBlock)
948        break if _tmp
949        self.pos = _save2
950        _tmp = apply(:_StyleBlock)
951        break if _tmp
952        self.pos = _save2
953        _tmp = apply(:_Para)
954        break if _tmp
955        self.pos = _save2
956        _tmp = apply(:_Plain)
957        break if _tmp
958        self.pos = _save2
959        break
960      end # end choice
961
962      unless _tmp
963        self.pos = _save
964      end
965      break
966    end # end sequence
967
968    set_failed_rule :_Block unless _tmp
969    return _tmp
970  end
971
972  # Para = @NonindentSpace Inlines:a @BlankLine+ { paragraph a }
973  def _Para
974
975    _save = self.pos
976    while true # sequence
977      _tmp = _NonindentSpace()
978      unless _tmp
979        self.pos = _save
980        break
981      end
982      _tmp = apply(:_Inlines)
983      a = @result
984      unless _tmp
985        self.pos = _save
986        break
987      end
988      _save1 = self.pos
989      _tmp = _BlankLine()
990      if _tmp
991        while true
992          _tmp = _BlankLine()
993          break unless _tmp
994        end
995        _tmp = true
996      else
997        self.pos = _save1
998      end
999      unless _tmp
1000        self.pos = _save
1001        break
1002      end
1003      @result = begin;  paragraph a ; end
1004      _tmp = true
1005      unless _tmp
1006        self.pos = _save
1007      end
1008      break
1009    end # end sequence
1010
1011    set_failed_rule :_Para unless _tmp
1012    return _tmp
1013  end
1014
1015  # Plain = Inlines:a { paragraph a }
1016  def _Plain
1017
1018    _save = self.pos
1019    while true # sequence
1020      _tmp = apply(:_Inlines)
1021      a = @result
1022      unless _tmp
1023        self.pos = _save
1024        break
1025      end
1026      @result = begin;  paragraph a ; end
1027      _tmp = true
1028      unless _tmp
1029        self.pos = _save
1030      end
1031      break
1032    end # end sequence
1033
1034    set_failed_rule :_Plain unless _tmp
1035    return _tmp
1036  end
1037
1038  # AtxInline = !@Newline !(@Sp /#*/ @Sp @Newline) Inline
1039  def _AtxInline
1040
1041    _save = self.pos
1042    while true # sequence
1043      _save1 = self.pos
1044      _tmp = _Newline()
1045      _tmp = _tmp ? nil : true
1046      self.pos = _save1
1047      unless _tmp
1048        self.pos = _save
1049        break
1050      end
1051      _save2 = self.pos
1052
1053      _save3 = self.pos
1054      while true # sequence
1055        _tmp = _Sp()
1056        unless _tmp
1057          self.pos = _save3
1058          break
1059        end
1060        _tmp = scan(/\A(?-mix:#*)/)
1061        unless _tmp
1062          self.pos = _save3
1063          break
1064        end
1065        _tmp = _Sp()
1066        unless _tmp
1067          self.pos = _save3
1068          break
1069        end
1070        _tmp = _Newline()
1071        unless _tmp
1072          self.pos = _save3
1073        end
1074        break
1075      end # end sequence
1076
1077      _tmp = _tmp ? nil : true
1078      self.pos = _save2
1079      unless _tmp
1080        self.pos = _save
1081        break
1082      end
1083      _tmp = apply(:_Inline)
1084      unless _tmp
1085        self.pos = _save
1086      end
1087      break
1088    end # end sequence
1089
1090    set_failed_rule :_AtxInline unless _tmp
1091    return _tmp
1092  end
1093
1094  # AtxStart = < /\#{1,6}/ > { text.length }
1095  def _AtxStart
1096
1097    _save = self.pos
1098    while true # sequence
1099      _text_start = self.pos
1100      _tmp = scan(/\A(?-mix:\#{1,6})/)
1101      if _tmp
1102        text = get_text(_text_start)
1103      end
1104      unless _tmp
1105        self.pos = _save
1106        break
1107      end
1108      @result = begin;  text.length ; end
1109      _tmp = true
1110      unless _tmp
1111        self.pos = _save
1112      end
1113      break
1114    end # end sequence
1115
1116    set_failed_rule :_AtxStart unless _tmp
1117    return _tmp
1118  end
1119
1120  # AtxHeading = AtxStart:s @Sp AtxInline+:a (@Sp /#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }
1121  def _AtxHeading
1122
1123    _save = self.pos
1124    while true # sequence
1125      _tmp = apply(:_AtxStart)
1126      s = @result
1127      unless _tmp
1128        self.pos = _save
1129        break
1130      end
1131      _tmp = _Sp()
1132      unless _tmp
1133        self.pos = _save
1134        break
1135      end
1136      _save1 = self.pos
1137      _ary = []
1138      _tmp = apply(:_AtxInline)
1139      if _tmp
1140        _ary << @result
1141        while true
1142          _tmp = apply(:_AtxInline)
1143          _ary << @result if _tmp
1144          break unless _tmp
1145        end
1146        _tmp = true
1147        @result = _ary
1148      else
1149        self.pos = _save1
1150      end
1151      a = @result
1152      unless _tmp
1153        self.pos = _save
1154        break
1155      end
1156      _save2 = self.pos
1157
1158      _save3 = self.pos
1159      while true # sequence
1160        _tmp = _Sp()
1161        unless _tmp
1162          self.pos = _save3
1163          break
1164        end
1165        _tmp = scan(/\A(?-mix:#*)/)
1166        unless _tmp
1167          self.pos = _save3
1168          break
1169        end
1170        _tmp = _Sp()
1171        unless _tmp
1172          self.pos = _save3
1173        end
1174        break
1175      end # end sequence
1176
1177      unless _tmp
1178        _tmp = true
1179        self.pos = _save2
1180      end
1181      unless _tmp
1182        self.pos = _save
1183        break
1184      end
1185      _tmp = _Newline()
1186      unless _tmp
1187        self.pos = _save
1188        break
1189      end
1190      @result = begin;  RDoc::Markup::Heading.new(s, a.join) ; end
1191      _tmp = true
1192      unless _tmp
1193        self.pos = _save
1194      end
1195      break
1196    end # end sequence
1197
1198    set_failed_rule :_AtxHeading unless _tmp
1199    return _tmp
1200  end
1201
1202  # SetextHeading = (SetextHeading1 | SetextHeading2)
1203  def _SetextHeading
1204
1205    _save = self.pos
1206    while true # choice
1207      _tmp = apply(:_SetextHeading1)
1208      break if _tmp
1209      self.pos = _save
1210      _tmp = apply(:_SetextHeading2)
1211      break if _tmp
1212      self.pos = _save
1213      break
1214    end # end choice
1215
1216    set_failed_rule :_SetextHeading unless _tmp
1217    return _tmp
1218  end
1219
1220  # SetextBottom1 = /={1,}/ @Newline
1221  def _SetextBottom1
1222
1223    _save = self.pos
1224    while true # sequence
1225      _tmp = scan(/\A(?-mix:={1,})/)
1226      unless _tmp
1227        self.pos = _save
1228        break
1229      end
1230      _tmp = _Newline()
1231      unless _tmp
1232        self.pos = _save
1233      end
1234      break
1235    end # end sequence
1236
1237    set_failed_rule :_SetextBottom1 unless _tmp
1238    return _tmp
1239  end
1240
1241  # SetextBottom2 = /-{1,}/ @Newline
1242  def _SetextBottom2
1243
1244    _save = self.pos
1245    while true # sequence
1246      _tmp = scan(/\A(?-mix:-{1,})/)
1247      unless _tmp
1248        self.pos = _save
1249        break
1250      end
1251      _tmp = _Newline()
1252      unless _tmp
1253        self.pos = _save
1254      end
1255      break
1256    end # end sequence
1257
1258    set_failed_rule :_SetextBottom2 unless _tmp
1259    return _tmp
1260  end
1261
1262  # SetextHeading1 = &(@RawLine SetextBottom1) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom1 { RDoc::Markup::Heading.new(1, a.join) }
1263  def _SetextHeading1
1264
1265    _save = self.pos
1266    while true # sequence
1267      _save1 = self.pos
1268
1269      _save2 = self.pos
1270      while true # sequence
1271        _tmp = _RawLine()
1272        unless _tmp
1273          self.pos = _save2
1274          break
1275        end
1276        _tmp = apply(:_SetextBottom1)
1277        unless _tmp
1278          self.pos = _save2
1279        end
1280        break
1281      end # end sequence
1282
1283      self.pos = _save1
1284      unless _tmp
1285        self.pos = _save
1286        break
1287      end
1288      _tmp = _StartList()
1289      a = @result
1290      unless _tmp
1291        self.pos = _save
1292        break
1293      end
1294      _save3 = self.pos
1295
1296      _save4 = self.pos
1297      while true # sequence
1298        _save5 = self.pos
1299        _tmp = _Endline()
1300        _tmp = _tmp ? nil : true
1301        self.pos = _save5
1302        unless _tmp
1303          self.pos = _save4
1304          break
1305        end
1306        _tmp = apply(:_Inline)
1307        b = @result
1308        unless _tmp
1309          self.pos = _save4
1310          break
1311        end
1312        @result = begin;  a << b ; end
1313        _tmp = true
1314        unless _tmp
1315          self.pos = _save4
1316        end
1317        break
1318      end # end sequence
1319
1320      if _tmp
1321        while true
1322
1323          _save6 = self.pos
1324          while true # sequence
1325            _save7 = self.pos
1326            _tmp = _Endline()
1327            _tmp = _tmp ? nil : true
1328            self.pos = _save7
1329            unless _tmp
1330              self.pos = _save6
1331              break
1332            end
1333            _tmp = apply(:_Inline)
1334            b = @result
1335            unless _tmp
1336              self.pos = _save6
1337              break
1338            end
1339            @result = begin;  a << b ; end
1340            _tmp = true
1341            unless _tmp
1342              self.pos = _save6
1343            end
1344            break
1345          end # end sequence
1346
1347          break unless _tmp
1348        end
1349        _tmp = true
1350      else
1351        self.pos = _save3
1352      end
1353      unless _tmp
1354        self.pos = _save
1355        break
1356      end
1357      _tmp = _Sp()
1358      unless _tmp
1359        self.pos = _save
1360        break
1361      end
1362      _tmp = _Newline()
1363      unless _tmp
1364        self.pos = _save
1365        break
1366      end
1367      _tmp = apply(:_SetextBottom1)
1368      unless _tmp
1369        self.pos = _save
1370        break
1371      end
1372      @result = begin;  RDoc::Markup::Heading.new(1, a.join) ; end
1373      _tmp = true
1374      unless _tmp
1375        self.pos = _save
1376      end
1377      break
1378    end # end sequence
1379
1380    set_failed_rule :_SetextHeading1 unless _tmp
1381    return _tmp
1382  end
1383
1384  # SetextHeading2 = &(@RawLine SetextBottom2) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom2 { RDoc::Markup::Heading.new(2, a.join) }
1385  def _SetextHeading2
1386
1387    _save = self.pos
1388    while true # sequence
1389      _save1 = self.pos
1390
1391      _save2 = self.pos
1392      while true # sequence
1393        _tmp = _RawLine()
1394        unless _tmp
1395          self.pos = _save2
1396          break
1397        end
1398        _tmp = apply(:_SetextBottom2)
1399        unless _tmp
1400          self.pos = _save2
1401        end
1402        break
1403      end # end sequence
1404
1405      self.pos = _save1
1406      unless _tmp
1407        self.pos = _save
1408        break
1409      end
1410      _tmp = _StartList()
1411      a = @result
1412      unless _tmp
1413        self.pos = _save
1414        break
1415      end
1416      _save3 = self.pos
1417
1418      _save4 = self.pos
1419      while true # sequence
1420        _save5 = self.pos
1421        _tmp = _Endline()
1422        _tmp = _tmp ? nil : true
1423        self.pos = _save5
1424        unless _tmp
1425          self.pos = _save4
1426          break
1427        end
1428        _tmp = apply(:_Inline)
1429        b = @result
1430        unless _tmp
1431          self.pos = _save4
1432          break
1433        end
1434        @result = begin;  a << b ; end
1435        _tmp = true
1436        unless _tmp
1437          self.pos = _save4
1438        end
1439        break
1440      end # end sequence
1441
1442      if _tmp
1443        while true
1444
1445          _save6 = self.pos
1446          while true # sequence
1447            _save7 = self.pos
1448            _tmp = _Endline()
1449            _tmp = _tmp ? nil : true
1450            self.pos = _save7
1451            unless _tmp
1452              self.pos = _save6
1453              break
1454            end
1455            _tmp = apply(:_Inline)
1456            b = @result
1457            unless _tmp
1458              self.pos = _save6
1459              break
1460            end
1461            @result = begin;  a << b ; end
1462            _tmp = true
1463            unless _tmp
1464              self.pos = _save6
1465            end
1466            break
1467          end # end sequence
1468
1469          break unless _tmp
1470        end
1471        _tmp = true
1472      else
1473        self.pos = _save3
1474      end
1475      unless _tmp
1476        self.pos = _save
1477        break
1478      end
1479      _tmp = _Sp()
1480      unless _tmp
1481        self.pos = _save
1482        break
1483      end
1484      _tmp = _Newline()
1485      unless _tmp
1486        self.pos = _save
1487        break
1488      end
1489      _tmp = apply(:_SetextBottom2)
1490      unless _tmp
1491        self.pos = _save
1492        break
1493      end
1494      @result = begin;  RDoc::Markup::Heading.new(2, a.join) ; end
1495      _tmp = true
1496      unless _tmp
1497        self.pos = _save
1498      end
1499      break
1500    end # end sequence
1501
1502    set_failed_rule :_SetextHeading2 unless _tmp
1503    return _tmp
1504  end
1505
1506  # Heading = (SetextHeading | AtxHeading)
1507  def _Heading
1508
1509    _save = self.pos
1510    while true # choice
1511      _tmp = apply(:_SetextHeading)
1512      break if _tmp
1513      self.pos = _save
1514      _tmp = apply(:_AtxHeading)
1515      break if _tmp
1516      self.pos = _save
1517      break
1518    end # end choice
1519
1520    set_failed_rule :_Heading unless _tmp
1521    return _tmp
1522  end
1523
1524  # BlockQuote = BlockQuoteRaw:a { RDoc::Markup::BlockQuote.new(*a) }
1525  def _BlockQuote
1526
1527    _save = self.pos
1528    while true # sequence
1529      _tmp = apply(:_BlockQuoteRaw)
1530      a = @result
1531      unless _tmp
1532        self.pos = _save
1533        break
1534      end
1535      @result = begin;  RDoc::Markup::BlockQuote.new(*a) ; end
1536      _tmp = true
1537      unless _tmp
1538        self.pos = _save
1539      end
1540      break
1541    end # end sequence
1542
1543    set_failed_rule :_BlockQuote unless _tmp
1544    return _tmp
1545  end
1546
1547  # BlockQuoteRaw = @StartList:a (">" " "? Line:l { a << l } (!">" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }
1548  def _BlockQuoteRaw
1549
1550    _save = self.pos
1551    while true # sequence
1552      _tmp = _StartList()
1553      a = @result
1554      unless _tmp
1555        self.pos = _save
1556        break
1557      end
1558      _save1 = self.pos
1559
1560      _save2 = self.pos
1561      while true # sequence
1562        _tmp = match_string(">")
1563        unless _tmp
1564          self.pos = _save2
1565          break
1566        end
1567        _save3 = self.pos
1568        _tmp = match_string(" ")
1569        unless _tmp
1570          _tmp = true
1571          self.pos = _save3
1572        end
1573        unless _tmp
1574          self.pos = _save2
1575          break
1576        end
1577        _tmp = apply(:_Line)
1578        l = @result
1579        unless _tmp
1580          self.pos = _save2
1581          break
1582        end
1583        @result = begin;  a << l ; end
1584        _tmp = true
1585        unless _tmp
1586          self.pos = _save2
1587          break
1588        end
1589        while true
1590
1591          _save5 = self.pos
1592          while true # sequence
1593            _save6 = self.pos
1594            _tmp = match_string(">")
1595            _tmp = _tmp ? nil : true
1596            self.pos = _save6
1597            unless _tmp
1598              self.pos = _save5
1599              break
1600            end
1601            _save7 = self.pos
1602            _tmp = _BlankLine()
1603            _tmp = _tmp ? nil : true
1604            self.pos = _save7
1605            unless _tmp
1606              self.pos = _save5
1607              break
1608            end
1609            _tmp = apply(:_Line)
1610            c = @result
1611            unless _tmp
1612              self.pos = _save5
1613              break
1614            end
1615            @result = begin;  a << c ; end
1616            _tmp = true
1617            unless _tmp
1618              self.pos = _save5
1619            end
1620            break
1621          end # end sequence
1622
1623          break unless _tmp
1624        end
1625        _tmp = true
1626        unless _tmp
1627          self.pos = _save2
1628          break
1629        end
1630        while true
1631
1632          _save9 = self.pos
1633          while true # sequence
1634            _tmp = _BlankLine()
1635            n = @result
1636            unless _tmp
1637              self.pos = _save9
1638              break
1639            end
1640            @result = begin;  a << n ; end
1641            _tmp = true
1642            unless _tmp
1643              self.pos = _save9
1644            end
1645            break
1646          end # end sequence
1647
1648          break unless _tmp
1649        end
1650        _tmp = true
1651        unless _tmp
1652          self.pos = _save2
1653        end
1654        break
1655      end # end sequence
1656
1657      if _tmp
1658        while true
1659
1660          _save10 = self.pos
1661          while true # sequence
1662            _tmp = match_string(">")
1663            unless _tmp
1664              self.pos = _save10
1665              break
1666            end
1667            _save11 = self.pos
1668            _tmp = match_string(" ")
1669            unless _tmp
1670              _tmp = true
1671              self.pos = _save11
1672            end
1673            unless _tmp
1674              self.pos = _save10
1675              break
1676            end
1677            _tmp = apply(:_Line)
1678            l = @result
1679            unless _tmp
1680              self.pos = _save10
1681              break
1682            end
1683            @result = begin;  a << l ; end
1684            _tmp = true
1685            unless _tmp
1686              self.pos = _save10
1687              break
1688            end
1689            while true
1690
1691              _save13 = self.pos
1692              while true # sequence
1693                _save14 = self.pos
1694                _tmp = match_string(">")
1695                _tmp = _tmp ? nil : true
1696                self.pos = _save14
1697                unless _tmp
1698                  self.pos = _save13
1699                  break
1700                end
1701                _save15 = self.pos
1702                _tmp = _BlankLine()
1703                _tmp = _tmp ? nil : true
1704                self.pos = _save15
1705                unless _tmp
1706                  self.pos = _save13
1707                  break
1708                end
1709                _tmp = apply(:_Line)
1710                c = @result
1711                unless _tmp
1712                  self.pos = _save13
1713                  break
1714                end
1715                @result = begin;  a << c ; end
1716                _tmp = true
1717                unless _tmp
1718                  self.pos = _save13
1719                end
1720                break
1721              end # end sequence
1722
1723              break unless _tmp
1724            end
1725            _tmp = true
1726            unless _tmp
1727              self.pos = _save10
1728              break
1729            end
1730            while true
1731
1732              _save17 = self.pos
1733              while true # sequence
1734                _tmp = _BlankLine()
1735                n = @result
1736                unless _tmp
1737                  self.pos = _save17
1738                  break
1739                end
1740                @result = begin;  a << n ; end
1741                _tmp = true
1742                unless _tmp
1743                  self.pos = _save17
1744                end
1745                break
1746              end # end sequence
1747
1748              break unless _tmp
1749            end
1750            _tmp = true
1751            unless _tmp
1752              self.pos = _save10
1753            end
1754            break
1755          end # end sequence
1756
1757          break unless _tmp
1758        end
1759        _tmp = true
1760      else
1761        self.pos = _save1
1762      end
1763      unless _tmp
1764        self.pos = _save
1765        break
1766      end
1767      @result = begin;  inner_parse a.join ; end
1768      _tmp = true
1769      unless _tmp
1770        self.pos = _save
1771      end
1772      break
1773    end # end sequence
1774
1775    set_failed_rule :_BlockQuoteRaw unless _tmp
1776    return _tmp
1777  end
1778
1779  # NonblankIndentedLine = !@BlankLine IndentedLine
1780  def _NonblankIndentedLine
1781
1782    _save = self.pos
1783    while true # sequence
1784      _save1 = self.pos
1785      _tmp = _BlankLine()
1786      _tmp = _tmp ? nil : true
1787      self.pos = _save1
1788      unless _tmp
1789        self.pos = _save
1790        break
1791      end
1792      _tmp = apply(:_IndentedLine)
1793      unless _tmp
1794        self.pos = _save
1795      end
1796      break
1797    end # end sequence
1798
1799    set_failed_rule :_NonblankIndentedLine unless _tmp
1800    return _tmp
1801  end
1802
1803  # VerbatimChunk = @BlankLine*:a NonblankIndentedLine+:b { a.concat b }
1804  def _VerbatimChunk
1805
1806    _save = self.pos
1807    while true # sequence
1808      _ary = []
1809      while true
1810        _tmp = _BlankLine()
1811        _ary << @result if _tmp
1812        break unless _tmp
1813      end
1814      _tmp = true
1815      @result = _ary
1816      a = @result
1817      unless _tmp
1818        self.pos = _save
1819        break
1820      end
1821      _save2 = self.pos
1822      _ary = []
1823      _tmp = apply(:_NonblankIndentedLine)
1824      if _tmp
1825        _ary << @result
1826        while true
1827          _tmp = apply(:_NonblankIndentedLine)
1828          _ary << @result if _tmp
1829          break unless _tmp
1830        end
1831        _tmp = true
1832        @result = _ary
1833      else
1834        self.pos = _save2
1835      end
1836      b = @result
1837      unless _tmp
1838        self.pos = _save
1839        break
1840      end
1841      @result = begin;  a.concat b ; end
1842      _tmp = true
1843      unless _tmp
1844        self.pos = _save
1845      end
1846      break
1847    end # end sequence
1848
1849    set_failed_rule :_VerbatimChunk unless _tmp
1850    return _tmp
1851  end
1852
1853  # Verbatim = VerbatimChunk+:a { RDoc::Markup::Verbatim.new(*a.flatten) }
1854  def _Verbatim
1855
1856    _save = self.pos
1857    while true # sequence
1858      _save1 = self.pos
1859      _ary = []
1860      _tmp = apply(:_VerbatimChunk)
1861      if _tmp
1862        _ary << @result
1863        while true
1864          _tmp = apply(:_VerbatimChunk)
1865          _ary << @result if _tmp
1866          break unless _tmp
1867        end
1868        _tmp = true
1869        @result = _ary
1870      else
1871        self.pos = _save1
1872      end
1873      a = @result
1874      unless _tmp
1875        self.pos = _save
1876        break
1877      end
1878      @result = begin;  RDoc::Markup::Verbatim.new(*a.flatten) ; end
1879      _tmp = true
1880      unless _tmp
1881        self.pos = _save
1882      end
1883      break
1884    end # end sequence
1885
1886    set_failed_rule :_Verbatim unless _tmp
1887    return _tmp
1888  end
1889
1890  # HorizontalRule = @NonindentSpace ("*" @Sp "*" @Sp "*" (@Sp "*")* | "-" @Sp "-" @Sp "-" (@Sp "-")* | "_" @Sp "_" @Sp "_" (@Sp "_")*) @Sp @Newline @BlankLine+ { RDoc::Markup::Rule.new 1 }
1891  def _HorizontalRule
1892
1893    _save = self.pos
1894    while true # sequence
1895      _tmp = _NonindentSpace()
1896      unless _tmp
1897        self.pos = _save
1898        break
1899      end
1900
1901      _save1 = self.pos
1902      while true # choice
1903
1904        _save2 = self.pos
1905        while true # sequence
1906          _tmp = match_string("*")
1907          unless _tmp
1908            self.pos = _save2
1909            break
1910          end
1911          _tmp = _Sp()
1912          unless _tmp
1913            self.pos = _save2
1914            break
1915          end
1916          _tmp = match_string("*")
1917          unless _tmp
1918            self.pos = _save2
1919            break
1920          end
1921          _tmp = _Sp()
1922          unless _tmp
1923            self.pos = _save2
1924            break
1925          end
1926          _tmp = match_string("*")
1927          unless _tmp
1928            self.pos = _save2
1929            break
1930          end
1931          while true
1932
1933            _save4 = self.pos
1934            while true # sequence
1935              _tmp = _Sp()
1936              unless _tmp
1937                self.pos = _save4
1938                break
1939              end
1940              _tmp = match_string("*")
1941              unless _tmp
1942                self.pos = _save4
1943              end
1944              break
1945            end # end sequence
1946
1947            break unless _tmp
1948          end
1949          _tmp = true
1950          unless _tmp
1951            self.pos = _save2
1952          end
1953          break
1954        end # end sequence
1955
1956        break if _tmp
1957        self.pos = _save1
1958
1959        _save5 = self.pos
1960        while true # sequence
1961          _tmp = match_string("-")
1962          unless _tmp
1963            self.pos = _save5
1964            break
1965          end
1966          _tmp = _Sp()
1967          unless _tmp
1968            self.pos = _save5
1969            break
1970          end
1971          _tmp = match_string("-")
1972          unless _tmp
1973            self.pos = _save5
1974            break
1975          end
1976          _tmp = _Sp()
1977          unless _tmp
1978            self.pos = _save5
1979            break
1980          end
1981          _tmp = match_string("-")
1982          unless _tmp
1983            self.pos = _save5
1984            break
1985          end
1986          while true
1987
1988            _save7 = self.pos
1989            while true # sequence
1990              _tmp = _Sp()
1991              unless _tmp
1992                self.pos = _save7
1993                break
1994              end
1995              _tmp = match_string("-")
1996              unless _tmp
1997                self.pos = _save7
1998              end
1999              break
2000            end # end sequence
2001
2002            break unless _tmp
2003          end
2004          _tmp = true
2005          unless _tmp
2006            self.pos = _save5
2007          end
2008          break
2009        end # end sequence
2010
2011        break if _tmp
2012        self.pos = _save1
2013
2014        _save8 = self.pos
2015        while true # sequence
2016          _tmp = match_string("_")
2017          unless _tmp
2018            self.pos = _save8
2019            break
2020          end
2021          _tmp = _Sp()
2022          unless _tmp
2023            self.pos = _save8
2024            break
2025          end
2026          _tmp = match_string("_")
2027          unless _tmp
2028            self.pos = _save8
2029            break
2030          end
2031          _tmp = _Sp()
2032          unless _tmp
2033            self.pos = _save8
2034            break
2035          end
2036          _tmp = match_string("_")
2037          unless _tmp
2038            self.pos = _save8
2039            break
2040          end
2041          while true
2042
2043            _save10 = self.pos
2044            while true # sequence
2045              _tmp = _Sp()
2046              unless _tmp
2047                self.pos = _save10
2048                break
2049              end
2050              _tmp = match_string("_")
2051              unless _tmp
2052                self.pos = _save10
2053              end
2054              break
2055            end # end sequence
2056
2057            break unless _tmp
2058          end
2059          _tmp = true
2060          unless _tmp
2061            self.pos = _save8
2062          end
2063          break
2064        end # end sequence
2065
2066        break if _tmp
2067        self.pos = _save1
2068        break
2069      end # end choice
2070
2071      unless _tmp
2072        self.pos = _save
2073        break
2074      end
2075      _tmp = _Sp()
2076      unless _tmp
2077        self.pos = _save
2078        break
2079      end
2080      _tmp = _Newline()
2081      unless _tmp
2082        self.pos = _save
2083        break
2084      end
2085      _save11 = self.pos
2086      _tmp = _BlankLine()
2087      if _tmp
2088        while true
2089          _tmp = _BlankLine()
2090          break unless _tmp
2091        end
2092        _tmp = true
2093      else
2094        self.pos = _save11
2095      end
2096      unless _tmp
2097        self.pos = _save
2098        break
2099      end
2100      @result = begin;  RDoc::Markup::Rule.new 1 ; end
2101      _tmp = true
2102      unless _tmp
2103        self.pos = _save
2104      end
2105      break
2106    end # end sequence
2107
2108    set_failed_rule :_HorizontalRule unless _tmp
2109    return _tmp
2110  end
2111
2112  # Bullet = !HorizontalRule @NonindentSpace /[+*-]/ @Spacechar+
2113  def _Bullet
2114
2115    _save = self.pos
2116    while true # sequence
2117      _save1 = self.pos
2118      _tmp = apply(:_HorizontalRule)
2119      _tmp = _tmp ? nil : true
2120      self.pos = _save1
2121      unless _tmp
2122        self.pos = _save
2123        break
2124      end
2125      _tmp = _NonindentSpace()
2126      unless _tmp
2127        self.pos = _save
2128        break
2129      end
2130      _tmp = scan(/\A(?-mix:[+*-])/)
2131      unless _tmp
2132        self.pos = _save
2133        break
2134      end
2135      _save2 = self.pos
2136      _tmp = _Spacechar()
2137      if _tmp
2138        while true
2139          _tmp = _Spacechar()
2140          break unless _tmp
2141        end
2142        _tmp = true
2143      else
2144        self.pos = _save2
2145      end
2146      unless _tmp
2147        self.pos = _save
2148      end
2149      break
2150    end # end sequence
2151
2152    set_failed_rule :_Bullet unless _tmp
2153    return _tmp
2154  end
2155
2156  # BulletList = &Bullet (ListTight | ListLoose):a { RDoc::Markup::List.new(:BULLET, *a) }
2157  def _BulletList
2158
2159    _save = self.pos
2160    while true # sequence
2161      _save1 = self.pos
2162      _tmp = apply(:_Bullet)
2163      self.pos = _save1
2164      unless _tmp
2165        self.pos = _save
2166        break
2167      end
2168
2169      _save2 = self.pos
2170      while true # choice
2171        _tmp = apply(:_ListTight)
2172        break if _tmp
2173        self.pos = _save2
2174        _tmp = apply(:_ListLoose)
2175        break if _tmp
2176        self.pos = _save2
2177        break
2178      end # end choice
2179
2180      a = @result
2181      unless _tmp
2182        self.pos = _save
2183        break
2184      end
2185      @result = begin;  RDoc::Markup::List.new(:BULLET, *a) ; end
2186      _tmp = true
2187      unless _tmp
2188        self.pos = _save
2189      end
2190      break
2191    end # end sequence
2192
2193    set_failed_rule :_BulletList unless _tmp
2194    return _tmp
2195  end
2196
2197  # ListTight = ListItemTight+:a @BlankLine* !(Bullet | Enumerator) { a }
2198  def _ListTight
2199
2200    _save = self.pos
2201    while true # sequence
2202      _save1 = self.pos
2203      _ary = []
2204      _tmp = apply(:_ListItemTight)
2205      if _tmp
2206        _ary << @result
2207        while true
2208          _tmp = apply(:_ListItemTight)
2209          _ary << @result if _tmp
2210          break unless _tmp
2211        end
2212        _tmp = true
2213        @result = _ary
2214      else
2215        self.pos = _save1
2216      end
2217      a = @result
2218      unless _tmp
2219        self.pos = _save
2220        break
2221      end
2222      while true
2223        _tmp = _BlankLine()
2224        break unless _tmp
2225      end
2226      _tmp = true
2227      unless _tmp
2228        self.pos = _save
2229        break
2230      end
2231      _save3 = self.pos
2232
2233      _save4 = self.pos
2234      while true # choice
2235        _tmp = apply(:_Bullet)
2236        break if _tmp
2237        self.pos = _save4
2238        _tmp = apply(:_Enumerator)
2239        break if _tmp
2240        self.pos = _save4
2241        break
2242      end # end choice
2243
2244      _tmp = _tmp ? nil : true
2245      self.pos = _save3
2246      unless _tmp
2247        self.pos = _save
2248        break
2249      end
2250      @result = begin;  a ; end
2251      _tmp = true
2252      unless _tmp
2253        self.pos = _save
2254      end
2255      break
2256    end # end sequence
2257
2258    set_failed_rule :_ListTight unless _tmp
2259    return _tmp
2260  end
2261
2262  # ListLoose = @StartList:a (ListItem:b @BlankLine* { a << b })+ { a }
2263  def _ListLoose
2264
2265    _save = self.pos
2266    while true # sequence
2267      _tmp = _StartList()
2268      a = @result
2269      unless _tmp
2270        self.pos = _save
2271        break
2272      end
2273      _save1 = self.pos
2274
2275      _save2 = self.pos
2276      while true # sequence
2277        _tmp = apply(:_ListItem)
2278        b = @result
2279        unless _tmp
2280          self.pos = _save2
2281          break
2282        end
2283        while true
2284          _tmp = _BlankLine()
2285          break unless _tmp
2286        end
2287        _tmp = true
2288        unless _tmp
2289          self.pos = _save2
2290          break
2291        end
2292        @result = begin;  a << b ; end
2293        _tmp = true
2294        unless _tmp
2295          self.pos = _save2
2296        end
2297        break
2298      end # end sequence
2299
2300      if _tmp
2301        while true
2302
2303          _save4 = self.pos
2304          while true # sequence
2305            _tmp = apply(:_ListItem)
2306            b = @result
2307            unless _tmp
2308              self.pos = _save4
2309              break
2310            end
2311            while true
2312              _tmp = _BlankLine()
2313              break unless _tmp
2314            end
2315            _tmp = true
2316            unless _tmp
2317              self.pos = _save4
2318              break
2319            end
2320            @result = begin;  a << b ; end
2321            _tmp = true
2322            unless _tmp
2323              self.pos = _save4
2324            end
2325            break
2326          end # end sequence
2327
2328          break unless _tmp
2329        end
2330        _tmp = true
2331      else
2332        self.pos = _save1
2333      end
2334      unless _tmp
2335        self.pos = _save
2336        break
2337      end
2338      @result = begin;  a ; end
2339      _tmp = true
2340      unless _tmp
2341        self.pos = _save
2342      end
2343      break
2344    end # end sequence
2345
2346    set_failed_rule :_ListLoose unless _tmp
2347    return _tmp
2348  end
2349
2350  # ListItem = (Bullet | Enumerator) @StartList:a ListBlock:b { a << b } (ListContinuationBlock:c { a.push(*c) })* { list_item_from a }
2351  def _ListItem
2352
2353    _save = self.pos
2354    while true # sequence
2355
2356      _save1 = self.pos
2357      while true # choice
2358        _tmp = apply(:_Bullet)
2359        break if _tmp
2360        self.pos = _save1
2361        _tmp = apply(:_Enumerator)
2362        break if _tmp
2363        self.pos = _save1
2364        break
2365      end # end choice
2366
2367      unless _tmp
2368        self.pos = _save
2369        break
2370      end
2371      _tmp = _StartList()
2372      a = @result
2373      unless _tmp
2374        self.pos = _save
2375        break
2376      end
2377      _tmp = apply(:_ListBlock)
2378      b = @result
2379      unless _tmp
2380        self.pos = _save
2381        break
2382      end
2383      @result = begin;  a << b ; end
2384      _tmp = true
2385      unless _tmp
2386        self.pos = _save
2387        break
2388      end
2389      while true
2390
2391        _save3 = self.pos
2392        while true # sequence
2393          _tmp = apply(:_ListContinuationBlock)
2394          c = @result
2395          unless _tmp
2396            self.pos = _save3
2397            break
2398          end
2399          @result = begin;  a.push(*c) ; end
2400          _tmp = true
2401          unless _tmp
2402            self.pos = _save3
2403          end
2404          break
2405        end # end sequence
2406
2407        break unless _tmp
2408      end
2409      _tmp = true
2410      unless _tmp
2411        self.pos = _save
2412        break
2413      end
2414      @result = begin;  list_item_from a ; end
2415      _tmp = true
2416      unless _tmp
2417        self.pos = _save
2418      end
2419      break
2420    end # end sequence
2421
2422    set_failed_rule :_ListItem unless _tmp
2423    return _tmp
2424  end
2425
2426  # ListItemTight = (Bullet | Enumerator) ListBlock:a (!@BlankLine ListContinuationBlock:b { a.push(*b) })* !ListContinuationBlock { list_item_from a }
2427  def _ListItemTight
2428
2429    _save = self.pos
2430    while true # sequence
2431
2432      _save1 = self.pos
2433      while true # choice
2434        _tmp = apply(:_Bullet)
2435        break if _tmp
2436        self.pos = _save1
2437        _tmp = apply(:_Enumerator)
2438        break if _tmp
2439        self.pos = _save1
2440        break
2441      end # end choice
2442
2443      unless _tmp
2444        self.pos = _save
2445        break
2446      end
2447      _tmp = apply(:_ListBlock)
2448      a = @result
2449      unless _tmp
2450        self.pos = _save
2451        break
2452      end
2453      while true
2454
2455        _save3 = self.pos
2456        while true # sequence
2457          _save4 = self.pos
2458          _tmp = _BlankLine()
2459          _tmp = _tmp ? nil : true
2460          self.pos = _save4
2461          unless _tmp
2462            self.pos = _save3
2463            break
2464          end
2465          _tmp = apply(:_ListContinuationBlock)
2466          b = @result
2467          unless _tmp
2468            self.pos = _save3
2469            break
2470          end
2471          @result = begin;  a.push(*b) ; end
2472          _tmp = true
2473          unless _tmp
2474            self.pos = _save3
2475          end
2476          break
2477        end # end sequence
2478
2479        break unless _tmp
2480      end
2481      _tmp = true
2482      unless _tmp
2483        self.pos = _save
2484        break
2485      end
2486      _save5 = self.pos
2487      _tmp = apply(:_ListContinuationBlock)
2488      _tmp = _tmp ? nil : true
2489      self.pos = _save5
2490      unless _tmp
2491        self.pos = _save
2492        break
2493      end
2494      @result = begin;  list_item_from a ; end
2495      _tmp = true
2496      unless _tmp
2497        self.pos = _save
2498      end
2499      break
2500    end # end sequence
2501
2502    set_failed_rule :_ListItemTight unless _tmp
2503    return _tmp
2504  end
2505
2506  # ListBlock = !@BlankLine Line:a ListBlockLine*:c { [a, *c] }
2507  def _ListBlock
2508
2509    _save = self.pos
2510    while true # sequence
2511      _save1 = self.pos
2512      _tmp = _BlankLine()
2513      _tmp = _tmp ? nil : true
2514      self.pos = _save1
2515      unless _tmp
2516        self.pos = _save
2517        break
2518      end
2519      _tmp = apply(:_Line)
2520      a = @result
2521      unless _tmp
2522        self.pos = _save
2523        break
2524      end
2525      _ary = []
2526      while true
2527        _tmp = apply(:_ListBlockLine)
2528        _ary << @result if _tmp
2529        break unless _tmp
2530      end
2531      _tmp = true
2532      @result = _ary
2533      c = @result
2534      unless _tmp
2535        self.pos = _save
2536        break
2537      end
2538      @result = begin;  [a, *c] ; end
2539      _tmp = true
2540      unless _tmp
2541        self.pos = _save
2542      end
2543      break
2544    end # end sequence
2545
2546    set_failed_rule :_ListBlock unless _tmp
2547    return _tmp
2548  end
2549
2550  # ListContinuationBlock = @StartList:a @BlankLine* { a << "\n" } (Indent ListBlock:b { a.concat b })+ { a }
2551  def _ListContinuationBlock
2552
2553    _save = self.pos
2554    while true # sequence
2555      _tmp = _StartList()
2556      a = @result
2557      unless _tmp
2558        self.pos = _save
2559        break
2560      end
2561      while true
2562        _tmp = _BlankLine()
2563        break unless _tmp
2564      end
2565      _tmp = true
2566      unless _tmp
2567        self.pos = _save
2568        break
2569      end
2570      @result = begin;  a << "\n" ; end
2571      _tmp = true
2572      unless _tmp
2573        self.pos = _save
2574        break
2575      end
2576      _save2 = self.pos
2577
2578      _save3 = self.pos
2579      while true # sequence
2580        _tmp = apply(:_Indent)
2581        unless _tmp
2582          self.pos = _save3
2583          break
2584        end
2585        _tmp = apply(:_ListBlock)
2586        b = @result
2587        unless _tmp
2588          self.pos = _save3
2589          break
2590        end
2591        @result = begin;  a.concat b ; end
2592        _tmp = true
2593        unless _tmp
2594          self.pos = _save3
2595        end
2596        break
2597      end # end sequence
2598
2599      if _tmp
2600        while true
2601
2602          _save4 = self.pos
2603          while true # sequence
2604            _tmp = apply(:_Indent)
2605            unless _tmp
2606              self.pos = _save4
2607              break
2608            end
2609            _tmp = apply(:_ListBlock)
2610            b = @result
2611            unless _tmp
2612              self.pos = _save4
2613              break
2614            end
2615            @result = begin;  a.concat b ; end
2616            _tmp = true
2617            unless _tmp
2618              self.pos = _save4
2619            end
2620            break
2621          end # end sequence
2622
2623          break unless _tmp
2624        end
2625        _tmp = true
2626      else
2627        self.pos = _save2
2628      end
2629      unless _tmp
2630        self.pos = _save
2631        break
2632      end
2633      @result = begin;  a ; end
2634      _tmp = true
2635      unless _tmp
2636        self.pos = _save
2637      end
2638      break
2639    end # end sequence
2640
2641    set_failed_rule :_ListContinuationBlock unless _tmp
2642    return _tmp
2643  end
2644
2645  # Enumerator = @NonindentSpace [0-9]+ "." @Spacechar+
2646  def _Enumerator
2647
2648    _save = self.pos
2649    while true # sequence
2650      _tmp = _NonindentSpace()
2651      unless _tmp
2652        self.pos = _save
2653        break
2654      end
2655      _save1 = self.pos
2656      _save2 = self.pos
2657      _tmp = get_byte
2658      if _tmp
2659        unless _tmp >= 48 and _tmp <= 57
2660          self.pos = _save2
2661          _tmp = nil
2662        end
2663      end
2664      if _tmp
2665        while true
2666          _save3 = self.pos
2667          _tmp = get_byte
2668          if _tmp
2669            unless _tmp >= 48 and _tmp <= 57
2670              self.pos = _save3
2671              _tmp = nil
2672            end
2673          end
2674          break unless _tmp
2675        end
2676        _tmp = true
2677      else
2678        self.pos = _save1
2679      end
2680      unless _tmp
2681        self.pos = _save
2682        break
2683      end
2684      _tmp = match_string(".")
2685      unless _tmp
2686        self.pos = _save
2687        break
2688      end
2689      _save4 = self.pos
2690      _tmp = _Spacechar()
2691      if _tmp
2692        while true
2693          _tmp = _Spacechar()
2694          break unless _tmp
2695        end
2696        _tmp = true
2697      else
2698        self.pos = _save4
2699      end
2700      unless _tmp
2701        self.pos = _save
2702      end
2703      break
2704    end # end sequence
2705
2706    set_failed_rule :_Enumerator unless _tmp
2707    return _tmp
2708  end
2709
2710  # OrderedList = &Enumerator (ListTight | ListLoose):a { RDoc::Markup::List.new(:NUMBER, *a) }
2711  def _OrderedList
2712
2713    _save = self.pos
2714    while true # sequence
2715      _save1 = self.pos
2716      _tmp = apply(:_Enumerator)
2717      self.pos = _save1
2718      unless _tmp
2719        self.pos = _save
2720        break
2721      end
2722
2723      _save2 = self.pos
2724      while true # choice
2725        _tmp = apply(:_ListTight)
2726        break if _tmp
2727        self.pos = _save2
2728        _tmp = apply(:_ListLoose)
2729        break if _tmp
2730        self.pos = _save2
2731        break
2732      end # end choice
2733
2734      a = @result
2735      unless _tmp
2736        self.pos = _save
2737        break
2738      end
2739      @result = begin;  RDoc::Markup::List.new(:NUMBER, *a) ; end
2740      _tmp = true
2741      unless _tmp
2742        self.pos = _save
2743      end
2744      break
2745    end # end sequence
2746
2747    set_failed_rule :_OrderedList unless _tmp
2748    return _tmp
2749  end
2750
2751  # ListBlockLine = !@BlankLine !(Indent? (Bullet | Enumerator)) !HorizontalRule OptionallyIndentedLine
2752  def _ListBlockLine
2753
2754    _save = self.pos
2755    while true # sequence
2756      _save1 = self.pos
2757      _tmp = _BlankLine()
2758      _tmp = _tmp ? nil : true
2759      self.pos = _save1
2760      unless _tmp
2761        self.pos = _save
2762        break
2763      end
2764      _save2 = self.pos
2765
2766      _save3 = self.pos
2767      while true # sequence
2768        _save4 = self.pos
2769        _tmp = apply(:_Indent)
2770        unless _tmp
2771          _tmp = true
2772          self.pos = _save4
2773        end
2774        unless _tmp
2775          self.pos = _save3
2776          break
2777        end
2778
2779        _save5 = self.pos
2780        while true # choice
2781          _tmp = apply(:_Bullet)
2782          break if _tmp
2783          self.pos = _save5
2784          _tmp = apply(:_Enumerator)
2785          break if _tmp
2786          self.pos = _save5
2787          break
2788        end # end choice
2789
2790        unless _tmp
2791          self.pos = _save3
2792        end
2793        break
2794      end # end sequence
2795
2796      _tmp = _tmp ? nil : true
2797      self.pos = _save2
2798      unless _tmp
2799        self.pos = _save
2800        break
2801      end
2802      _save6 = self.pos
2803      _tmp = apply(:_HorizontalRule)
2804      _tmp = _tmp ? nil : true
2805      self.pos = _save6
2806      unless _tmp
2807        self.pos = _save
2808        break
2809      end
2810      _tmp = apply(:_OptionallyIndentedLine)
2811      unless _tmp
2812        self.pos = _save
2813      end
2814      break
2815    end # end sequence
2816
2817    set_failed_rule :_ListBlockLine unless _tmp
2818    return _tmp
2819  end
2820
2821  # HtmlOpenAnchor = "<" Spnl ("a" | "A") Spnl HtmlAttribute* ">"
2822  def _HtmlOpenAnchor
2823
2824    _save = self.pos
2825    while true # sequence
2826      _tmp = match_string("<")
2827      unless _tmp
2828        self.pos = _save
2829        break
2830      end
2831      _tmp = apply(:_Spnl)
2832      unless _tmp
2833        self.pos = _save
2834        break
2835      end
2836
2837      _save1 = self.pos
2838      while true # choice
2839        _tmp = match_string("a")
2840        break if _tmp
2841        self.pos = _save1
2842        _tmp = match_string("A")
2843        break if _tmp
2844        self.pos = _save1
2845        break
2846      end # end choice
2847
2848      unless _tmp
2849        self.pos = _save
2850        break
2851      end
2852      _tmp = apply(:_Spnl)
2853      unless _tmp
2854        self.pos = _save
2855        break
2856      end
2857      while true
2858        _tmp = apply(:_HtmlAttribute)
2859        break unless _tmp
2860      end
2861      _tmp = true
2862      unless _tmp
2863        self.pos = _save
2864        break
2865      end
2866      _tmp = match_string(">")
2867      unless _tmp
2868        self.pos = _save
2869      end
2870      break
2871    end # end sequence
2872
2873    set_failed_rule :_HtmlOpenAnchor unless _tmp
2874    return _tmp
2875  end
2876
2877  # HtmlCloseAnchor = "<" Spnl "/" ("a" | "A") Spnl ">"
2878  def _HtmlCloseAnchor
2879
2880    _save = self.pos
2881    while true # sequence
2882      _tmp = match_string("<")
2883      unless _tmp
2884        self.pos = _save
2885        break
2886      end
2887      _tmp = apply(:_Spnl)
2888      unless _tmp
2889        self.pos = _save
2890        break
2891      end
2892      _tmp = match_string("/")
2893      unless _tmp
2894        self.pos = _save
2895        break
2896      end
2897
2898      _save1 = self.pos
2899      while true # choice
2900        _tmp = match_string("a")
2901        break if _tmp
2902        self.pos = _save1
2903        _tmp = match_string("A")
2904        break if _tmp
2905        self.pos = _save1
2906        break
2907      end # end choice
2908
2909      unless _tmp
2910        self.pos = _save
2911        break
2912      end
2913      _tmp = apply(:_Spnl)
2914      unless _tmp
2915        self.pos = _save
2916        break
2917      end
2918      _tmp = match_string(">")
2919      unless _tmp
2920        self.pos = _save
2921      end
2922      break
2923    end # end sequence
2924
2925    set_failed_rule :_HtmlCloseAnchor unless _tmp
2926    return _tmp
2927  end
2928
2929  # HtmlAnchor = HtmlOpenAnchor (HtmlAnchor | !HtmlCloseAnchor .)* HtmlCloseAnchor
2930  def _HtmlAnchor
2931
2932    _save = self.pos
2933    while true # sequence
2934      _tmp = apply(:_HtmlOpenAnchor)
2935      unless _tmp
2936        self.pos = _save
2937        break
2938      end
2939      while true
2940
2941        _save2 = self.pos
2942        while true # choice
2943          _tmp = apply(:_HtmlAnchor)
2944          break if _tmp
2945          self.pos = _save2
2946
2947          _save3 = self.pos
2948          while true # sequence
2949            _save4 = self.pos
2950            _tmp = apply(:_HtmlCloseAnchor)
2951            _tmp = _tmp ? nil : true
2952            self.pos = _save4
2953            unless _tmp
2954              self.pos = _save3
2955              break
2956            end
2957            _tmp = get_byte
2958            unless _tmp
2959              self.pos = _save3
2960            end
2961            break
2962          end # end sequence
2963
2964          break if _tmp
2965          self.pos = _save2
2966          break
2967        end # end choice
2968
2969        break unless _tmp
2970      end
2971      _tmp = true
2972      unless _tmp
2973        self.pos = _save
2974        break
2975      end
2976      _tmp = apply(:_HtmlCloseAnchor)
2977      unless _tmp
2978        self.pos = _save
2979      end
2980      break
2981    end # end sequence
2982
2983    set_failed_rule :_HtmlAnchor unless _tmp
2984    return _tmp
2985  end
2986
2987  # HtmlBlockOpenAddress = "<" Spnl ("address" | "ADDRESS") Spnl HtmlAttribute* ">"
2988  def _HtmlBlockOpenAddress
2989
2990    _save = self.pos
2991    while true # sequence
2992      _tmp = match_string("<")
2993      unless _tmp
2994        self.pos = _save
2995        break
2996      end
2997      _tmp = apply(:_Spnl)
2998      unless _tmp
2999        self.pos = _save
3000        break
3001      end
3002
3003      _save1 = self.pos
3004      while true # choice
3005        _tmp = match_string("address")
3006        break if _tmp
3007        self.pos = _save1
3008        _tmp = match_string("ADDRESS")
3009        break if _tmp
3010        self.pos = _save1
3011        break
3012      end # end choice
3013
3014      unless _tmp
3015        self.pos = _save
3016        break
3017      end
3018      _tmp = apply(:_Spnl)
3019      unless _tmp
3020        self.pos = _save
3021        break
3022      end
3023      while true
3024        _tmp = apply(:_HtmlAttribute)
3025        break unless _tmp
3026      end
3027      _tmp = true
3028      unless _tmp
3029        self.pos = _save
3030        break
3031      end
3032      _tmp = match_string(">")
3033      unless _tmp
3034        self.pos = _save
3035      end
3036      break
3037    end # end sequence
3038
3039    set_failed_rule :_HtmlBlockOpenAddress unless _tmp
3040    return _tmp
3041  end
3042
3043  # HtmlBlockCloseAddress = "<" Spnl "/" ("address" | "ADDRESS") Spnl ">"
3044  def _HtmlBlockCloseAddress
3045
3046    _save = self.pos
3047    while true # sequence
3048      _tmp = match_string("<")
3049      unless _tmp
3050        self.pos = _save
3051        break
3052      end
3053      _tmp = apply(:_Spnl)
3054      unless _tmp
3055        self.pos = _save
3056        break
3057      end
3058      _tmp = match_string("/")
3059      unless _tmp
3060        self.pos = _save
3061        break
3062      end
3063
3064      _save1 = self.pos
3065      while true # choice
3066        _tmp = match_string("address")
3067        break if _tmp
3068        self.pos = _save1
3069        _tmp = match_string("ADDRESS")
3070        break if _tmp
3071        self.pos = _save1
3072        break
3073      end # end choice
3074
3075      unless _tmp
3076        self.pos = _save
3077        break
3078      end
3079      _tmp = apply(:_Spnl)
3080      unless _tmp
3081        self.pos = _save
3082        break
3083      end
3084      _tmp = match_string(">")
3085      unless _tmp
3086        self.pos = _save
3087      end
3088      break
3089    end # end sequence
3090
3091    set_failed_rule :_HtmlBlockCloseAddress unless _tmp
3092    return _tmp
3093  end
3094
3095  # HtmlBlockAddress = HtmlBlockOpenAddress (HtmlBlockAddress | !HtmlBlockCloseAddress .)* HtmlBlockCloseAddress
3096  def _HtmlBlockAddress
3097
3098    _save = self.pos
3099    while true # sequence
3100      _tmp = apply(:_HtmlBlockOpenAddress)
3101      unless _tmp
3102        self.pos = _save
3103        break
3104      end
3105      while true
3106
3107        _save2 = self.pos
3108        while true # choice
3109          _tmp = apply(:_HtmlBlockAddress)
3110          break if _tmp
3111          self.pos = _save2
3112
3113          _save3 = self.pos
3114          while true # sequence
3115            _save4 = self.pos
3116            _tmp = apply(:_HtmlBlockCloseAddress)
3117            _tmp = _tmp ? nil : true
3118            self.pos = _save4
3119            unless _tmp
3120              self.pos = _save3
3121              break
3122            end
3123            _tmp = get_byte
3124            unless _tmp
3125              self.pos = _save3
3126            end
3127            break
3128          end # end sequence
3129
3130          break if _tmp
3131          self.pos = _save2
3132          break
3133        end # end choice
3134
3135        break unless _tmp
3136      end
3137      _tmp = true
3138      unless _tmp
3139        self.pos = _save
3140        break
3141      end
3142      _tmp = apply(:_HtmlBlockCloseAddress)
3143      unless _tmp
3144        self.pos = _save
3145      end
3146      break
3147    end # end sequence
3148
3149    set_failed_rule :_HtmlBlockAddress unless _tmp
3150    return _tmp
3151  end
3152
3153  # HtmlBlockOpenBlockquote = "<" Spnl ("blockquote" | "BLOCKQUOTE") Spnl HtmlAttribute* ">"
3154  def _HtmlBlockOpenBlockquote
3155
3156    _save = self.pos
3157    while true # sequence
3158      _tmp = match_string("<")
3159      unless _tmp
3160        self.pos = _save
3161        break
3162      end
3163      _tmp = apply(:_Spnl)
3164      unless _tmp
3165        self.pos = _save
3166        break
3167      end
3168
3169      _save1 = self.pos
3170      while true # choice
3171        _tmp = match_string("blockquote")
3172        break if _tmp
3173        self.pos = _save1
3174        _tmp = match_string("BLOCKQUOTE")
3175        break if _tmp
3176        self.pos = _save1
3177        break
3178      end # end choice
3179
3180      unless _tmp
3181        self.pos = _save
3182        break
3183      end
3184      _tmp = apply(:_Spnl)
3185      unless _tmp
3186        self.pos = _save
3187        break
3188      end
3189      while true
3190        _tmp = apply(:_HtmlAttribute)
3191        break unless _tmp
3192      end
3193      _tmp = true
3194      unless _tmp
3195        self.pos = _save
3196        break
3197      end
3198      _tmp = match_string(">")
3199      unless _tmp
3200        self.pos = _save
3201      end
3202      break
3203    end # end sequence
3204
3205    set_failed_rule :_HtmlBlockOpenBlockquote unless _tmp
3206    return _tmp
3207  end
3208
3209  # HtmlBlockCloseBlockquote = "<" Spnl "/" ("blockquote" | "BLOCKQUOTE") Spnl ">"
3210  def _HtmlBlockCloseBlockquote
3211
3212    _save = self.pos
3213    while true # sequence
3214      _tmp = match_string("<")
3215      unless _tmp
3216        self.pos = _save
3217        break
3218      end
3219      _tmp = apply(:_Spnl)
3220      unless _tmp
3221        self.pos = _save
3222        break
3223      end
3224      _tmp = match_string("/")
3225      unless _tmp
3226        self.pos = _save
3227        break
3228      end
3229
3230      _save1 = self.pos
3231      while true # choice
3232        _tmp = match_string("blockquote")
3233        break if _tmp
3234        self.pos = _save1
3235        _tmp = match_string("BLOCKQUOTE")
3236        break if _tmp
3237        self.pos = _save1
3238        break
3239      end # end choice
3240
3241      unless _tmp
3242        self.pos = _save
3243        break
3244      end
3245      _tmp = apply(:_Spnl)
3246      unless _tmp
3247        self.pos = _save
3248        break
3249      end
3250      _tmp = match_string(">")
3251      unless _tmp
3252        self.pos = _save
3253      end
3254      break
3255    end # end sequence
3256
3257    set_failed_rule :_HtmlBlockCloseBlockquote unless _tmp
3258    return _tmp
3259  end
3260
3261  # HtmlBlockBlockquote = HtmlBlockOpenBlockquote (HtmlBlockBlockquote | !HtmlBlockCloseBlockquote .)* HtmlBlockCloseBlockquote
3262  def _HtmlBlockBlockquote
3263
3264    _save = self.pos
3265    while true # sequence
3266      _tmp = apply(:_HtmlBlockOpenBlockquote)
3267      unless _tmp
3268        self.pos = _save
3269        break
3270      end
3271      while true
3272
3273        _save2 = self.pos
3274        while true # choice
3275          _tmp = apply(:_HtmlBlockBlockquote)
3276          break if _tmp
3277          self.pos = _save2
3278
3279          _save3 = self.pos
3280          while true # sequence
3281            _save4 = self.pos
3282            _tmp = apply(:_HtmlBlockCloseBlockquote)
3283            _tmp = _tmp ? nil : true
3284            self.pos = _save4
3285            unless _tmp
3286              self.pos = _save3
3287              break
3288            end
3289            _tmp = get_byte
3290            unless _tmp
3291              self.pos = _save3
3292            end
3293            break
3294          end # end sequence
3295
3296          break if _tmp
3297          self.pos = _save2
3298          break
3299        end # end choice
3300
3301        break unless _tmp
3302      end
3303      _tmp = true
3304      unless _tmp
3305        self.pos = _save
3306        break
3307      end
3308      _tmp = apply(:_HtmlBlockCloseBlockquote)
3309      unless _tmp
3310        self.pos = _save
3311      end
3312      break
3313    end # end sequence
3314
3315    set_failed_rule :_HtmlBlockBlockquote unless _tmp
3316    return _tmp
3317  end
3318
3319  # HtmlBlockOpenCenter = "<" Spnl ("center" | "CENTER") Spnl HtmlAttribute* ">"
3320  def _HtmlBlockOpenCenter
3321
3322    _save = self.pos
3323    while true # sequence
3324      _tmp = match_string("<")
3325      unless _tmp
3326        self.pos = _save
3327        break
3328      end
3329      _tmp = apply(:_Spnl)
3330      unless _tmp
3331        self.pos = _save
3332        break
3333      end
3334
3335      _save1 = self.pos
3336      while true # choice
3337        _tmp = match_string("center")
3338        break if _tmp
3339        self.pos = _save1
3340        _tmp = match_string("CENTER")
3341        break if _tmp
3342        self.pos = _save1
3343        break
3344      end # end choice
3345
3346      unless _tmp
3347        self.pos = _save
3348        break
3349      end
3350      _tmp = apply(:_Spnl)
3351      unless _tmp
3352        self.pos = _save
3353        break
3354      end
3355      while true
3356        _tmp = apply(:_HtmlAttribute)
3357        break unless _tmp
3358      end
3359      _tmp = true
3360      unless _tmp
3361        self.pos = _save
3362        break
3363      end
3364      _tmp = match_string(">")
3365      unless _tmp
3366        self.pos = _save
3367      end
3368      break
3369    end # end sequence
3370
3371    set_failed_rule :_HtmlBlockOpenCenter unless _tmp
3372    return _tmp
3373  end
3374
3375  # HtmlBlockCloseCenter = "<" Spnl "/" ("center" | "CENTER") Spnl ">"
3376  def _HtmlBlockCloseCenter
3377
3378    _save = self.pos
3379    while true # sequence
3380      _tmp = match_string("<")
3381      unless _tmp
3382        self.pos = _save
3383        break
3384      end
3385      _tmp = apply(:_Spnl)
3386      unless _tmp
3387        self.pos = _save
3388        break
3389      end
3390      _tmp = match_string("/")
3391      unless _tmp
3392        self.pos = _save
3393        break
3394      end
3395
3396      _save1 = self.pos
3397      while true # choice
3398        _tmp = match_string("center")
3399        break if _tmp
3400        self.pos = _save1
3401        _tmp = match_string("CENTER")
3402        break if _tmp
3403        self.pos = _save1
3404        break
3405      end # end choice
3406
3407      unless _tmp
3408        self.pos = _save
3409        break
3410      end
3411      _tmp = apply(:_Spnl)
3412      unless _tmp
3413        self.pos = _save
3414        break
3415      end
3416      _tmp = match_string(">")
3417      unless _tmp
3418        self.pos = _save
3419      end
3420      break
3421    end # end sequence
3422
3423    set_failed_rule :_HtmlBlockCloseCenter unless _tmp
3424    return _tmp
3425  end
3426
3427  # HtmlBlockCenter = HtmlBlockOpenCenter (HtmlBlockCenter | !HtmlBlockCloseCenter .)* HtmlBlockCloseCenter
3428  def _HtmlBlockCenter
3429
3430    _save = self.pos
3431    while true # sequence
3432      _tmp = apply(:_HtmlBlockOpenCenter)
3433      unless _tmp
3434        self.pos = _save
3435        break
3436      end
3437      while true
3438
3439        _save2 = self.pos
3440        while true # choice
3441          _tmp = apply(:_HtmlBlockCenter)
3442          break if _tmp
3443          self.pos = _save2
3444
3445          _save3 = self.pos
3446          while true # sequence
3447            _save4 = self.pos
3448            _tmp = apply(:_HtmlBlockCloseCenter)
3449            _tmp = _tmp ? nil : true
3450            self.pos = _save4
3451            unless _tmp
3452              self.pos = _save3
3453              break
3454            end
3455            _tmp = get_byte
3456            unless _tmp
3457              self.pos = _save3
3458            end
3459            break
3460          end # end sequence
3461
3462          break if _tmp
3463          self.pos = _save2
3464          break
3465        end # end choice
3466
3467        break unless _tmp
3468      end
3469      _tmp = true
3470      unless _tmp
3471        self.pos = _save
3472        break
3473      end
3474      _tmp = apply(:_HtmlBlockCloseCenter)
3475      unless _tmp
3476        self.pos = _save
3477      end
3478      break
3479    end # end sequence
3480
3481    set_failed_rule :_HtmlBlockCenter unless _tmp
3482    return _tmp
3483  end
3484
3485  # HtmlBlockOpenDir = "<" Spnl ("dir" | "DIR") Spnl HtmlAttribute* ">"
3486  def _HtmlBlockOpenDir
3487
3488    _save = self.pos
3489    while true # sequence
3490      _tmp = match_string("<")
3491      unless _tmp
3492        self.pos = _save
3493        break
3494      end
3495      _tmp = apply(:_Spnl)
3496      unless _tmp
3497        self.pos = _save
3498        break
3499      end
3500
3501      _save1 = self.pos
3502      while true # choice
3503        _tmp = match_string("dir")
3504        break if _tmp
3505        self.pos = _save1
3506        _tmp = match_string("DIR")
3507        break if _tmp
3508        self.pos = _save1
3509        break
3510      end # end choice
3511
3512      unless _tmp
3513        self.pos = _save
3514        break
3515      end
3516      _tmp = apply(:_Spnl)
3517      unless _tmp
3518        self.pos = _save
3519        break
3520      end
3521      while true
3522        _tmp = apply(:_HtmlAttribute)
3523        break unless _tmp
3524      end
3525      _tmp = true
3526      unless _tmp
3527        self.pos = _save
3528        break
3529      end
3530      _tmp = match_string(">")
3531      unless _tmp
3532        self.pos = _save
3533      end
3534      break
3535    end # end sequence
3536
3537    set_failed_rule :_HtmlBlockOpenDir unless _tmp
3538    return _tmp
3539  end
3540
3541  # HtmlBlockCloseDir = "<" Spnl "/" ("dir" | "DIR") Spnl ">"
3542  def _HtmlBlockCloseDir
3543
3544    _save = self.pos
3545    while true # sequence
3546      _tmp = match_string("<")
3547      unless _tmp
3548        self.pos = _save
3549        break
3550      end
3551      _tmp = apply(:_Spnl)
3552      unless _tmp
3553        self.pos = _save
3554        break
3555      end
3556      _tmp = match_string("/")
3557      unless _tmp
3558        self.pos = _save
3559        break
3560      end
3561
3562      _save1 = self.pos
3563      while true # choice
3564        _tmp = match_string("dir")
3565        break if _tmp
3566        self.pos = _save1
3567        _tmp = match_string("DIR")
3568        break if _tmp
3569        self.pos = _save1
3570        break
3571      end # end choice
3572
3573      unless _tmp
3574        self.pos = _save
3575        break
3576      end
3577      _tmp = apply(:_Spnl)
3578      unless _tmp
3579        self.pos = _save
3580        break
3581      end
3582      _tmp = match_string(">")
3583      unless _tmp
3584        self.pos = _save
3585      end
3586      break
3587    end # end sequence
3588
3589    set_failed_rule :_HtmlBlockCloseDir unless _tmp
3590    return _tmp
3591  end
3592
3593  # HtmlBlockDir = HtmlBlockOpenDir (HtmlBlockDir | !HtmlBlockCloseDir .)* HtmlBlockCloseDir
3594  def _HtmlBlockDir
3595
3596    _save = self.pos
3597    while true # sequence
3598      _tmp = apply(:_HtmlBlockOpenDir)
3599      unless _tmp
3600        self.pos = _save
3601        break
3602      end
3603      while true
3604
3605        _save2 = self.pos
3606        while true # choice
3607          _tmp = apply(:_HtmlBlockDir)
3608          break if _tmp
3609          self.pos = _save2
3610
3611          _save3 = self.pos
3612          while true # sequence
3613            _save4 = self.pos
3614            _tmp = apply(:_HtmlBlockCloseDir)
3615            _tmp = _tmp ? nil : true
3616            self.pos = _save4
3617            unless _tmp
3618              self.pos = _save3
3619              break
3620            end
3621            _tmp = get_byte
3622            unless _tmp
3623              self.pos = _save3
3624            end
3625            break
3626          end # end sequence
3627
3628          break if _tmp
3629          self.pos = _save2
3630          break
3631        end # end choice
3632
3633        break unless _tmp
3634      end
3635      _tmp = true
3636      unless _tmp
3637        self.pos = _save
3638        break
3639      end
3640      _tmp = apply(:_HtmlBlockCloseDir)
3641      unless _tmp
3642        self.pos = _save
3643      end
3644      break
3645    end # end sequence
3646
3647    set_failed_rule :_HtmlBlockDir unless _tmp
3648    return _tmp
3649  end
3650
3651  # HtmlBlockOpenDiv = "<" Spnl ("div" | "DIV") Spnl HtmlAttribute* ">"
3652  def _HtmlBlockOpenDiv
3653
3654    _save = self.pos
3655    while true # sequence
3656      _tmp = match_string("<")
3657      unless _tmp
3658        self.pos = _save
3659        break
3660      end
3661      _tmp = apply(:_Spnl)
3662      unless _tmp
3663        self.pos = _save
3664        break
3665      end
3666
3667      _save1 = self.pos
3668      while true # choice
3669        _tmp = match_string("div")
3670        break if _tmp
3671        self.pos = _save1
3672        _tmp = match_string("DIV")
3673        break if _tmp
3674        self.pos = _save1
3675        break
3676      end # end choice
3677
3678      unless _tmp
3679        self.pos = _save
3680        break
3681      end
3682      _tmp = apply(:_Spnl)
3683      unless _tmp
3684        self.pos = _save
3685        break
3686      end
3687      while true
3688        _tmp = apply(:_HtmlAttribute)
3689        break unless _tmp
3690      end
3691      _tmp = true
3692      unless _tmp
3693        self.pos = _save
3694        break
3695      end
3696      _tmp = match_string(">")
3697      unless _tmp
3698        self.pos = _save
3699      end
3700      break
3701    end # end sequence
3702
3703    set_failed_rule :_HtmlBlockOpenDiv unless _tmp
3704    return _tmp
3705  end
3706
3707  # HtmlBlockCloseDiv = "<" Spnl "/" ("div" | "DIV") Spnl ">"
3708  def _HtmlBlockCloseDiv
3709
3710    _save = self.pos
3711    while true # sequence
3712      _tmp = match_string("<")
3713      unless _tmp
3714        self.pos = _save
3715        break
3716      end
3717      _tmp = apply(:_Spnl)
3718      unless _tmp
3719        self.pos = _save
3720        break
3721      end
3722      _tmp = match_string("/")
3723      unless _tmp
3724        self.pos = _save
3725        break
3726      end
3727
3728      _save1 = self.pos
3729      while true # choice
3730        _tmp = match_string("div")
3731        break if _tmp
3732        self.pos = _save1
3733        _tmp = match_string("DIV")
3734        break if _tmp
3735        self.pos = _save1
3736        break
3737      end # end choice
3738
3739      unless _tmp
3740        self.pos = _save
3741        break
3742      end
3743      _tmp = apply(:_Spnl)
3744      unless _tmp
3745        self.pos = _save
3746        break
3747      end
3748      _tmp = match_string(">")
3749      unless _tmp
3750        self.pos = _save
3751      end
3752      break
3753    end # end sequence
3754
3755    set_failed_rule :_HtmlBlockCloseDiv unless _tmp
3756    return _tmp
3757  end
3758
3759  # HtmlBlockDiv = HtmlBlockOpenDiv (HtmlBlockDiv | !HtmlBlockCloseDiv .)* HtmlBlockCloseDiv
3760  def _HtmlBlockDiv
3761
3762    _save = self.pos
3763    while true # sequence
3764      _tmp = apply(:_HtmlBlockOpenDiv)
3765      unless _tmp
3766        self.pos = _save
3767        break
3768      end
3769      while true
3770
3771        _save2 = self.pos
3772        while true # choice
3773          _tmp = apply(:_HtmlBlockDiv)
3774          break if _tmp
3775          self.pos = _save2
3776
3777          _save3 = self.pos
3778          while true # sequence
3779            _save4 = self.pos
3780            _tmp = apply(:_HtmlBlockCloseDiv)
3781            _tmp = _tmp ? nil : true
3782            self.pos = _save4
3783            unless _tmp
3784              self.pos = _save3
3785              break
3786            end
3787            _tmp = get_byte
3788            unless _tmp
3789              self.pos = _save3
3790            end
3791            break
3792          end # end sequence
3793
3794          break if _tmp
3795          self.pos = _save2
3796          break
3797        end # end choice
3798
3799        break unless _tmp
3800      end
3801      _tmp = true
3802      unless _tmp
3803        self.pos = _save
3804        break
3805      end
3806      _tmp = apply(:_HtmlBlockCloseDiv)
3807      unless _tmp
3808        self.pos = _save
3809      end
3810      break
3811    end # end sequence
3812
3813    set_failed_rule :_HtmlBlockDiv unless _tmp
3814    return _tmp
3815  end
3816
3817  # HtmlBlockOpenDl = "<" Spnl ("dl" | "DL") Spnl HtmlAttribute* ">"
3818  def _HtmlBlockOpenDl
3819
3820    _save = self.pos
3821    while true # sequence
3822      _tmp = match_string("<")
3823      unless _tmp
3824        self.pos = _save
3825        break
3826      end
3827      _tmp = apply(:_Spnl)
3828      unless _tmp
3829        self.pos = _save
3830        break
3831      end
3832
3833      _save1 = self.pos
3834      while true # choice
3835        _tmp = match_string("dl")
3836        break if _tmp
3837        self.pos = _save1
3838        _tmp = match_string("DL")
3839        break if _tmp
3840        self.pos = _save1
3841        break
3842      end # end choice
3843
3844      unless _tmp
3845        self.pos = _save
3846        break
3847      end
3848      _tmp = apply(:_Spnl)
3849      unless _tmp
3850        self.pos = _save
3851        break
3852      end
3853      while true
3854        _tmp = apply(:_HtmlAttribute)
3855        break unless _tmp
3856      end
3857      _tmp = true
3858      unless _tmp
3859        self.pos = _save
3860        break
3861      end
3862      _tmp = match_string(">")
3863      unless _tmp
3864        self.pos = _save
3865      end
3866      break
3867    end # end sequence
3868
3869    set_failed_rule :_HtmlBlockOpenDl unless _tmp
3870    return _tmp
3871  end
3872
3873  # HtmlBlockCloseDl = "<" Spnl "/" ("dl" | "DL") Spnl ">"
3874  def _HtmlBlockCloseDl
3875
3876    _save = self.pos
3877    while true # sequence
3878      _tmp = match_string("<")
3879      unless _tmp
3880        self.pos = _save
3881        break
3882      end
3883      _tmp = apply(:_Spnl)
3884      unless _tmp
3885        self.pos = _save
3886        break
3887      end
3888      _tmp = match_string("/")
3889      unless _tmp
3890        self.pos = _save
3891        break
3892      end
3893
3894      _save1 = self.pos
3895      while true # choice
3896        _tmp = match_string("dl")
3897        break if _tmp
3898        self.pos = _save1
3899        _tmp = match_string("DL")
3900        break if _tmp
3901        self.pos = _save1
3902        break
3903      end # end choice
3904
3905      unless _tmp
3906        self.pos = _save
3907        break
3908      end
3909      _tmp = apply(:_Spnl)
3910      unless _tmp
3911        self.pos = _save
3912        break
3913      end
3914      _tmp = match_string(">")
3915      unless _tmp
3916        self.pos = _save
3917      end
3918      break
3919    end # end sequence
3920
3921    set_failed_rule :_HtmlBlockCloseDl unless _tmp
3922    return _tmp
3923  end
3924
3925  # HtmlBlockDl = HtmlBlockOpenDl (HtmlBlockDl | !HtmlBlockCloseDl .)* HtmlBlockCloseDl
3926  def _HtmlBlockDl
3927
3928    _save = self.pos
3929    while true # sequence
3930      _tmp = apply(:_HtmlBlockOpenDl)
3931      unless _tmp
3932        self.pos = _save
3933        break
3934      end
3935      while true
3936
3937        _save2 = self.pos
3938        while true # choice
3939          _tmp = apply(:_HtmlBlockDl)
3940          break if _tmp
3941          self.pos = _save2
3942
3943          _save3 = self.pos
3944          while true # sequence
3945            _save4 = self.pos
3946            _tmp = apply(:_HtmlBlockCloseDl)
3947            _tmp = _tmp ? nil : true
3948            self.pos = _save4
3949            unless _tmp
3950              self.pos = _save3
3951              break
3952            end
3953            _tmp = get_byte
3954            unless _tmp
3955              self.pos = _save3
3956            end
3957            break
3958          end # end sequence
3959
3960          break if _tmp
3961          self.pos = _save2
3962          break
3963        end # end choice
3964
3965        break unless _tmp
3966      end
3967      _tmp = true
3968      unless _tmp
3969        self.pos = _save
3970        break
3971      end
3972      _tmp = apply(:_HtmlBlockCloseDl)
3973      unless _tmp
3974        self.pos = _save
3975      end
3976      break
3977    end # end sequence
3978
3979    set_failed_rule :_HtmlBlockDl unless _tmp
3980    return _tmp
3981  end
3982
3983  # HtmlBlockOpenFieldset = "<" Spnl ("fieldset" | "FIELDSET") Spnl HtmlAttribute* ">"
3984  def _HtmlBlockOpenFieldset
3985
3986    _save = self.pos
3987    while true # sequence
3988      _tmp = match_string("<")
3989      unless _tmp
3990        self.pos = _save
3991        break
3992      end
3993      _tmp = apply(:_Spnl)
3994      unless _tmp
3995        self.pos = _save
3996        break
3997      end
3998
3999      _save1 = self.pos
4000      while true # choice
4001        _tmp = match_string("fieldset")
4002        break if _tmp
4003        self.pos = _save1
4004        _tmp = match_string("FIELDSET")
4005        break if _tmp
4006        self.pos = _save1
4007        break
4008      end # end choice
4009
4010      unless _tmp
4011        self.pos = _save
4012        break
4013      end
4014      _tmp = apply(:_Spnl)
4015      unless _tmp
4016        self.pos = _save
4017        break
4018      end
4019      while true
4020        _tmp = apply(:_HtmlAttribute)
4021        break unless _tmp
4022      end
4023      _tmp = true
4024      unless _tmp
4025        self.pos = _save
4026        break
4027      end
4028      _tmp = match_string(">")
4029      unless _tmp
4030        self.pos = _save
4031      end
4032      break
4033    end # end sequence
4034
4035    set_failed_rule :_HtmlBlockOpenFieldset unless _tmp
4036    return _tmp
4037  end
4038
4039  # HtmlBlockCloseFieldset = "<" Spnl "/" ("fieldset" | "FIELDSET") Spnl ">"
4040  def _HtmlBlockCloseFieldset
4041
4042    _save = self.pos
4043    while true # sequence
4044      _tmp = match_string("<")
4045      unless _tmp
4046        self.pos = _save
4047        break
4048      end
4049      _tmp = apply(:_Spnl)
4050      unless _tmp
4051        self.pos = _save
4052        break
4053      end
4054      _tmp = match_string("/")
4055      unless _tmp
4056        self.pos = _save
4057        break
4058      end
4059
4060      _save1 = self.pos
4061      while true # choice
4062        _tmp = match_string("fieldset")
4063        break if _tmp
4064        self.pos = _save1
4065        _tmp = match_string("FIELDSET")
4066        break if _tmp
4067        self.pos = _save1
4068        break
4069      end # end choice
4070
4071      unless _tmp
4072        self.pos = _save
4073        break
4074      end
4075      _tmp = apply(:_Spnl)
4076      unless _tmp
4077        self.pos = _save
4078        break
4079      end
4080      _tmp = match_string(">")
4081      unless _tmp
4082        self.pos = _save
4083      end
4084      break
4085    end # end sequence
4086
4087    set_failed_rule :_HtmlBlockCloseFieldset unless _tmp
4088    return _tmp
4089  end
4090
4091  # HtmlBlockFieldset = HtmlBlockOpenFieldset (HtmlBlockFieldset | !HtmlBlockCloseFieldset .)* HtmlBlockCloseFieldset
4092  def _HtmlBlockFieldset
4093
4094    _save = self.pos
4095    while true # sequence
4096      _tmp = apply(:_HtmlBlockOpenFieldset)
4097      unless _tmp
4098        self.pos = _save
4099        break
4100      end
4101      while true
4102
4103        _save2 = self.pos
4104        while true # choice
4105          _tmp = apply(:_HtmlBlockFieldset)
4106          break if _tmp
4107          self.pos = _save2
4108
4109          _save3 = self.pos
4110          while true # sequence
4111            _save4 = self.pos
4112            _tmp = apply(:_HtmlBlockCloseFieldset)
4113            _tmp = _tmp ? nil : true
4114            self.pos = _save4
4115            unless _tmp
4116              self.pos = _save3
4117              break
4118            end
4119            _tmp = get_byte
4120            unless _tmp
4121              self.pos = _save3
4122            end
4123            break
4124          end # end sequence
4125
4126          break if _tmp
4127          self.pos = _save2
4128          break
4129        end # end choice
4130
4131        break unless _tmp
4132      end
4133      _tmp = true
4134      unless _tmp
4135        self.pos = _save
4136        break
4137      end
4138      _tmp = apply(:_HtmlBlockCloseFieldset)
4139      unless _tmp
4140        self.pos = _save
4141      end
4142      break
4143    end # end sequence
4144
4145    set_failed_rule :_HtmlBlockFieldset unless _tmp
4146    return _tmp
4147  end
4148
4149  # HtmlBlockOpenForm = "<" Spnl ("form" | "FORM") Spnl HtmlAttribute* ">"
4150  def _HtmlBlockOpenForm
4151
4152    _save = self.pos
4153    while true # sequence
4154      _tmp = match_string("<")
4155      unless _tmp
4156        self.pos = _save
4157        break
4158      end
4159      _tmp = apply(:_Spnl)
4160      unless _tmp
4161        self.pos = _save
4162        break
4163      end
4164
4165      _save1 = self.pos
4166      while true # choice
4167        _tmp = match_string("form")
4168        break if _tmp
4169        self.pos = _save1
4170        _tmp = match_string("FORM")
4171        break if _tmp
4172        self.pos = _save1
4173        break
4174      end # end choice
4175
4176      unless _tmp
4177        self.pos = _save
4178        break
4179      end
4180      _tmp = apply(:_Spnl)
4181      unless _tmp
4182        self.pos = _save
4183        break
4184      end
4185      while true
4186        _tmp = apply(:_HtmlAttribute)
4187        break unless _tmp
4188      end
4189      _tmp = true
4190      unless _tmp
4191        self.pos = _save
4192        break
4193      end
4194      _tmp = match_string(">")
4195      unless _tmp
4196        self.pos = _save
4197      end
4198      break
4199    end # end sequence
4200
4201    set_failed_rule :_HtmlBlockOpenForm unless _tmp
4202    return _tmp
4203  end
4204
4205  # HtmlBlockCloseForm = "<" Spnl "/" ("form" | "FORM") Spnl ">"
4206  def _HtmlBlockCloseForm
4207
4208    _save = self.pos
4209    while true # sequence
4210      _tmp = match_string("<")
4211      unless _tmp
4212        self.pos = _save
4213        break
4214      end
4215      _tmp = apply(:_Spnl)
4216      unless _tmp
4217        self.pos = _save
4218        break
4219      end
4220      _tmp = match_string("/")
4221      unless _tmp
4222        self.pos = _save
4223        break
4224      end
4225
4226      _save1 = self.pos
4227      while true # choice
4228        _tmp = match_string("form")
4229        break if _tmp
4230        self.pos = _save1
4231        _tmp = match_string("FORM")
4232        break if _tmp
4233        self.pos = _save1
4234        break
4235      end # end choice
4236
4237      unless _tmp
4238        self.pos = _save
4239        break
4240      end
4241      _tmp = apply(:_Spnl)
4242      unless _tmp
4243        self.pos = _save
4244        break
4245      end
4246      _tmp = match_string(">")
4247      unless _tmp
4248        self.pos = _save
4249      end
4250      break
4251    end # end sequence
4252
4253    set_failed_rule :_HtmlBlockCloseForm unless _tmp
4254    return _tmp
4255  end
4256
4257  # HtmlBlockForm = HtmlBlockOpenForm (HtmlBlockForm | !HtmlBlockCloseForm .)* HtmlBlockCloseForm
4258  def _HtmlBlockForm
4259
4260    _save = self.pos
4261    while true # sequence
4262      _tmp = apply(:_HtmlBlockOpenForm)
4263      unless _tmp
4264        self.pos = _save
4265        break
4266      end
4267      while true
4268
4269        _save2 = self.pos
4270        while true # choice
4271          _tmp = apply(:_HtmlBlockForm)
4272          break if _tmp
4273          self.pos = _save2
4274
4275          _save3 = self.pos
4276          while true # sequence
4277            _save4 = self.pos
4278            _tmp = apply(:_HtmlBlockCloseForm)
4279            _tmp = _tmp ? nil : true
4280            self.pos = _save4
4281            unless _tmp
4282              self.pos = _save3
4283              break
4284            end
4285            _tmp = get_byte
4286            unless _tmp
4287              self.pos = _save3
4288            end
4289            break
4290          end # end sequence
4291
4292          break if _tmp
4293          self.pos = _save2
4294          break
4295        end # end choice
4296
4297        break unless _tmp
4298      end
4299      _tmp = true
4300      unless _tmp
4301        self.pos = _save
4302        break
4303      end
4304      _tmp = apply(:_HtmlBlockCloseForm)
4305      unless _tmp
4306        self.pos = _save
4307      end
4308      break
4309    end # end sequence
4310
4311    set_failed_rule :_HtmlBlockForm unless _tmp
4312    return _tmp
4313  end
4314
4315  # HtmlBlockOpenH1 = "<" Spnl ("h1" | "H1") Spnl HtmlAttribute* ">"
4316  def _HtmlBlockOpenH1
4317
4318    _save = self.pos
4319    while true # sequence
4320      _tmp = match_string("<")
4321      unless _tmp
4322        self.pos = _save
4323        break
4324      end
4325      _tmp = apply(:_Spnl)
4326      unless _tmp
4327        self.pos = _save
4328        break
4329      end
4330
4331      _save1 = self.pos
4332      while true # choice
4333        _tmp = match_string("h1")
4334        break if _tmp
4335        self.pos = _save1
4336        _tmp = match_string("H1")
4337        break if _tmp
4338        self.pos = _save1
4339        break
4340      end # end choice
4341
4342      unless _tmp
4343        self.pos = _save
4344        break
4345      end
4346      _tmp = apply(:_Spnl)
4347      unless _tmp
4348        self.pos = _save
4349        break
4350      end
4351      while true
4352        _tmp = apply(:_HtmlAttribute)
4353        break unless _tmp
4354      end
4355      _tmp = true
4356      unless _tmp
4357        self.pos = _save
4358        break
4359      end
4360      _tmp = match_string(">")
4361      unless _tmp
4362        self.pos = _save
4363      end
4364      break
4365    end # end sequence
4366
4367    set_failed_rule :_HtmlBlockOpenH1 unless _tmp
4368    return _tmp
4369  end
4370
4371  # HtmlBlockCloseH1 = "<" Spnl "/" ("h1" | "H1") Spnl ">"
4372  def _HtmlBlockCloseH1
4373
4374    _save = self.pos
4375    while true # sequence
4376      _tmp = match_string("<")
4377      unless _tmp
4378        self.pos = _save
4379        break
4380      end
4381      _tmp = apply(:_Spnl)
4382      unless _tmp
4383        self.pos = _save
4384        break
4385      end
4386      _tmp = match_string("/")
4387      unless _tmp
4388        self.pos = _save
4389        break
4390      end
4391
4392      _save1 = self.pos
4393      while true # choice
4394        _tmp = match_string("h1")
4395        break if _tmp
4396        self.pos = _save1
4397        _tmp = match_string("H1")
4398        break if _tmp
4399        self.pos = _save1
4400        break
4401      end # end choice
4402
4403      unless _tmp
4404        self.pos = _save
4405        break
4406      end
4407      _tmp = apply(:_Spnl)
4408      unless _tmp
4409        self.pos = _save
4410        break
4411      end
4412      _tmp = match_string(">")
4413      unless _tmp
4414        self.pos = _save
4415      end
4416      break
4417    end # end sequence
4418
4419    set_failed_rule :_HtmlBlockCloseH1 unless _tmp
4420    return _tmp
4421  end
4422
4423  # HtmlBlockH1 = HtmlBlockOpenH1 (HtmlBlockH1 | !HtmlBlockCloseH1 .)* HtmlBlockCloseH1
4424  def _HtmlBlockH1
4425
4426    _save = self.pos
4427    while true # sequence
4428      _tmp = apply(:_HtmlBlockOpenH1)
4429      unless _tmp
4430        self.pos = _save
4431        break
4432      end
4433      while true
4434
4435        _save2 = self.pos
4436        while true # choice
4437          _tmp = apply(:_HtmlBlockH1)
4438          break if _tmp
4439          self.pos = _save2
4440
4441          _save3 = self.pos
4442          while true # sequence
4443            _save4 = self.pos
4444            _tmp = apply(:_HtmlBlockCloseH1)
4445            _tmp = _tmp ? nil : true
4446            self.pos = _save4
4447            unless _tmp
4448              self.pos = _save3
4449              break
4450            end
4451            _tmp = get_byte
4452            unless _tmp
4453              self.pos = _save3
4454            end
4455            break
4456          end # end sequence
4457
4458          break if _tmp
4459          self.pos = _save2
4460          break
4461        end # end choice
4462
4463        break unless _tmp
4464      end
4465      _tmp = true
4466      unless _tmp
4467        self.pos = _save
4468        break
4469      end
4470      _tmp = apply(:_HtmlBlockCloseH1)
4471      unless _tmp
4472        self.pos = _save
4473      end
4474      break
4475    end # end sequence
4476
4477    set_failed_rule :_HtmlBlockH1 unless _tmp
4478    return _tmp
4479  end
4480
4481  # HtmlBlockOpenH2 = "<" Spnl ("h2" | "H2") Spnl HtmlAttribute* ">"
4482  def _HtmlBlockOpenH2
4483
4484    _save = self.pos
4485    while true # sequence
4486      _tmp = match_string("<")
4487      unless _tmp
4488        self.pos = _save
4489        break
4490      end
4491      _tmp = apply(:_Spnl)
4492      unless _tmp
4493        self.pos = _save
4494        break
4495      end
4496
4497      _save1 = self.pos
4498      while true # choice
4499        _tmp = match_string("h2")
4500        break if _tmp
4501        self.pos = _save1
4502        _tmp = match_string("H2")
4503        break if _tmp
4504        self.pos = _save1
4505        break
4506      end # end choice
4507
4508      unless _tmp
4509        self.pos = _save
4510        break
4511      end
4512      _tmp = apply(:_Spnl)
4513      unless _tmp
4514        self.pos = _save
4515        break
4516      end
4517      while true
4518        _tmp = apply(:_HtmlAttribute)
4519        break unless _tmp
4520      end
4521      _tmp = true
4522      unless _tmp
4523        self.pos = _save
4524        break
4525      end
4526      _tmp = match_string(">")
4527      unless _tmp
4528        self.pos = _save
4529      end
4530      break
4531    end # end sequence
4532
4533    set_failed_rule :_HtmlBlockOpenH2 unless _tmp
4534    return _tmp
4535  end
4536
4537  # HtmlBlockCloseH2 = "<" Spnl "/" ("h2" | "H2") Spnl ">"
4538  def _HtmlBlockCloseH2
4539
4540    _save = self.pos
4541    while true # sequence
4542      _tmp = match_string("<")
4543      unless _tmp
4544        self.pos = _save
4545        break
4546      end
4547      _tmp = apply(:_Spnl)
4548      unless _tmp
4549        self.pos = _save
4550        break
4551      end
4552      _tmp = match_string("/")
4553      unless _tmp
4554        self.pos = _save
4555        break
4556      end
4557
4558      _save1 = self.pos
4559      while true # choice
4560        _tmp = match_string("h2")
4561        break if _tmp
4562        self.pos = _save1
4563        _tmp = match_string("H2")
4564        break if _tmp
4565        self.pos = _save1
4566        break
4567      end # end choice
4568
4569      unless _tmp
4570        self.pos = _save
4571        break
4572      end
4573      _tmp = apply(:_Spnl)
4574      unless _tmp
4575        self.pos = _save
4576        break
4577      end
4578      _tmp = match_string(">")
4579      unless _tmp
4580        self.pos = _save
4581      end
4582      break
4583    end # end sequence
4584
4585    set_failed_rule :_HtmlBlockCloseH2 unless _tmp
4586    return _tmp
4587  end
4588
4589  # HtmlBlockH2 = HtmlBlockOpenH2 (HtmlBlockH2 | !HtmlBlockCloseH2 .)* HtmlBlockCloseH2
4590  def _HtmlBlockH2
4591
4592    _save = self.pos
4593    while true # sequence
4594      _tmp = apply(:_HtmlBlockOpenH2)
4595      unless _tmp
4596        self.pos = _save
4597        break
4598      end
4599      while true
4600
4601        _save2 = self.pos
4602        while true # choice
4603          _tmp = apply(:_HtmlBlockH2)
4604          break if _tmp
4605          self.pos = _save2
4606
4607          _save3 = self.pos
4608          while true # sequence
4609            _save4 = self.pos
4610            _tmp = apply(:_HtmlBlockCloseH2)
4611            _tmp = _tmp ? nil : true
4612            self.pos = _save4
4613            unless _tmp
4614              self.pos = _save3
4615              break
4616            end
4617            _tmp = get_byte
4618            unless _tmp
4619              self.pos = _save3
4620            end
4621            break
4622          end # end sequence
4623
4624          break if _tmp
4625          self.pos = _save2
4626          break
4627        end # end choice
4628
4629        break unless _tmp
4630      end
4631      _tmp = true
4632      unless _tmp
4633        self.pos = _save
4634        break
4635      end
4636      _tmp = apply(:_HtmlBlockCloseH2)
4637      unless _tmp
4638        self.pos = _save
4639      end
4640      break
4641    end # end sequence
4642
4643    set_failed_rule :_HtmlBlockH2 unless _tmp
4644    return _tmp
4645  end
4646
4647  # HtmlBlockOpenH3 = "<" Spnl ("h3" | "H3") Spnl HtmlAttribute* ">"
4648  def _HtmlBlockOpenH3
4649
4650    _save = self.pos
4651    while true # sequence
4652      _tmp = match_string("<")
4653      unless _tmp
4654        self.pos = _save
4655        break
4656      end
4657      _tmp = apply(:_Spnl)
4658      unless _tmp
4659        self.pos = _save
4660        break
4661      end
4662
4663      _save1 = self.pos
4664      while true # choice
4665        _tmp = match_string("h3")
4666        break if _tmp
4667        self.pos = _save1
4668        _tmp = match_string("H3")
4669        break if _tmp
4670        self.pos = _save1
4671        break
4672      end # end choice
4673
4674      unless _tmp
4675        self.pos = _save
4676        break
4677      end
4678      _tmp = apply(:_Spnl)
4679      unless _tmp
4680        self.pos = _save
4681        break
4682      end
4683      while true
4684        _tmp = apply(:_HtmlAttribute)
4685        break unless _tmp
4686      end
4687      _tmp = true
4688      unless _tmp
4689        self.pos = _save
4690        break
4691      end
4692      _tmp = match_string(">")
4693      unless _tmp
4694        self.pos = _save
4695      end
4696      break
4697    end # end sequence
4698
4699    set_failed_rule :_HtmlBlockOpenH3 unless _tmp
4700    return _tmp
4701  end
4702
4703  # HtmlBlockCloseH3 = "<" Spnl "/" ("h3" | "H3") Spnl ">"
4704  def _HtmlBlockCloseH3
4705
4706    _save = self.pos
4707    while true # sequence
4708      _tmp = match_string("<")
4709      unless _tmp
4710        self.pos = _save
4711        break
4712      end
4713      _tmp = apply(:_Spnl)
4714      unless _tmp
4715        self.pos = _save
4716        break
4717      end
4718      _tmp = match_string("/")
4719      unless _tmp
4720        self.pos = _save
4721        break
4722      end
4723
4724      _save1 = self.pos
4725      while true # choice
4726        _tmp = match_string("h3")
4727        break if _tmp
4728        self.pos = _save1
4729        _tmp = match_string("H3")
4730        break if _tmp
4731        self.pos = _save1
4732        break
4733      end # end choice
4734
4735      unless _tmp
4736        self.pos = _save
4737        break
4738      end
4739      _tmp = apply(:_Spnl)
4740      unless _tmp
4741        self.pos = _save
4742        break
4743      end
4744      _tmp = match_string(">")
4745      unless _tmp
4746        self.pos = _save
4747      end
4748      break
4749    end # end sequence
4750
4751    set_failed_rule :_HtmlBlockCloseH3 unless _tmp
4752    return _tmp
4753  end
4754
4755  # HtmlBlockH3 = HtmlBlockOpenH3 (HtmlBlockH3 | !HtmlBlockCloseH3 .)* HtmlBlockCloseH3
4756  def _HtmlBlockH3
4757
4758    _save = self.pos
4759    while true # sequence
4760      _tmp = apply(:_HtmlBlockOpenH3)
4761      unless _tmp
4762        self.pos = _save
4763        break
4764      end
4765      while true
4766
4767        _save2 = self.pos
4768        while true # choice
4769          _tmp = apply(:_HtmlBlockH3)
4770          break if _tmp
4771          self.pos = _save2
4772
4773          _save3 = self.pos
4774          while true # sequence
4775            _save4 = self.pos
4776            _tmp = apply(:_HtmlBlockCloseH3)
4777            _tmp = _tmp ? nil : true
4778            self.pos = _save4
4779            unless _tmp
4780              self.pos = _save3
4781              break
4782            end
4783            _tmp = get_byte
4784            unless _tmp
4785              self.pos = _save3
4786            end
4787            break
4788          end # end sequence
4789
4790          break if _tmp
4791          self.pos = _save2
4792          break
4793        end # end choice
4794
4795        break unless _tmp
4796      end
4797      _tmp = true
4798      unless _tmp
4799        self.pos = _save
4800        break
4801      end
4802      _tmp = apply(:_HtmlBlockCloseH3)
4803      unless _tmp
4804        self.pos = _save
4805      end
4806      break
4807    end # end sequence
4808
4809    set_failed_rule :_HtmlBlockH3 unless _tmp
4810    return _tmp
4811  end
4812
4813  # HtmlBlockOpenH4 = "<" Spnl ("h4" | "H4") Spnl HtmlAttribute* ">"
4814  def _HtmlBlockOpenH4
4815
4816    _save = self.pos
4817    while true # sequence
4818      _tmp = match_string("<")
4819      unless _tmp
4820        self.pos = _save
4821        break
4822      end
4823      _tmp = apply(:_Spnl)
4824      unless _tmp
4825        self.pos = _save
4826        break
4827      end
4828
4829      _save1 = self.pos
4830      while true # choice
4831        _tmp = match_string("h4")
4832        break if _tmp
4833        self.pos = _save1
4834        _tmp = match_string("H4")
4835        break if _tmp
4836        self.pos = _save1
4837        break
4838      end # end choice
4839
4840      unless _tmp
4841        self.pos = _save
4842        break
4843      end
4844      _tmp = apply(:_Spnl)
4845      unless _tmp
4846        self.pos = _save
4847        break
4848      end
4849      while true
4850        _tmp = apply(:_HtmlAttribute)
4851        break unless _tmp
4852      end
4853      _tmp = true
4854      unless _tmp
4855        self.pos = _save
4856        break
4857      end
4858      _tmp = match_string(">")
4859      unless _tmp
4860        self.pos = _save
4861      end
4862      break
4863    end # end sequence
4864
4865    set_failed_rule :_HtmlBlockOpenH4 unless _tmp
4866    return _tmp
4867  end
4868
4869  # HtmlBlockCloseH4 = "<" Spnl "/" ("h4" | "H4") Spnl ">"
4870  def _HtmlBlockCloseH4
4871
4872    _save = self.pos
4873    while true # sequence
4874      _tmp = match_string("<")
4875      unless _tmp
4876        self.pos = _save
4877        break
4878      end
4879      _tmp = apply(:_Spnl)
4880      unless _tmp
4881        self.pos = _save
4882        break
4883      end
4884      _tmp = match_string("/")
4885      unless _tmp
4886        self.pos = _save
4887        break
4888      end
4889
4890      _save1 = self.pos
4891      while true # choice
4892        _tmp = match_string("h4")
4893        break if _tmp
4894        self.pos = _save1
4895        _tmp = match_string("H4")
4896        break if _tmp
4897        self.pos = _save1
4898        break
4899      end # end choice
4900
4901      unless _tmp
4902        self.pos = _save
4903        break
4904      end
4905      _tmp = apply(:_Spnl)
4906      unless _tmp
4907        self.pos = _save
4908        break
4909      end
4910      _tmp = match_string(">")
4911      unless _tmp
4912        self.pos = _save
4913      end
4914      break
4915    end # end sequence
4916
4917    set_failed_rule :_HtmlBlockCloseH4 unless _tmp
4918    return _tmp
4919  end
4920
4921  # HtmlBlockH4 = HtmlBlockOpenH4 (HtmlBlockH4 | !HtmlBlockCloseH4 .)* HtmlBlockCloseH4
4922  def _HtmlBlockH4
4923
4924    _save = self.pos
4925    while true # sequence
4926      _tmp = apply(:_HtmlBlockOpenH4)
4927      unless _tmp
4928        self.pos = _save
4929        break
4930      end
4931      while true
4932
4933        _save2 = self.pos
4934        while true # choice
4935          _tmp = apply(:_HtmlBlockH4)
4936          break if _tmp
4937          self.pos = _save2
4938
4939          _save3 = self.pos
4940          while true # sequence
4941            _save4 = self.pos
4942            _tmp = apply(:_HtmlBlockCloseH4)
4943            _tmp = _tmp ? nil : true
4944            self.pos = _save4
4945            unless _tmp
4946              self.pos = _save3
4947              break
4948            end
4949            _tmp = get_byte
4950            unless _tmp
4951              self.pos = _save3
4952            end
4953            break
4954          end # end sequence
4955
4956          break if _tmp
4957          self.pos = _save2
4958          break
4959        end # end choice
4960
4961        break unless _tmp
4962      end
4963      _tmp = true
4964      unless _tmp
4965        self.pos = _save
4966        break
4967      end
4968      _tmp = apply(:_HtmlBlockCloseH4)
4969      unless _tmp
4970        self.pos = _save
4971      end
4972      break
4973    end # end sequence
4974
4975    set_failed_rule :_HtmlBlockH4 unless _tmp
4976    return _tmp
4977  end
4978
4979  # HtmlBlockOpenH5 = "<" Spnl ("h5" | "H5") Spnl HtmlAttribute* ">"
4980  def _HtmlBlockOpenH5
4981
4982    _save = self.pos
4983    while true # sequence
4984      _tmp = match_string("<")
4985      unless _tmp
4986        self.pos = _save
4987        break
4988      end
4989      _tmp = apply(:_Spnl)
4990      unless _tmp
4991        self.pos = _save
4992        break
4993      end
4994
4995      _save1 = self.pos
4996      while true # choice
4997        _tmp = match_string("h5")
4998        break if _tmp
4999        self.pos = _save1
5000        _tmp = match_string("H5")
5001        break if _tmp
5002        self.pos = _save1
5003        break
5004      end # end choice
5005
5006      unless _tmp
5007        self.pos = _save
5008        break
5009      end
5010      _tmp = apply(:_Spnl)
5011      unless _tmp
5012        self.pos = _save
5013        break
5014      end
5015      while true
5016        _tmp = apply(:_HtmlAttribute)
5017        break unless _tmp
5018      end
5019      _tmp = true
5020      unless _tmp
5021        self.pos = _save
5022        break
5023      end
5024      _tmp = match_string(">")
5025      unless _tmp
5026        self.pos = _save
5027      end
5028      break
5029    end # end sequence
5030
5031    set_failed_rule :_HtmlBlockOpenH5 unless _tmp
5032    return _tmp
5033  end
5034
5035  # HtmlBlockCloseH5 = "<" Spnl "/" ("h5" | "H5") Spnl ">"
5036  def _HtmlBlockCloseH5
5037
5038    _save = self.pos
5039    while true # sequence
5040      _tmp = match_string("<")
5041      unless _tmp
5042        self.pos = _save
5043        break
5044      end
5045      _tmp = apply(:_Spnl)
5046      unless _tmp
5047        self.pos = _save
5048        break
5049      end
5050      _tmp = match_string("/")
5051      unless _tmp
5052        self.pos = _save
5053        break
5054      end
5055
5056      _save1 = self.pos
5057      while true # choice
5058        _tmp = match_string("h5")
5059        break if _tmp
5060        self.pos = _save1
5061        _tmp = match_string("H5")
5062        break if _tmp
5063        self.pos = _save1
5064        break
5065      end # end choice
5066
5067      unless _tmp
5068        self.pos = _save
5069        break
5070      end
5071      _tmp = apply(:_Spnl)
5072      unless _tmp
5073        self.pos = _save
5074        break
5075      end
5076      _tmp = match_string(">")
5077      unless _tmp
5078        self.pos = _save
5079      end
5080      break
5081    end # end sequence
5082
5083    set_failed_rule :_HtmlBlockCloseH5 unless _tmp
5084    return _tmp
5085  end
5086
5087  # HtmlBlockH5 = HtmlBlockOpenH5 (HtmlBlockH5 | !HtmlBlockCloseH5 .)* HtmlBlockCloseH5
5088  def _HtmlBlockH5
5089
5090    _save = self.pos
5091    while true # sequence
5092      _tmp = apply(:_HtmlBlockOpenH5)
5093      unless _tmp
5094        self.pos = _save
5095        break
5096      end
5097      while true
5098
5099        _save2 = self.pos
5100        while true # choice
5101          _tmp = apply(:_HtmlBlockH5)
5102          break if _tmp
5103          self.pos = _save2
5104
5105          _save3 = self.pos
5106          while true # sequence
5107            _save4 = self.pos
5108            _tmp = apply(:_HtmlBlockCloseH5)
5109            _tmp = _tmp ? nil : true
5110            self.pos = _save4
5111            unless _tmp
5112              self.pos = _save3
5113              break
5114            end
5115            _tmp = get_byte
5116            unless _tmp
5117              self.pos = _save3
5118            end
5119            break
5120          end # end sequence
5121
5122          break if _tmp
5123          self.pos = _save2
5124          break
5125        end # end choice
5126
5127        break unless _tmp
5128      end
5129      _tmp = true
5130      unless _tmp
5131        self.pos = _save
5132        break
5133      end
5134      _tmp = apply(:_HtmlBlockCloseH5)
5135      unless _tmp
5136        self.pos = _save
5137      end
5138      break
5139    end # end sequence
5140
5141    set_failed_rule :_HtmlBlockH5 unless _tmp
5142    return _tmp
5143  end
5144
5145  # HtmlBlockOpenH6 = "<" Spnl ("h6" | "H6") Spnl HtmlAttribute* ">"
5146  def _HtmlBlockOpenH6
5147
5148    _save = self.pos
5149    while true # sequence
5150      _tmp = match_string("<")
5151      unless _tmp
5152        self.pos = _save
5153        break
5154      end
5155      _tmp = apply(:_Spnl)
5156      unless _tmp
5157        self.pos = _save
5158        break
5159      end
5160
5161      _save1 = self.pos
5162      while true # choice
5163        _tmp = match_string("h6")
5164        break if _tmp
5165        self.pos = _save1
5166        _tmp = match_string("H6")
5167        break if _tmp
5168        self.pos = _save1
5169        break
5170      end # end choice
5171
5172      unless _tmp
5173        self.pos = _save
5174        break
5175      end
5176      _tmp = apply(:_Spnl)
5177      unless _tmp
5178        self.pos = _save
5179        break
5180      end
5181      while true
5182        _tmp = apply(:_HtmlAttribute)
5183        break unless _tmp
5184      end
5185      _tmp = true
5186      unless _tmp
5187        self.pos = _save
5188        break
5189      end
5190      _tmp = match_string(">")
5191      unless _tmp
5192        self.pos = _save
5193      end
5194      break
5195    end # end sequence
5196
5197    set_failed_rule :_HtmlBlockOpenH6 unless _tmp
5198    return _tmp
5199  end
5200
5201  # HtmlBlockCloseH6 = "<" Spnl "/" ("h6" | "H6") Spnl ">"
5202  def _HtmlBlockCloseH6
5203
5204    _save = self.pos
5205    while true # sequence
5206      _tmp = match_string("<")
5207      unless _tmp
5208        self.pos = _save
5209        break
5210      end
5211      _tmp = apply(:_Spnl)
5212      unless _tmp
5213        self.pos = _save
5214        break
5215      end
5216      _tmp = match_string("/")
5217      unless _tmp
5218        self.pos = _save
5219        break
5220      end
5221
5222      _save1 = self.pos
5223      while true # choice
5224        _tmp = match_string("h6")
5225        break if _tmp
5226        self.pos = _save1
5227        _tmp = match_string("H6")
5228        break if _tmp
5229        self.pos = _save1
5230        break
5231      end # end choice
5232
5233      unless _tmp
5234        self.pos = _save
5235        break
5236      end
5237      _tmp = apply(:_Spnl)
5238      unless _tmp
5239        self.pos = _save
5240        break
5241      end
5242      _tmp = match_string(">")
5243      unless _tmp
5244        self.pos = _save
5245      end
5246      break
5247    end # end sequence
5248
5249    set_failed_rule :_HtmlBlockCloseH6 unless _tmp
5250    return _tmp
5251  end
5252
5253  # HtmlBlockH6 = HtmlBlockOpenH6 (HtmlBlockH6 | !HtmlBlockCloseH6 .)* HtmlBlockCloseH6
5254  def _HtmlBlockH6
5255
5256    _save = self.pos
5257    while true # sequence
5258      _tmp = apply(:_HtmlBlockOpenH6)
5259      unless _tmp
5260        self.pos = _save
5261        break
5262      end
5263      while true
5264
5265        _save2 = self.pos
5266        while true # choice
5267          _tmp = apply(:_HtmlBlockH6)
5268          break if _tmp
5269          self.pos = _save2
5270
5271          _save3 = self.pos
5272          while true # sequence
5273            _save4 = self.pos
5274            _tmp = apply(:_HtmlBlockCloseH6)
5275            _tmp = _tmp ? nil : true
5276            self.pos = _save4
5277            unless _tmp
5278              self.pos = _save3
5279              break
5280            end
5281            _tmp = get_byte
5282            unless _tmp
5283              self.pos = _save3
5284            end
5285            break
5286          end # end sequence
5287
5288          break if _tmp
5289          self.pos = _save2
5290          break
5291        end # end choice
5292
5293        break unless _tmp
5294      end
5295      _tmp = true
5296      unless _tmp
5297        self.pos = _save
5298        break
5299      end
5300      _tmp = apply(:_HtmlBlockCloseH6)
5301      unless _tmp
5302        self.pos = _save
5303      end
5304      break
5305    end # end sequence
5306
5307    set_failed_rule :_HtmlBlockH6 unless _tmp
5308    return _tmp
5309  end
5310
5311  # HtmlBlockOpenMenu = "<" Spnl ("menu" | "MENU") Spnl HtmlAttribute* ">"
5312  def _HtmlBlockOpenMenu
5313
5314    _save = self.pos
5315    while true # sequence
5316      _tmp = match_string("<")
5317      unless _tmp
5318        self.pos = _save
5319        break
5320      end
5321      _tmp = apply(:_Spnl)
5322      unless _tmp
5323        self.pos = _save
5324        break
5325      end
5326
5327      _save1 = self.pos
5328      while true # choice
5329        _tmp = match_string("menu")
5330        break if _tmp
5331        self.pos = _save1
5332        _tmp = match_string("MENU")
5333        break if _tmp
5334        self.pos = _save1
5335        break
5336      end # end choice
5337
5338      unless _tmp
5339        self.pos = _save
5340        break
5341      end
5342      _tmp = apply(:_Spnl)
5343      unless _tmp
5344        self.pos = _save
5345        break
5346      end
5347      while true
5348        _tmp = apply(:_HtmlAttribute)
5349        break unless _tmp
5350      end
5351      _tmp = true
5352      unless _tmp
5353        self.pos = _save
5354        break
5355      end
5356      _tmp = match_string(">")
5357      unless _tmp
5358        self.pos = _save
5359      end
5360      break
5361    end # end sequence
5362
5363    set_failed_rule :_HtmlBlockOpenMenu unless _tmp
5364    return _tmp
5365  end
5366
5367  # HtmlBlockCloseMenu = "<" Spnl "/" ("menu" | "MENU") Spnl ">"
5368  def _HtmlBlockCloseMenu
5369
5370    _save = self.pos
5371    while true # sequence
5372      _tmp = match_string("<")
5373      unless _tmp
5374        self.pos = _save
5375        break
5376      end
5377      _tmp = apply(:_Spnl)
5378      unless _tmp
5379        self.pos = _save
5380        break
5381      end
5382      _tmp = match_string("/")
5383      unless _tmp
5384        self.pos = _save
5385        break
5386      end
5387
5388      _save1 = self.pos
5389      while true # choice
5390        _tmp = match_string("menu")
5391        break if _tmp
5392        self.pos = _save1
5393        _tmp = match_string("MENU")
5394        break if _tmp
5395        self.pos = _save1
5396        break
5397      end # end choice
5398
5399      unless _tmp
5400        self.pos = _save
5401        break
5402      end
5403      _tmp = apply(:_Spnl)
5404      unless _tmp
5405        self.pos = _save
5406        break
5407      end
5408      _tmp = match_string(">")
5409      unless _tmp
5410        self.pos = _save
5411      end
5412      break
5413    end # end sequence
5414
5415    set_failed_rule :_HtmlBlockCloseMenu unless _tmp
5416    return _tmp
5417  end
5418
5419  # HtmlBlockMenu = HtmlBlockOpenMenu (HtmlBlockMenu | !HtmlBlockCloseMenu .)* HtmlBlockCloseMenu
5420  def _HtmlBlockMenu
5421
5422    _save = self.pos
5423    while true # sequence
5424      _tmp = apply(:_HtmlBlockOpenMenu)
5425      unless _tmp
5426        self.pos = _save
5427        break
5428      end
5429      while true
5430
5431        _save2 = self.pos
5432        while true # choice
5433          _tmp = apply(:_HtmlBlockMenu)
5434          break if _tmp
5435          self.pos = _save2
5436
5437          _save3 = self.pos
5438          while true # sequence
5439            _save4 = self.pos
5440            _tmp = apply(:_HtmlBlockCloseMenu)
5441            _tmp = _tmp ? nil : true
5442            self.pos = _save4
5443            unless _tmp
5444              self.pos = _save3
5445              break
5446            end
5447            _tmp = get_byte
5448            unless _tmp
5449              self.pos = _save3
5450            end
5451            break
5452          end # end sequence
5453
5454          break if _tmp
5455          self.pos = _save2
5456          break
5457        end # end choice
5458
5459        break unless _tmp
5460      end
5461      _tmp = true
5462      unless _tmp
5463        self.pos = _save
5464        break
5465      end
5466      _tmp = apply(:_HtmlBlockCloseMenu)
5467      unless _tmp
5468        self.pos = _save
5469      end
5470      break
5471    end # end sequence
5472
5473    set_failed_rule :_HtmlBlockMenu unless _tmp
5474    return _tmp
5475  end
5476
5477  # HtmlBlockOpenNoframes = "<" Spnl ("noframes" | "NOFRAMES") Spnl HtmlAttribute* ">"
5478  def _HtmlBlockOpenNoframes
5479
5480    _save = self.pos
5481    while true # sequence
5482      _tmp = match_string("<")
5483      unless _tmp
5484        self.pos = _save
5485        break
5486      end
5487      _tmp = apply(:_Spnl)
5488      unless _tmp
5489        self.pos = _save
5490        break
5491      end
5492
5493      _save1 = self.pos
5494      while true # choice
5495        _tmp = match_string("noframes")
5496        break if _tmp
5497        self.pos = _save1
5498        _tmp = match_string("NOFRAMES")
5499        break if _tmp
5500        self.pos = _save1
5501        break
5502      end # end choice
5503
5504      unless _tmp
5505        self.pos = _save
5506        break
5507      end
5508      _tmp = apply(:_Spnl)
5509      unless _tmp
5510        self.pos = _save
5511        break
5512      end
5513      while true
5514        _tmp = apply(:_HtmlAttribute)
5515        break unless _tmp
5516      end
5517      _tmp = true
5518      unless _tmp
5519        self.pos = _save
5520        break
5521      end
5522      _tmp = match_string(">")
5523      unless _tmp
5524        self.pos = _save
5525      end
5526      break
5527    end # end sequence
5528
5529    set_failed_rule :_HtmlBlockOpenNoframes unless _tmp
5530    return _tmp
5531  end
5532
5533  # HtmlBlockCloseNoframes = "<" Spnl "/" ("noframes" | "NOFRAMES") Spnl ">"
5534  def _HtmlBlockCloseNoframes
5535
5536    _save = self.pos
5537    while true # sequence
5538      _tmp = match_string("<")
5539      unless _tmp
5540        self.pos = _save
5541        break
5542      end
5543      _tmp = apply(:_Spnl)
5544      unless _tmp
5545        self.pos = _save
5546        break
5547      end
5548      _tmp = match_string("/")
5549      unless _tmp
5550        self.pos = _save
5551        break
5552      end
5553
5554      _save1 = self.pos
5555      while true # choice
5556        _tmp = match_string("noframes")
5557        break if _tmp
5558        self.pos = _save1
5559        _tmp = match_string("NOFRAMES")
5560        break if _tmp
5561        self.pos = _save1
5562        break
5563      end # end choice
5564
5565      unless _tmp
5566        self.pos = _save
5567        break
5568      end
5569      _tmp = apply(:_Spnl)
5570      unless _tmp
5571        self.pos = _save
5572        break
5573      end
5574      _tmp = match_string(">")
5575      unless _tmp
5576        self.pos = _save
5577      end
5578      break
5579    end # end sequence
5580
5581    set_failed_rule :_HtmlBlockCloseNoframes unless _tmp
5582    return _tmp
5583  end
5584
5585  # HtmlBlockNoframes = HtmlBlockOpenNoframes (HtmlBlockNoframes | !HtmlBlockCloseNoframes .)* HtmlBlockCloseNoframes
5586  def _HtmlBlockNoframes
5587
5588    _save = self.pos
5589    while true # sequence
5590      _tmp = apply(:_HtmlBlockOpenNoframes)
5591      unless _tmp
5592        self.pos = _save
5593        break
5594      end
5595      while true
5596
5597        _save2 = self.pos
5598        while true # choice
5599          _tmp = apply(:_HtmlBlockNoframes)
5600          break if _tmp
5601          self.pos = _save2
5602
5603          _save3 = self.pos
5604          while true # sequence
5605            _save4 = self.pos
5606            _tmp = apply(:_HtmlBlockCloseNoframes)
5607            _tmp = _tmp ? nil : true
5608            self.pos = _save4
5609            unless _tmp
5610              self.pos = _save3
5611              break
5612            end
5613            _tmp = get_byte
5614            unless _tmp
5615              self.pos = _save3
5616            end
5617            break
5618          end # end sequence
5619
5620          break if _tmp
5621          self.pos = _save2
5622          break
5623        end # end choice
5624
5625        break unless _tmp
5626      end
5627      _tmp = true
5628      unless _tmp
5629        self.pos = _save
5630        break
5631      end
5632      _tmp = apply(:_HtmlBlockCloseNoframes)
5633      unless _tmp
5634        self.pos = _save
5635      end
5636      break
5637    end # end sequence
5638
5639    set_failed_rule :_HtmlBlockNoframes unless _tmp
5640    return _tmp
5641  end
5642
5643  # HtmlBlockOpenNoscript = "<" Spnl ("noscript" | "NOSCRIPT") Spnl HtmlAttribute* ">"
5644  def _HtmlBlockOpenNoscript
5645
5646    _save = self.pos
5647    while true # sequence
5648      _tmp = match_string("<")
5649      unless _tmp
5650        self.pos = _save
5651        break
5652      end
5653      _tmp = apply(:_Spnl)
5654      unless _tmp
5655        self.pos = _save
5656        break
5657      end
5658
5659      _save1 = self.pos
5660      while true # choice
5661        _tmp = match_string("noscript")
5662        break if _tmp
5663        self.pos = _save1
5664        _tmp = match_string("NOSCRIPT")
5665        break if _tmp
5666        self.pos = _save1
5667        break
5668      end # end choice
5669
5670      unless _tmp
5671        self.pos = _save
5672        break
5673      end
5674      _tmp = apply(:_Spnl)
5675      unless _tmp
5676        self.pos = _save
5677        break
5678      end
5679      while true
5680        _tmp = apply(:_HtmlAttribute)
5681        break unless _tmp
5682      end
5683      _tmp = true
5684      unless _tmp
5685        self.pos = _save
5686        break
5687      end
5688      _tmp = match_string(">")
5689      unless _tmp
5690        self.pos = _save
5691      end
5692      break
5693    end # end sequence
5694
5695    set_failed_rule :_HtmlBlockOpenNoscript unless _tmp
5696    return _tmp
5697  end
5698
5699  # HtmlBlockCloseNoscript = "<" Spnl "/" ("noscript" | "NOSCRIPT") Spnl ">"
5700  def _HtmlBlockCloseNoscript
5701
5702    _save = self.pos
5703    while true # sequence
5704      _tmp = match_string("<")
5705      unless _tmp
5706        self.pos = _save
5707        break
5708      end
5709      _tmp = apply(:_Spnl)
5710      unless _tmp
5711        self.pos = _save
5712        break
5713      end
5714      _tmp = match_string("/")
5715      unless _tmp
5716        self.pos = _save
5717        break
5718      end
5719
5720      _save1 = self.pos
5721      while true # choice
5722        _tmp = match_string("noscript")
5723        break if _tmp
5724        self.pos = _save1
5725        _tmp = match_string("NOSCRIPT")
5726        break if _tmp
5727        self.pos = _save1
5728        break
5729      end # end choice
5730
5731      unless _tmp
5732        self.pos = _save
5733        break
5734      end
5735      _tmp = apply(:_Spnl)
5736      unless _tmp
5737        self.pos = _save
5738        break
5739      end
5740      _tmp = match_string(">")
5741      unless _tmp
5742        self.pos = _save
5743      end
5744      break
5745    end # end sequence
5746
5747    set_failed_rule :_HtmlBlockCloseNoscript unless _tmp
5748    return _tmp
5749  end
5750
5751  # HtmlBlockNoscript = HtmlBlockOpenNoscript (HtmlBlockNoscript | !HtmlBlockCloseNoscript .)* HtmlBlockCloseNoscript
5752  def _HtmlBlockNoscript
5753
5754    _save = self.pos
5755    while true # sequence
5756      _tmp = apply(:_HtmlBlockOpenNoscript)
5757      unless _tmp
5758        self.pos = _save
5759        break
5760      end
5761      while true
5762
5763        _save2 = self.pos
5764        while true # choice
5765          _tmp = apply(:_HtmlBlockNoscript)
5766          break if _tmp
5767          self.pos = _save2
5768
5769          _save3 = self.pos
5770          while true # sequence
5771            _save4 = self.pos
5772            _tmp = apply(:_HtmlBlockCloseNoscript)
5773            _tmp = _tmp ? nil : true
5774            self.pos = _save4
5775            unless _tmp
5776              self.pos = _save3
5777              break
5778            end
5779            _tmp = get_byte
5780            unless _tmp
5781              self.pos = _save3
5782            end
5783            break
5784          end # end sequence
5785
5786          break if _tmp
5787          self.pos = _save2
5788          break
5789        end # end choice
5790
5791        break unless _tmp
5792      end
5793      _tmp = true
5794      unless _tmp
5795        self.pos = _save
5796        break
5797      end
5798      _tmp = apply(:_HtmlBlockCloseNoscript)
5799      unless _tmp
5800        self.pos = _save
5801      end
5802      break
5803    end # end sequence
5804
5805    set_failed_rule :_HtmlBlockNoscript unless _tmp
5806    return _tmp
5807  end
5808
5809  # HtmlBlockOpenOl = "<" Spnl ("ol" | "OL") Spnl HtmlAttribute* ">"
5810  def _HtmlBlockOpenOl
5811
5812    _save = self.pos
5813    while true # sequence
5814      _tmp = match_string("<")
5815      unless _tmp
5816        self.pos = _save
5817        break
5818      end
5819      _tmp = apply(:_Spnl)
5820      unless _tmp
5821        self.pos = _save
5822        break
5823      end
5824
5825      _save1 = self.pos
5826      while true # choice
5827        _tmp = match_string("ol")
5828        break if _tmp
5829        self.pos = _save1
5830        _tmp = match_string("OL")
5831        break if _tmp
5832        self.pos = _save1
5833        break
5834      end # end choice
5835
5836      unless _tmp
5837        self.pos = _save
5838        break
5839      end
5840      _tmp = apply(:_Spnl)
5841      unless _tmp
5842        self.pos = _save
5843        break
5844      end
5845      while true
5846        _tmp = apply(:_HtmlAttribute)
5847        break unless _tmp
5848      end
5849      _tmp = true
5850      unless _tmp
5851        self.pos = _save
5852        break
5853      end
5854      _tmp = match_string(">")
5855      unless _tmp
5856        self.pos = _save
5857      end
5858      break
5859    end # end sequence
5860
5861    set_failed_rule :_HtmlBlockOpenOl unless _tmp
5862    return _tmp
5863  end
5864
5865  # HtmlBlockCloseOl = "<" Spnl "/" ("ol" | "OL") Spnl ">"
5866  def _HtmlBlockCloseOl
5867
5868    _save = self.pos
5869    while true # sequence
5870      _tmp = match_string("<")
5871      unless _tmp
5872        self.pos = _save
5873        break
5874      end
5875      _tmp = apply(:_Spnl)
5876      unless _tmp
5877        self.pos = _save
5878        break
5879      end
5880      _tmp = match_string("/")
5881      unless _tmp
5882        self.pos = _save
5883        break
5884      end
5885
5886      _save1 = self.pos
5887      while true # choice
5888        _tmp = match_string("ol")
5889        break if _tmp
5890        self.pos = _save1
5891        _tmp = match_string("OL")
5892        break if _tmp
5893        self.pos = _save1
5894        break
5895      end # end choice
5896
5897      unless _tmp
5898        self.pos = _save
5899        break
5900      end
5901      _tmp = apply(:_Spnl)
5902      unless _tmp
5903        self.pos = _save
5904        break
5905      end
5906      _tmp = match_string(">")
5907      unless _tmp
5908        self.pos = _save
5909      end
5910      break
5911    end # end sequence
5912
5913    set_failed_rule :_HtmlBlockCloseOl unless _tmp
5914    return _tmp
5915  end
5916
5917  # HtmlBlockOl = HtmlBlockOpenOl (HtmlBlockOl | !HtmlBlockCloseOl .)* HtmlBlockCloseOl
5918  def _HtmlBlockOl
5919
5920    _save = self.pos
5921    while true # sequence
5922      _tmp = apply(:_HtmlBlockOpenOl)
5923      unless _tmp
5924        self.pos = _save
5925        break
5926      end
5927      while true
5928
5929        _save2 = self.pos
5930        while true # choice
5931          _tmp = apply(:_HtmlBlockOl)
5932          break if _tmp
5933          self.pos = _save2
5934
5935          _save3 = self.pos
5936          while true # sequence
5937            _save4 = self.pos
5938            _tmp = apply(:_HtmlBlockCloseOl)
5939            _tmp = _tmp ? nil : true
5940            self.pos = _save4
5941            unless _tmp
5942              self.pos = _save3
5943              break
5944            end
5945            _tmp = get_byte
5946            unless _tmp
5947              self.pos = _save3
5948            end
5949            break
5950          end # end sequence
5951
5952          break if _tmp
5953          self.pos = _save2
5954          break
5955        end # end choice
5956
5957        break unless _tmp
5958      end
5959      _tmp = true
5960      unless _tmp
5961        self.pos = _save
5962        break
5963      end
5964      _tmp = apply(:_HtmlBlockCloseOl)
5965      unless _tmp
5966        self.pos = _save
5967      end
5968      break
5969    end # end sequence
5970
5971    set_failed_rule :_HtmlBlockOl unless _tmp
5972    return _tmp
5973  end
5974
5975  # HtmlBlockOpenP = "<" Spnl ("p" | "P") Spnl HtmlAttribute* ">"
5976  def _HtmlBlockOpenP
5977
5978    _save = self.pos
5979    while true # sequence
5980      _tmp = match_string("<")
5981      unless _tmp
5982        self.pos = _save
5983        break
5984      end
5985      _tmp = apply(:_Spnl)
5986      unless _tmp
5987        self.pos = _save
5988        break
5989      end
5990
5991      _save1 = self.pos
5992      while true # choice
5993        _tmp = match_string("p")
5994        break if _tmp
5995        self.pos = _save1
5996        _tmp = match_string("P")
5997        break if _tmp
5998        self.pos = _save1
5999        break
6000      end # end choice
6001
6002      unless _tmp
6003        self.pos = _save
6004        break
6005      end
6006      _tmp = apply(:_Spnl)
6007      unless _tmp
6008        self.pos = _save
6009        break
6010      end
6011      while true
6012        _tmp = apply(:_HtmlAttribute)
6013        break unless _tmp
6014      end
6015      _tmp = true
6016      unless _tmp
6017        self.pos = _save
6018        break
6019      end
6020      _tmp = match_string(">")
6021      unless _tmp
6022        self.pos = _save
6023      end
6024      break
6025    end # end sequence
6026
6027    set_failed_rule :_HtmlBlockOpenP unless _tmp
6028    return _tmp
6029  end
6030
6031  # HtmlBlockCloseP = "<" Spnl "/" ("p" | "P") Spnl ">"
6032  def _HtmlBlockCloseP
6033
6034    _save = self.pos
6035    while true # sequence
6036      _tmp = match_string("<")
6037      unless _tmp
6038        self.pos = _save
6039        break
6040      end
6041      _tmp = apply(:_Spnl)
6042      unless _tmp
6043        self.pos = _save
6044        break
6045      end
6046      _tmp = match_string("/")
6047      unless _tmp
6048        self.pos = _save
6049        break
6050      end
6051
6052      _save1 = self.pos
6053      while true # choice
6054        _tmp = match_string("p")
6055        break if _tmp
6056        self.pos = _save1
6057        _tmp = match_string("P")
6058        break if _tmp
6059        self.pos = _save1
6060        break
6061      end # end choice
6062
6063      unless _tmp
6064        self.pos = _save
6065        break
6066      end
6067      _tmp = apply(:_Spnl)
6068      unless _tmp
6069        self.pos = _save
6070        break
6071      end
6072      _tmp = match_string(">")
6073      unless _tmp
6074        self.pos = _save
6075      end
6076      break
6077    end # end sequence
6078
6079    set_failed_rule :_HtmlBlockCloseP unless _tmp
6080    return _tmp
6081  end
6082
6083  # HtmlBlockP = HtmlBlockOpenP (HtmlBlockP | !HtmlBlockCloseP .)* HtmlBlockCloseP
6084  def _HtmlBlockP
6085
6086    _save = self.pos
6087    while true # sequence
6088      _tmp = apply(:_HtmlBlockOpenP)
6089      unless _tmp
6090        self.pos = _save
6091        break
6092      end
6093      while true
6094
6095        _save2 = self.pos
6096        while true # choice
6097          _tmp = apply(:_HtmlBlockP)
6098          break if _tmp
6099          self.pos = _save2
6100
6101          _save3 = self.pos
6102          while true # sequence
6103            _save4 = self.pos
6104            _tmp = apply(:_HtmlBlockCloseP)
6105            _tmp = _tmp ? nil : true
6106            self.pos = _save4
6107            unless _tmp
6108              self.pos = _save3
6109              break
6110            end
6111            _tmp = get_byte
6112            unless _tmp
6113              self.pos = _save3
6114            end
6115            break
6116          end # end sequence
6117
6118          break if _tmp
6119          self.pos = _save2
6120          break
6121        end # end choice
6122
6123        break unless _tmp
6124      end
6125      _tmp = true
6126      unless _tmp
6127        self.pos = _save
6128        break
6129      end
6130      _tmp = apply(:_HtmlBlockCloseP)
6131      unless _tmp
6132        self.pos = _save
6133      end
6134      break
6135    end # end sequence
6136
6137    set_failed_rule :_HtmlBlockP unless _tmp
6138    return _tmp
6139  end
6140
6141  # HtmlBlockOpenPre = "<" Spnl ("pre" | "PRE") Spnl HtmlAttribute* ">"
6142  def _HtmlBlockOpenPre
6143
6144    _save = self.pos
6145    while true # sequence
6146      _tmp = match_string("<")
6147      unless _tmp
6148        self.pos = _save
6149        break
6150      end
6151      _tmp = apply(:_Spnl)
6152      unless _tmp
6153        self.pos = _save
6154        break
6155      end
6156
6157      _save1 = self.pos
6158      while true # choice
6159        _tmp = match_string("pre")
6160        break if _tmp
6161        self.pos = _save1
6162        _tmp = match_string("PRE")
6163        break if _tmp
6164        self.pos = _save1
6165        break
6166      end # end choice
6167
6168      unless _tmp
6169        self.pos = _save
6170        break
6171      end
6172      _tmp = apply(:_Spnl)
6173      unless _tmp
6174        self.pos = _save
6175        break
6176      end
6177      while true
6178        _tmp = apply(:_HtmlAttribute)
6179        break unless _tmp
6180      end
6181      _tmp = true
6182      unless _tmp
6183        self.pos = _save
6184        break
6185      end
6186      _tmp = match_string(">")
6187      unless _tmp
6188        self.pos = _save
6189      end
6190      break
6191    end # end sequence
6192
6193    set_failed_rule :_HtmlBlockOpenPre unless _tmp
6194    return _tmp
6195  end
6196
6197  # HtmlBlockClosePre = "<" Spnl "/" ("pre" | "PRE") Spnl ">"
6198  def _HtmlBlockClosePre
6199
6200    _save = self.pos
6201    while true # sequence
6202      _tmp = match_string("<")
6203      unless _tmp
6204        self.pos = _save
6205        break
6206      end
6207      _tmp = apply(:_Spnl)
6208      unless _tmp
6209        self.pos = _save
6210        break
6211      end
6212      _tmp = match_string("/")
6213      unless _tmp
6214        self.pos = _save
6215        break
6216      end
6217
6218      _save1 = self.pos
6219      while true # choice
6220        _tmp = match_string("pre")
6221        break if _tmp
6222        self.pos = _save1
6223        _tmp = match_string("PRE")
6224        break if _tmp
6225        self.pos = _save1
6226        break
6227      end # end choice
6228
6229      unless _tmp
6230        self.pos = _save
6231        break
6232      end
6233      _tmp = apply(:_Spnl)
6234      unless _tmp
6235        self.pos = _save
6236        break
6237      end
6238      _tmp = match_string(">")
6239      unless _tmp
6240        self.pos = _save
6241      end
6242      break
6243    end # end sequence
6244
6245    set_failed_rule :_HtmlBlockClosePre unless _tmp
6246    return _tmp
6247  end
6248
6249  # HtmlBlockPre = HtmlBlockOpenPre (HtmlBlockPre | !HtmlBlockClosePre .)* HtmlBlockClosePre
6250  def _HtmlBlockPre
6251
6252    _save = self.pos
6253    while true # sequence
6254      _tmp = apply(:_HtmlBlockOpenPre)
6255      unless _tmp
6256        self.pos = _save
6257        break
6258      end
6259      while true
6260
6261        _save2 = self.pos
6262        while true # choice
6263          _tmp = apply(:_HtmlBlockPre)
6264          break if _tmp
6265          self.pos = _save2
6266
6267          _save3 = self.pos
6268          while true # sequence
6269            _save4 = self.pos
6270            _tmp = apply(:_HtmlBlockClosePre)
6271            _tmp = _tmp ? nil : true
6272            self.pos = _save4
6273            unless _tmp
6274              self.pos = _save3
6275              break
6276            end
6277            _tmp = get_byte
6278            unless _tmp
6279              self.pos = _save3
6280            end
6281            break
6282          end # end sequence
6283
6284          break if _tmp
6285          self.pos = _save2
6286          break
6287        end # end choice
6288
6289        break unless _tmp
6290      end
6291      _tmp = true
6292      unless _tmp
6293        self.pos = _save
6294        break
6295      end
6296      _tmp = apply(:_HtmlBlockClosePre)
6297      unless _tmp
6298        self.pos = _save
6299      end
6300      break
6301    end # end sequence
6302
6303    set_failed_rule :_HtmlBlockPre unless _tmp
6304    return _tmp
6305  end
6306
6307  # HtmlBlockOpenTable = "<" Spnl ("table" | "TABLE") Spnl HtmlAttribute* ">"
6308  def _HtmlBlockOpenTable
6309
6310    _save = self.pos
6311    while true # sequence
6312      _tmp = match_string("<")
6313      unless _tmp
6314        self.pos = _save
6315        break
6316      end
6317      _tmp = apply(:_Spnl)
6318      unless _tmp
6319        self.pos = _save
6320        break
6321      end
6322
6323      _save1 = self.pos
6324      while true # choice
6325        _tmp = match_string("table")
6326        break if _tmp
6327        self.pos = _save1
6328        _tmp = match_string("TABLE")
6329        break if _tmp
6330        self.pos = _save1
6331        break
6332      end # end choice
6333
6334      unless _tmp
6335        self.pos = _save
6336        break
6337      end
6338      _tmp = apply(:_Spnl)
6339      unless _tmp
6340        self.pos = _save
6341        break
6342      end
6343      while true
6344        _tmp = apply(:_HtmlAttribute)
6345        break unless _tmp
6346      end
6347      _tmp = true
6348      unless _tmp
6349        self.pos = _save
6350        break
6351      end
6352      _tmp = match_string(">")
6353      unless _tmp
6354        self.pos = _save
6355      end
6356      break
6357    end # end sequence
6358
6359    set_failed_rule :_HtmlBlockOpenTable unless _tmp
6360    return _tmp
6361  end
6362
6363  # HtmlBlockCloseTable = "<" Spnl "/" ("table" | "TABLE") Spnl ">"
6364  def _HtmlBlockCloseTable
6365
6366    _save = self.pos
6367    while true # sequence
6368      _tmp = match_string("<")
6369      unless _tmp
6370        self.pos = _save
6371        break
6372      end
6373      _tmp = apply(:_Spnl)
6374      unless _tmp
6375        self.pos = _save
6376        break
6377      end
6378      _tmp = match_string("/")
6379      unless _tmp
6380        self.pos = _save
6381        break
6382      end
6383
6384      _save1 = self.pos
6385      while true # choice
6386        _tmp = match_string("table")
6387        break if _tmp
6388        self.pos = _save1
6389        _tmp = match_string("TABLE")
6390        break if _tmp
6391        self.pos = _save1
6392        break
6393      end # end choice
6394
6395      unless _tmp
6396        self.pos = _save
6397        break
6398      end
6399      _tmp = apply(:_Spnl)
6400      unless _tmp
6401        self.pos = _save
6402        break
6403      end
6404      _tmp = match_string(">")
6405      unless _tmp
6406        self.pos = _save
6407      end
6408      break
6409    end # end sequence
6410
6411    set_failed_rule :_HtmlBlockCloseTable unless _tmp
6412    return _tmp
6413  end
6414
6415  # HtmlBlockTable = HtmlBlockOpenTable (HtmlBlockTable | !HtmlBlockCloseTable .)* HtmlBlockCloseTable
6416  def _HtmlBlockTable
6417
6418    _save = self.pos
6419    while true # sequence
6420      _tmp = apply(:_HtmlBlockOpenTable)
6421      unless _tmp
6422        self.pos = _save
6423        break
6424      end
6425      while true
6426
6427        _save2 = self.pos
6428        while true # choice
6429          _tmp = apply(:_HtmlBlockTable)
6430          break if _tmp
6431          self.pos = _save2
6432
6433          _save3 = self.pos
6434          while true # sequence
6435            _save4 = self.pos
6436            _tmp = apply(:_HtmlBlockCloseTable)
6437            _tmp = _tmp ? nil : true
6438            self.pos = _save4
6439            unless _tmp
6440              self.pos = _save3
6441              break
6442            end
6443            _tmp = get_byte
6444            unless _tmp
6445              self.pos = _save3
6446            end
6447            break
6448          end # end sequence
6449
6450          break if _tmp
6451          self.pos = _save2
6452          break
6453        end # end choice
6454
6455        break unless _tmp
6456      end
6457      _tmp = true
6458      unless _tmp
6459        self.pos = _save
6460        break
6461      end
6462      _tmp = apply(:_HtmlBlockCloseTable)
6463      unless _tmp
6464        self.pos = _save
6465      end
6466      break
6467    end # end sequence
6468
6469    set_failed_rule :_HtmlBlockTable unless _tmp
6470    return _tmp
6471  end
6472
6473  # HtmlBlockOpenUl = "<" Spnl ("ul" | "UL") Spnl HtmlAttribute* ">"
6474  def _HtmlBlockOpenUl
6475
6476    _save = self.pos
6477    while true # sequence
6478      _tmp = match_string("<")
6479      unless _tmp
6480        self.pos = _save
6481        break
6482      end
6483      _tmp = apply(:_Spnl)
6484      unless _tmp
6485        self.pos = _save
6486        break
6487      end
6488
6489      _save1 = self.pos
6490      while true # choice
6491        _tmp = match_string("ul")
6492        break if _tmp
6493        self.pos = _save1
6494        _tmp = match_string("UL")
6495        break if _tmp
6496        self.pos = _save1
6497        break
6498      end # end choice
6499
6500      unless _tmp
6501        self.pos = _save
6502        break
6503      end
6504      _tmp = apply(:_Spnl)
6505      unless _tmp
6506        self.pos = _save
6507        break
6508      end
6509      while true
6510        _tmp = apply(:_HtmlAttribute)
6511        break unless _tmp
6512      end
6513      _tmp = true
6514      unless _tmp
6515        self.pos = _save
6516        break
6517      end
6518      _tmp = match_string(">")
6519      unless _tmp
6520        self.pos = _save
6521      end
6522      break
6523    end # end sequence
6524
6525    set_failed_rule :_HtmlBlockOpenUl unless _tmp
6526    return _tmp
6527  end
6528
6529  # HtmlBlockCloseUl = "<" Spnl "/" ("ul" | "UL") Spnl ">"
6530  def _HtmlBlockCloseUl
6531
6532    _save = self.pos
6533    while true # sequence
6534      _tmp = match_string("<")
6535      unless _tmp
6536        self.pos = _save
6537        break
6538      end
6539      _tmp = apply(:_Spnl)
6540      unless _tmp
6541        self.pos = _save
6542        break
6543      end
6544      _tmp = match_string("/")
6545      unless _tmp
6546        self.pos = _save
6547        break
6548      end
6549
6550      _save1 = self.pos
6551      while true # choice
6552        _tmp = match_string("ul")
6553        break if _tmp
6554        self.pos = _save1
6555        _tmp = match_string("UL")
6556        break if _tmp
6557        self.pos = _save1
6558        break
6559      end # end choice
6560
6561      unless _tmp
6562        self.pos = _save
6563        break
6564      end
6565      _tmp = apply(:_Spnl)
6566      unless _tmp
6567        self.pos = _save
6568        break
6569      end
6570      _tmp = match_string(">")
6571      unless _tmp
6572        self.pos = _save
6573      end
6574      break
6575    end # end sequence
6576
6577    set_failed_rule :_HtmlBlockCloseUl unless _tmp
6578    return _tmp
6579  end
6580
6581  # HtmlBlockUl = HtmlBlockOpenUl (HtmlBlockUl | !HtmlBlockCloseUl .)* HtmlBlockCloseUl
6582  def _HtmlBlockUl
6583
6584    _save = self.pos
6585    while true # sequence
6586      _tmp = apply(:_HtmlBlockOpenUl)
6587      unless _tmp
6588        self.pos = _save
6589        break
6590      end
6591      while true
6592
6593        _save2 = self.pos
6594        while true # choice
6595          _tmp = apply(:_HtmlBlockUl)
6596          break if _tmp
6597          self.pos = _save2
6598
6599          _save3 = self.pos
6600          while true # sequence
6601            _save4 = self.pos
6602            _tmp = apply(:_HtmlBlockCloseUl)
6603            _tmp = _tmp ? nil : true
6604            self.pos = _save4
6605            unless _tmp
6606              self.pos = _save3
6607              break
6608            end
6609            _tmp = get_byte
6610            unless _tmp
6611              self.pos = _save3
6612            end
6613            break
6614          end # end sequence
6615
6616          break if _tmp
6617          self.pos = _save2
6618          break
6619        end # end choice
6620
6621        break unless _tmp
6622      end
6623      _tmp = true
6624      unless _tmp
6625        self.pos = _save
6626        break
6627      end
6628      _tmp = apply(:_HtmlBlockCloseUl)
6629      unless _tmp
6630        self.pos = _save
6631      end
6632      break
6633    end # end sequence
6634
6635    set_failed_rule :_HtmlBlockUl unless _tmp
6636    return _tmp
6637  end
6638
6639  # HtmlBlockOpenDd = "<" Spnl ("dd" | "DD") Spnl HtmlAttribute* ">"
6640  def _HtmlBlockOpenDd
6641
6642    _save = self.pos
6643    while true # sequence
6644      _tmp = match_string("<")
6645      unless _tmp
6646        self.pos = _save
6647        break
6648      end
6649      _tmp = apply(:_Spnl)
6650      unless _tmp
6651        self.pos = _save
6652        break
6653      end
6654
6655      _save1 = self.pos
6656      while true # choice
6657        _tmp = match_string("dd")
6658        break if _tmp
6659        self.pos = _save1
6660        _tmp = match_string("DD")
6661        break if _tmp
6662        self.pos = _save1
6663        break
6664      end # end choice
6665
6666      unless _tmp
6667        self.pos = _save
6668        break
6669      end
6670      _tmp = apply(:_Spnl)
6671      unless _tmp
6672        self.pos = _save
6673        break
6674      end
6675      while true
6676        _tmp = apply(:_HtmlAttribute)
6677        break unless _tmp
6678      end
6679      _tmp = true
6680      unless _tmp
6681        self.pos = _save
6682        break
6683      end
6684      _tmp = match_string(">")
6685      unless _tmp
6686        self.pos = _save
6687      end
6688      break
6689    end # end sequence
6690
6691    set_failed_rule :_HtmlBlockOpenDd unless _tmp
6692    return _tmp
6693  end
6694
6695  # HtmlBlockCloseDd = "<" Spnl "/" ("dd" | "DD") Spnl ">"
6696  def _HtmlBlockCloseDd
6697
6698    _save = self.pos
6699    while true # sequence
6700      _tmp = match_string("<")
6701      unless _tmp
6702        self.pos = _save
6703        break
6704      end
6705      _tmp = apply(:_Spnl)
6706      unless _tmp
6707        self.pos = _save
6708        break
6709      end
6710      _tmp = match_string("/")
6711      unless _tmp
6712        self.pos = _save
6713        break
6714      end
6715
6716      _save1 = self.pos
6717      while true # choice
6718        _tmp = match_string("dd")
6719        break if _tmp
6720        self.pos = _save1
6721        _tmp = match_string("DD")
6722        break if _tmp
6723        self.pos = _save1
6724        break
6725      end # end choice
6726
6727      unless _tmp
6728        self.pos = _save
6729        break
6730      end
6731      _tmp = apply(:_Spnl)
6732      unless _tmp
6733        self.pos = _save
6734        break
6735      end
6736      _tmp = match_string(">")
6737      unless _tmp
6738        self.pos = _save
6739      end
6740      break
6741    end # end sequence
6742
6743    set_failed_rule :_HtmlBlockCloseDd unless _tmp
6744    return _tmp
6745  end
6746
6747  # HtmlBlockDd = HtmlBlockOpenDd (HtmlBlockDd | !HtmlBlockCloseDd .)* HtmlBlockCloseDd
6748  def _HtmlBlockDd
6749
6750    _save = self.pos
6751    while true # sequence
6752      _tmp = apply(:_HtmlBlockOpenDd)
6753      unless _tmp
6754        self.pos = _save
6755        break
6756      end
6757      while true
6758
6759        _save2 = self.pos
6760        while true # choice
6761          _tmp = apply(:_HtmlBlockDd)
6762          break if _tmp
6763          self.pos = _save2
6764
6765          _save3 = self.pos
6766          while true # sequence
6767            _save4 = self.pos
6768            _tmp = apply(:_HtmlBlockCloseDd)
6769            _tmp = _tmp ? nil : true
6770            self.pos = _save4
6771            unless _tmp
6772              self.pos = _save3
6773              break
6774            end
6775            _tmp = get_byte
6776            unless _tmp
6777              self.pos = _save3
6778            end
6779            break
6780          end # end sequence
6781
6782          break if _tmp
6783          self.pos = _save2
6784          break
6785        end # end choice
6786
6787        break unless _tmp
6788      end
6789      _tmp = true
6790      unless _tmp
6791        self.pos = _save
6792        break
6793      end
6794      _tmp = apply(:_HtmlBlockCloseDd)
6795      unless _tmp
6796        self.pos = _save
6797      end
6798      break
6799    end # end sequence
6800
6801    set_failed_rule :_HtmlBlockDd unless _tmp
6802    return _tmp
6803  end
6804
6805  # HtmlBlockOpenDt = "<" Spnl ("dt" | "DT") Spnl HtmlAttribute* ">"
6806  def _HtmlBlockOpenDt
6807
6808    _save = self.pos
6809    while true # sequence
6810      _tmp = match_string("<")
6811      unless _tmp
6812        self.pos = _save
6813        break
6814      end
6815      _tmp = apply(:_Spnl)
6816      unless _tmp
6817        self.pos = _save
6818        break
6819      end
6820
6821      _save1 = self.pos
6822      while true # choice
6823        _tmp = match_string("dt")
6824        break if _tmp
6825        self.pos = _save1
6826        _tmp = match_string("DT")
6827        break if _tmp
6828        self.pos = _save1
6829        break
6830      end # end choice
6831
6832      unless _tmp
6833        self.pos = _save
6834        break
6835      end
6836      _tmp = apply(:_Spnl)
6837      unless _tmp
6838        self.pos = _save
6839        break
6840      end
6841      while true
6842        _tmp = apply(:_HtmlAttribute)
6843        break unless _tmp
6844      end
6845      _tmp = true
6846      unless _tmp
6847        self.pos = _save
6848        break
6849      end
6850      _tmp = match_string(">")
6851      unless _tmp
6852        self.pos = _save
6853      end
6854      break
6855    end # end sequence
6856
6857    set_failed_rule :_HtmlBlockOpenDt unless _tmp
6858    return _tmp
6859  end
6860
6861  # HtmlBlockCloseDt = "<" Spnl "/" ("dt" | "DT") Spnl ">"
6862  def _HtmlBlockCloseDt
6863
6864    _save = self.pos
6865    while true # sequence
6866      _tmp = match_string("<")
6867      unless _tmp
6868        self.pos = _save
6869        break
6870      end
6871      _tmp = apply(:_Spnl)
6872      unless _tmp
6873        self.pos = _save
6874        break
6875      end
6876      _tmp = match_string("/")
6877      unless _tmp
6878        self.pos = _save
6879        break
6880      end
6881
6882      _save1 = self.pos
6883      while true # choice
6884        _tmp = match_string("dt")
6885        break if _tmp
6886        self.pos = _save1
6887        _tmp = match_string("DT")
6888        break if _tmp
6889        self.pos = _save1
6890        break
6891      end # end choice
6892
6893      unless _tmp
6894        self.pos = _save
6895        break
6896      end
6897      _tmp = apply(:_Spnl)
6898      unless _tmp
6899        self.pos = _save
6900        break
6901      end
6902      _tmp = match_string(">")
6903      unless _tmp
6904        self.pos = _save
6905      end
6906      break
6907    end # end sequence
6908
6909    set_failed_rule :_HtmlBlockCloseDt unless _tmp
6910    return _tmp
6911  end
6912
6913  # HtmlBlockDt = HtmlBlockOpenDt (HtmlBlockDt | !HtmlBlockCloseDt .)* HtmlBlockCloseDt
6914  def _HtmlBlockDt
6915
6916    _save = self.pos
6917    while true # sequence
6918      _tmp = apply(:_HtmlBlockOpenDt)
6919      unless _tmp
6920        self.pos = _save
6921        break
6922      end
6923      while true
6924
6925        _save2 = self.pos
6926        while true # choice
6927          _tmp = apply(:_HtmlBlockDt)
6928          break if _tmp
6929          self.pos = _save2
6930
6931          _save3 = self.pos
6932          while true # sequence
6933            _save4 = self.pos
6934            _tmp = apply(:_HtmlBlockCloseDt)
6935            _tmp = _tmp ? nil : true
6936            self.pos = _save4
6937            unless _tmp
6938              self.pos = _save3
6939              break
6940            end
6941            _tmp = get_byte
6942            unless _tmp
6943              self.pos = _save3
6944            end
6945            break
6946          end # end sequence
6947
6948          break if _tmp
6949          self.pos = _save2
6950          break
6951        end # end choice
6952
6953        break unless _tmp
6954      end
6955      _tmp = true
6956      unless _tmp
6957        self.pos = _save
6958        break
6959      end
6960      _tmp = apply(:_HtmlBlockCloseDt)
6961      unless _tmp
6962        self.pos = _save
6963      end
6964      break
6965    end # end sequence
6966
6967    set_failed_rule :_HtmlBlockDt unless _tmp
6968    return _tmp
6969  end
6970
6971  # HtmlBlockOpenFrameset = "<" Spnl ("frameset" | "FRAMESET") Spnl HtmlAttribute* ">"
6972  def _HtmlBlockOpenFrameset
6973
6974    _save = self.pos
6975    while true # sequence
6976      _tmp = match_string("<")
6977      unless _tmp
6978        self.pos = _save
6979        break
6980      end
6981      _tmp = apply(:_Spnl)
6982      unless _tmp
6983        self.pos = _save
6984        break
6985      end
6986
6987      _save1 = self.pos
6988      while true # choice
6989        _tmp = match_string("frameset")
6990        break if _tmp
6991        self.pos = _save1
6992        _tmp = match_string("FRAMESET")
6993        break if _tmp
6994        self.pos = _save1
6995        break
6996      end # end choice
6997
6998      unless _tmp
6999        self.pos = _save
7000        break
7001      end
7002      _tmp = apply(:_Spnl)
7003      unless _tmp
7004        self.pos = _save
7005        break
7006      end
7007      while true
7008        _tmp = apply(:_HtmlAttribute)
7009        break unless _tmp
7010      end
7011      _tmp = true
7012      unless _tmp
7013        self.pos = _save
7014        break
7015      end
7016      _tmp = match_string(">")
7017      unless _tmp
7018        self.pos = _save
7019      end
7020      break
7021    end # end sequence
7022
7023    set_failed_rule :_HtmlBlockOpenFrameset unless _tmp
7024    return _tmp
7025  end
7026
7027  # HtmlBlockCloseFrameset = "<" Spnl "/" ("frameset" | "FRAMESET") Spnl ">"
7028  def _HtmlBlockCloseFrameset
7029
7030    _save = self.pos
7031    while true # sequence
7032      _tmp = match_string("<")
7033      unless _tmp
7034        self.pos = _save
7035        break
7036      end
7037      _tmp = apply(:_Spnl)
7038      unless _tmp
7039        self.pos = _save
7040        break
7041      end
7042      _tmp = match_string("/")
7043      unless _tmp
7044        self.pos = _save
7045        break
7046      end
7047
7048      _save1 = self.pos
7049      while true # choice
7050        _tmp = match_string("frameset")
7051        break if _tmp
7052        self.pos = _save1
7053        _tmp = match_string("FRAMESET")
7054        break if _tmp
7055        self.pos = _save1
7056        break
7057      end # end choice
7058
7059      unless _tmp
7060        self.pos = _save
7061        break
7062      end
7063      _tmp = apply(:_Spnl)
7064      unless _tmp
7065        self.pos = _save
7066        break
7067      end
7068      _tmp = match_string(">")
7069      unless _tmp
7070        self.pos = _save
7071      end
7072      break
7073    end # end sequence
7074
7075    set_failed_rule :_HtmlBlockCloseFrameset unless _tmp
7076    return _tmp
7077  end
7078
7079  # HtmlBlockFrameset = HtmlBlockOpenFrameset (HtmlBlockFrameset | !HtmlBlockCloseFrameset .)* HtmlBlockCloseFrameset
7080  def _HtmlBlockFrameset
7081
7082    _save = self.pos
7083    while true # sequence
7084      _tmp = apply(:_HtmlBlockOpenFrameset)
7085      unless _tmp
7086        self.pos = _save
7087        break
7088      end
7089      while true
7090
7091        _save2 = self.pos
7092        while true # choice
7093          _tmp = apply(:_HtmlBlockFrameset)
7094          break if _tmp
7095          self.pos = _save2
7096
7097          _save3 = self.pos
7098          while true # sequence
7099            _save4 = self.pos
7100            _tmp = apply(:_HtmlBlockCloseFrameset)
7101            _tmp = _tmp ? nil : true
7102            self.pos = _save4
7103            unless _tmp
7104              self.pos = _save3
7105              break
7106            end
7107            _tmp = get_byte
7108            unless _tmp
7109              self.pos = _save3
7110            end
7111            break
7112          end # end sequence
7113
7114          break if _tmp
7115          self.pos = _save2
7116          break
7117        end # end choice
7118
7119        break unless _tmp
7120      end
7121      _tmp = true
7122      unless _tmp
7123        self.pos = _save
7124        break
7125      end
7126      _tmp = apply(:_HtmlBlockCloseFrameset)
7127      unless _tmp
7128        self.pos = _save
7129      end
7130      break
7131    end # end sequence
7132
7133    set_failed_rule :_HtmlBlockFrameset unless _tmp
7134    return _tmp
7135  end
7136
7137  # HtmlBlockOpenLi = "<" Spnl ("li" | "LI") Spnl HtmlAttribute* ">"
7138  def _HtmlBlockOpenLi
7139
7140    _save = self.pos
7141    while true # sequence
7142      _tmp = match_string("<")
7143      unless _tmp
7144        self.pos = _save
7145        break
7146      end
7147      _tmp = apply(:_Spnl)
7148      unless _tmp
7149        self.pos = _save
7150        break
7151      end
7152
7153      _save1 = self.pos
7154      while true # choice
7155        _tmp = match_string("li")
7156        break if _tmp
7157        self.pos = _save1
7158        _tmp = match_string("LI")
7159        break if _tmp
7160        self.pos = _save1
7161        break
7162      end # end choice
7163
7164      unless _tmp
7165        self.pos = _save
7166        break
7167      end
7168      _tmp = apply(:_Spnl)
7169      unless _tmp
7170        self.pos = _save
7171        break
7172      end
7173      while true
7174        _tmp = apply(:_HtmlAttribute)
7175        break unless _tmp
7176      end
7177      _tmp = true
7178      unless _tmp
7179        self.pos = _save
7180        break
7181      end
7182      _tmp = match_string(">")
7183      unless _tmp
7184        self.pos = _save
7185      end
7186      break
7187    end # end sequence
7188
7189    set_failed_rule :_HtmlBlockOpenLi unless _tmp
7190    return _tmp
7191  end
7192
7193  # HtmlBlockCloseLi = "<" Spnl "/" ("li" | "LI") Spnl ">"
7194  def _HtmlBlockCloseLi
7195
7196    _save = self.pos
7197    while true # sequence
7198      _tmp = match_string("<")
7199      unless _tmp
7200        self.pos = _save
7201        break
7202      end
7203      _tmp = apply(:_Spnl)
7204      unless _tmp
7205        self.pos = _save
7206        break
7207      end
7208      _tmp = match_string("/")
7209      unless _tmp
7210        self.pos = _save
7211        break
7212      end
7213
7214      _save1 = self.pos
7215      while true # choice
7216        _tmp = match_string("li")
7217        break if _tmp
7218        self.pos = _save1
7219        _tmp = match_string("LI")
7220        break if _tmp
7221        self.pos = _save1
7222        break
7223      end # end choice
7224
7225      unless _tmp
7226        self.pos = _save
7227        break
7228      end
7229      _tmp = apply(:_Spnl)
7230      unless _tmp
7231        self.pos = _save
7232        break
7233      end
7234      _tmp = match_string(">")
7235      unless _tmp
7236        self.pos = _save
7237      end
7238      break
7239    end # end sequence
7240
7241    set_failed_rule :_HtmlBlockCloseLi unless _tmp
7242    return _tmp
7243  end
7244
7245  # HtmlBlockLi = HtmlBlockOpenLi (HtmlBlockLi | !HtmlBlockCloseLi .)* HtmlBlockCloseLi
7246  def _HtmlBlockLi
7247
7248    _save = self.pos
7249    while true # sequence
7250      _tmp = apply(:_HtmlBlockOpenLi)
7251      unless _tmp
7252        self.pos = _save
7253        break
7254      end
7255      while true
7256
7257        _save2 = self.pos
7258        while true # choice
7259          _tmp = apply(:_HtmlBlockLi)
7260          break if _tmp
7261          self.pos = _save2
7262
7263          _save3 = self.pos
7264          while true # sequence
7265            _save4 = self.pos
7266            _tmp = apply(:_HtmlBlockCloseLi)
7267            _tmp = _tmp ? nil : true
7268            self.pos = _save4
7269            unless _tmp
7270              self.pos = _save3
7271              break
7272            end
7273            _tmp = get_byte
7274            unless _tmp
7275              self.pos = _save3
7276            end
7277            break
7278          end # end sequence
7279
7280          break if _tmp
7281          self.pos = _save2
7282          break
7283        end # end choice
7284
7285        break unless _tmp
7286      end
7287      _tmp = true
7288      unless _tmp
7289        self.pos = _save
7290        break
7291      end
7292      _tmp = apply(:_HtmlBlockCloseLi)
7293      unless _tmp
7294        self.pos = _save
7295      end
7296      break
7297    end # end sequence
7298
7299    set_failed_rule :_HtmlBlockLi unless _tmp
7300    return _tmp
7301  end
7302
7303  # HtmlBlockOpenTbody = "<" Spnl ("tbody" | "TBODY") Spnl HtmlAttribute* ">"
7304  def _HtmlBlockOpenTbody
7305
7306    _save = self.pos
7307    while true # sequence
7308      _tmp = match_string("<")
7309      unless _tmp
7310        self.pos = _save
7311        break
7312      end
7313      _tmp = apply(:_Spnl)
7314      unless _tmp
7315        self.pos = _save
7316        break
7317      end
7318
7319      _save1 = self.pos
7320      while true # choice
7321        _tmp = match_string("tbody")
7322        break if _tmp
7323        self.pos = _save1
7324        _tmp = match_string("TBODY")
7325        break if _tmp
7326        self.pos = _save1
7327        break
7328      end # end choice
7329
7330      unless _tmp
7331        self.pos = _save
7332        break
7333      end
7334      _tmp = apply(:_Spnl)
7335      unless _tmp
7336        self.pos = _save
7337        break
7338      end
7339      while true
7340        _tmp = apply(:_HtmlAttribute)
7341        break unless _tmp
7342      end
7343      _tmp = true
7344      unless _tmp
7345        self.pos = _save
7346        break
7347      end
7348      _tmp = match_string(">")
7349      unless _tmp
7350        self.pos = _save
7351      end
7352      break
7353    end # end sequence
7354
7355    set_failed_rule :_HtmlBlockOpenTbody unless _tmp
7356    return _tmp
7357  end
7358
7359  # HtmlBlockCloseTbody = "<" Spnl "/" ("tbody" | "TBODY") Spnl ">"
7360  def _HtmlBlockCloseTbody
7361
7362    _save = self.pos
7363    while true # sequence
7364      _tmp = match_string("<")
7365      unless _tmp
7366        self.pos = _save
7367        break
7368      end
7369      _tmp = apply(:_Spnl)
7370      unless _tmp
7371        self.pos = _save
7372        break
7373      end
7374      _tmp = match_string("/")
7375      unless _tmp
7376        self.pos = _save
7377        break
7378      end
7379
7380      _save1 = self.pos
7381      while true # choice
7382        _tmp = match_string("tbody")
7383        break if _tmp
7384        self.pos = _save1
7385        _tmp = match_string("TBODY")
7386        break if _tmp
7387        self.pos = _save1
7388        break
7389      end # end choice
7390
7391      unless _tmp
7392        self.pos = _save
7393        break
7394      end
7395      _tmp = apply(:_Spnl)
7396      unless _tmp
7397        self.pos = _save
7398        break
7399      end
7400      _tmp = match_string(">")
7401      unless _tmp
7402        self.pos = _save
7403      end
7404      break
7405    end # end sequence
7406
7407    set_failed_rule :_HtmlBlockCloseTbody unless _tmp
7408    return _tmp
7409  end
7410
7411  # HtmlBlockTbody = HtmlBlockOpenTbody (HtmlBlockTbody | !HtmlBlockCloseTbody .)* HtmlBlockCloseTbody
7412  def _HtmlBlockTbody
7413
7414    _save = self.pos
7415    while true # sequence
7416      _tmp = apply(:_HtmlBlockOpenTbody)
7417      unless _tmp
7418        self.pos = _save
7419        break
7420      end
7421      while true
7422
7423        _save2 = self.pos
7424        while true # choice
7425          _tmp = apply(:_HtmlBlockTbody)
7426          break if _tmp
7427          self.pos = _save2
7428
7429          _save3 = self.pos
7430          while true # sequence
7431            _save4 = self.pos
7432            _tmp = apply(:_HtmlBlockCloseTbody)
7433            _tmp = _tmp ? nil : true
7434            self.pos = _save4
7435            unless _tmp
7436              self.pos = _save3
7437              break
7438            end
7439            _tmp = get_byte
7440            unless _tmp
7441              self.pos = _save3
7442            end
7443            break
7444          end # end sequence
7445
7446          break if _tmp
7447          self.pos = _save2
7448          break
7449        end # end choice
7450
7451        break unless _tmp
7452      end
7453      _tmp = true
7454      unless _tmp
7455        self.pos = _save
7456        break
7457      end
7458      _tmp = apply(:_HtmlBlockCloseTbody)
7459      unless _tmp
7460        self.pos = _save
7461      end
7462      break
7463    end # end sequence
7464
7465    set_failed_rule :_HtmlBlockTbody unless _tmp
7466    return _tmp
7467  end
7468
7469  # HtmlBlockOpenTd = "<" Spnl ("td" | "TD") Spnl HtmlAttribute* ">"
7470  def _HtmlBlockOpenTd
7471
7472    _save = self.pos
7473    while true # sequence
7474      _tmp = match_string("<")
7475      unless _tmp
7476        self.pos = _save
7477        break
7478      end
7479      _tmp = apply(:_Spnl)
7480      unless _tmp
7481        self.pos = _save
7482        break
7483      end
7484
7485      _save1 = self.pos
7486      while true # choice
7487        _tmp = match_string("td")
7488        break if _tmp
7489        self.pos = _save1
7490        _tmp = match_string("TD")
7491        break if _tmp
7492        self.pos = _save1
7493        break
7494      end # end choice
7495
7496      unless _tmp
7497        self.pos = _save
7498        break
7499      end
7500      _tmp = apply(:_Spnl)
7501      unless _tmp
7502        self.pos = _save
7503        break
7504      end
7505      while true
7506        _tmp = apply(:_HtmlAttribute)
7507        break unless _tmp
7508      end
7509      _tmp = true
7510      unless _tmp
7511        self.pos = _save
7512        break
7513      end
7514      _tmp = match_string(">")
7515      unless _tmp
7516        self.pos = _save
7517      end
7518      break
7519    end # end sequence
7520
7521    set_failed_rule :_HtmlBlockOpenTd unless _tmp
7522    return _tmp
7523  end
7524
7525  # HtmlBlockCloseTd = "<" Spnl "/" ("td" | "TD") Spnl ">"
7526  def _HtmlBlockCloseTd
7527
7528    _save = self.pos
7529    while true # sequence
7530      _tmp = match_string("<")
7531      unless _tmp
7532        self.pos = _save
7533        break
7534      end
7535      _tmp = apply(:_Spnl)
7536      unless _tmp
7537        self.pos = _save
7538        break
7539      end
7540      _tmp = match_string("/")
7541      unless _tmp
7542        self.pos = _save
7543        break
7544      end
7545
7546      _save1 = self.pos
7547      while true # choice
7548        _tmp = match_string("td")
7549        break if _tmp
7550        self.pos = _save1
7551        _tmp = match_string("TD")
7552        break if _tmp
7553        self.pos = _save1
7554        break
7555      end # end choice
7556
7557      unless _tmp
7558        self.pos = _save
7559        break
7560      end
7561      _tmp = apply(:_Spnl)
7562      unless _tmp
7563        self.pos = _save
7564        break
7565      end
7566      _tmp = match_string(">")
7567      unless _tmp
7568        self.pos = _save
7569      end
7570      break
7571    end # end sequence
7572
7573    set_failed_rule :_HtmlBlockCloseTd unless _tmp
7574    return _tmp
7575  end
7576
7577  # HtmlBlockTd = HtmlBlockOpenTd (HtmlBlockTd | !HtmlBlockCloseTd .)* HtmlBlockCloseTd
7578  def _HtmlBlockTd
7579
7580    _save = self.pos
7581    while true # sequence
7582      _tmp = apply(:_HtmlBlockOpenTd)
7583      unless _tmp
7584        self.pos = _save
7585        break
7586      end
7587      while true
7588
7589        _save2 = self.pos
7590        while true # choice
7591          _tmp = apply(:_HtmlBlockTd)
7592          break if _tmp
7593          self.pos = _save2
7594
7595          _save3 = self.pos
7596          while true # sequence
7597            _save4 = self.pos
7598            _tmp = apply(:_HtmlBlockCloseTd)
7599            _tmp = _tmp ? nil : true
7600            self.pos = _save4
7601            unless _tmp
7602              self.pos = _save3
7603              break
7604            end
7605            _tmp = get_byte
7606            unless _tmp
7607              self.pos = _save3
7608            end
7609            break
7610          end # end sequence
7611
7612          break if _tmp
7613          self.pos = _save2
7614          break
7615        end # end choice
7616
7617        break unless _tmp
7618      end
7619      _tmp = true
7620      unless _tmp
7621        self.pos = _save
7622        break
7623      end
7624      _tmp = apply(:_HtmlBlockCloseTd)
7625      unless _tmp
7626        self.pos = _save
7627      end
7628      break
7629    end # end sequence
7630
7631    set_failed_rule :_HtmlBlockTd unless _tmp
7632    return _tmp
7633  end
7634
7635  # HtmlBlockOpenTfoot = "<" Spnl ("tfoot" | "TFOOT") Spnl HtmlAttribute* ">"
7636  def _HtmlBlockOpenTfoot
7637
7638    _save = self.pos
7639    while true # sequence
7640      _tmp = match_string("<")
7641      unless _tmp
7642        self.pos = _save
7643        break
7644      end
7645      _tmp = apply(:_Spnl)
7646      unless _tmp
7647        self.pos = _save
7648        break
7649      end
7650
7651      _save1 = self.pos
7652      while true # choice
7653        _tmp = match_string("tfoot")
7654        break if _tmp
7655        self.pos = _save1
7656        _tmp = match_string("TFOOT")
7657        break if _tmp
7658        self.pos = _save1
7659        break
7660      end # end choice
7661
7662      unless _tmp
7663        self.pos = _save
7664        break
7665      end
7666      _tmp = apply(:_Spnl)
7667      unless _tmp
7668        self.pos = _save
7669        break
7670      end
7671      while true
7672        _tmp = apply(:_HtmlAttribute)
7673        break unless _tmp
7674      end
7675      _tmp = true
7676      unless _tmp
7677        self.pos = _save
7678        break
7679      end
7680      _tmp = match_string(">")
7681      unless _tmp
7682        self.pos = _save
7683      end
7684      break
7685    end # end sequence
7686
7687    set_failed_rule :_HtmlBlockOpenTfoot unless _tmp
7688    return _tmp
7689  end
7690
7691  # HtmlBlockCloseTfoot = "<" Spnl "/" ("tfoot" | "TFOOT") Spnl ">"
7692  def _HtmlBlockCloseTfoot
7693
7694    _save = self.pos
7695    while true # sequence
7696      _tmp = match_string("<")
7697      unless _tmp
7698        self.pos = _save
7699        break
7700      end
7701      _tmp = apply(:_Spnl)
7702      unless _tmp
7703        self.pos = _save
7704        break
7705      end
7706      _tmp = match_string("/")
7707      unless _tmp
7708        self.pos = _save
7709        break
7710      end
7711
7712      _save1 = self.pos
7713      while true # choice
7714        _tmp = match_string("tfoot")
7715        break if _tmp
7716        self.pos = _save1
7717        _tmp = match_string("TFOOT")
7718        break if _tmp
7719        self.pos = _save1
7720        break
7721      end # end choice
7722
7723      unless _tmp
7724        self.pos = _save
7725        break
7726      end
7727      _tmp = apply(:_Spnl)
7728      unless _tmp
7729        self.pos = _save
7730        break
7731      end
7732      _tmp = match_string(">")
7733      unless _tmp
7734        self.pos = _save
7735      end
7736      break
7737    end # end sequence
7738
7739    set_failed_rule :_HtmlBlockCloseTfoot unless _tmp
7740    return _tmp
7741  end
7742
7743  # HtmlBlockTfoot = HtmlBlockOpenTfoot (HtmlBlockTfoot | !HtmlBlockCloseTfoot .)* HtmlBlockCloseTfoot
7744  def _HtmlBlockTfoot
7745
7746    _save = self.pos
7747    while true # sequence
7748      _tmp = apply(:_HtmlBlockOpenTfoot)
7749      unless _tmp
7750        self.pos = _save
7751        break
7752      end
7753      while true
7754
7755        _save2 = self.pos
7756        while true # choice
7757          _tmp = apply(:_HtmlBlockTfoot)
7758          break if _tmp
7759          self.pos = _save2
7760
7761          _save3 = self.pos
7762          while true # sequence
7763            _save4 = self.pos
7764            _tmp = apply(:_HtmlBlockCloseTfoot)
7765            _tmp = _tmp ? nil : true
7766            self.pos = _save4
7767            unless _tmp
7768              self.pos = _save3
7769              break
7770            end
7771            _tmp = get_byte
7772            unless _tmp
7773              self.pos = _save3
7774            end
7775            break
7776          end # end sequence
7777
7778          break if _tmp
7779          self.pos = _save2
7780          break
7781        end # end choice
7782
7783        break unless _tmp
7784      end
7785      _tmp = true
7786      unless _tmp
7787        self.pos = _save
7788        break
7789      end
7790      _tmp = apply(:_HtmlBlockCloseTfoot)
7791      unless _tmp
7792        self.pos = _save
7793      end
7794      break
7795    end # end sequence
7796
7797    set_failed_rule :_HtmlBlockTfoot unless _tmp
7798    return _tmp
7799  end
7800
7801  # HtmlBlockOpenTh = "<" Spnl ("th" | "TH") Spnl HtmlAttribute* ">"
7802  def _HtmlBlockOpenTh
7803
7804    _save = self.pos
7805    while true # sequence
7806      _tmp = match_string("<")
7807      unless _tmp
7808        self.pos = _save
7809        break
7810      end
7811      _tmp = apply(:_Spnl)
7812      unless _tmp
7813        self.pos = _save
7814        break
7815      end
7816
7817      _save1 = self.pos
7818      while true # choice
7819        _tmp = match_string("th")
7820        break if _tmp
7821        self.pos = _save1
7822        _tmp = match_string("TH")
7823        break if _tmp
7824        self.pos = _save1
7825        break
7826      end # end choice
7827
7828      unless _tmp
7829        self.pos = _save
7830        break
7831      end
7832      _tmp = apply(:_Spnl)
7833      unless _tmp
7834        self.pos = _save
7835        break
7836      end
7837      while true
7838        _tmp = apply(:_HtmlAttribute)
7839        break unless _tmp
7840      end
7841      _tmp = true
7842      unless _tmp
7843        self.pos = _save
7844        break
7845      end
7846      _tmp = match_string(">")
7847      unless _tmp
7848        self.pos = _save
7849      end
7850      break
7851    end # end sequence
7852
7853    set_failed_rule :_HtmlBlockOpenTh unless _tmp
7854    return _tmp
7855  end
7856
7857  # HtmlBlockCloseTh = "<" Spnl "/" ("th" | "TH") Spnl ">"
7858  def _HtmlBlockCloseTh
7859
7860    _save = self.pos
7861    while true # sequence
7862      _tmp = match_string("<")
7863      unless _tmp
7864        self.pos = _save
7865        break
7866      end
7867      _tmp = apply(:_Spnl)
7868      unless _tmp
7869        self.pos = _save
7870        break
7871      end
7872      _tmp = match_string("/")
7873      unless _tmp
7874        self.pos = _save
7875        break
7876      end
7877
7878      _save1 = self.pos
7879      while true # choice
7880        _tmp = match_string("th")
7881        break if _tmp
7882        self.pos = _save1
7883        _tmp = match_string("TH")
7884        break if _tmp
7885        self.pos = _save1
7886        break
7887      end # end choice
7888
7889      unless _tmp
7890        self.pos = _save
7891        break
7892      end
7893      _tmp = apply(:_Spnl)
7894      unless _tmp
7895        self.pos = _save
7896        break
7897      end
7898      _tmp = match_string(">")
7899      unless _tmp
7900        self.pos = _save
7901      end
7902      break
7903    end # end sequence
7904
7905    set_failed_rule :_HtmlBlockCloseTh unless _tmp
7906    return _tmp
7907  end
7908
7909  # HtmlBlockTh = HtmlBlockOpenTh (HtmlBlockTh | !HtmlBlockCloseTh .)* HtmlBlockCloseTh
7910  def _HtmlBlockTh
7911
7912    _save = self.pos
7913    while true # sequence
7914      _tmp = apply(:_HtmlBlockOpenTh)
7915      unless _tmp
7916        self.pos = _save
7917        break
7918      end
7919      while true
7920
7921        _save2 = self.pos
7922        while true # choice
7923          _tmp = apply(:_HtmlBlockTh)
7924          break if _tmp
7925          self.pos = _save2
7926
7927          _save3 = self.pos
7928          while true # sequence
7929            _save4 = self.pos
7930            _tmp = apply(:_HtmlBlockCloseTh)
7931            _tmp = _tmp ? nil : true
7932            self.pos = _save4
7933            unless _tmp
7934              self.pos = _save3
7935              break
7936            end
7937            _tmp = get_byte
7938            unless _tmp
7939              self.pos = _save3
7940            end
7941            break
7942          end # end sequence
7943
7944          break if _tmp
7945          self.pos = _save2
7946          break
7947        end # end choice
7948
7949        break unless _tmp
7950      end
7951      _tmp = true
7952      unless _tmp
7953        self.pos = _save
7954        break
7955      end
7956      _tmp = apply(:_HtmlBlockCloseTh)
7957      unless _tmp
7958        self.pos = _save
7959      end
7960      break
7961    end # end sequence
7962
7963    set_failed_rule :_HtmlBlockTh unless _tmp
7964    return _tmp
7965  end
7966
7967  # HtmlBlockOpenThead = "<" Spnl ("thead" | "THEAD") Spnl HtmlAttribute* ">"
7968  def _HtmlBlockOpenThead
7969
7970    _save = self.pos
7971    while true # sequence
7972      _tmp = match_string("<")
7973      unless _tmp
7974        self.pos = _save
7975        break
7976      end
7977      _tmp = apply(:_Spnl)
7978      unless _tmp
7979        self.pos = _save
7980        break
7981      end
7982
7983      _save1 = self.pos
7984      while true # choice
7985        _tmp = match_string("thead")
7986        break if _tmp
7987        self.pos = _save1
7988        _tmp = match_string("THEAD")
7989        break if _tmp
7990        self.pos = _save1
7991        break
7992      end # end choice
7993
7994      unless _tmp
7995        self.pos = _save
7996        break
7997      end
7998      _tmp = apply(:_Spnl)
7999      unless _tmp
8000        self.pos = _save
8001        break
8002      end
8003      while true
8004        _tmp = apply(:_HtmlAttribute)
8005        break unless _tmp
8006      end
8007      _tmp = true
8008      unless _tmp
8009        self.pos = _save
8010        break
8011      end
8012      _tmp = match_string(">")
8013      unless _tmp
8014        self.pos = _save
8015      end
8016      break
8017    end # end sequence
8018
8019    set_failed_rule :_HtmlBlockOpenThead unless _tmp
8020    return _tmp
8021  end
8022
8023  # HtmlBlockCloseThead = "<" Spnl "/" ("thead" | "THEAD") Spnl ">"
8024  def _HtmlBlockCloseThead
8025
8026    _save = self.pos
8027    while true # sequence
8028      _tmp = match_string("<")
8029      unless _tmp
8030        self.pos = _save
8031        break
8032      end
8033      _tmp = apply(:_Spnl)
8034      unless _tmp
8035        self.pos = _save
8036        break
8037      end
8038      _tmp = match_string("/")
8039      unless _tmp
8040        self.pos = _save
8041        break
8042      end
8043
8044      _save1 = self.pos
8045      while true # choice
8046        _tmp = match_string("thead")
8047        break if _tmp
8048        self.pos = _save1
8049        _tmp = match_string("THEAD")
8050        break if _tmp
8051        self.pos = _save1
8052        break
8053      end # end choice
8054
8055      unless _tmp
8056        self.pos = _save
8057        break
8058      end
8059      _tmp = apply(:_Spnl)
8060      unless _tmp
8061        self.pos = _save
8062        break
8063      end
8064      _tmp = match_string(">")
8065      unless _tmp
8066        self.pos = _save
8067      end
8068      break
8069    end # end sequence
8070
8071    set_failed_rule :_HtmlBlockCloseThead unless _tmp
8072    return _tmp
8073  end
8074
8075  # HtmlBlockThead = HtmlBlockOpenThead (HtmlBlockThead | !HtmlBlockCloseThead .)* HtmlBlockCloseThead
8076  def _HtmlBlockThead
8077
8078    _save = self.pos
8079    while true # sequence
8080      _tmp = apply(:_HtmlBlockOpenThead)
8081      unless _tmp
8082        self.pos = _save
8083        break
8084      end
8085      while true
8086
8087        _save2 = self.pos
8088        while true # choice
8089          _tmp = apply(:_HtmlBlockThead)
8090          break if _tmp
8091          self.pos = _save2
8092
8093          _save3 = self.pos
8094          while true # sequence
8095            _save4 = self.pos
8096            _tmp = apply(:_HtmlBlockCloseThead)
8097            _tmp = _tmp ? nil : true
8098            self.pos = _save4
8099            unless _tmp
8100              self.pos = _save3
8101              break
8102            end
8103            _tmp = get_byte
8104            unless _tmp
8105              self.pos = _save3
8106            end
8107            break
8108          end # end sequence
8109
8110          break if _tmp
8111          self.pos = _save2
8112          break
8113        end # end choice
8114
8115        break unless _tmp
8116      end
8117      _tmp = true
8118      unless _tmp
8119        self.pos = _save
8120        break
8121      end
8122      _tmp = apply(:_HtmlBlockCloseThead)
8123      unless _tmp
8124        self.pos = _save
8125      end
8126      break
8127    end # end sequence
8128
8129    set_failed_rule :_HtmlBlockThead unless _tmp
8130    return _tmp
8131  end
8132
8133  # HtmlBlockOpenTr = "<" Spnl ("tr" | "TR") Spnl HtmlAttribute* ">"
8134  def _HtmlBlockOpenTr
8135
8136    _save = self.pos
8137    while true # sequence
8138      _tmp = match_string("<")
8139      unless _tmp
8140        self.pos = _save
8141        break
8142      end
8143      _tmp = apply(:_Spnl)
8144      unless _tmp
8145        self.pos = _save
8146        break
8147      end
8148
8149      _save1 = self.pos
8150      while true # choice
8151        _tmp = match_string("tr")
8152        break if _tmp
8153        self.pos = _save1
8154        _tmp = match_string("TR")
8155        break if _tmp
8156        self.pos = _save1
8157        break
8158      end # end choice
8159
8160      unless _tmp
8161        self.pos = _save
8162        break
8163      end
8164      _tmp = apply(:_Spnl)
8165      unless _tmp
8166        self.pos = _save
8167        break
8168      end
8169      while true
8170        _tmp = apply(:_HtmlAttribute)
8171        break unless _tmp
8172      end
8173      _tmp = true
8174      unless _tmp
8175        self.pos = _save
8176        break
8177      end
8178      _tmp = match_string(">")
8179      unless _tmp
8180        self.pos = _save
8181      end
8182      break
8183    end # end sequence
8184
8185    set_failed_rule :_HtmlBlockOpenTr unless _tmp
8186    return _tmp
8187  end
8188
8189  # HtmlBlockCloseTr = "<" Spnl "/" ("tr" | "TR") Spnl ">"
8190  def _HtmlBlockCloseTr
8191
8192    _save = self.pos
8193    while true # sequence
8194      _tmp = match_string("<")
8195      unless _tmp
8196        self.pos = _save
8197        break
8198      end
8199      _tmp = apply(:_Spnl)
8200      unless _tmp
8201        self.pos = _save
8202        break
8203      end
8204      _tmp = match_string("/")
8205      unless _tmp
8206        self.pos = _save
8207        break
8208      end
8209
8210      _save1 = self.pos
8211      while true # choice
8212        _tmp = match_string("tr")
8213        break if _tmp
8214        self.pos = _save1
8215        _tmp = match_string("TR")
8216        break if _tmp
8217        self.pos = _save1
8218        break
8219      end # end choice
8220
8221      unless _tmp
8222        self.pos = _save
8223        break
8224      end
8225      _tmp = apply(:_Spnl)
8226      unless _tmp
8227        self.pos = _save
8228        break
8229      end
8230      _tmp = match_string(">")
8231      unless _tmp
8232        self.pos = _save
8233      end
8234      break
8235    end # end sequence
8236
8237    set_failed_rule :_HtmlBlockCloseTr unless _tmp
8238    return _tmp
8239  end
8240
8241  # HtmlBlockTr = HtmlBlockOpenTr (HtmlBlockTr | !HtmlBlockCloseTr .)* HtmlBlockCloseTr
8242  def _HtmlBlockTr
8243
8244    _save = self.pos
8245    while true # sequence
8246      _tmp = apply(:_HtmlBlockOpenTr)
8247      unless _tmp
8248        self.pos = _save
8249        break
8250      end
8251      while true
8252
8253        _save2 = self.pos
8254        while true # choice
8255          _tmp = apply(:_HtmlBlockTr)
8256          break if _tmp
8257          self.pos = _save2
8258
8259          _save3 = self.pos
8260          while true # sequence
8261            _save4 = self.pos
8262            _tmp = apply(:_HtmlBlockCloseTr)
8263            _tmp = _tmp ? nil : true
8264            self.pos = _save4
8265            unless _tmp
8266              self.pos = _save3
8267              break
8268            end
8269            _tmp = get_byte
8270            unless _tmp
8271              self.pos = _save3
8272            end
8273            break
8274          end # end sequence
8275
8276          break if _tmp
8277          self.pos = _save2
8278          break
8279        end # end choice
8280
8281        break unless _tmp
8282      end
8283      _tmp = true
8284      unless _tmp
8285        self.pos = _save
8286        break
8287      end
8288      _tmp = apply(:_HtmlBlockCloseTr)
8289      unless _tmp
8290        self.pos = _save
8291      end
8292      break
8293    end # end sequence
8294
8295    set_failed_rule :_HtmlBlockTr unless _tmp
8296    return _tmp
8297  end
8298
8299  # HtmlBlockOpenScript = "<" Spnl ("script" | "SCRIPT") Spnl HtmlAttribute* ">"
8300  def _HtmlBlockOpenScript
8301
8302    _save = self.pos
8303    while true # sequence
8304      _tmp = match_string("<")
8305      unless _tmp
8306        self.pos = _save
8307        break
8308      end
8309      _tmp = apply(:_Spnl)
8310      unless _tmp
8311        self.pos = _save
8312        break
8313      end
8314
8315      _save1 = self.pos
8316      while true # choice
8317        _tmp = match_string("script")
8318        break if _tmp
8319        self.pos = _save1
8320        _tmp = match_string("SCRIPT")
8321        break if _tmp
8322        self.pos = _save1
8323        break
8324      end # end choice
8325
8326      unless _tmp
8327        self.pos = _save
8328        break
8329      end
8330      _tmp = apply(:_Spnl)
8331      unless _tmp
8332        self.pos = _save
8333        break
8334      end
8335      while true
8336        _tmp = apply(:_HtmlAttribute)
8337        break unless _tmp
8338      end
8339      _tmp = true
8340      unless _tmp
8341        self.pos = _save
8342        break
8343      end
8344      _tmp = match_string(">")
8345      unless _tmp
8346        self.pos = _save
8347      end
8348      break
8349    end # end sequence
8350
8351    set_failed_rule :_HtmlBlockOpenScript unless _tmp
8352    return _tmp
8353  end
8354
8355  # HtmlBlockCloseScript = "<" Spnl "/" ("script" | "SCRIPT") Spnl ">"
8356  def _HtmlBlockCloseScript
8357
8358    _save = self.pos
8359    while true # sequence
8360      _tmp = match_string("<")
8361      unless _tmp
8362        self.pos = _save
8363        break
8364      end
8365      _tmp = apply(:_Spnl)
8366      unless _tmp
8367        self.pos = _save
8368        break
8369      end
8370      _tmp = match_string("/")
8371      unless _tmp
8372        self.pos = _save
8373        break
8374      end
8375
8376      _save1 = self.pos
8377      while true # choice
8378        _tmp = match_string("script")
8379        break if _tmp
8380        self.pos = _save1
8381        _tmp = match_string("SCRIPT")
8382        break if _tmp
8383        self.pos = _save1
8384        break
8385      end # end choice
8386
8387      unless _tmp
8388        self.pos = _save
8389        break
8390      end
8391      _tmp = apply(:_Spnl)
8392      unless _tmp
8393        self.pos = _save
8394        break
8395      end
8396      _tmp = match_string(">")
8397      unless _tmp
8398        self.pos = _save
8399      end
8400      break
8401    end # end sequence
8402
8403    set_failed_rule :_HtmlBlockCloseScript unless _tmp
8404    return _tmp
8405  end
8406
8407  # HtmlBlockScript = HtmlBlockOpenScript (!HtmlBlockCloseScript .)* HtmlBlockCloseScript
8408  def _HtmlBlockScript
8409
8410    _save = self.pos
8411    while true # sequence
8412      _tmp = apply(:_HtmlBlockOpenScript)
8413      unless _tmp
8414        self.pos = _save
8415        break
8416      end
8417      while true
8418
8419        _save2 = self.pos
8420        while true # sequence
8421          _save3 = self.pos
8422          _tmp = apply(:_HtmlBlockCloseScript)
8423          _tmp = _tmp ? nil : true
8424          self.pos = _save3
8425          unless _tmp
8426            self.pos = _save2
8427            break
8428          end
8429          _tmp = get_byte
8430          unless _tmp
8431            self.pos = _save2
8432          end
8433          break
8434        end # end sequence
8435
8436        break unless _tmp
8437      end
8438      _tmp = true
8439      unless _tmp
8440        self.pos = _save
8441        break
8442      end
8443      _tmp = apply(:_HtmlBlockCloseScript)
8444      unless _tmp
8445        self.pos = _save
8446      end
8447      break
8448    end # end sequence
8449
8450    set_failed_rule :_HtmlBlockScript unless _tmp
8451    return _tmp
8452  end
8453
8454  # HtmlBlockOpenHead = "<" Spnl ("head" | "HEAD") Spnl HtmlAttribute* ">"
8455  def _HtmlBlockOpenHead
8456
8457    _save = self.pos
8458    while true # sequence
8459      _tmp = match_string("<")
8460      unless _tmp
8461        self.pos = _save
8462        break
8463      end
8464      _tmp = apply(:_Spnl)
8465      unless _tmp
8466        self.pos = _save
8467        break
8468      end
8469
8470      _save1 = self.pos
8471      while true # choice
8472        _tmp = match_string("head")
8473        break if _tmp
8474        self.pos = _save1
8475        _tmp = match_string("HEAD")
8476        break if _tmp
8477        self.pos = _save1
8478        break
8479      end # end choice
8480
8481      unless _tmp
8482        self.pos = _save
8483        break
8484      end
8485      _tmp = apply(:_Spnl)
8486      unless _tmp
8487        self.pos = _save
8488        break
8489      end
8490      while true
8491        _tmp = apply(:_HtmlAttribute)
8492        break unless _tmp
8493      end
8494      _tmp = true
8495      unless _tmp
8496        self.pos = _save
8497        break
8498      end
8499      _tmp = match_string(">")
8500      unless _tmp
8501        self.pos = _save
8502      end
8503      break
8504    end # end sequence
8505
8506    set_failed_rule :_HtmlBlockOpenHead unless _tmp
8507    return _tmp
8508  end
8509
8510  # HtmlBlockCloseHead = "<" Spnl "/" ("head" | "HEAD") Spnl ">"
8511  def _HtmlBlockCloseHead
8512
8513    _save = self.pos
8514    while true # sequence
8515      _tmp = match_string("<")
8516      unless _tmp
8517        self.pos = _save
8518        break
8519      end
8520      _tmp = apply(:_Spnl)
8521      unless _tmp
8522        self.pos = _save
8523        break
8524      end
8525      _tmp = match_string("/")
8526      unless _tmp
8527        self.pos = _save
8528        break
8529      end
8530
8531      _save1 = self.pos
8532      while true # choice
8533        _tmp = match_string("head")
8534        break if _tmp
8535        self.pos = _save1
8536        _tmp = match_string("HEAD")
8537        break if _tmp
8538        self.pos = _save1
8539        break
8540      end # end choice
8541
8542      unless _tmp
8543        self.pos = _save
8544        break
8545      end
8546      _tmp = apply(:_Spnl)
8547      unless _tmp
8548        self.pos = _save
8549        break
8550      end
8551      _tmp = match_string(">")
8552      unless _tmp
8553        self.pos = _save
8554      end
8555      break
8556    end # end sequence
8557
8558    set_failed_rule :_HtmlBlockCloseHead unless _tmp
8559    return _tmp
8560  end
8561
8562  # HtmlBlockHead = HtmlBlockOpenHead (!HtmlBlockCloseHead .)* HtmlBlockCloseHead
8563  def _HtmlBlockHead
8564
8565    _save = self.pos
8566    while true # sequence
8567      _tmp = apply(:_HtmlBlockOpenHead)
8568      unless _tmp
8569        self.pos = _save
8570        break
8571      end
8572      while true
8573
8574        _save2 = self.pos
8575        while true # sequence
8576          _save3 = self.pos
8577          _tmp = apply(:_HtmlBlockCloseHead)
8578          _tmp = _tmp ? nil : true
8579          self.pos = _save3
8580          unless _tmp
8581            self.pos = _save2
8582            break
8583          end
8584          _tmp = get_byte
8585          unless _tmp
8586            self.pos = _save2
8587          end
8588          break
8589        end # end sequence
8590
8591        break unless _tmp
8592      end
8593      _tmp = true
8594      unless _tmp
8595        self.pos = _save
8596        break
8597      end
8598      _tmp = apply(:_HtmlBlockCloseHead)
8599      unless _tmp
8600        self.pos = _save
8601      end
8602      break
8603    end # end sequence
8604
8605    set_failed_rule :_HtmlBlockHead unless _tmp
8606    return _tmp
8607  end
8608
8609  # HtmlBlockInTags = (HtmlAnchor | HtmlBlockAddress | HtmlBlockBlockquote | HtmlBlockCenter | HtmlBlockDir | HtmlBlockDiv | HtmlBlockDl | HtmlBlockFieldset | HtmlBlockForm | HtmlBlockH1 | HtmlBlockH2 | HtmlBlockH3 | HtmlBlockH4 | HtmlBlockH5 | HtmlBlockH6 | HtmlBlockMenu | HtmlBlockNoframes | HtmlBlockNoscript | HtmlBlockOl | HtmlBlockP | HtmlBlockPre | HtmlBlockTable | HtmlBlockUl | HtmlBlockDd | HtmlBlockDt | HtmlBlockFrameset | HtmlBlockLi | HtmlBlockTbody | HtmlBlockTd | HtmlBlockTfoot | HtmlBlockTh | HtmlBlockThead | HtmlBlockTr | HtmlBlockScript | HtmlBlockHead)
8610  def _HtmlBlockInTags
8611
8612    _save = self.pos
8613    while true # choice
8614      _tmp = apply(:_HtmlAnchor)
8615      break if _tmp
8616      self.pos = _save
8617      _tmp = apply(:_HtmlBlockAddress)
8618      break if _tmp
8619      self.pos = _save
8620      _tmp = apply(:_HtmlBlockBlockquote)
8621      break if _tmp
8622      self.pos = _save
8623      _tmp = apply(:_HtmlBlockCenter)
8624      break if _tmp
8625      self.pos = _save
8626      _tmp = apply(:_HtmlBlockDir)
8627      break if _tmp
8628      self.pos = _save
8629      _tmp = apply(:_HtmlBlockDiv)
8630      break if _tmp
8631      self.pos = _save
8632      _tmp = apply(:_HtmlBlockDl)
8633      break if _tmp
8634      self.pos = _save
8635      _tmp = apply(:_HtmlBlockFieldset)
8636      break if _tmp
8637      self.pos = _save
8638      _tmp = apply(:_HtmlBlockForm)
8639      break if _tmp
8640      self.pos = _save
8641      _tmp = apply(:_HtmlBlockH1)
8642      break if _tmp
8643      self.pos = _save
8644      _tmp = apply(:_HtmlBlockH2)
8645      break if _tmp
8646      self.pos = _save
8647      _tmp = apply(:_HtmlBlockH3)
8648      break if _tmp
8649      self.pos = _save
8650      _tmp = apply(:_HtmlBlockH4)
8651      break if _tmp
8652      self.pos = _save
8653      _tmp = apply(:_HtmlBlockH5)
8654      break if _tmp
8655      self.pos = _save
8656      _tmp = apply(:_HtmlBlockH6)
8657      break if _tmp
8658      self.pos = _save
8659      _tmp = apply(:_HtmlBlockMenu)
8660      break if _tmp
8661      self.pos = _save
8662      _tmp = apply(:_HtmlBlockNoframes)
8663      break if _tmp
8664      self.pos = _save
8665      _tmp = apply(:_HtmlBlockNoscript)
8666      break if _tmp
8667      self.pos = _save
8668      _tmp = apply(:_HtmlBlockOl)
8669      break if _tmp
8670      self.pos = _save
8671      _tmp = apply(:_HtmlBlockP)
8672      break if _tmp
8673      self.pos = _save
8674      _tmp = apply(:_HtmlBlockPre)
8675      break if _tmp
8676      self.pos = _save
8677      _tmp = apply(:_HtmlBlockTable)
8678      break if _tmp
8679      self.pos = _save
8680      _tmp = apply(:_HtmlBlockUl)
8681      break if _tmp
8682      self.pos = _save
8683      _tmp = apply(:_HtmlBlockDd)
8684      break if _tmp
8685      self.pos = _save
8686      _tmp = apply(:_HtmlBlockDt)
8687      break if _tmp
8688      self.pos = _save
8689      _tmp = apply(:_HtmlBlockFrameset)
8690      break if _tmp
8691      self.pos = _save
8692      _tmp = apply(:_HtmlBlockLi)
8693      break if _tmp
8694      self.pos = _save
8695      _tmp = apply(:_HtmlBlockTbody)
8696      break if _tmp
8697      self.pos = _save
8698      _tmp = apply(:_HtmlBlockTd)
8699      break if _tmp
8700      self.pos = _save
8701      _tmp = apply(:_HtmlBlockTfoot)
8702      break if _tmp
8703      self.pos = _save
8704      _tmp = apply(:_HtmlBlockTh)
8705      break if _tmp
8706      self.pos = _save
8707      _tmp = apply(:_HtmlBlockThead)
8708      break if _tmp
8709      self.pos = _save
8710      _tmp = apply(:_HtmlBlockTr)
8711      break if _tmp
8712      self.pos = _save
8713      _tmp = apply(:_HtmlBlockScript)
8714      break if _tmp
8715      self.pos = _save
8716      _tmp = apply(:_HtmlBlockHead)
8717      break if _tmp
8718      self.pos = _save
8719      break
8720    end # end choice
8721
8722    set_failed_rule :_HtmlBlockInTags unless _tmp
8723    return _tmp
8724  end
8725
8726  # HtmlBlock = < (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then                 RDoc::Markup::Raw.new text               end }
8727  def _HtmlBlock
8728
8729    _save = self.pos
8730    while true # sequence
8731      _text_start = self.pos
8732
8733      _save1 = self.pos
8734      while true # choice
8735        _tmp = apply(:_HtmlBlockInTags)
8736        break if _tmp
8737        self.pos = _save1
8738        _tmp = apply(:_HtmlComment)
8739        break if _tmp
8740        self.pos = _save1
8741        _tmp = apply(:_HtmlBlockSelfClosing)
8742        break if _tmp
8743        self.pos = _save1
8744        _tmp = apply(:_HtmlUnclosed)
8745        break if _tmp
8746        self.pos = _save1
8747        break
8748      end # end choice
8749
8750      if _tmp
8751        text = get_text(_text_start)
8752      end
8753      unless _tmp
8754        self.pos = _save
8755        break
8756      end
8757      _save2 = self.pos
8758      _tmp = _BlankLine()
8759      if _tmp
8760        while true
8761          _tmp = _BlankLine()
8762          break unless _tmp
8763        end
8764        _tmp = true
8765      else
8766        self.pos = _save2
8767      end
8768      unless _tmp
8769        self.pos = _save
8770        break
8771      end
8772      @result = begin;  if html? then
8773                RDoc::Markup::Raw.new text
8774              end ; end
8775      _tmp = true
8776      unless _tmp
8777        self.pos = _save
8778      end
8779      break
8780    end # end sequence
8781
8782    set_failed_rule :_HtmlBlock unless _tmp
8783    return _tmp
8784  end
8785
8786  # HtmlUnclosed = "<" Spnl HtmlUnclosedType Spnl HtmlAttribute* Spnl ">"
8787  def _HtmlUnclosed
8788
8789    _save = self.pos
8790    while true # sequence
8791      _tmp = match_string("<")
8792      unless _tmp
8793        self.pos = _save
8794        break
8795      end
8796      _tmp = apply(:_Spnl)
8797      unless _tmp
8798        self.pos = _save
8799        break
8800      end
8801      _tmp = apply(:_HtmlUnclosedType)
8802      unless _tmp
8803        self.pos = _save
8804        break
8805      end
8806      _tmp = apply(:_Spnl)
8807      unless _tmp
8808        self.pos = _save
8809        break
8810      end
8811      while true
8812        _tmp = apply(:_HtmlAttribute)
8813        break unless _tmp
8814      end
8815      _tmp = true
8816      unless _tmp
8817        self.pos = _save
8818        break
8819      end
8820      _tmp = apply(:_Spnl)
8821      unless _tmp
8822        self.pos = _save
8823        break
8824      end
8825      _tmp = match_string(">")
8826      unless _tmp
8827        self.pos = _save
8828      end
8829      break
8830    end # end sequence
8831
8832    set_failed_rule :_HtmlUnclosed unless _tmp
8833    return _tmp
8834  end
8835
8836  # HtmlUnclosedType = ("HR" | "hr")
8837  def _HtmlUnclosedType
8838
8839    _save = self.pos
8840    while true # choice
8841      _tmp = match_string("HR")
8842      break if _tmp
8843      self.pos = _save
8844      _tmp = match_string("hr")
8845      break if _tmp
8846      self.pos = _save
8847      break
8848    end # end choice
8849
8850    set_failed_rule :_HtmlUnclosedType unless _tmp
8851    return _tmp
8852  end
8853
8854  # HtmlBlockSelfClosing = "<" Spnl HtmlBlockType Spnl HtmlAttribute* "/" Spnl ">"
8855  def _HtmlBlockSelfClosing
8856
8857    _save = self.pos
8858    while true # sequence
8859      _tmp = match_string("<")
8860      unless _tmp
8861        self.pos = _save
8862        break
8863      end
8864      _tmp = apply(:_Spnl)
8865      unless _tmp
8866        self.pos = _save
8867        break
8868      end
8869      _tmp = apply(:_HtmlBlockType)
8870      unless _tmp
8871        self.pos = _save
8872        break
8873      end
8874      _tmp = apply(:_Spnl)
8875      unless _tmp
8876        self.pos = _save
8877        break
8878      end
8879      while true
8880        _tmp = apply(:_HtmlAttribute)
8881        break unless _tmp
8882      end
8883      _tmp = true
8884      unless _tmp
8885        self.pos = _save
8886        break
8887      end
8888      _tmp = match_string("/")
8889      unless _tmp
8890        self.pos = _save
8891        break
8892      end
8893      _tmp = apply(:_Spnl)
8894      unless _tmp
8895        self.pos = _save
8896        break
8897      end
8898      _tmp = match_string(">")
8899      unless _tmp
8900        self.pos = _save
8901      end
8902      break
8903    end # end sequence
8904
8905    set_failed_rule :_HtmlBlockSelfClosing unless _tmp
8906    return _tmp
8907  end
8908
8909  # HtmlBlockType = ("ADDRESS" | "BLOCKQUOTE" | "CENTER" | "DD" | "DIR" | "DIV" | "DL" | "DT" | "FIELDSET" | "FORM" | "FRAMESET" | "H1" | "H2" | "H3" | "H4" | "H5" | "H6" | "HR" | "ISINDEX" | "LI" | "MENU" | "NOFRAMES" | "NOSCRIPT" | "OL" | "P" | "PRE" | "SCRIPT" | "TABLE" | "TBODY" | "TD" | "TFOOT" | "TH" | "THEAD" | "TR" | "UL" | "address" | "blockquote" | "center" | "dd" | "dir" | "div" | "dl" | "dt" | "fieldset" | "form" | "frameset" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "hr" | "isindex" | "li" | "menu" | "noframes" | "noscript" | "ol" | "p" | "pre" | "script" | "table" | "tbody" | "td" | "tfoot" | "th" | "thead" | "tr" | "ul")
8910  def _HtmlBlockType
8911
8912    _save = self.pos
8913    while true # choice
8914      _tmp = match_string("ADDRESS")
8915      break if _tmp
8916      self.pos = _save
8917      _tmp = match_string("BLOCKQUOTE")
8918      break if _tmp
8919      self.pos = _save
8920      _tmp = match_string("CENTER")
8921      break if _tmp
8922      self.pos = _save
8923      _tmp = match_string("DD")
8924      break if _tmp
8925      self.pos = _save
8926      _tmp = match_string("DIR")
8927      break if _tmp
8928      self.pos = _save
8929      _tmp = match_string("DIV")
8930      break if _tmp
8931      self.pos = _save
8932      _tmp = match_string("DL")
8933      break if _tmp
8934      self.pos = _save
8935      _tmp = match_string("DT")
8936      break if _tmp
8937      self.pos = _save
8938      _tmp = match_string("FIELDSET")
8939      break if _tmp
8940      self.pos = _save
8941      _tmp = match_string("FORM")
8942      break if _tmp
8943      self.pos = _save
8944      _tmp = match_string("FRAMESET")
8945      break if _tmp
8946      self.pos = _save
8947      _tmp = match_string("H1")
8948      break if _tmp
8949      self.pos = _save
8950      _tmp = match_string("H2")
8951      break if _tmp
8952      self.pos = _save
8953      _tmp = match_string("H3")
8954      break if _tmp
8955      self.pos = _save
8956      _tmp = match_string("H4")
8957      break if _tmp
8958      self.pos = _save
8959      _tmp = match_string("H5")
8960      break if _tmp
8961      self.pos = _save
8962      _tmp = match_string("H6")
8963      break if _tmp
8964      self.pos = _save
8965      _tmp = match_string("HR")
8966      break if _tmp
8967      self.pos = _save
8968      _tmp = match_string("ISINDEX")
8969      break if _tmp
8970      self.pos = _save
8971      _tmp = match_string("LI")
8972      break if _tmp
8973      self.pos = _save
8974      _tmp = match_string("MENU")
8975      break if _tmp
8976      self.pos = _save
8977      _tmp = match_string("NOFRAMES")
8978      break if _tmp
8979      self.pos = _save
8980      _tmp = match_string("NOSCRIPT")
8981      break if _tmp
8982      self.pos = _save
8983      _tmp = match_string("OL")
8984      break if _tmp
8985      self.pos = _save
8986      _tmp = match_string("P")
8987      break if _tmp
8988      self.pos = _save
8989      _tmp = match_string("PRE")
8990      break if _tmp
8991      self.pos = _save
8992      _tmp = match_string("SCRIPT")
8993      break if _tmp
8994      self.pos = _save
8995      _tmp = match_string("TABLE")
8996      break if _tmp
8997      self.pos = _save
8998      _tmp = match_string("TBODY")
8999      break if _tmp
9000      self.pos = _save
9001      _tmp = match_string("TD")
9002      break if _tmp
9003      self.pos = _save
9004      _tmp = match_string("TFOOT")
9005      break if _tmp
9006      self.pos = _save
9007      _tmp = match_string("TH")
9008      break if _tmp
9009      self.pos = _save
9010      _tmp = match_string("THEAD")
9011      break if _tmp
9012      self.pos = _save
9013      _tmp = match_string("TR")
9014      break if _tmp
9015      self.pos = _save
9016      _tmp = match_string("UL")
9017      break if _tmp
9018      self.pos = _save
9019      _tmp = match_string("address")
9020      break if _tmp
9021      self.pos = _save
9022      _tmp = match_string("blockquote")
9023      break if _tmp
9024      self.pos = _save
9025      _tmp = match_string("center")
9026      break if _tmp
9027      self.pos = _save
9028      _tmp = match_string("dd")
9029      break if _tmp
9030      self.pos = _save
9031      _tmp = match_string("dir")
9032      break if _tmp
9033      self.pos = _save
9034      _tmp = match_string("div")
9035      break if _tmp
9036      self.pos = _save
9037      _tmp = match_string("dl")
9038      break if _tmp
9039      self.pos = _save
9040      _tmp = match_string("dt")
9041      break if _tmp
9042      self.pos = _save
9043      _tmp = match_string("fieldset")
9044      break if _tmp
9045      self.pos = _save
9046      _tmp = match_string("form")
9047      break if _tmp
9048      self.pos = _save
9049      _tmp = match_string("frameset")
9050      break if _tmp
9051      self.pos = _save
9052      _tmp = match_string("h1")
9053      break if _tmp
9054      self.pos = _save
9055      _tmp = match_string("h2")
9056      break if _tmp
9057      self.pos = _save
9058      _tmp = match_string("h3")
9059      break if _tmp
9060      self.pos = _save
9061      _tmp = match_string("h4")
9062      break if _tmp
9063      self.pos = _save
9064      _tmp = match_string("h5")
9065      break if _tmp
9066      self.pos = _save
9067      _tmp = match_string("h6")
9068      break if _tmp
9069      self.pos = _save
9070      _tmp = match_string("hr")
9071      break if _tmp
9072      self.pos = _save
9073      _tmp = match_string("isindex")
9074      break if _tmp
9075      self.pos = _save
9076      _tmp = match_string("li")
9077      break if _tmp
9078      self.pos = _save
9079      _tmp = match_string("menu")
9080      break if _tmp
9081      self.pos = _save
9082      _tmp = match_string("noframes")
9083      break if _tmp
9084      self.pos = _save
9085      _tmp = match_string("noscript")
9086      break if _tmp
9087      self.pos = _save
9088      _tmp = match_string("ol")
9089      break if _tmp
9090      self.pos = _save
9091      _tmp = match_string("p")
9092      break if _tmp
9093      self.pos = _save
9094      _tmp = match_string("pre")
9095      break if _tmp
9096      self.pos = _save
9097      _tmp = match_string("script")
9098      break if _tmp
9099      self.pos = _save
9100      _tmp = match_string("table")
9101      break if _tmp
9102      self.pos = _save
9103      _tmp = match_string("tbody")
9104      break if _tmp
9105      self.pos = _save
9106      _tmp = match_string("td")
9107      break if _tmp
9108      self.pos = _save
9109      _tmp = match_string("tfoot")
9110      break if _tmp
9111      self.pos = _save
9112      _tmp = match_string("th")
9113      break if _tmp
9114      self.pos = _save
9115      _tmp = match_string("thead")
9116      break if _tmp
9117      self.pos = _save
9118      _tmp = match_string("tr")
9119      break if _tmp
9120      self.pos = _save
9121      _tmp = match_string("ul")
9122      break if _tmp
9123      self.pos = _save
9124      break
9125    end # end choice
9126
9127    set_failed_rule :_HtmlBlockType unless _tmp
9128    return _tmp
9129  end
9130
9131  # StyleOpen = "<" Spnl ("style" | "STYLE") Spnl HtmlAttribute* ">"
9132  def _StyleOpen
9133
9134    _save = self.pos
9135    while true # sequence
9136      _tmp = match_string("<")
9137      unless _tmp
9138        self.pos = _save
9139        break
9140      end
9141      _tmp = apply(:_Spnl)
9142      unless _tmp
9143        self.pos = _save
9144        break
9145      end
9146
9147      _save1 = self.pos
9148      while true # choice
9149        _tmp = match_string("style")
9150        break if _tmp
9151        self.pos = _save1
9152        _tmp = match_string("STYLE")
9153        break if _tmp
9154        self.pos = _save1
9155        break
9156      end # end choice
9157
9158      unless _tmp
9159        self.pos = _save
9160        break
9161      end
9162      _tmp = apply(:_Spnl)
9163      unless _tmp
9164        self.pos = _save
9165        break
9166      end
9167      while true
9168        _tmp = apply(:_HtmlAttribute)
9169        break unless _tmp
9170      end
9171      _tmp = true
9172      unless _tmp
9173        self.pos = _save
9174        break
9175      end
9176      _tmp = match_string(">")
9177      unless _tmp
9178        self.pos = _save
9179      end
9180      break
9181    end # end sequence
9182
9183    set_failed_rule :_StyleOpen unless _tmp
9184    return _tmp
9185  end
9186
9187  # StyleClose = "<" Spnl "/" ("style" | "STYLE") Spnl ">"
9188  def _StyleClose
9189
9190    _save = self.pos
9191    while true # sequence
9192      _tmp = match_string("<")
9193      unless _tmp
9194        self.pos = _save
9195        break
9196      end
9197      _tmp = apply(:_Spnl)
9198      unless _tmp
9199        self.pos = _save
9200        break
9201      end
9202      _tmp = match_string("/")
9203      unless _tmp
9204        self.pos = _save
9205        break
9206      end
9207
9208      _save1 = self.pos
9209      while true # choice
9210        _tmp = match_string("style")
9211        break if _tmp
9212        self.pos = _save1
9213        _tmp = match_string("STYLE")
9214        break if _tmp
9215        self.pos = _save1
9216        break
9217      end # end choice
9218
9219      unless _tmp
9220        self.pos = _save
9221        break
9222      end
9223      _tmp = apply(:_Spnl)
9224      unless _tmp
9225        self.pos = _save
9226        break
9227      end
9228      _tmp = match_string(">")
9229      unless _tmp
9230        self.pos = _save
9231      end
9232      break
9233    end # end sequence
9234
9235    set_failed_rule :_StyleClose unless _tmp
9236    return _tmp
9237  end
9238
9239  # InStyleTags = StyleOpen (!StyleClose .)* StyleClose
9240  def _InStyleTags
9241
9242    _save = self.pos
9243    while true # sequence
9244      _tmp = apply(:_StyleOpen)
9245      unless _tmp
9246        self.pos = _save
9247        break
9248      end
9249      while true
9250
9251        _save2 = self.pos
9252        while true # sequence
9253          _save3 = self.pos
9254          _tmp = apply(:_StyleClose)
9255          _tmp = _tmp ? nil : true
9256          self.pos = _save3
9257          unless _tmp
9258            self.pos = _save2
9259            break
9260          end
9261          _tmp = get_byte
9262          unless _tmp
9263            self.pos = _save2
9264          end
9265          break
9266        end # end sequence
9267
9268        break unless _tmp
9269      end
9270      _tmp = true
9271      unless _tmp
9272        self.pos = _save
9273        break
9274      end
9275      _tmp = apply(:_StyleClose)
9276      unless _tmp
9277        self.pos = _save
9278      end
9279      break
9280    end # end sequence
9281
9282    set_failed_rule :_InStyleTags unless _tmp
9283    return _tmp
9284  end
9285
9286  # StyleBlock = < InStyleTags > @BlankLine* { if css? then                     RDoc::Markup::Raw.new text                   end }
9287  def _StyleBlock
9288
9289    _save = self.pos
9290    while true # sequence
9291      _text_start = self.pos
9292      _tmp = apply(:_InStyleTags)
9293      if _tmp
9294        text = get_text(_text_start)
9295      end
9296      unless _tmp
9297        self.pos = _save
9298        break
9299      end
9300      while true
9301        _tmp = _BlankLine()
9302        break unless _tmp
9303      end
9304      _tmp = true
9305      unless _tmp
9306        self.pos = _save
9307        break
9308      end
9309      @result = begin;  if css? then
9310                    RDoc::Markup::Raw.new text
9311                  end ; end
9312      _tmp = true
9313      unless _tmp
9314        self.pos = _save
9315      end
9316      break
9317    end # end sequence
9318
9319    set_failed_rule :_StyleBlock unless _tmp
9320    return _tmp
9321  end
9322
9323  # Inlines = (!@Endline Inline:i { i } | @Endline:c &Inline { c })+:chunks @Endline? { chunks }
9324  def _Inlines
9325
9326    _save = self.pos
9327    while true # sequence
9328      _save1 = self.pos
9329      _ary = []
9330
9331      _save2 = self.pos
9332      while true # choice
9333
9334        _save3 = self.pos
9335        while true # sequence
9336          _save4 = self.pos
9337          _tmp = _Endline()
9338          _tmp = _tmp ? nil : true
9339          self.pos = _save4
9340          unless _tmp
9341            self.pos = _save3
9342            break
9343          end
9344          _tmp = apply(:_Inline)
9345          i = @result
9346          unless _tmp
9347            self.pos = _save3
9348            break
9349          end
9350          @result = begin;  i ; end
9351          _tmp = true
9352          unless _tmp
9353            self.pos = _save3
9354          end
9355          break
9356        end # end sequence
9357
9358        break if _tmp
9359        self.pos = _save2
9360
9361        _save5 = self.pos
9362        while true # sequence
9363          _tmp = _Endline()
9364          c = @result
9365          unless _tmp
9366            self.pos = _save5
9367            break
9368          end
9369          _save6 = self.pos
9370          _tmp = apply(:_Inline)
9371          self.pos = _save6
9372          unless _tmp
9373            self.pos = _save5
9374            break
9375          end
9376          @result = begin;  c ; end
9377          _tmp = true
9378          unless _tmp
9379            self.pos = _save5
9380          end
9381          break
9382        end # end sequence
9383
9384        break if _tmp
9385        self.pos = _save2
9386        break
9387      end # end choice
9388
9389      if _tmp
9390        _ary << @result
9391        while true
9392
9393          _save7 = self.pos
9394          while true # choice
9395
9396            _save8 = self.pos
9397            while true # sequence
9398              _save9 = self.pos
9399              _tmp = _Endline()
9400              _tmp = _tmp ? nil : true
9401              self.pos = _save9
9402              unless _tmp
9403                self.pos = _save8
9404                break
9405              end
9406              _tmp = apply(:_Inline)
9407              i = @result
9408              unless _tmp
9409                self.pos = _save8
9410                break
9411              end
9412              @result = begin;  i ; end
9413              _tmp = true
9414              unless _tmp
9415                self.pos = _save8
9416              end
9417              break
9418            end # end sequence
9419
9420            break if _tmp
9421            self.pos = _save7
9422
9423            _save10 = self.pos
9424            while true # sequence
9425              _tmp = _Endline()
9426              c = @result
9427              unless _tmp
9428                self.pos = _save10
9429                break
9430              end
9431              _save11 = self.pos
9432              _tmp = apply(:_Inline)
9433              self.pos = _save11
9434              unless _tmp
9435                self.pos = _save10
9436                break
9437              end
9438              @result = begin;  c ; end
9439              _tmp = true
9440              unless _tmp
9441                self.pos = _save10
9442              end
9443              break
9444            end # end sequence
9445
9446            break if _tmp
9447            self.pos = _save7
9448            break
9449          end # end choice
9450
9451          _ary << @result if _tmp
9452          break unless _tmp
9453        end
9454        _tmp = true
9455        @result = _ary
9456      else
9457        self.pos = _save1
9458      end
9459      chunks = @result
9460      unless _tmp
9461        self.pos = _save
9462        break
9463      end
9464      _save12 = self.pos
9465      _tmp = _Endline()
9466      unless _tmp
9467        _tmp = true
9468        self.pos = _save12
9469      end
9470      unless _tmp
9471        self.pos = _save
9472        break
9473      end
9474      @result = begin;  chunks ; end
9475      _tmp = true
9476      unless _tmp
9477        self.pos = _save
9478      end
9479      break
9480    end # end sequence
9481
9482    set_failed_rule :_Inlines unless _tmp
9483    return _tmp
9484  end
9485
9486  # Inline = (Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)
9487  def _Inline
9488
9489    _save = self.pos
9490    while true # choice
9491      _tmp = apply(:_Str)
9492      break if _tmp
9493      self.pos = _save
9494      _tmp = _Endline()
9495      break if _tmp
9496      self.pos = _save
9497      _tmp = apply(:_UlOrStarLine)
9498      break if _tmp
9499      self.pos = _save
9500      _tmp = _Space()
9501      break if _tmp
9502      self.pos = _save
9503      _tmp = apply(:_Strong)
9504      break if _tmp
9505      self.pos = _save
9506      _tmp = apply(:_Emph)
9507      break if _tmp
9508      self.pos = _save
9509      _tmp = apply(:_Strike)
9510      break if _tmp
9511      self.pos = _save
9512      _tmp = apply(:_Image)
9513      break if _tmp
9514      self.pos = _save
9515      _tmp = apply(:_Link)
9516      break if _tmp
9517      self.pos = _save
9518      _tmp = apply(:_NoteReference)
9519      break if _tmp
9520      self.pos = _save
9521      _tmp = apply(:_InlineNote)
9522      break if _tmp
9523      self.pos = _save
9524      _tmp = apply(:_Code)
9525      break if _tmp
9526      self.pos = _save
9527      _tmp = apply(:_RawHtml)
9528      break if _tmp
9529      self.pos = _save
9530      _tmp = apply(:_Entity)
9531      break if _tmp
9532      self.pos = _save
9533      _tmp = apply(:_EscapedChar)
9534      break if _tmp
9535      self.pos = _save
9536      _tmp = apply(:_Symbol)
9537      break if _tmp
9538      self.pos = _save
9539      break
9540    end # end choice
9541
9542    set_failed_rule :_Inline unless _tmp
9543    return _tmp
9544  end
9545
9546  # Space = @Spacechar+ { " " }
9547  def _Space
9548
9549    _save = self.pos
9550    while true # sequence
9551      _save1 = self.pos
9552      _tmp = _Spacechar()
9553      if _tmp
9554        while true
9555          _tmp = _Spacechar()
9556          break unless _tmp
9557        end
9558        _tmp = true
9559      else
9560        self.pos = _save1
9561      end
9562      unless _tmp
9563        self.pos = _save
9564        break
9565      end
9566      @result = begin;  " " ; end
9567      _tmp = true
9568      unless _tmp
9569        self.pos = _save
9570      end
9571      break
9572    end # end sequence
9573
9574    set_failed_rule :_Space unless _tmp
9575    return _tmp
9576  end
9577
9578  # Str = @StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }
9579  def _Str
9580
9581    _save = self.pos
9582    while true # sequence
9583      _tmp = _StartList()
9584      a = @result
9585      unless _tmp
9586        self.pos = _save
9587        break
9588      end
9589      _text_start = self.pos
9590      _save1 = self.pos
9591      _tmp = _NormalChar()
9592      if _tmp
9593        while true
9594          _tmp = _NormalChar()
9595          break unless _tmp
9596        end
9597        _tmp = true
9598      else
9599        self.pos = _save1
9600      end
9601      if _tmp
9602        text = get_text(_text_start)
9603      end
9604      unless _tmp
9605        self.pos = _save
9606        break
9607      end
9608      @result = begin;  a = text ; end
9609      _tmp = true
9610      unless _tmp
9611        self.pos = _save
9612        break
9613      end
9614      while true
9615
9616        _save3 = self.pos
9617        while true # sequence
9618          _tmp = apply(:_StrChunk)
9619          c = @result
9620          unless _tmp
9621            self.pos = _save3
9622            break
9623          end
9624          @result = begin;  a << c ; end
9625          _tmp = true
9626          unless _tmp
9627            self.pos = _save3
9628          end
9629          break
9630        end # end sequence
9631
9632        break unless _tmp
9633      end
9634      _tmp = true
9635      unless _tmp
9636        self.pos = _save
9637        break
9638      end
9639      @result = begin;  a ; end
9640      _tmp = true
9641      unless _tmp
9642        self.pos = _save
9643      end
9644      break
9645    end # end sequence
9646
9647    set_failed_rule :_Str unless _tmp
9648    return _tmp
9649  end
9650
9651  # StrChunk = < (@NormalChar | /_+/ &Alphanumeric)+ > { text }
9652  def _StrChunk
9653
9654    _save = self.pos
9655    while true # sequence
9656      _text_start = self.pos
9657      _save1 = self.pos
9658
9659      _save2 = self.pos
9660      while true # choice
9661        _tmp = _NormalChar()
9662        break if _tmp
9663        self.pos = _save2
9664
9665        _save3 = self.pos
9666        while true # sequence
9667          _tmp = scan(/\A(?-mix:_+)/)
9668          unless _tmp
9669            self.pos = _save3
9670            break
9671          end
9672          _save4 = self.pos
9673          _tmp = apply(:_Alphanumeric)
9674          self.pos = _save4
9675          unless _tmp
9676            self.pos = _save3
9677          end
9678          break
9679        end # end sequence
9680
9681        break if _tmp
9682        self.pos = _save2
9683        break
9684      end # end choice
9685
9686      if _tmp
9687        while true
9688
9689          _save5 = self.pos
9690          while true # choice
9691            _tmp = _NormalChar()
9692            break if _tmp
9693            self.pos = _save5
9694
9695            _save6 = self.pos
9696            while true # sequence
9697              _tmp = scan(/\A(?-mix:_+)/)
9698              unless _tmp
9699                self.pos = _save6
9700                break
9701              end
9702              _save7 = self.pos
9703              _tmp = apply(:_Alphanumeric)
9704              self.pos = _save7
9705              unless _tmp
9706                self.pos = _save6
9707              end
9708              break
9709            end # end sequence
9710
9711            break if _tmp
9712            self.pos = _save5
9713            break
9714          end # end choice
9715
9716          break unless _tmp
9717        end
9718        _tmp = true
9719      else
9720        self.pos = _save1
9721      end
9722      if _tmp
9723        text = get_text(_text_start)
9724      end
9725      unless _tmp
9726        self.pos = _save
9727        break
9728      end
9729      @result = begin;  text ; end
9730      _tmp = true
9731      unless _tmp
9732        self.pos = _save
9733      end
9734      break
9735    end # end sequence
9736
9737    set_failed_rule :_StrChunk unless _tmp
9738    return _tmp
9739  end
9740
9741  # EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { text }
9742  def _EscapedChar
9743
9744    _save = self.pos
9745    while true # sequence
9746      _tmp = match_string("\\")
9747      unless _tmp
9748        self.pos = _save
9749        break
9750      end
9751      _save1 = self.pos
9752      _tmp = _Newline()
9753      _tmp = _tmp ? nil : true
9754      self.pos = _save1
9755      unless _tmp
9756        self.pos = _save
9757        break
9758      end
9759      _text_start = self.pos
9760      _tmp = scan(/\A(?-mix:[:\\`|*_{}\[\]()#+.!><-])/)
9761      if _tmp
9762        text = get_text(_text_start)
9763      end
9764      unless _tmp
9765        self.pos = _save
9766        break
9767      end
9768      @result = begin;  text ; end
9769      _tmp = true
9770      unless _tmp
9771        self.pos = _save
9772      end
9773      break
9774    end # end sequence
9775
9776    set_failed_rule :_EscapedChar unless _tmp
9777    return _tmp
9778  end
9779
9780  # Entity = (HexEntity | DecEntity | CharEntity):a { a }
9781  def _Entity
9782
9783    _save = self.pos
9784    while true # sequence
9785
9786      _save1 = self.pos
9787      while true # choice
9788        _tmp = apply(:_HexEntity)
9789        break if _tmp
9790        self.pos = _save1
9791        _tmp = apply(:_DecEntity)
9792        break if _tmp
9793        self.pos = _save1
9794        _tmp = apply(:_CharEntity)
9795        break if _tmp
9796        self.pos = _save1
9797        break
9798      end # end choice
9799
9800      a = @result
9801      unless _tmp
9802        self.pos = _save
9803        break
9804      end
9805      @result = begin;  a ; end
9806      _tmp = true
9807      unless _tmp
9808        self.pos = _save
9809      end
9810      break
9811    end # end sequence
9812
9813    set_failed_rule :_Entity unless _tmp
9814    return _tmp
9815  end
9816
9817  # Endline = (@LineBreak | @TerminalEndline | @NormalEndline)
9818  def _Endline
9819
9820    _save = self.pos
9821    while true # choice
9822      _tmp = _LineBreak()
9823      break if _tmp
9824      self.pos = _save
9825      _tmp = _TerminalEndline()
9826      break if _tmp
9827      self.pos = _save
9828      _tmp = _NormalEndline()
9829      break if _tmp
9830      self.pos = _save
9831      break
9832    end # end choice
9833
9834    set_failed_rule :_Endline unless _tmp
9835    return _tmp
9836  end
9837
9838  # NormalEndline = @Sp @Newline !@BlankLine !">" !AtxStart !(Line /={1,}|-{1,}/ @Newline) { "\n" }
9839  def _NormalEndline
9840
9841    _save = self.pos
9842    while true # sequence
9843      _tmp = _Sp()
9844      unless _tmp
9845        self.pos = _save
9846        break
9847      end
9848      _tmp = _Newline()
9849      unless _tmp
9850        self.pos = _save
9851        break
9852      end
9853      _save1 = self.pos
9854      _tmp = _BlankLine()
9855      _tmp = _tmp ? nil : true
9856      self.pos = _save1
9857      unless _tmp
9858        self.pos = _save
9859        break
9860      end
9861      _save2 = self.pos
9862      _tmp = match_string(">")
9863      _tmp = _tmp ? nil : true
9864      self.pos = _save2
9865      unless _tmp
9866        self.pos = _save
9867        break
9868      end
9869      _save3 = self.pos
9870      _tmp = apply(:_AtxStart)
9871      _tmp = _tmp ? nil : true
9872      self.pos = _save3
9873      unless _tmp
9874        self.pos = _save
9875        break
9876      end
9877      _save4 = self.pos
9878
9879      _save5 = self.pos
9880      while true # sequence
9881        _tmp = apply(:_Line)
9882        unless _tmp
9883          self.pos = _save5
9884          break
9885        end
9886        _tmp = scan(/\A(?-mix:={1,}|-{1,})/)
9887        unless _tmp
9888          self.pos = _save5
9889          break
9890        end
9891        _tmp = _Newline()
9892        unless _tmp
9893          self.pos = _save5
9894        end
9895        break
9896      end # end sequence
9897
9898      _tmp = _tmp ? nil : true
9899      self.pos = _save4
9900      unless _tmp
9901        self.pos = _save
9902        break
9903      end
9904      @result = begin;  "\n" ; end
9905      _tmp = true
9906      unless _tmp
9907        self.pos = _save
9908      end
9909      break
9910    end # end sequence
9911
9912    set_failed_rule :_NormalEndline unless _tmp
9913    return _tmp
9914  end
9915
9916  # TerminalEndline = @Sp @Newline @Eof
9917  def _TerminalEndline
9918
9919    _save = self.pos
9920    while true # sequence
9921      _tmp = _Sp()
9922      unless _tmp
9923        self.pos = _save
9924        break
9925      end
9926      _tmp = _Newline()
9927      unless _tmp
9928        self.pos = _save
9929        break
9930      end
9931      _tmp = _Eof()
9932      unless _tmp
9933        self.pos = _save
9934      end
9935      break
9936    end # end sequence
9937
9938    set_failed_rule :_TerminalEndline unless _tmp
9939    return _tmp
9940  end
9941
9942  # LineBreak = "  " @NormalEndline { RDoc::Markup::HardBreak.new }
9943  def _LineBreak
9944
9945    _save = self.pos
9946    while true # sequence
9947      _tmp = match_string("  ")
9948      unless _tmp
9949        self.pos = _save
9950        break
9951      end
9952      _tmp = _NormalEndline()
9953      unless _tmp
9954        self.pos = _save
9955        break
9956      end
9957      @result = begin;  RDoc::Markup::HardBreak.new ; end
9958      _tmp = true
9959      unless _tmp
9960        self.pos = _save
9961      end
9962      break
9963    end # end sequence
9964
9965    set_failed_rule :_LineBreak unless _tmp
9966    return _tmp
9967  end
9968
9969  # Symbol = < @SpecialChar > { text }
9970  def _Symbol
9971
9972    _save = self.pos
9973    while true # sequence
9974      _text_start = self.pos
9975      _tmp = _SpecialChar()
9976      if _tmp
9977        text = get_text(_text_start)
9978      end
9979      unless _tmp
9980        self.pos = _save
9981        break
9982      end
9983      @result = begin;  text ; end
9984      _tmp = true
9985      unless _tmp
9986        self.pos = _save
9987      end
9988      break
9989    end # end sequence
9990
9991    set_failed_rule :_Symbol unless _tmp
9992    return _tmp
9993  end
9994
9995  # UlOrStarLine = (UlLine | StarLine):a { a }
9996  def _UlOrStarLine
9997
9998    _save = self.pos
9999    while true # sequence
10000
10001      _save1 = self.pos
10002      while true # choice
10003        _tmp = apply(:_UlLine)
10004        break if _tmp
10005        self.pos = _save1
10006        _tmp = apply(:_StarLine)
10007        break if _tmp
10008        self.pos = _save1
10009        break
10010      end # end choice
10011
10012      a = @result
10013      unless _tmp
10014        self.pos = _save
10015        break
10016      end
10017      @result = begin;  a ; end
10018      _tmp = true
10019      unless _tmp
10020        self.pos = _save
10021      end
10022      break
10023    end # end sequence
10024
10025    set_failed_rule :_UlOrStarLine unless _tmp
10026    return _tmp
10027  end
10028
10029  # StarLine = (< /\*{4,}/ > { text } | < @Spacechar /\*+/ &@Spacechar > { text })
10030  def _StarLine
10031
10032    _save = self.pos
10033    while true # choice
10034
10035      _save1 = self.pos
10036      while true # sequence
10037        _text_start = self.pos
10038        _tmp = scan(/\A(?-mix:\*{4,})/)
10039        if _tmp
10040          text = get_text(_text_start)
10041        end
10042        unless _tmp
10043          self.pos = _save1
10044          break
10045        end
10046        @result = begin;  text ; end
10047        _tmp = true
10048        unless _tmp
10049          self.pos = _save1
10050        end
10051        break
10052      end # end sequence
10053
10054      break if _tmp
10055      self.pos = _save
10056
10057      _save2 = self.pos
10058      while true # sequence
10059        _text_start = self.pos
10060
10061        _save3 = self.pos
10062        while true # sequence
10063          _tmp = _Spacechar()
10064          unless _tmp
10065            self.pos = _save3
10066            break
10067          end
10068          _tmp = scan(/\A(?-mix:\*+)/)
10069          unless _tmp
10070            self.pos = _save3
10071            break
10072          end
10073          _save4 = self.pos
10074          _tmp = _Spacechar()
10075          self.pos = _save4
10076          unless _tmp
10077            self.pos = _save3
10078          end
10079          break
10080        end # end sequence
10081
10082        if _tmp
10083          text = get_text(_text_start)
10084        end
10085        unless _tmp
10086          self.pos = _save2
10087          break
10088        end
10089        @result = begin;  text ; end
10090        _tmp = true
10091        unless _tmp
10092          self.pos = _save2
10093        end
10094        break
10095      end # end sequence
10096
10097      break if _tmp
10098      self.pos = _save
10099      break
10100    end # end choice
10101
10102    set_failed_rule :_StarLine unless _tmp
10103    return _tmp
10104  end
10105
10106  # UlLine = (< /_{4,}/ > { text } | < @Spacechar /_+/ &@Spacechar > { text })
10107  def _UlLine
10108
10109    _save = self.pos
10110    while true # choice
10111
10112      _save1 = self.pos
10113      while true # sequence
10114        _text_start = self.pos
10115        _tmp = scan(/\A(?-mix:_{4,})/)
10116        if _tmp
10117          text = get_text(_text_start)
10118        end
10119        unless _tmp
10120          self.pos = _save1
10121          break
10122        end
10123        @result = begin;  text ; end
10124        _tmp = true
10125        unless _tmp
10126          self.pos = _save1
10127        end
10128        break
10129      end # end sequence
10130
10131      break if _tmp
10132      self.pos = _save
10133
10134      _save2 = self.pos
10135      while true # sequence
10136        _text_start = self.pos
10137
10138        _save3 = self.pos
10139        while true # sequence
10140          _tmp = _Spacechar()
10141          unless _tmp
10142            self.pos = _save3
10143            break
10144          end
10145          _tmp = scan(/\A(?-mix:_+)/)
10146          unless _tmp
10147            self.pos = _save3
10148            break
10149          end
10150          _save4 = self.pos
10151          _tmp = _Spacechar()
10152          self.pos = _save4
10153          unless _tmp
10154            self.pos = _save3
10155          end
10156          break
10157        end # end sequence
10158
10159        if _tmp
10160          text = get_text(_text_start)
10161        end
10162        unless _tmp
10163          self.pos = _save2
10164          break
10165        end
10166        @result = begin;  text ; end
10167        _tmp = true
10168        unless _tmp
10169          self.pos = _save2
10170        end
10171        break
10172      end # end sequence
10173
10174      break if _tmp
10175      self.pos = _save
10176      break
10177    end # end choice
10178
10179    set_failed_rule :_UlLine unless _tmp
10180    return _tmp
10181  end
10182
10183  # Emph = (EmphStar | EmphUl)
10184  def _Emph
10185
10186    _save = self.pos
10187    while true # choice
10188      _tmp = apply(:_EmphStar)
10189      break if _tmp
10190      self.pos = _save
10191      _tmp = apply(:_EmphUl)
10192      break if _tmp
10193      self.pos = _save
10194      break
10195    end # end choice
10196
10197    set_failed_rule :_Emph unless _tmp
10198    return _tmp
10199  end
10200
10201  # Whitespace = (@Spacechar | @Newline)
10202  def _Whitespace
10203
10204    _save = self.pos
10205    while true # choice
10206      _tmp = _Spacechar()
10207      break if _tmp
10208      self.pos = _save
10209      _tmp = _Newline()
10210      break if _tmp
10211      self.pos = _save
10212      break
10213    end # end choice
10214
10215    set_failed_rule :_Whitespace unless _tmp
10216    return _tmp
10217  end
10218
10219  # EmphStar = "*" !@Whitespace @StartList:a (!"*" Inline:b { a << b } | StrongStar:b { a << b })+ "*" { emphasis a.join }
10220  def _EmphStar
10221
10222    _save = self.pos
10223    while true # sequence
10224      _tmp = match_string("*")
10225      unless _tmp
10226        self.pos = _save
10227        break
10228      end
10229      _save1 = self.pos
10230      _tmp = _Whitespace()
10231      _tmp = _tmp ? nil : true
10232      self.pos = _save1
10233      unless _tmp
10234        self.pos = _save
10235        break
10236      end
10237      _tmp = _StartList()
10238      a = @result
10239      unless _tmp
10240        self.pos = _save
10241        break
10242      end
10243      _save2 = self.pos
10244
10245      _save3 = self.pos
10246      while true # choice
10247
10248        _save4 = self.pos
10249        while true # sequence
10250          _save5 = self.pos
10251          _tmp = match_string("*")
10252          _tmp = _tmp ? nil : true
10253          self.pos = _save5
10254          unless _tmp
10255            self.pos = _save4
10256            break
10257          end
10258          _tmp = apply(:_Inline)
10259          b = @result
10260          unless _tmp
10261            self.pos = _save4
10262            break
10263          end
10264          @result = begin;  a << b ; end
10265          _tmp = true
10266          unless _tmp
10267            self.pos = _save4
10268          end
10269          break
10270        end # end sequence
10271
10272        break if _tmp
10273        self.pos = _save3
10274
10275        _save6 = self.pos
10276        while true # sequence
10277          _tmp = apply(:_StrongStar)
10278          b = @result
10279          unless _tmp
10280            self.pos = _save6
10281            break
10282          end
10283          @result = begin;  a << b ; end
10284          _tmp = true
10285          unless _tmp
10286            self.pos = _save6
10287          end
10288          break
10289        end # end sequence
10290
10291        break if _tmp
10292        self.pos = _save3
10293        break
10294      end # end choice
10295
10296      if _tmp
10297        while true
10298
10299          _save7 = self.pos
10300          while true # choice
10301
10302            _save8 = self.pos
10303            while true # sequence
10304              _save9 = self.pos
10305              _tmp = match_string("*")
10306              _tmp = _tmp ? nil : true
10307              self.pos = _save9
10308              unless _tmp
10309                self.pos = _save8
10310                break
10311              end
10312              _tmp = apply(:_Inline)
10313              b = @result
10314              unless _tmp
10315                self.pos = _save8
10316                break
10317              end
10318              @result = begin;  a << b ; end
10319              _tmp = true
10320              unless _tmp
10321                self.pos = _save8
10322              end
10323              break
10324            end # end sequence
10325
10326            break if _tmp
10327            self.pos = _save7
10328
10329            _save10 = self.pos
10330            while true # sequence
10331              _tmp = apply(:_StrongStar)
10332              b = @result
10333              unless _tmp
10334                self.pos = _save10
10335                break
10336              end
10337              @result = begin;  a << b ; end
10338              _tmp = true
10339              unless _tmp
10340                self.pos = _save10
10341              end
10342              break
10343            end # end sequence
10344
10345            break if _tmp
10346            self.pos = _save7
10347            break
10348          end # end choice
10349
10350          break unless _tmp
10351        end
10352        _tmp = true
10353      else
10354        self.pos = _save2
10355      end
10356      unless _tmp
10357        self.pos = _save
10358        break
10359      end
10360      _tmp = match_string("*")
10361      unless _tmp
10362        self.pos = _save
10363        break
10364      end
10365      @result = begin;  emphasis a.join ; end
10366      _tmp = true
10367      unless _tmp
10368        self.pos = _save
10369      end
10370      break
10371    end # end sequence
10372
10373    set_failed_rule :_EmphStar unless _tmp
10374    return _tmp
10375  end
10376
10377  # EmphUl = "_" !@Whitespace @StartList:a (!"_" Inline:b { a << b } | StrongUl:b { a << b })+ "_" { emphasis a.join }
10378  def _EmphUl
10379
10380    _save = self.pos
10381    while true # sequence
10382      _tmp = match_string("_")
10383      unless _tmp
10384        self.pos = _save
10385        break
10386      end
10387      _save1 = self.pos
10388      _tmp = _Whitespace()
10389      _tmp = _tmp ? nil : true
10390      self.pos = _save1
10391      unless _tmp
10392        self.pos = _save
10393        break
10394      end
10395      _tmp = _StartList()
10396      a = @result
10397      unless _tmp
10398        self.pos = _save
10399        break
10400      end
10401      _save2 = self.pos
10402
10403      _save3 = self.pos
10404      while true # choice
10405
10406        _save4 = self.pos
10407        while true # sequence
10408          _save5 = self.pos
10409          _tmp = match_string("_")
10410          _tmp = _tmp ? nil : true
10411          self.pos = _save5
10412          unless _tmp
10413            self.pos = _save4
10414            break
10415          end
10416          _tmp = apply(:_Inline)
10417          b = @result
10418          unless _tmp
10419            self.pos = _save4
10420            break
10421          end
10422          @result = begin;  a << b ; end
10423          _tmp = true
10424          unless _tmp
10425            self.pos = _save4
10426          end
10427          break
10428        end # end sequence
10429
10430        break if _tmp
10431        self.pos = _save3
10432
10433        _save6 = self.pos
10434        while true # sequence
10435          _tmp = apply(:_StrongUl)
10436          b = @result
10437          unless _tmp
10438            self.pos = _save6
10439            break
10440          end
10441          @result = begin;  a << b ; end
10442          _tmp = true
10443          unless _tmp
10444            self.pos = _save6
10445          end
10446          break
10447        end # end sequence
10448
10449        break if _tmp
10450        self.pos = _save3
10451        break
10452      end # end choice
10453
10454      if _tmp
10455        while true
10456
10457          _save7 = self.pos
10458          while true # choice
10459
10460            _save8 = self.pos
10461            while true # sequence
10462              _save9 = self.pos
10463              _tmp = match_string("_")
10464              _tmp = _tmp ? nil : true
10465              self.pos = _save9
10466              unless _tmp
10467                self.pos = _save8
10468                break
10469              end
10470              _tmp = apply(:_Inline)
10471              b = @result
10472              unless _tmp
10473                self.pos = _save8
10474                break
10475              end
10476              @result = begin;  a << b ; end
10477              _tmp = true
10478              unless _tmp
10479                self.pos = _save8
10480              end
10481              break
10482            end # end sequence
10483
10484            break if _tmp
10485            self.pos = _save7
10486
10487            _save10 = self.pos
10488            while true # sequence
10489              _tmp = apply(:_StrongUl)
10490              b = @result
10491              unless _tmp
10492                self.pos = _save10
10493                break
10494              end
10495              @result = begin;  a << b ; end
10496              _tmp = true
10497              unless _tmp
10498                self.pos = _save10
10499              end
10500              break
10501            end # end sequence
10502
10503            break if _tmp
10504            self.pos = _save7
10505            break
10506          end # end choice
10507
10508          break unless _tmp
10509        end
10510        _tmp = true
10511      else
10512        self.pos = _save2
10513      end
10514      unless _tmp
10515        self.pos = _save
10516        break
10517      end
10518      _tmp = match_string("_")
10519      unless _tmp
10520        self.pos = _save
10521        break
10522      end
10523      @result = begin;  emphasis a.join ; end
10524      _tmp = true
10525      unless _tmp
10526        self.pos = _save
10527      end
10528      break
10529    end # end sequence
10530
10531    set_failed_rule :_EmphUl unless _tmp
10532    return _tmp
10533  end
10534
10535  # Strong = (StrongStar | StrongUl)
10536  def _Strong
10537
10538    _save = self.pos
10539    while true # choice
10540      _tmp = apply(:_StrongStar)
10541      break if _tmp
10542      self.pos = _save
10543      _tmp = apply(:_StrongUl)
10544      break if _tmp
10545      self.pos = _save
10546      break
10547    end # end choice
10548
10549    set_failed_rule :_Strong unless _tmp
10550    return _tmp
10551  end
10552
10553  # StrongStar = "**" !@Whitespace @StartList:a (!"**" Inline:b { a << b })+ "**" { strong a.join }
10554  def _StrongStar
10555
10556    _save = self.pos
10557    while true # sequence
10558      _tmp = match_string("**")
10559      unless _tmp
10560        self.pos = _save
10561        break
10562      end
10563      _save1 = self.pos
10564      _tmp = _Whitespace()
10565      _tmp = _tmp ? nil : true
10566      self.pos = _save1
10567      unless _tmp
10568        self.pos = _save
10569        break
10570      end
10571      _tmp = _StartList()
10572      a = @result
10573      unless _tmp
10574        self.pos = _save
10575        break
10576      end
10577      _save2 = self.pos
10578
10579      _save3 = self.pos
10580      while true # sequence
10581        _save4 = self.pos
10582        _tmp = match_string("**")
10583        _tmp = _tmp ? nil : true
10584        self.pos = _save4
10585        unless _tmp
10586          self.pos = _save3
10587          break
10588        end
10589        _tmp = apply(:_Inline)
10590        b = @result
10591        unless _tmp
10592          self.pos = _save3
10593          break
10594        end
10595        @result = begin;  a << b ; end
10596        _tmp = true
10597        unless _tmp
10598          self.pos = _save3
10599        end
10600        break
10601      end # end sequence
10602
10603      if _tmp
10604        while true
10605
10606          _save5 = self.pos
10607          while true # sequence
10608            _save6 = self.pos
10609            _tmp = match_string("**")
10610            _tmp = _tmp ? nil : true
10611            self.pos = _save6
10612            unless _tmp
10613              self.pos = _save5
10614              break
10615            end
10616            _tmp = apply(:_Inline)
10617            b = @result
10618            unless _tmp
10619              self.pos = _save5
10620              break
10621            end
10622            @result = begin;  a << b ; end
10623            _tmp = true
10624            unless _tmp
10625              self.pos = _save5
10626            end
10627            break
10628          end # end sequence
10629
10630          break unless _tmp
10631        end
10632        _tmp = true
10633      else
10634        self.pos = _save2
10635      end
10636      unless _tmp
10637        self.pos = _save
10638        break
10639      end
10640      _tmp = match_string("**")
10641      unless _tmp
10642        self.pos = _save
10643        break
10644      end
10645      @result = begin;  strong a.join ; end
10646      _tmp = true
10647      unless _tmp
10648        self.pos = _save
10649      end
10650      break
10651    end # end sequence
10652
10653    set_failed_rule :_StrongStar unless _tmp
10654    return _tmp
10655  end
10656
10657  # StrongUl = "__" !@Whitespace @StartList:a (!"__" Inline:b { a << b })+ "__" { strong a.join }
10658  def _StrongUl
10659
10660    _save = self.pos
10661    while true # sequence
10662      _tmp = match_string("__")
10663      unless _tmp
10664        self.pos = _save
10665        break
10666      end
10667      _save1 = self.pos
10668      _tmp = _Whitespace()
10669      _tmp = _tmp ? nil : true
10670      self.pos = _save1
10671      unless _tmp
10672        self.pos = _save
10673        break
10674      end
10675      _tmp = _StartList()
10676      a = @result
10677      unless _tmp
10678        self.pos = _save
10679        break
10680      end
10681      _save2 = self.pos
10682
10683      _save3 = self.pos
10684      while true # sequence
10685        _save4 = self.pos
10686        _tmp = match_string("__")
10687        _tmp = _tmp ? nil : true
10688        self.pos = _save4
10689        unless _tmp
10690          self.pos = _save3
10691          break
10692        end
10693        _tmp = apply(:_Inline)
10694        b = @result
10695        unless _tmp
10696          self.pos = _save3
10697          break
10698        end
10699        @result = begin;  a << b ; end
10700        _tmp = true
10701        unless _tmp
10702          self.pos = _save3
10703        end
10704        break
10705      end # end sequence
10706
10707      if _tmp
10708        while true
10709
10710          _save5 = self.pos
10711          while true # sequence
10712            _save6 = self.pos
10713            _tmp = match_string("__")
10714            _tmp = _tmp ? nil : true
10715            self.pos = _save6
10716            unless _tmp
10717              self.pos = _save5
10718              break
10719            end
10720            _tmp = apply(:_Inline)
10721            b = @result
10722            unless _tmp
10723              self.pos = _save5
10724              break
10725            end
10726            @result = begin;  a << b ; end
10727            _tmp = true
10728            unless _tmp
10729              self.pos = _save5
10730            end
10731            break
10732          end # end sequence
10733
10734          break unless _tmp
10735        end
10736        _tmp = true
10737      else
10738        self.pos = _save2
10739      end
10740      unless _tmp
10741        self.pos = _save
10742        break
10743      end
10744      _tmp = match_string("__")
10745      unless _tmp
10746        self.pos = _save
10747        break
10748      end
10749      @result = begin;  strong a.join ; end
10750      _tmp = true
10751      unless _tmp
10752        self.pos = _save
10753      end
10754      break
10755    end # end sequence
10756
10757    set_failed_rule :_StrongUl unless _tmp
10758    return _tmp
10759  end
10760
10761  # Strike = &{ strike? } "~~" !@Whitespace @StartList:a (!"~~" Inline:b { a << b })+ "~~" { strike a.join }
10762  def _Strike
10763
10764    _save = self.pos
10765    while true # sequence
10766      _save1 = self.pos
10767      _tmp = begin;  strike? ; end
10768      self.pos = _save1
10769      unless _tmp
10770        self.pos = _save
10771        break
10772      end
10773      _tmp = match_string("~~")
10774      unless _tmp
10775        self.pos = _save
10776        break
10777      end
10778      _save2 = self.pos
10779      _tmp = _Whitespace()
10780      _tmp = _tmp ? nil : true
10781      self.pos = _save2
10782      unless _tmp
10783        self.pos = _save
10784        break
10785      end
10786      _tmp = _StartList()
10787      a = @result
10788      unless _tmp
10789        self.pos = _save
10790        break
10791      end
10792      _save3 = self.pos
10793
10794      _save4 = self.pos
10795      while true # sequence
10796        _save5 = self.pos
10797        _tmp = match_string("~~")
10798        _tmp = _tmp ? nil : true
10799        self.pos = _save5
10800        unless _tmp
10801          self.pos = _save4
10802          break
10803        end
10804        _tmp = apply(:_Inline)
10805        b = @result
10806        unless _tmp
10807          self.pos = _save4
10808          break
10809        end
10810        @result = begin;  a << b ; end
10811        _tmp = true
10812        unless _tmp
10813          self.pos = _save4
10814        end
10815        break
10816      end # end sequence
10817
10818      if _tmp
10819        while true
10820
10821          _save6 = self.pos
10822          while true # sequence
10823            _save7 = self.pos
10824            _tmp = match_string("~~")
10825            _tmp = _tmp ? nil : true
10826            self.pos = _save7
10827            unless _tmp
10828              self.pos = _save6
10829              break
10830            end
10831            _tmp = apply(:_Inline)
10832            b = @result
10833            unless _tmp
10834              self.pos = _save6
10835              break
10836            end
10837            @result = begin;  a << b ; end
10838            _tmp = true
10839            unless _tmp
10840              self.pos = _save6
10841            end
10842            break
10843          end # end sequence
10844
10845          break unless _tmp
10846        end
10847        _tmp = true
10848      else
10849        self.pos = _save3
10850      end
10851      unless _tmp
10852        self.pos = _save
10853        break
10854      end
10855      _tmp = match_string("~~")
10856      unless _tmp
10857        self.pos = _save
10858        break
10859      end
10860      @result = begin;  strike a.join ; end
10861      _tmp = true
10862      unless _tmp
10863        self.pos = _save
10864      end
10865      break
10866    end # end sequence
10867
10868    set_failed_rule :_Strike unless _tmp
10869    return _tmp
10870  end
10871
10872  # Image = "!" (ExplicitLink | ReferenceLink):a { "rdoc-image:#{a[/\[(.*)\]/, 1]}" }
10873  def _Image
10874
10875    _save = self.pos
10876    while true # sequence
10877      _tmp = match_string("!")
10878      unless _tmp
10879        self.pos = _save
10880        break
10881      end
10882
10883      _save1 = self.pos
10884      while true # choice
10885        _tmp = apply(:_ExplicitLink)
10886        break if _tmp
10887        self.pos = _save1
10888        _tmp = apply(:_ReferenceLink)
10889        break if _tmp
10890        self.pos = _save1
10891        break
10892      end # end choice
10893
10894      a = @result
10895      unless _tmp
10896        self.pos = _save
10897        break
10898      end
10899      @result = begin;  "rdoc-image:#{a[/\[(.*)\]/, 1]}" ; end
10900      _tmp = true
10901      unless _tmp
10902        self.pos = _save
10903      end
10904      break
10905    end # end sequence
10906
10907    set_failed_rule :_Image unless _tmp
10908    return _tmp
10909  end
10910
10911  # Link = (ExplicitLink | ReferenceLink | AutoLink)
10912  def _Link
10913
10914    _save = self.pos
10915    while true # choice
10916      _tmp = apply(:_ExplicitLink)
10917      break if _tmp
10918      self.pos = _save
10919      _tmp = apply(:_ReferenceLink)
10920      break if _tmp
10921      self.pos = _save
10922      _tmp = apply(:_AutoLink)
10923      break if _tmp
10924      self.pos = _save
10925      break
10926    end # end choice
10927
10928    set_failed_rule :_Link unless _tmp
10929    return _tmp
10930  end
10931
10932  # ReferenceLink = (ReferenceLinkDouble | ReferenceLinkSingle)
10933  def _ReferenceLink
10934
10935    _save = self.pos
10936    while true # choice
10937      _tmp = apply(:_ReferenceLinkDouble)
10938      break if _tmp
10939      self.pos = _save
10940      _tmp = apply(:_ReferenceLinkSingle)
10941      break if _tmp
10942      self.pos = _save
10943      break
10944    end # end choice
10945
10946    set_failed_rule :_ReferenceLink unless _tmp
10947    return _tmp
10948  end
10949
10950  # ReferenceLinkDouble = Label:content < Spnl > !"[]" Label:label { link_to content, label, text }
10951  def _ReferenceLinkDouble
10952
10953    _save = self.pos
10954    while true # sequence
10955      _tmp = apply(:_Label)
10956      content = @result
10957      unless _tmp
10958        self.pos = _save
10959        break
10960      end
10961      _text_start = self.pos
10962      _tmp = apply(:_Spnl)
10963      if _tmp
10964        text = get_text(_text_start)
10965      end
10966      unless _tmp
10967        self.pos = _save
10968        break
10969      end
10970      _save1 = self.pos
10971      _tmp = match_string("[]")
10972      _tmp = _tmp ? nil : true
10973      self.pos = _save1
10974      unless _tmp
10975        self.pos = _save
10976        break
10977      end
10978      _tmp = apply(:_Label)
10979      label = @result
10980      unless _tmp
10981        self.pos = _save
10982        break
10983      end
10984      @result = begin;  link_to content, label, text ; end
10985      _tmp = true
10986      unless _tmp
10987        self.pos = _save
10988      end
10989      break
10990    end # end sequence
10991
10992    set_failed_rule :_ReferenceLinkDouble unless _tmp
10993    return _tmp
10994  end
10995
10996  # ReferenceLinkSingle = Label:content < (Spnl "[]")? > { link_to content, content, text }
10997  def _ReferenceLinkSingle
10998
10999    _save = self.pos
11000    while true # sequence
11001      _tmp = apply(:_Label)
11002      content = @result
11003      unless _tmp
11004        self.pos = _save
11005        break
11006      end
11007      _text_start = self.pos
11008      _save1 = self.pos
11009
11010      _save2 = self.pos
11011      while true # sequence
11012        _tmp = apply(:_Spnl)
11013        unless _tmp
11014          self.pos = _save2
11015          break
11016        end
11017        _tmp = match_string("[]")
11018        unless _tmp
11019          self.pos = _save2
11020        end
11021        break
11022      end # end sequence
11023
11024      unless _tmp
11025        _tmp = true
11026        self.pos = _save1
11027      end
11028      if _tmp
11029        text = get_text(_text_start)
11030      end
11031      unless _tmp
11032        self.pos = _save
11033        break
11034      end
11035      @result = begin;  link_to content, content, text ; end
11036      _tmp = true
11037      unless _tmp
11038        self.pos = _save
11039      end
11040      break
11041    end # end sequence
11042
11043    set_failed_rule :_ReferenceLinkSingle unless _tmp
11044    return _tmp
11045  end
11046
11047  # ExplicitLink = Label:l "(" @Sp Source:s Spnl Title @Sp ")" { "{#{l}}[#{s}]" }
11048  def _ExplicitLink
11049
11050    _save = self.pos
11051    while true # sequence
11052      _tmp = apply(:_Label)
11053      l = @result
11054      unless _tmp
11055        self.pos = _save
11056        break
11057      end
11058      _tmp = match_string("(")
11059      unless _tmp
11060        self.pos = _save
11061        break
11062      end
11063      _tmp = _Sp()
11064      unless _tmp
11065        self.pos = _save
11066        break
11067      end
11068      _tmp = apply(:_Source)
11069      s = @result
11070      unless _tmp
11071        self.pos = _save
11072        break
11073      end
11074      _tmp = apply(:_Spnl)
11075      unless _tmp
11076        self.pos = _save
11077        break
11078      end
11079      _tmp = apply(:_Title)
11080      unless _tmp
11081        self.pos = _save
11082        break
11083      end
11084      _tmp = _Sp()
11085      unless _tmp
11086        self.pos = _save
11087        break
11088      end
11089      _tmp = match_string(")")
11090      unless _tmp
11091        self.pos = _save
11092        break
11093      end
11094      @result = begin;  "{#{l}}[#{s}]" ; end
11095      _tmp = true
11096      unless _tmp
11097        self.pos = _save
11098      end
11099      break
11100    end # end sequence
11101
11102    set_failed_rule :_ExplicitLink unless _tmp
11103    return _tmp
11104  end
11105
11106  # Source = ("<" < SourceContents > ">" | < SourceContents >) { text }
11107  def _Source
11108
11109    _save = self.pos
11110    while true # sequence
11111
11112      _save1 = self.pos
11113      while true # choice
11114
11115        _save2 = self.pos
11116        while true # sequence
11117          _tmp = match_string("<")
11118          unless _tmp
11119            self.pos = _save2
11120            break
11121          end
11122          _text_start = self.pos
11123          _tmp = apply(:_SourceContents)
11124          if _tmp
11125            text = get_text(_text_start)
11126          end
11127          unless _tmp
11128            self.pos = _save2
11129            break
11130          end
11131          _tmp = match_string(">")
11132          unless _tmp
11133            self.pos = _save2
11134          end
11135          break
11136        end # end sequence
11137
11138        break if _tmp
11139        self.pos = _save1
11140        _text_start = self.pos
11141        _tmp = apply(:_SourceContents)
11142        if _tmp
11143          text = get_text(_text_start)
11144        end
11145        break if _tmp
11146        self.pos = _save1
11147        break
11148      end # end choice
11149
11150      unless _tmp
11151        self.pos = _save
11152        break
11153      end
11154      @result = begin;  text ; end
11155      _tmp = true
11156      unless _tmp
11157        self.pos = _save
11158      end
11159      break
11160    end # end sequence
11161
11162    set_failed_rule :_Source unless _tmp
11163    return _tmp
11164  end
11165
11166  # SourceContents = ((!"(" !")" !">" Nonspacechar)+ | "(" SourceContents ")")*
11167  def _SourceContents
11168    while true
11169
11170      _save1 = self.pos
11171      while true # choice
11172        _save2 = self.pos
11173
11174        _save3 = self.pos
11175        while true # sequence
11176          _save4 = self.pos
11177          _tmp = match_string("(")
11178          _tmp = _tmp ? nil : true
11179          self.pos = _save4
11180          unless _tmp
11181            self.pos = _save3
11182            break
11183          end
11184          _save5 = self.pos
11185          _tmp = match_string(")")
11186          _tmp = _tmp ? nil : true
11187          self.pos = _save5
11188          unless _tmp
11189            self.pos = _save3
11190            break
11191          end
11192          _save6 = self.pos
11193          _tmp = match_string(">")
11194          _tmp = _tmp ? nil : true
11195          self.pos = _save6
11196          unless _tmp
11197            self.pos = _save3
11198            break
11199          end
11200          _tmp = apply(:_Nonspacechar)
11201          unless _tmp
11202            self.pos = _save3
11203          end
11204          break
11205        end # end sequence
11206
11207        if _tmp
11208          while true
11209
11210            _save7 = self.pos
11211            while true # sequence
11212              _save8 = self.pos
11213              _tmp = match_string("(")
11214              _tmp = _tmp ? nil : true
11215              self.pos = _save8
11216              unless _tmp
11217                self.pos = _save7
11218                break
11219              end
11220              _save9 = self.pos
11221              _tmp = match_string(")")
11222              _tmp = _tmp ? nil : true
11223              self.pos = _save9
11224              unless _tmp
11225                self.pos = _save7
11226                break
11227              end
11228              _save10 = self.pos
11229              _tmp = match_string(">")
11230              _tmp = _tmp ? nil : true
11231              self.pos = _save10
11232              unless _tmp
11233                self.pos = _save7
11234                break
11235              end
11236              _tmp = apply(:_Nonspacechar)
11237              unless _tmp
11238                self.pos = _save7
11239              end
11240              break
11241            end # end sequence
11242
11243            break unless _tmp
11244          end
11245          _tmp = true
11246        else
11247          self.pos = _save2
11248        end
11249        break if _tmp
11250        self.pos = _save1
11251
11252        _save11 = self.pos
11253        while true # sequence
11254          _tmp = match_string("(")
11255          unless _tmp
11256            self.pos = _save11
11257            break
11258          end
11259          _tmp = apply(:_SourceContents)
11260          unless _tmp
11261            self.pos = _save11
11262            break
11263          end
11264          _tmp = match_string(")")
11265          unless _tmp
11266            self.pos = _save11
11267          end
11268          break
11269        end # end sequence
11270
11271        break if _tmp
11272        self.pos = _save1
11273        break
11274      end # end choice
11275
11276      break unless _tmp
11277    end
11278    _tmp = true
11279    set_failed_rule :_SourceContents unless _tmp
11280    return _tmp
11281  end
11282
11283  # Title = (TitleSingle | TitleDouble | ""):a { a }
11284  def _Title
11285
11286    _save = self.pos
11287    while true # sequence
11288
11289      _save1 = self.pos
11290      while true # choice
11291        _tmp = apply(:_TitleSingle)
11292        break if _tmp
11293        self.pos = _save1
11294        _tmp = apply(:_TitleDouble)
11295        break if _tmp
11296        self.pos = _save1
11297        _tmp = match_string("")
11298        break if _tmp
11299        self.pos = _save1
11300        break
11301      end # end choice
11302
11303      a = @result
11304      unless _tmp
11305        self.pos = _save
11306        break
11307      end
11308      @result = begin;  a ; end
11309      _tmp = true
11310      unless _tmp
11311        self.pos = _save
11312      end
11313      break
11314    end # end sequence
11315
11316    set_failed_rule :_Title unless _tmp
11317    return _tmp
11318  end
11319
11320  # TitleSingle = "'" (!("'" @Sp (")" | @Newline)) .)* "'"
11321  def _TitleSingle
11322
11323    _save = self.pos
11324    while true # sequence
11325      _tmp = match_string("'")
11326      unless _tmp
11327        self.pos = _save
11328        break
11329      end
11330      while true
11331
11332        _save2 = self.pos
11333        while true # sequence
11334          _save3 = self.pos
11335
11336          _save4 = self.pos
11337          while true # sequence
11338            _tmp = match_string("'")
11339            unless _tmp
11340              self.pos = _save4
11341              break
11342            end
11343            _tmp = _Sp()
11344            unless _tmp
11345              self.pos = _save4
11346              break
11347            end
11348
11349            _save5 = self.pos
11350            while true # choice
11351              _tmp = match_string(")")
11352              break if _tmp
11353              self.pos = _save5
11354              _tmp = _Newline()
11355              break if _tmp
11356              self.pos = _save5
11357              break
11358            end # end choice
11359
11360            unless _tmp
11361              self.pos = _save4
11362            end
11363            break
11364          end # end sequence
11365
11366          _tmp = _tmp ? nil : true
11367          self.pos = _save3
11368          unless _tmp
11369            self.pos = _save2
11370            break
11371          end
11372          _tmp = get_byte
11373          unless _tmp
11374            self.pos = _save2
11375          end
11376          break
11377        end # end sequence
11378
11379        break unless _tmp
11380      end
11381      _tmp = true
11382      unless _tmp
11383        self.pos = _save
11384        break
11385      end
11386      _tmp = match_string("'")
11387      unless _tmp
11388        self.pos = _save
11389      end
11390      break
11391    end # end sequence
11392
11393    set_failed_rule :_TitleSingle unless _tmp
11394    return _tmp
11395  end
11396
11397  # TitleDouble = "\"" (!("\"" @Sp (")" | @Newline)) .)* "\""
11398  def _TitleDouble
11399
11400    _save = self.pos
11401    while true # sequence
11402      _tmp = match_string("\"")
11403      unless _tmp
11404        self.pos = _save
11405        break
11406      end
11407      while true
11408
11409        _save2 = self.pos
11410        while true # sequence
11411          _save3 = self.pos
11412
11413          _save4 = self.pos
11414          while true # sequence
11415            _tmp = match_string("\"")
11416            unless _tmp
11417              self.pos = _save4
11418              break
11419            end
11420            _tmp = _Sp()
11421            unless _tmp
11422              self.pos = _save4
11423              break
11424            end
11425
11426            _save5 = self.pos
11427            while true # choice
11428              _tmp = match_string(")")
11429              break if _tmp
11430              self.pos = _save5
11431              _tmp = _Newline()
11432              break if _tmp
11433              self.pos = _save5
11434              break
11435            end # end choice
11436
11437            unless _tmp
11438              self.pos = _save4
11439            end
11440            break
11441          end # end sequence
11442
11443          _tmp = _tmp ? nil : true
11444          self.pos = _save3
11445          unless _tmp
11446            self.pos = _save2
11447            break
11448          end
11449          _tmp = get_byte
11450          unless _tmp
11451            self.pos = _save2
11452          end
11453          break
11454        end # end sequence
11455
11456        break unless _tmp
11457      end
11458      _tmp = true
11459      unless _tmp
11460        self.pos = _save
11461        break
11462      end
11463      _tmp = match_string("\"")
11464      unless _tmp
11465        self.pos = _save
11466      end
11467      break
11468    end # end sequence
11469
11470    set_failed_rule :_TitleDouble unless _tmp
11471    return _tmp
11472  end
11473
11474  # AutoLink = (AutoLinkUrl | AutoLinkEmail)
11475  def _AutoLink
11476
11477    _save = self.pos
11478    while true # choice
11479      _tmp = apply(:_AutoLinkUrl)
11480      break if _tmp
11481      self.pos = _save
11482      _tmp = apply(:_AutoLinkEmail)
11483      break if _tmp
11484      self.pos = _save
11485      break
11486    end # end choice
11487
11488    set_failed_rule :_AutoLink unless _tmp
11489    return _tmp
11490  end
11491
11492  # AutoLinkUrl = "<" < /[A-Za-z]+/ "://" (!@Newline !">" .)+ > ">" { text }
11493  def _AutoLinkUrl
11494
11495    _save = self.pos
11496    while true # sequence
11497      _tmp = match_string("<")
11498      unless _tmp
11499        self.pos = _save
11500        break
11501      end
11502      _text_start = self.pos
11503
11504      _save1 = self.pos
11505      while true # sequence
11506        _tmp = scan(/\A(?-mix:[A-Za-z]+)/)
11507        unless _tmp
11508          self.pos = _save1
11509          break
11510        end
11511        _tmp = match_string("://")
11512        unless _tmp
11513          self.pos = _save1
11514          break
11515        end
11516        _save2 = self.pos
11517
11518        _save3 = self.pos
11519        while true # sequence
11520          _save4 = self.pos
11521          _tmp = _Newline()
11522          _tmp = _tmp ? nil : true
11523          self.pos = _save4
11524          unless _tmp
11525            self.pos = _save3
11526            break
11527          end
11528          _save5 = self.pos
11529          _tmp = match_string(">")
11530          _tmp = _tmp ? nil : true
11531          self.pos = _save5
11532          unless _tmp
11533            self.pos = _save3
11534            break
11535          end
11536          _tmp = get_byte
11537          unless _tmp
11538            self.pos = _save3
11539          end
11540          break
11541        end # end sequence
11542
11543        if _tmp
11544          while true
11545
11546            _save6 = self.pos
11547            while true # sequence
11548              _save7 = self.pos
11549              _tmp = _Newline()
11550              _tmp = _tmp ? nil : true
11551              self.pos = _save7
11552              unless _tmp
11553                self.pos = _save6
11554                break
11555              end
11556              _save8 = self.pos
11557              _tmp = match_string(">")
11558              _tmp = _tmp ? nil : true
11559              self.pos = _save8
11560              unless _tmp
11561                self.pos = _save6
11562                break
11563              end
11564              _tmp = get_byte
11565              unless _tmp
11566                self.pos = _save6
11567              end
11568              break
11569            end # end sequence
11570
11571            break unless _tmp
11572          end
11573          _tmp = true
11574        else
11575          self.pos = _save2
11576        end
11577        unless _tmp
11578          self.pos = _save1
11579        end
11580        break
11581      end # end sequence
11582
11583      if _tmp
11584        text = get_text(_text_start)
11585      end
11586      unless _tmp
11587        self.pos = _save
11588        break
11589      end
11590      _tmp = match_string(">")
11591      unless _tmp
11592        self.pos = _save
11593        break
11594      end
11595      @result = begin;  text ; end
11596      _tmp = true
11597      unless _tmp
11598        self.pos = _save
11599      end
11600      break
11601    end # end sequence
11602
11603    set_failed_rule :_AutoLinkUrl unless _tmp
11604    return _tmp
11605  end
11606
11607  # AutoLinkEmail = "<" "mailto:"? < /[\w+.\/!%~$-]+/i "@" (!@Newline !">" .)+ > ">" { "mailto:#{text}" }
11608  def _AutoLinkEmail
11609
11610    _save = self.pos
11611    while true # sequence
11612      _tmp = match_string("<")
11613      unless _tmp
11614        self.pos = _save
11615        break
11616      end
11617      _save1 = self.pos
11618      _tmp = match_string("mailto:")
11619      unless _tmp
11620        _tmp = true
11621        self.pos = _save1
11622      end
11623      unless _tmp
11624        self.pos = _save
11625        break
11626      end
11627      _text_start = self.pos
11628
11629      _save2 = self.pos
11630      while true # sequence
11631        _tmp = scan(/\A(?i-mx:[\w+.\/!%~$-]+)/)
11632        unless _tmp
11633          self.pos = _save2
11634          break
11635        end
11636        _tmp = match_string("@")
11637        unless _tmp
11638          self.pos = _save2
11639          break
11640        end
11641        _save3 = self.pos
11642
11643        _save4 = self.pos
11644        while true # sequence
11645          _save5 = self.pos
11646          _tmp = _Newline()
11647          _tmp = _tmp ? nil : true
11648          self.pos = _save5
11649          unless _tmp
11650            self.pos = _save4
11651            break
11652          end
11653          _save6 = self.pos
11654          _tmp = match_string(">")
11655          _tmp = _tmp ? nil : true
11656          self.pos = _save6
11657          unless _tmp
11658            self.pos = _save4
11659            break
11660          end
11661          _tmp = get_byte
11662          unless _tmp
11663            self.pos = _save4
11664          end
11665          break
11666        end # end sequence
11667
11668        if _tmp
11669          while true
11670
11671            _save7 = self.pos
11672            while true # sequence
11673              _save8 = self.pos
11674              _tmp = _Newline()
11675              _tmp = _tmp ? nil : true
11676              self.pos = _save8
11677              unless _tmp
11678                self.pos = _save7
11679                break
11680              end
11681              _save9 = self.pos
11682              _tmp = match_string(">")
11683              _tmp = _tmp ? nil : true
11684              self.pos = _save9
11685              unless _tmp
11686                self.pos = _save7
11687                break
11688              end
11689              _tmp = get_byte
11690              unless _tmp
11691                self.pos = _save7
11692              end
11693              break
11694            end # end sequence
11695
11696            break unless _tmp
11697          end
11698          _tmp = true
11699        else
11700          self.pos = _save3
11701        end
11702        unless _tmp
11703          self.pos = _save2
11704        end
11705        break
11706      end # end sequence
11707
11708      if _tmp
11709        text = get_text(_text_start)
11710      end
11711      unless _tmp
11712        self.pos = _save
11713        break
11714      end
11715      _tmp = match_string(">")
11716      unless _tmp
11717        self.pos = _save
11718        break
11719      end
11720      @result = begin;  "mailto:#{text}" ; end
11721      _tmp = true
11722      unless _tmp
11723        self.pos = _save
11724      end
11725      break
11726    end # end sequence
11727
11728    set_failed_rule :_AutoLinkEmail unless _tmp
11729    return _tmp
11730  end
11731
11732  # Reference = @NonindentSpace !"[]" Label:label ":" Spnl RefSrc:link RefTitle @BlankLine+ { # TODO use title               reference label, link               nil             }
11733  def _Reference
11734
11735    _save = self.pos
11736    while true # sequence
11737      _tmp = _NonindentSpace()
11738      unless _tmp
11739        self.pos = _save
11740        break
11741      end
11742      _save1 = self.pos
11743      _tmp = match_string("[]")
11744      _tmp = _tmp ? nil : true
11745      self.pos = _save1
11746      unless _tmp
11747        self.pos = _save
11748        break
11749      end
11750      _tmp = apply(:_Label)
11751      label = @result
11752      unless _tmp
11753        self.pos = _save
11754        break
11755      end
11756      _tmp = match_string(":")
11757      unless _tmp
11758        self.pos = _save
11759        break
11760      end
11761      _tmp = apply(:_Spnl)
11762      unless _tmp
11763        self.pos = _save
11764        break
11765      end
11766      _tmp = apply(:_RefSrc)
11767      link = @result
11768      unless _tmp
11769        self.pos = _save
11770        break
11771      end
11772      _tmp = apply(:_RefTitle)
11773      unless _tmp
11774        self.pos = _save
11775        break
11776      end
11777      _save2 = self.pos
11778      _tmp = _BlankLine()
11779      if _tmp
11780        while true
11781          _tmp = _BlankLine()
11782          break unless _tmp
11783        end
11784        _tmp = true
11785      else
11786        self.pos = _save2
11787      end
11788      unless _tmp
11789        self.pos = _save
11790        break
11791      end
11792      @result = begin;  # TODO use title
11793              reference label, link
11794              nil
11795            ; end
11796      _tmp = true
11797      unless _tmp
11798        self.pos = _save
11799      end
11800      break
11801    end # end sequence
11802
11803    set_failed_rule :_Reference unless _tmp
11804    return _tmp
11805  end
11806
11807  # Label = "[" (!"^" &{ notes? } | &. &{ !notes? }) @StartList:a (!"]" Inline:l { a << l })* "]" { a.join.gsub(/\s+/, ' ') }
11808  def _Label
11809
11810    _save = self.pos
11811    while true # sequence
11812      _tmp = match_string("[")
11813      unless _tmp
11814        self.pos = _save
11815        break
11816      end
11817
11818      _save1 = self.pos
11819      while true # choice
11820
11821        _save2 = self.pos
11822        while true # sequence
11823          _save3 = self.pos
11824          _tmp = match_string("^")
11825          _tmp = _tmp ? nil : true
11826          self.pos = _save3
11827          unless _tmp
11828            self.pos = _save2
11829            break
11830          end
11831          _save4 = self.pos
11832          _tmp = begin;  notes? ; end
11833          self.pos = _save4
11834          unless _tmp
11835            self.pos = _save2
11836          end
11837          break
11838        end # end sequence
11839
11840        break if _tmp
11841        self.pos = _save1
11842
11843        _save5 = self.pos
11844        while true # sequence
11845          _save6 = self.pos
11846          _tmp = get_byte
11847          self.pos = _save6
11848          unless _tmp
11849            self.pos = _save5
11850            break
11851          end
11852          _save7 = self.pos
11853          _tmp = begin;  !notes? ; end
11854          self.pos = _save7
11855          unless _tmp
11856            self.pos = _save5
11857          end
11858          break
11859        end # end sequence
11860
11861        break if _tmp
11862        self.pos = _save1
11863        break
11864      end # end choice
11865
11866      unless _tmp
11867        self.pos = _save
11868        break
11869      end
11870      _tmp = _StartList()
11871      a = @result
11872      unless _tmp
11873        self.pos = _save
11874        break
11875      end
11876      while true
11877
11878        _save9 = self.pos
11879        while true # sequence
11880          _save10 = self.pos
11881          _tmp = match_string("]")
11882          _tmp = _tmp ? nil : true
11883          self.pos = _save10
11884          unless _tmp
11885            self.pos = _save9
11886            break
11887          end
11888          _tmp = apply(:_Inline)
11889          l = @result
11890          unless _tmp
11891            self.pos = _save9
11892            break
11893          end
11894          @result = begin;  a << l ; end
11895          _tmp = true
11896          unless _tmp
11897            self.pos = _save9
11898          end
11899          break
11900        end # end sequence
11901
11902        break unless _tmp
11903      end
11904      _tmp = true
11905      unless _tmp
11906        self.pos = _save
11907        break
11908      end
11909      _tmp = match_string("]")
11910      unless _tmp
11911        self.pos = _save
11912        break
11913      end
11914      @result = begin;  a.join.gsub(/\s+/, ' ') ; end
11915      _tmp = true
11916      unless _tmp
11917        self.pos = _save
11918      end
11919      break
11920    end # end sequence
11921
11922    set_failed_rule :_Label unless _tmp
11923    return _tmp
11924  end
11925
11926  # RefSrc = < Nonspacechar+ > { text }
11927  def _RefSrc
11928
11929    _save = self.pos
11930    while true # sequence
11931      _text_start = self.pos
11932      _save1 = self.pos
11933      _tmp = apply(:_Nonspacechar)
11934      if _tmp
11935        while true
11936          _tmp = apply(:_Nonspacechar)
11937          break unless _tmp
11938        end
11939        _tmp = true
11940      else
11941        self.pos = _save1
11942      end
11943      if _tmp
11944        text = get_text(_text_start)
11945      end
11946      unless _tmp
11947        self.pos = _save
11948        break
11949      end
11950      @result = begin;  text ; end
11951      _tmp = true
11952      unless _tmp
11953        self.pos = _save
11954      end
11955      break
11956    end # end sequence
11957
11958    set_failed_rule :_RefSrc unless _tmp
11959    return _tmp
11960  end
11961
11962  # RefTitle = (RefTitleSingle | RefTitleDouble | RefTitleParens | EmptyTitle)
11963  def _RefTitle
11964
11965    _save = self.pos
11966    while true # choice
11967      _tmp = apply(:_RefTitleSingle)
11968      break if _tmp
11969      self.pos = _save
11970      _tmp = apply(:_RefTitleDouble)
11971      break if _tmp
11972      self.pos = _save
11973      _tmp = apply(:_RefTitleParens)
11974      break if _tmp
11975      self.pos = _save
11976      _tmp = apply(:_EmptyTitle)
11977      break if _tmp
11978      self.pos = _save
11979      break
11980    end # end choice
11981
11982    set_failed_rule :_RefTitle unless _tmp
11983    return _tmp
11984  end
11985
11986  # EmptyTitle = ""
11987  def _EmptyTitle
11988    _tmp = match_string("")
11989    set_failed_rule :_EmptyTitle unless _tmp
11990    return _tmp
11991  end
11992
11993  # RefTitleSingle = Spnl "'" < (!("'" @Sp @Newline | @Newline) .)* > "'" { text }
11994  def _RefTitleSingle
11995
11996    _save = self.pos
11997    while true # sequence
11998      _tmp = apply(:_Spnl)
11999      unless _tmp
12000        self.pos = _save
12001        break
12002      end
12003      _tmp = match_string("'")
12004      unless _tmp
12005        self.pos = _save
12006        break
12007      end
12008      _text_start = self.pos
12009      while true
12010
12011        _save2 = self.pos
12012        while true # sequence
12013          _save3 = self.pos
12014
12015          _save4 = self.pos
12016          while true # choice
12017
12018            _save5 = self.pos
12019            while true # sequence
12020              _tmp = match_string("'")
12021              unless _tmp
12022                self.pos = _save5
12023                break
12024              end
12025              _tmp = _Sp()
12026              unless _tmp
12027                self.pos = _save5
12028                break
12029              end
12030              _tmp = _Newline()
12031              unless _tmp
12032                self.pos = _save5
12033              end
12034              break
12035            end # end sequence
12036
12037            break if _tmp
12038            self.pos = _save4
12039            _tmp = _Newline()
12040            break if _tmp
12041            self.pos = _save4
12042            break
12043          end # end choice
12044
12045          _tmp = _tmp ? nil : true
12046          self.pos = _save3
12047          unless _tmp
12048            self.pos = _save2
12049            break
12050          end
12051          _tmp = get_byte
12052          unless _tmp
12053            self.pos = _save2
12054          end
12055          break
12056        end # end sequence
12057
12058        break unless _tmp
12059      end
12060      _tmp = true
12061      if _tmp
12062        text = get_text(_text_start)
12063      end
12064      unless _tmp
12065        self.pos = _save
12066        break
12067      end
12068      _tmp = match_string("'")
12069      unless _tmp
12070        self.pos = _save
12071        break
12072      end
12073      @result = begin;  text ; end
12074      _tmp = true
12075      unless _tmp
12076        self.pos = _save
12077      end
12078      break
12079    end # end sequence
12080
12081    set_failed_rule :_RefTitleSingle unless _tmp
12082    return _tmp
12083  end
12084
12085  # RefTitleDouble = Spnl "\"" < (!("\"" @Sp @Newline | @Newline) .)* > "\"" { text }
12086  def _RefTitleDouble
12087
12088    _save = self.pos
12089    while true # sequence
12090      _tmp = apply(:_Spnl)
12091      unless _tmp
12092        self.pos = _save
12093        break
12094      end
12095      _tmp = match_string("\"")
12096      unless _tmp
12097        self.pos = _save
12098        break
12099      end
12100      _text_start = self.pos
12101      while true
12102
12103        _save2 = self.pos
12104        while true # sequence
12105          _save3 = self.pos
12106
12107          _save4 = self.pos
12108          while true # choice
12109
12110            _save5 = self.pos
12111            while true # sequence
12112              _tmp = match_string("\"")
12113              unless _tmp
12114                self.pos = _save5
12115                break
12116              end
12117              _tmp = _Sp()
12118              unless _tmp
12119                self.pos = _save5
12120                break
12121              end
12122              _tmp = _Newline()
12123              unless _tmp
12124                self.pos = _save5
12125              end
12126              break
12127            end # end sequence
12128
12129            break if _tmp
12130            self.pos = _save4
12131            _tmp = _Newline()
12132            break if _tmp
12133            self.pos = _save4
12134            break
12135          end # end choice
12136
12137          _tmp = _tmp ? nil : true
12138          self.pos = _save3
12139          unless _tmp
12140            self.pos = _save2
12141            break
12142          end
12143          _tmp = get_byte
12144          unless _tmp
12145            self.pos = _save2
12146          end
12147          break
12148        end # end sequence
12149
12150        break unless _tmp
12151      end
12152      _tmp = true
12153      if _tmp
12154        text = get_text(_text_start)
12155      end
12156      unless _tmp
12157        self.pos = _save
12158        break
12159      end
12160      _tmp = match_string("\"")
12161      unless _tmp
12162        self.pos = _save
12163        break
12164      end
12165      @result = begin;  text ; end
12166      _tmp = true
12167      unless _tmp
12168        self.pos = _save
12169      end
12170      break
12171    end # end sequence
12172
12173    set_failed_rule :_RefTitleDouble unless _tmp
12174    return _tmp
12175  end
12176
12177  # RefTitleParens = Spnl "(" < (!(")" @Sp @Newline | @Newline) .)* > ")" { text }
12178  def _RefTitleParens
12179
12180    _save = self.pos
12181    while true # sequence
12182      _tmp = apply(:_Spnl)
12183      unless _tmp
12184        self.pos = _save
12185        break
12186      end
12187      _tmp = match_string("(")
12188      unless _tmp
12189        self.pos = _save
12190        break
12191      end
12192      _text_start = self.pos
12193      while true
12194
12195        _save2 = self.pos
12196        while true # sequence
12197          _save3 = self.pos
12198
12199          _save4 = self.pos
12200          while true # choice
12201
12202            _save5 = self.pos
12203            while true # sequence
12204              _tmp = match_string(")")
12205              unless _tmp
12206                self.pos = _save5
12207                break
12208              end
12209              _tmp = _Sp()
12210              unless _tmp
12211                self.pos = _save5
12212                break
12213              end
12214              _tmp = _Newline()
12215              unless _tmp
12216                self.pos = _save5
12217              end
12218              break
12219            end # end sequence
12220
12221            break if _tmp
12222            self.pos = _save4
12223            _tmp = _Newline()
12224            break if _tmp
12225            self.pos = _save4
12226            break
12227          end # end choice
12228
12229          _tmp = _tmp ? nil : true
12230          self.pos = _save3
12231          unless _tmp
12232            self.pos = _save2
12233            break
12234          end
12235          _tmp = get_byte
12236          unless _tmp
12237            self.pos = _save2
12238          end
12239          break
12240        end # end sequence
12241
12242        break unless _tmp
12243      end
12244      _tmp = true
12245      if _tmp
12246        text = get_text(_text_start)
12247      end
12248      unless _tmp
12249        self.pos = _save
12250        break
12251      end
12252      _tmp = match_string(")")
12253      unless _tmp
12254        self.pos = _save
12255        break
12256      end
12257      @result = begin;  text ; end
12258      _tmp = true
12259      unless _tmp
12260        self.pos = _save
12261      end
12262      break
12263    end # end sequence
12264
12265    set_failed_rule :_RefTitleParens unless _tmp
12266    return _tmp
12267  end
12268
12269  # References = (Reference | SkipBlock)*
12270  def _References
12271    while true
12272
12273      _save1 = self.pos
12274      while true # choice
12275        _tmp = apply(:_Reference)
12276        break if _tmp
12277        self.pos = _save1
12278        _tmp = apply(:_SkipBlock)
12279        break if _tmp
12280        self.pos = _save1
12281        break
12282      end # end choice
12283
12284      break unless _tmp
12285    end
12286    _tmp = true
12287    set_failed_rule :_References unless _tmp
12288    return _tmp
12289  end
12290
12291  # Ticks1 = "`" !"`"
12292  def _Ticks1
12293
12294    _save = self.pos
12295    while true # sequence
12296      _tmp = match_string("`")
12297      unless _tmp
12298        self.pos = _save
12299        break
12300      end
12301      _save1 = self.pos
12302      _tmp = match_string("`")
12303      _tmp = _tmp ? nil : true
12304      self.pos = _save1
12305      unless _tmp
12306        self.pos = _save
12307      end
12308      break
12309    end # end sequence
12310
12311    set_failed_rule :_Ticks1 unless _tmp
12312    return _tmp
12313  end
12314
12315  # Ticks2 = "``" !"`"
12316  def _Ticks2
12317
12318    _save = self.pos
12319    while true # sequence
12320      _tmp = match_string("``")
12321      unless _tmp
12322        self.pos = _save
12323        break
12324      end
12325      _save1 = self.pos
12326      _tmp = match_string("`")
12327      _tmp = _tmp ? nil : true
12328      self.pos = _save1
12329      unless _tmp
12330        self.pos = _save
12331      end
12332      break
12333    end # end sequence
12334
12335    set_failed_rule :_Ticks2 unless _tmp
12336    return _tmp
12337  end
12338
12339  # Ticks3 = "```" !"`"
12340  def _Ticks3
12341
12342    _save = self.pos
12343    while true # sequence
12344      _tmp = match_string("```")
12345      unless _tmp
12346        self.pos = _save
12347        break
12348      end
12349      _save1 = self.pos
12350      _tmp = match_string("`")
12351      _tmp = _tmp ? nil : true
12352      self.pos = _save1
12353      unless _tmp
12354        self.pos = _save
12355      end
12356      break
12357    end # end sequence
12358
12359    set_failed_rule :_Ticks3 unless _tmp
12360    return _tmp
12361  end
12362
12363  # Ticks4 = "````" !"`"
12364  def _Ticks4
12365
12366    _save = self.pos
12367    while true # sequence
12368      _tmp = match_string("````")
12369      unless _tmp
12370        self.pos = _save
12371        break
12372      end
12373      _save1 = self.pos
12374      _tmp = match_string("`")
12375      _tmp = _tmp ? nil : true
12376      self.pos = _save1
12377      unless _tmp
12378        self.pos = _save
12379      end
12380      break
12381    end # end sequence
12382
12383    set_failed_rule :_Ticks4 unless _tmp
12384    return _tmp
12385  end
12386
12387  # Ticks5 = "`````" !"`"
12388  def _Ticks5
12389
12390    _save = self.pos
12391    while true # sequence
12392      _tmp = match_string("`````")
12393      unless _tmp
12394        self.pos = _save
12395        break
12396      end
12397      _save1 = self.pos
12398      _tmp = match_string("`")
12399      _tmp = _tmp ? nil : true
12400      self.pos = _save1
12401      unless _tmp
12402        self.pos = _save
12403      end
12404      break
12405    end # end sequence
12406
12407    set_failed_rule :_Ticks5 unless _tmp
12408    return _tmp
12409  end
12410
12411  # Code = (Ticks1 @Sp < ((!"`" Nonspacechar)+ | !Ticks1 /`+/ | !(@Sp Ticks1) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks1 | Ticks2 @Sp < ((!"`" Nonspacechar)+ | !Ticks2 /`+/ | !(@Sp Ticks2) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks2 | Ticks3 @Sp < ((!"`" Nonspacechar)+ | !Ticks3 /`+/ | !(@Sp Ticks3) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks3 | Ticks4 @Sp < ((!"`" Nonspacechar)+ | !Ticks4 /`+/ | !(@Sp Ticks4) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks4 | Ticks5 @Sp < ((!"`" Nonspacechar)+ | !Ticks5 /`+/ | !(@Sp Ticks5) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks5) { "<code>#{text}</code>" }
12412  def _Code
12413
12414    _save = self.pos
12415    while true # sequence
12416
12417      _save1 = self.pos
12418      while true # choice
12419
12420        _save2 = self.pos
12421        while true # sequence
12422          _tmp = apply(:_Ticks1)
12423          unless _tmp
12424            self.pos = _save2
12425            break
12426          end
12427          _tmp = _Sp()
12428          unless _tmp
12429            self.pos = _save2
12430            break
12431          end
12432          _text_start = self.pos
12433          _save3 = self.pos
12434
12435          _save4 = self.pos
12436          while true # choice
12437            _save5 = self.pos
12438
12439            _save6 = self.pos
12440            while true # sequence
12441              _save7 = self.pos
12442              _tmp = match_string("`")
12443              _tmp = _tmp ? nil : true
12444              self.pos = _save7
12445              unless _tmp
12446                self.pos = _save6
12447                break
12448              end
12449              _tmp = apply(:_Nonspacechar)
12450              unless _tmp
12451                self.pos = _save6
12452              end
12453              break
12454            end # end sequence
12455
12456            if _tmp
12457              while true
12458
12459                _save8 = self.pos
12460                while true # sequence
12461                  _save9 = self.pos
12462                  _tmp = match_string("`")
12463                  _tmp = _tmp ? nil : true
12464                  self.pos = _save9
12465                  unless _tmp
12466                    self.pos = _save8
12467                    break
12468                  end
12469                  _tmp = apply(:_Nonspacechar)
12470                  unless _tmp
12471                    self.pos = _save8
12472                  end
12473                  break
12474                end # end sequence
12475
12476                break unless _tmp
12477              end
12478              _tmp = true
12479            else
12480              self.pos = _save5
12481            end
12482            break if _tmp
12483            self.pos = _save4
12484
12485            _save10 = self.pos
12486            while true # sequence
12487              _save11 = self.pos
12488              _tmp = apply(:_Ticks1)
12489              _tmp = _tmp ? nil : true
12490              self.pos = _save11
12491              unless _tmp
12492                self.pos = _save10
12493                break
12494              end
12495              _tmp = scan(/\A(?-mix:`+)/)
12496              unless _tmp
12497                self.pos = _save10
12498              end
12499              break
12500            end # end sequence
12501
12502            break if _tmp
12503            self.pos = _save4
12504
12505            _save12 = self.pos
12506            while true # sequence
12507              _save13 = self.pos
12508
12509              _save14 = self.pos
12510              while true # sequence
12511                _tmp = _Sp()
12512                unless _tmp
12513                  self.pos = _save14
12514                  break
12515                end
12516                _tmp = apply(:_Ticks1)
12517                unless _tmp
12518                  self.pos = _save14
12519                end
12520                break
12521              end # end sequence
12522
12523              _tmp = _tmp ? nil : true
12524              self.pos = _save13
12525              unless _tmp
12526                self.pos = _save12
12527                break
12528              end
12529
12530              _save15 = self.pos
12531              while true # choice
12532                _tmp = _Spacechar()
12533                break if _tmp
12534                self.pos = _save15
12535
12536                _save16 = self.pos
12537                while true # sequence
12538                  _tmp = _Newline()
12539                  unless _tmp
12540                    self.pos = _save16
12541                    break
12542                  end
12543                  _save17 = self.pos
12544                  _tmp = _BlankLine()
12545                  _tmp = _tmp ? nil : true
12546                  self.pos = _save17
12547                  unless _tmp
12548                    self.pos = _save16
12549                  end
12550                  break
12551                end # end sequence
12552
12553                break if _tmp
12554                self.pos = _save15
12555                break
12556              end # end choice
12557
12558              unless _tmp
12559                self.pos = _save12
12560              end
12561              break
12562            end # end sequence
12563
12564            break if _tmp
12565            self.pos = _save4
12566            break
12567          end # end choice
12568
12569          if _tmp
12570            while true
12571
12572              _save18 = self.pos
12573              while true # choice
12574                _save19 = self.pos
12575
12576                _save20 = self.pos
12577                while true # sequence
12578                  _save21 = self.pos
12579                  _tmp = match_string("`")
12580                  _tmp = _tmp ? nil : true
12581                  self.pos = _save21
12582                  unless _tmp
12583                    self.pos = _save20
12584                    break
12585                  end
12586                  _tmp = apply(:_Nonspacechar)
12587                  unless _tmp
12588                    self.pos = _save20
12589                  end
12590                  break
12591                end # end sequence
12592
12593                if _tmp
12594                  while true
12595
12596                    _save22 = self.pos
12597                    while true # sequence
12598                      _save23 = self.pos
12599                      _tmp = match_string("`")
12600                      _tmp = _tmp ? nil : true
12601                      self.pos = _save23
12602                      unless _tmp
12603                        self.pos = _save22
12604                        break
12605                      end
12606                      _tmp = apply(:_Nonspacechar)
12607                      unless _tmp
12608                        self.pos = _save22
12609                      end
12610                      break
12611                    end # end sequence
12612
12613                    break unless _tmp
12614                  end
12615                  _tmp = true
12616                else
12617                  self.pos = _save19
12618                end
12619                break if _tmp
12620                self.pos = _save18
12621
12622                _save24 = self.pos
12623                while true # sequence
12624                  _save25 = self.pos
12625                  _tmp = apply(:_Ticks1)
12626                  _tmp = _tmp ? nil : true
12627                  self.pos = _save25
12628                  unless _tmp
12629                    self.pos = _save24
12630                    break
12631                  end
12632                  _tmp = scan(/\A(?-mix:`+)/)
12633                  unless _tmp
12634                    self.pos = _save24
12635                  end
12636                  break
12637                end # end sequence
12638
12639                break if _tmp
12640                self.pos = _save18
12641
12642                _save26 = self.pos
12643                while true # sequence
12644                  _save27 = self.pos
12645
12646                  _save28 = self.pos
12647                  while true # sequence
12648                    _tmp = _Sp()
12649                    unless _tmp
12650                      self.pos = _save28
12651                      break
12652                    end
12653                    _tmp = apply(:_Ticks1)
12654                    unless _tmp
12655                      self.pos = _save28
12656                    end
12657                    break
12658                  end # end sequence
12659
12660                  _tmp = _tmp ? nil : true
12661                  self.pos = _save27
12662                  unless _tmp
12663                    self.pos = _save26
12664                    break
12665                  end
12666
12667                  _save29 = self.pos
12668                  while true # choice
12669                    _tmp = _Spacechar()
12670                    break if _tmp
12671                    self.pos = _save29
12672
12673                    _save30 = self.pos
12674                    while true # sequence
12675                      _tmp = _Newline()
12676                      unless _tmp
12677                        self.pos = _save30
12678                        break
12679                      end
12680                      _save31 = self.pos
12681                      _tmp = _BlankLine()
12682                      _tmp = _tmp ? nil : true
12683                      self.pos = _save31
12684                      unless _tmp
12685                        self.pos = _save30
12686                      end
12687                      break
12688                    end # end sequence
12689
12690                    break if _tmp
12691                    self.pos = _save29
12692                    break
12693                  end # end choice
12694
12695                  unless _tmp
12696                    self.pos = _save26
12697                  end
12698                  break
12699                end # end sequence
12700
12701                break if _tmp
12702                self.pos = _save18
12703                break
12704              end # end choice
12705
12706              break unless _tmp
12707            end
12708            _tmp = true
12709          else
12710            self.pos = _save3
12711          end
12712          if _tmp
12713            text = get_text(_text_start)
12714          end
12715          unless _tmp
12716            self.pos = _save2
12717            break
12718          end
12719          _tmp = _Sp()
12720          unless _tmp
12721            self.pos = _save2
12722            break
12723          end
12724          _tmp = apply(:_Ticks1)
12725          unless _tmp
12726            self.pos = _save2
12727          end
12728          break
12729        end # end sequence
12730
12731        break if _tmp
12732        self.pos = _save1
12733
12734        _save32 = self.pos
12735        while true # sequence
12736          _tmp = apply(:_Ticks2)
12737          unless _tmp
12738            self.pos = _save32
12739            break
12740          end
12741          _tmp = _Sp()
12742          unless _tmp
12743            self.pos = _save32
12744            break
12745          end
12746          _text_start = self.pos
12747          _save33 = self.pos
12748
12749          _save34 = self.pos
12750          while true # choice
12751            _save35 = self.pos
12752
12753            _save36 = self.pos
12754            while true # sequence
12755              _save37 = self.pos
12756              _tmp = match_string("`")
12757              _tmp = _tmp ? nil : true
12758              self.pos = _save37
12759              unless _tmp
12760                self.pos = _save36
12761                break
12762              end
12763              _tmp = apply(:_Nonspacechar)
12764              unless _tmp
12765                self.pos = _save36
12766              end
12767              break
12768            end # end sequence
12769
12770            if _tmp
12771              while true
12772
12773                _save38 = self.pos
12774                while true # sequence
12775                  _save39 = self.pos
12776                  _tmp = match_string("`")
12777                  _tmp = _tmp ? nil : true
12778                  self.pos = _save39
12779                  unless _tmp
12780                    self.pos = _save38
12781                    break
12782                  end
12783                  _tmp = apply(:_Nonspacechar)
12784                  unless _tmp
12785                    self.pos = _save38
12786                  end
12787                  break
12788                end # end sequence
12789
12790                break unless _tmp
12791              end
12792              _tmp = true
12793            else
12794              self.pos = _save35
12795            end
12796            break if _tmp
12797            self.pos = _save34
12798
12799            _save40 = self.pos
12800            while true # sequence
12801              _save41 = self.pos
12802              _tmp = apply(:_Ticks2)
12803              _tmp = _tmp ? nil : true
12804              self.pos = _save41
12805              unless _tmp
12806                self.pos = _save40
12807                break
12808              end
12809              _tmp = scan(/\A(?-mix:`+)/)
12810              unless _tmp
12811                self.pos = _save40
12812              end
12813              break
12814            end # end sequence
12815
12816            break if _tmp
12817            self.pos = _save34
12818
12819            _save42 = self.pos
12820            while true # sequence
12821              _save43 = self.pos
12822
12823              _save44 = self.pos
12824              while true # sequence
12825                _tmp = _Sp()
12826                unless _tmp
12827                  self.pos = _save44
12828                  break
12829                end
12830                _tmp = apply(:_Ticks2)
12831                unless _tmp
12832                  self.pos = _save44
12833                end
12834                break
12835              end # end sequence
12836
12837              _tmp = _tmp ? nil : true
12838              self.pos = _save43
12839              unless _tmp
12840                self.pos = _save42
12841                break
12842              end
12843
12844              _save45 = self.pos
12845              while true # choice
12846                _tmp = _Spacechar()
12847                break if _tmp
12848                self.pos = _save45
12849
12850                _save46 = self.pos
12851                while true # sequence
12852                  _tmp = _Newline()
12853                  unless _tmp
12854                    self.pos = _save46
12855                    break
12856                  end
12857                  _save47 = self.pos
12858                  _tmp = _BlankLine()
12859                  _tmp = _tmp ? nil : true
12860                  self.pos = _save47
12861                  unless _tmp
12862                    self.pos = _save46
12863                  end
12864                  break
12865                end # end sequence
12866
12867                break if _tmp
12868                self.pos = _save45
12869                break
12870              end # end choice
12871
12872              unless _tmp
12873                self.pos = _save42
12874              end
12875              break
12876            end # end sequence
12877
12878            break if _tmp
12879            self.pos = _save34
12880            break
12881          end # end choice
12882
12883          if _tmp
12884            while true
12885
12886              _save48 = self.pos
12887              while true # choice
12888                _save49 = self.pos
12889
12890                _save50 = self.pos
12891                while true # sequence
12892                  _save51 = self.pos
12893                  _tmp = match_string("`")
12894                  _tmp = _tmp ? nil : true
12895                  self.pos = _save51
12896                  unless _tmp
12897                    self.pos = _save50
12898                    break
12899                  end
12900                  _tmp = apply(:_Nonspacechar)
12901                  unless _tmp
12902                    self.pos = _save50
12903                  end
12904                  break
12905                end # end sequence
12906
12907                if _tmp
12908                  while true
12909
12910                    _save52 = self.pos
12911                    while true # sequence
12912                      _save53 = self.pos
12913                      _tmp = match_string("`")
12914                      _tmp = _tmp ? nil : true
12915                      self.pos = _save53
12916                      unless _tmp
12917                        self.pos = _save52
12918                        break
12919                      end
12920                      _tmp = apply(:_Nonspacechar)
12921                      unless _tmp
12922                        self.pos = _save52
12923                      end
12924                      break
12925                    end # end sequence
12926
12927                    break unless _tmp
12928                  end
12929                  _tmp = true
12930                else
12931                  self.pos = _save49
12932                end
12933                break if _tmp
12934                self.pos = _save48
12935
12936                _save54 = self.pos
12937                while true # sequence
12938                  _save55 = self.pos
12939                  _tmp = apply(:_Ticks2)
12940                  _tmp = _tmp ? nil : true
12941                  self.pos = _save55
12942                  unless _tmp
12943                    self.pos = _save54
12944                    break
12945                  end
12946                  _tmp = scan(/\A(?-mix:`+)/)
12947                  unless _tmp
12948                    self.pos = _save54
12949                  end
12950                  break
12951                end # end sequence
12952
12953                break if _tmp
12954                self.pos = _save48
12955
12956                _save56 = self.pos
12957                while true # sequence
12958                  _save57 = self.pos
12959
12960                  _save58 = self.pos
12961                  while true # sequence
12962                    _tmp = _Sp()
12963                    unless _tmp
12964                      self.pos = _save58
12965                      break
12966                    end
12967                    _tmp = apply(:_Ticks2)
12968                    unless _tmp
12969                      self.pos = _save58
12970                    end
12971                    break
12972                  end # end sequence
12973
12974                  _tmp = _tmp ? nil : true
12975                  self.pos = _save57
12976                  unless _tmp
12977                    self.pos = _save56
12978                    break
12979                  end
12980
12981                  _save59 = self.pos
12982                  while true # choice
12983                    _tmp = _Spacechar()
12984                    break if _tmp
12985                    self.pos = _save59
12986
12987                    _save60 = self.pos
12988                    while true # sequence
12989                      _tmp = _Newline()
12990                      unless _tmp
12991                        self.pos = _save60
12992                        break
12993                      end
12994                      _save61 = self.pos
12995                      _tmp = _BlankLine()
12996                      _tmp = _tmp ? nil : true
12997                      self.pos = _save61
12998                      unless _tmp
12999                        self.pos = _save60
13000                      end
13001                      break
13002                    end # end sequence
13003
13004                    break if _tmp
13005                    self.pos = _save59
13006                    break
13007                  end # end choice
13008
13009                  unless _tmp
13010                    self.pos = _save56
13011                  end
13012                  break
13013                end # end sequence
13014
13015                break if _tmp
13016                self.pos = _save48
13017                break
13018              end # end choice
13019
13020              break unless _tmp
13021            end
13022            _tmp = true
13023          else
13024            self.pos = _save33
13025          end
13026          if _tmp
13027            text = get_text(_text_start)
13028          end
13029          unless _tmp
13030            self.pos = _save32
13031            break
13032          end
13033          _tmp = _Sp()
13034          unless _tmp
13035            self.pos = _save32
13036            break
13037          end
13038          _tmp = apply(:_Ticks2)
13039          unless _tmp
13040            self.pos = _save32
13041          end
13042          break
13043        end # end sequence
13044
13045        break if _tmp
13046        self.pos = _save1
13047
13048        _save62 = self.pos
13049        while true # sequence
13050          _tmp = apply(:_Ticks3)
13051          unless _tmp
13052            self.pos = _save62
13053            break
13054          end
13055          _tmp = _Sp()
13056          unless _tmp
13057            self.pos = _save62
13058            break
13059          end
13060          _text_start = self.pos
13061          _save63 = self.pos
13062
13063          _save64 = self.pos
13064          while true # choice
13065            _save65 = self.pos
13066
13067            _save66 = self.pos
13068            while true # sequence
13069              _save67 = self.pos
13070              _tmp = match_string("`")
13071              _tmp = _tmp ? nil : true
13072              self.pos = _save67
13073              unless _tmp
13074                self.pos = _save66
13075                break
13076              end
13077              _tmp = apply(:_Nonspacechar)
13078              unless _tmp
13079                self.pos = _save66
13080              end
13081              break
13082            end # end sequence
13083
13084            if _tmp
13085              while true
13086
13087                _save68 = self.pos
13088                while true # sequence
13089                  _save69 = self.pos
13090                  _tmp = match_string("`")
13091                  _tmp = _tmp ? nil : true
13092                  self.pos = _save69
13093                  unless _tmp
13094                    self.pos = _save68
13095                    break
13096                  end
13097                  _tmp = apply(:_Nonspacechar)
13098                  unless _tmp
13099                    self.pos = _save68
13100                  end
13101                  break
13102                end # end sequence
13103
13104                break unless _tmp
13105              end
13106              _tmp = true
13107            else
13108              self.pos = _save65
13109            end
13110            break if _tmp
13111            self.pos = _save64
13112
13113            _save70 = self.pos
13114            while true # sequence
13115              _save71 = self.pos
13116              _tmp = apply(:_Ticks3)
13117              _tmp = _tmp ? nil : true
13118              self.pos = _save71
13119              unless _tmp
13120                self.pos = _save70
13121                break
13122              end
13123              _tmp = scan(/\A(?-mix:`+)/)
13124              unless _tmp
13125                self.pos = _save70
13126              end
13127              break
13128            end # end sequence
13129
13130            break if _tmp
13131            self.pos = _save64
13132
13133            _save72 = self.pos
13134            while true # sequence
13135              _save73 = self.pos
13136
13137              _save74 = self.pos
13138              while true # sequence
13139                _tmp = _Sp()
13140                unless _tmp
13141                  self.pos = _save74
13142                  break
13143                end
13144                _tmp = apply(:_Ticks3)
13145                unless _tmp
13146                  self.pos = _save74
13147                end
13148                break
13149              end # end sequence
13150
13151              _tmp = _tmp ? nil : true
13152              self.pos = _save73
13153              unless _tmp
13154                self.pos = _save72
13155                break
13156              end
13157
13158              _save75 = self.pos
13159              while true # choice
13160                _tmp = _Spacechar()
13161                break if _tmp
13162                self.pos = _save75
13163
13164                _save76 = self.pos
13165                while true # sequence
13166                  _tmp = _Newline()
13167                  unless _tmp
13168                    self.pos = _save76
13169                    break
13170                  end
13171                  _save77 = self.pos
13172                  _tmp = _BlankLine()
13173                  _tmp = _tmp ? nil : true
13174                  self.pos = _save77
13175                  unless _tmp
13176                    self.pos = _save76
13177                  end
13178                  break
13179                end # end sequence
13180
13181                break if _tmp
13182                self.pos = _save75
13183                break
13184              end # end choice
13185
13186              unless _tmp
13187                self.pos = _save72
13188              end
13189              break
13190            end # end sequence
13191
13192            break if _tmp
13193            self.pos = _save64
13194            break
13195          end # end choice
13196
13197          if _tmp
13198            while true
13199
13200              _save78 = self.pos
13201              while true # choice
13202                _save79 = self.pos
13203
13204                _save80 = self.pos
13205                while true # sequence
13206                  _save81 = self.pos
13207                  _tmp = match_string("`")
13208                  _tmp = _tmp ? nil : true
13209                  self.pos = _save81
13210                  unless _tmp
13211                    self.pos = _save80
13212                    break
13213                  end
13214                  _tmp = apply(:_Nonspacechar)
13215                  unless _tmp
13216                    self.pos = _save80
13217                  end
13218                  break
13219                end # end sequence
13220
13221                if _tmp
13222                  while true
13223
13224                    _save82 = self.pos
13225                    while true # sequence
13226                      _save83 = self.pos
13227                      _tmp = match_string("`")
13228                      _tmp = _tmp ? nil : true
13229                      self.pos = _save83
13230                      unless _tmp
13231                        self.pos = _save82
13232                        break
13233                      end
13234                      _tmp = apply(:_Nonspacechar)
13235                      unless _tmp
13236                        self.pos = _save82
13237                      end
13238                      break
13239                    end # end sequence
13240
13241                    break unless _tmp
13242                  end
13243                  _tmp = true
13244                else
13245                  self.pos = _save79
13246                end
13247                break if _tmp
13248                self.pos = _save78
13249
13250                _save84 = self.pos
13251                while true # sequence
13252                  _save85 = self.pos
13253                  _tmp = apply(:_Ticks3)
13254                  _tmp = _tmp ? nil : true
13255                  self.pos = _save85
13256                  unless _tmp
13257                    self.pos = _save84
13258                    break
13259                  end
13260                  _tmp = scan(/\A(?-mix:`+)/)
13261                  unless _tmp
13262                    self.pos = _save84
13263                  end
13264                  break
13265                end # end sequence
13266
13267                break if _tmp
13268                self.pos = _save78
13269
13270                _save86 = self.pos
13271                while true # sequence
13272                  _save87 = self.pos
13273
13274                  _save88 = self.pos
13275                  while true # sequence
13276                    _tmp = _Sp()
13277                    unless _tmp
13278                      self.pos = _save88
13279                      break
13280                    end
13281                    _tmp = apply(:_Ticks3)
13282                    unless _tmp
13283                      self.pos = _save88
13284                    end
13285                    break
13286                  end # end sequence
13287
13288                  _tmp = _tmp ? nil : true
13289                  self.pos = _save87
13290                  unless _tmp
13291                    self.pos = _save86
13292                    break
13293                  end
13294
13295                  _save89 = self.pos
13296                  while true # choice
13297                    _tmp = _Spacechar()
13298                    break if _tmp
13299                    self.pos = _save89
13300
13301                    _save90 = self.pos
13302                    while true # sequence
13303                      _tmp = _Newline()
13304                      unless _tmp
13305                        self.pos = _save90
13306                        break
13307                      end
13308                      _save91 = self.pos
13309                      _tmp = _BlankLine()
13310                      _tmp = _tmp ? nil : true
13311                      self.pos = _save91
13312                      unless _tmp
13313                        self.pos = _save90
13314                      end
13315                      break
13316                    end # end sequence
13317
13318                    break if _tmp
13319                    self.pos = _save89
13320                    break
13321                  end # end choice
13322
13323                  unless _tmp
13324                    self.pos = _save86
13325                  end
13326                  break
13327                end # end sequence
13328
13329                break if _tmp
13330                self.pos = _save78
13331                break
13332              end # end choice
13333
13334              break unless _tmp
13335            end
13336            _tmp = true
13337          else
13338            self.pos = _save63
13339          end
13340          if _tmp
13341            text = get_text(_text_start)
13342          end
13343          unless _tmp
13344            self.pos = _save62
13345            break
13346          end
13347          _tmp = _Sp()
13348          unless _tmp
13349            self.pos = _save62
13350            break
13351          end
13352          _tmp = apply(:_Ticks3)
13353          unless _tmp
13354            self.pos = _save62
13355          end
13356          break
13357        end # end sequence
13358
13359        break if _tmp
13360        self.pos = _save1
13361
13362        _save92 = self.pos
13363        while true # sequence
13364          _tmp = apply(:_Ticks4)
13365          unless _tmp
13366            self.pos = _save92
13367            break
13368          end
13369          _tmp = _Sp()
13370          unless _tmp
13371            self.pos = _save92
13372            break
13373          end
13374          _text_start = self.pos
13375          _save93 = self.pos
13376
13377          _save94 = self.pos
13378          while true # choice
13379            _save95 = self.pos
13380
13381            _save96 = self.pos
13382            while true # sequence
13383              _save97 = self.pos
13384              _tmp = match_string("`")
13385              _tmp = _tmp ? nil : true
13386              self.pos = _save97
13387              unless _tmp
13388                self.pos = _save96
13389                break
13390              end
13391              _tmp = apply(:_Nonspacechar)
13392              unless _tmp
13393                self.pos = _save96
13394              end
13395              break
13396            end # end sequence
13397
13398            if _tmp
13399              while true
13400
13401                _save98 = self.pos
13402                while true # sequence
13403                  _save99 = self.pos
13404                  _tmp = match_string("`")
13405                  _tmp = _tmp ? nil : true
13406                  self.pos = _save99
13407                  unless _tmp
13408                    self.pos = _save98
13409                    break
13410                  end
13411                  _tmp = apply(:_Nonspacechar)
13412                  unless _tmp
13413                    self.pos = _save98
13414                  end
13415                  break
13416                end # end sequence
13417
13418                break unless _tmp
13419              end
13420              _tmp = true
13421            else
13422              self.pos = _save95
13423            end
13424            break if _tmp
13425            self.pos = _save94
13426
13427            _save100 = self.pos
13428            while true # sequence
13429              _save101 = self.pos
13430              _tmp = apply(:_Ticks4)
13431              _tmp = _tmp ? nil : true
13432              self.pos = _save101
13433              unless _tmp
13434                self.pos = _save100
13435                break
13436              end
13437              _tmp = scan(/\A(?-mix:`+)/)
13438              unless _tmp
13439                self.pos = _save100
13440              end
13441              break
13442            end # end sequence
13443
13444            break if _tmp
13445            self.pos = _save94
13446
13447            _save102 = self.pos
13448            while true # sequence
13449              _save103 = self.pos
13450
13451              _save104 = self.pos
13452              while true # sequence
13453                _tmp = _Sp()
13454                unless _tmp
13455                  self.pos = _save104
13456                  break
13457                end
13458                _tmp = apply(:_Ticks4)
13459                unless _tmp
13460                  self.pos = _save104
13461                end
13462                break
13463              end # end sequence
13464
13465              _tmp = _tmp ? nil : true
13466              self.pos = _save103
13467              unless _tmp
13468                self.pos = _save102
13469                break
13470              end
13471
13472              _save105 = self.pos
13473              while true # choice
13474                _tmp = _Spacechar()
13475                break if _tmp
13476                self.pos = _save105
13477
13478                _save106 = self.pos
13479                while true # sequence
13480                  _tmp = _Newline()
13481                  unless _tmp
13482                    self.pos = _save106
13483                    break
13484                  end
13485                  _save107 = self.pos
13486                  _tmp = _BlankLine()
13487                  _tmp = _tmp ? nil : true
13488                  self.pos = _save107
13489                  unless _tmp
13490                    self.pos = _save106
13491                  end
13492                  break
13493                end # end sequence
13494
13495                break if _tmp
13496                self.pos = _save105
13497                break
13498              end # end choice
13499
13500              unless _tmp
13501                self.pos = _save102
13502              end
13503              break
13504            end # end sequence
13505
13506            break if _tmp
13507            self.pos = _save94
13508            break
13509          end # end choice
13510
13511          if _tmp
13512            while true
13513
13514              _save108 = self.pos
13515              while true # choice
13516                _save109 = self.pos
13517
13518                _save110 = self.pos
13519                while true # sequence
13520                  _save111 = self.pos
13521                  _tmp = match_string("`")
13522                  _tmp = _tmp ? nil : true
13523                  self.pos = _save111
13524                  unless _tmp
13525                    self.pos = _save110
13526                    break
13527                  end
13528                  _tmp = apply(:_Nonspacechar)
13529                  unless _tmp
13530                    self.pos = _save110
13531                  end
13532                  break
13533                end # end sequence
13534
13535                if _tmp
13536                  while true
13537
13538                    _save112 = self.pos
13539                    while true # sequence
13540                      _save113 = self.pos
13541                      _tmp = match_string("`")
13542                      _tmp = _tmp ? nil : true
13543                      self.pos = _save113
13544                      unless _tmp
13545                        self.pos = _save112
13546                        break
13547                      end
13548                      _tmp = apply(:_Nonspacechar)
13549                      unless _tmp
13550                        self.pos = _save112
13551                      end
13552                      break
13553                    end # end sequence
13554
13555                    break unless _tmp
13556                  end
13557                  _tmp = true
13558                else
13559                  self.pos = _save109
13560                end
13561                break if _tmp
13562                self.pos = _save108
13563
13564                _save114 = self.pos
13565                while true # sequence
13566                  _save115 = self.pos
13567                  _tmp = apply(:_Ticks4)
13568                  _tmp = _tmp ? nil : true
13569                  self.pos = _save115
13570                  unless _tmp
13571                    self.pos = _save114
13572                    break
13573                  end
13574                  _tmp = scan(/\A(?-mix:`+)/)
13575                  unless _tmp
13576                    self.pos = _save114
13577                  end
13578                  break
13579                end # end sequence
13580
13581                break if _tmp
13582                self.pos = _save108
13583
13584                _save116 = self.pos
13585                while true # sequence
13586                  _save117 = self.pos
13587
13588                  _save118 = self.pos
13589                  while true # sequence
13590                    _tmp = _Sp()
13591                    unless _tmp
13592                      self.pos = _save118
13593                      break
13594                    end
13595                    _tmp = apply(:_Ticks4)
13596                    unless _tmp
13597                      self.pos = _save118
13598                    end
13599                    break
13600                  end # end sequence
13601
13602                  _tmp = _tmp ? nil : true
13603                  self.pos = _save117
13604                  unless _tmp
13605                    self.pos = _save116
13606                    break
13607                  end
13608
13609                  _save119 = self.pos
13610                  while true # choice
13611                    _tmp = _Spacechar()
13612                    break if _tmp
13613                    self.pos = _save119
13614
13615                    _save120 = self.pos
13616                    while true # sequence
13617                      _tmp = _Newline()
13618                      unless _tmp
13619                        self.pos = _save120
13620                        break
13621                      end
13622                      _save121 = self.pos
13623                      _tmp = _BlankLine()
13624                      _tmp = _tmp ? nil : true
13625                      self.pos = _save121
13626                      unless _tmp
13627                        self.pos = _save120
13628                      end
13629                      break
13630                    end # end sequence
13631
13632                    break if _tmp
13633                    self.pos = _save119
13634                    break
13635                  end # end choice
13636
13637                  unless _tmp
13638                    self.pos = _save116
13639                  end
13640                  break
13641                end # end sequence
13642
13643                break if _tmp
13644                self.pos = _save108
13645                break
13646              end # end choice
13647
13648              break unless _tmp
13649            end
13650            _tmp = true
13651          else
13652            self.pos = _save93
13653          end
13654          if _tmp
13655            text = get_text(_text_start)
13656          end
13657          unless _tmp
13658            self.pos = _save92
13659            break
13660          end
13661          _tmp = _Sp()
13662          unless _tmp
13663            self.pos = _save92
13664            break
13665          end
13666          _tmp = apply(:_Ticks4)
13667          unless _tmp
13668            self.pos = _save92
13669          end
13670          break
13671        end # end sequence
13672
13673        break if _tmp
13674        self.pos = _save1
13675
13676        _save122 = self.pos
13677        while true # sequence
13678          _tmp = apply(:_Ticks5)
13679          unless _tmp
13680            self.pos = _save122
13681            break
13682          end
13683          _tmp = _Sp()
13684          unless _tmp
13685            self.pos = _save122
13686            break
13687          end
13688          _text_start = self.pos
13689          _save123 = self.pos
13690
13691          _save124 = self.pos
13692          while true # choice
13693            _save125 = self.pos
13694
13695            _save126 = self.pos
13696            while true # sequence
13697              _save127 = self.pos
13698              _tmp = match_string("`")
13699              _tmp = _tmp ? nil : true
13700              self.pos = _save127
13701              unless _tmp
13702                self.pos = _save126
13703                break
13704              end
13705              _tmp = apply(:_Nonspacechar)
13706              unless _tmp
13707                self.pos = _save126
13708              end
13709              break
13710            end # end sequence
13711
13712            if _tmp
13713              while true
13714
13715                _save128 = self.pos
13716                while true # sequence
13717                  _save129 = self.pos
13718                  _tmp = match_string("`")
13719                  _tmp = _tmp ? nil : true
13720                  self.pos = _save129
13721                  unless _tmp
13722                    self.pos = _save128
13723                    break
13724                  end
13725                  _tmp = apply(:_Nonspacechar)
13726                  unless _tmp
13727                    self.pos = _save128
13728                  end
13729                  break
13730                end # end sequence
13731
13732                break unless _tmp
13733              end
13734              _tmp = true
13735            else
13736              self.pos = _save125
13737            end
13738            break if _tmp
13739            self.pos = _save124
13740
13741            _save130 = self.pos
13742            while true # sequence
13743              _save131 = self.pos
13744              _tmp = apply(:_Ticks5)
13745              _tmp = _tmp ? nil : true
13746              self.pos = _save131
13747              unless _tmp
13748                self.pos = _save130
13749                break
13750              end
13751              _tmp = scan(/\A(?-mix:`+)/)
13752              unless _tmp
13753                self.pos = _save130
13754              end
13755              break
13756            end # end sequence
13757
13758            break if _tmp
13759            self.pos = _save124
13760
13761            _save132 = self.pos
13762            while true # sequence
13763              _save133 = self.pos
13764
13765              _save134 = self.pos
13766              while true # sequence
13767                _tmp = _Sp()
13768                unless _tmp
13769                  self.pos = _save134
13770                  break
13771                end
13772                _tmp = apply(:_Ticks5)
13773                unless _tmp
13774                  self.pos = _save134
13775                end
13776                break
13777              end # end sequence
13778
13779              _tmp = _tmp ? nil : true
13780              self.pos = _save133
13781              unless _tmp
13782                self.pos = _save132
13783                break
13784              end
13785
13786              _save135 = self.pos
13787              while true # choice
13788                _tmp = _Spacechar()
13789                break if _tmp
13790                self.pos = _save135
13791
13792                _save136 = self.pos
13793                while true # sequence
13794                  _tmp = _Newline()
13795                  unless _tmp
13796                    self.pos = _save136
13797                    break
13798                  end
13799                  _save137 = self.pos
13800                  _tmp = _BlankLine()
13801                  _tmp = _tmp ? nil : true
13802                  self.pos = _save137
13803                  unless _tmp
13804                    self.pos = _save136
13805                  end
13806                  break
13807                end # end sequence
13808
13809                break if _tmp
13810                self.pos = _save135
13811                break
13812              end # end choice
13813
13814              unless _tmp
13815                self.pos = _save132
13816              end
13817              break
13818            end # end sequence
13819
13820            break if _tmp
13821            self.pos = _save124
13822            break
13823          end # end choice
13824
13825          if _tmp
13826            while true
13827
13828              _save138 = self.pos
13829              while true # choice
13830                _save139 = self.pos
13831
13832                _save140 = self.pos
13833                while true # sequence
13834                  _save141 = self.pos
13835                  _tmp = match_string("`")
13836                  _tmp = _tmp ? nil : true
13837                  self.pos = _save141
13838                  unless _tmp
13839                    self.pos = _save140
13840                    break
13841                  end
13842                  _tmp = apply(:_Nonspacechar)
13843                  unless _tmp
13844                    self.pos = _save140
13845                  end
13846                  break
13847                end # end sequence
13848
13849                if _tmp
13850                  while true
13851
13852                    _save142 = self.pos
13853                    while true # sequence
13854                      _save143 = self.pos
13855                      _tmp = match_string("`")
13856                      _tmp = _tmp ? nil : true
13857                      self.pos = _save143
13858                      unless _tmp
13859                        self.pos = _save142
13860                        break
13861                      end
13862                      _tmp = apply(:_Nonspacechar)
13863                      unless _tmp
13864                        self.pos = _save142
13865                      end
13866                      break
13867                    end # end sequence
13868
13869                    break unless _tmp
13870                  end
13871                  _tmp = true
13872                else
13873                  self.pos = _save139
13874                end
13875                break if _tmp
13876                self.pos = _save138
13877
13878                _save144 = self.pos
13879                while true # sequence
13880                  _save145 = self.pos
13881                  _tmp = apply(:_Ticks5)
13882                  _tmp = _tmp ? nil : true
13883                  self.pos = _save145
13884                  unless _tmp
13885                    self.pos = _save144
13886                    break
13887                  end
13888                  _tmp = scan(/\A(?-mix:`+)/)
13889                  unless _tmp
13890                    self.pos = _save144
13891                  end
13892                  break
13893                end # end sequence
13894
13895                break if _tmp
13896                self.pos = _save138
13897
13898                _save146 = self.pos
13899                while true # sequence
13900                  _save147 = self.pos
13901
13902                  _save148 = self.pos
13903                  while true # sequence
13904                    _tmp = _Sp()
13905                    unless _tmp
13906                      self.pos = _save148
13907                      break
13908                    end
13909                    _tmp = apply(:_Ticks5)
13910                    unless _tmp
13911                      self.pos = _save148
13912                    end
13913                    break
13914                  end # end sequence
13915
13916                  _tmp = _tmp ? nil : true
13917                  self.pos = _save147
13918                  unless _tmp
13919                    self.pos = _save146
13920                    break
13921                  end
13922
13923                  _save149 = self.pos
13924                  while true # choice
13925                    _tmp = _Spacechar()
13926                    break if _tmp
13927                    self.pos = _save149
13928
13929                    _save150 = self.pos
13930                    while true # sequence
13931                      _tmp = _Newline()
13932                      unless _tmp
13933                        self.pos = _save150
13934                        break
13935                      end
13936                      _save151 = self.pos
13937                      _tmp = _BlankLine()
13938                      _tmp = _tmp ? nil : true
13939                      self.pos = _save151
13940                      unless _tmp
13941                        self.pos = _save150
13942                      end
13943                      break
13944                    end # end sequence
13945
13946                    break if _tmp
13947                    self.pos = _save149
13948                    break
13949                  end # end choice
13950
13951                  unless _tmp
13952                    self.pos = _save146
13953                  end
13954                  break
13955                end # end sequence
13956
13957                break if _tmp
13958                self.pos = _save138
13959                break
13960              end # end choice
13961
13962              break unless _tmp
13963            end
13964            _tmp = true
13965          else
13966            self.pos = _save123
13967          end
13968          if _tmp
13969            text = get_text(_text_start)
13970          end
13971          unless _tmp
13972            self.pos = _save122
13973            break
13974          end
13975          _tmp = _Sp()
13976          unless _tmp
13977            self.pos = _save122
13978            break
13979          end
13980          _tmp = apply(:_Ticks5)
13981          unless _tmp
13982            self.pos = _save122
13983          end
13984          break
13985        end # end sequence
13986
13987        break if _tmp
13988        self.pos = _save1
13989        break
13990      end # end choice
13991
13992      unless _tmp
13993        self.pos = _save
13994        break
13995      end
13996      @result = begin;  "<code>#{text}</code>" ; end
13997      _tmp = true
13998      unless _tmp
13999        self.pos = _save
14000      end
14001      break
14002    end # end sequence
14003
14004    set_failed_rule :_Code unless _tmp
14005    return _tmp
14006  end
14007
14008  # RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }
14009  def _RawHtml
14010
14011    _save = self.pos
14012    while true # sequence
14013      _text_start = self.pos
14014
14015      _save1 = self.pos
14016      while true # choice
14017        _tmp = apply(:_HtmlComment)
14018        break if _tmp
14019        self.pos = _save1
14020        _tmp = apply(:_HtmlBlockScript)
14021        break if _tmp
14022        self.pos = _save1
14023        _tmp = apply(:_HtmlTag)
14024        break if _tmp
14025        self.pos = _save1
14026        break
14027      end # end choice
14028
14029      if _tmp
14030        text = get_text(_text_start)
14031      end
14032      unless _tmp
14033        self.pos = _save
14034        break
14035      end
14036      @result = begin;  if html? then text else '' end ; end
14037      _tmp = true
14038      unless _tmp
14039        self.pos = _save
14040      end
14041      break
14042    end # end sequence
14043
14044    set_failed_rule :_RawHtml unless _tmp
14045    return _tmp
14046  end
14047
14048  # BlankLine = @Sp @Newline { "\n" }
14049  def _BlankLine
14050
14051    _save = self.pos
14052    while true # sequence
14053      _tmp = _Sp()
14054      unless _tmp
14055        self.pos = _save
14056        break
14057      end
14058      _tmp = _Newline()
14059      unless _tmp
14060        self.pos = _save
14061        break
14062      end
14063      @result = begin;  "\n" ; end
14064      _tmp = true
14065      unless _tmp
14066        self.pos = _save
14067      end
14068      break
14069    end # end sequence
14070
14071    set_failed_rule :_BlankLine unless _tmp
14072    return _tmp
14073  end
14074
14075  # Quoted = ("\"" (!"\"" .)* "\"" | "'" (!"'" .)* "'")
14076  def _Quoted
14077
14078    _save = self.pos
14079    while true # choice
14080
14081      _save1 = self.pos
14082      while true # sequence
14083        _tmp = match_string("\"")
14084        unless _tmp
14085          self.pos = _save1
14086          break
14087        end
14088        while true
14089
14090          _save3 = self.pos
14091          while true # sequence
14092            _save4 = self.pos
14093            _tmp = match_string("\"")
14094            _tmp = _tmp ? nil : true
14095            self.pos = _save4
14096            unless _tmp
14097              self.pos = _save3
14098              break
14099            end
14100            _tmp = get_byte
14101            unless _tmp
14102              self.pos = _save3
14103            end
14104            break
14105          end # end sequence
14106
14107          break unless _tmp
14108        end
14109        _tmp = true
14110        unless _tmp
14111          self.pos = _save1
14112          break
14113        end
14114        _tmp = match_string("\"")
14115        unless _tmp
14116          self.pos = _save1
14117        end
14118        break
14119      end # end sequence
14120
14121      break if _tmp
14122      self.pos = _save
14123
14124      _save5 = self.pos
14125      while true # sequence
14126        _tmp = match_string("'")
14127        unless _tmp
14128          self.pos = _save5
14129          break
14130        end
14131        while true
14132
14133          _save7 = self.pos
14134          while true # sequence
14135            _save8 = self.pos
14136            _tmp = match_string("'")
14137            _tmp = _tmp ? nil : true
14138            self.pos = _save8
14139            unless _tmp
14140              self.pos = _save7
14141              break
14142            end
14143            _tmp = get_byte
14144            unless _tmp
14145              self.pos = _save7
14146            end
14147            break
14148          end # end sequence
14149
14150          break unless _tmp
14151        end
14152        _tmp = true
14153        unless _tmp
14154          self.pos = _save5
14155          break
14156        end
14157        _tmp = match_string("'")
14158        unless _tmp
14159          self.pos = _save5
14160        end
14161        break
14162      end # end sequence
14163
14164      break if _tmp
14165      self.pos = _save
14166      break
14167    end # end choice
14168
14169    set_failed_rule :_Quoted unless _tmp
14170    return _tmp
14171  end
14172
14173  # HtmlAttribute = (AlphanumericAscii | "-")+ Spnl ("=" Spnl (Quoted | (!">" Nonspacechar)+))? Spnl
14174  def _HtmlAttribute
14175
14176    _save = self.pos
14177    while true # sequence
14178      _save1 = self.pos
14179
14180      _save2 = self.pos
14181      while true # choice
14182        _tmp = apply(:_AlphanumericAscii)
14183        break if _tmp
14184        self.pos = _save2
14185        _tmp = match_string("-")
14186        break if _tmp
14187        self.pos = _save2
14188        break
14189      end # end choice
14190
14191      if _tmp
14192        while true
14193
14194          _save3 = self.pos
14195          while true # choice
14196            _tmp = apply(:_AlphanumericAscii)
14197            break if _tmp
14198            self.pos = _save3
14199            _tmp = match_string("-")
14200            break if _tmp
14201            self.pos = _save3
14202            break
14203          end # end choice
14204
14205          break unless _tmp
14206        end
14207        _tmp = true
14208      else
14209        self.pos = _save1
14210      end
14211      unless _tmp
14212        self.pos = _save
14213        break
14214      end
14215      _tmp = apply(:_Spnl)
14216      unless _tmp
14217        self.pos = _save
14218        break
14219      end
14220      _save4 = self.pos
14221
14222      _save5 = self.pos
14223      while true # sequence
14224        _tmp = match_string("=")
14225        unless _tmp
14226          self.pos = _save5
14227          break
14228        end
14229        _tmp = apply(:_Spnl)
14230        unless _tmp
14231          self.pos = _save5
14232          break
14233        end
14234
14235        _save6 = self.pos
14236        while true # choice
14237          _tmp = apply(:_Quoted)
14238          break if _tmp
14239          self.pos = _save6
14240          _save7 = self.pos
14241
14242          _save8 = self.pos
14243          while true # sequence
14244            _save9 = self.pos
14245            _tmp = match_string(">")
14246            _tmp = _tmp ? nil : true
14247            self.pos = _save9
14248            unless _tmp
14249              self.pos = _save8
14250              break
14251            end
14252            _tmp = apply(:_Nonspacechar)
14253            unless _tmp
14254              self.pos = _save8
14255            end
14256            break
14257          end # end sequence
14258
14259          if _tmp
14260            while true
14261
14262              _save10 = self.pos
14263              while true # sequence
14264                _save11 = self.pos
14265                _tmp = match_string(">")
14266                _tmp = _tmp ? nil : true
14267                self.pos = _save11
14268                unless _tmp
14269                  self.pos = _save10
14270                  break
14271                end
14272                _tmp = apply(:_Nonspacechar)
14273                unless _tmp
14274                  self.pos = _save10
14275                end
14276                break
14277              end # end sequence
14278
14279              break unless _tmp
14280            end
14281            _tmp = true
14282          else
14283            self.pos = _save7
14284          end
14285          break if _tmp
14286          self.pos = _save6
14287          break
14288        end # end choice
14289
14290        unless _tmp
14291          self.pos = _save5
14292        end
14293        break
14294      end # end sequence
14295
14296      unless _tmp
14297        _tmp = true
14298        self.pos = _save4
14299      end
14300      unless _tmp
14301        self.pos = _save
14302        break
14303      end
14304      _tmp = apply(:_Spnl)
14305      unless _tmp
14306        self.pos = _save
14307      end
14308      break
14309    end # end sequence
14310
14311    set_failed_rule :_HtmlAttribute unless _tmp
14312    return _tmp
14313  end
14314
14315  # HtmlComment = "<!--" (!"-->" .)* "-->"
14316  def _HtmlComment
14317
14318    _save = self.pos
14319    while true # sequence
14320      _tmp = match_string("<!--")
14321      unless _tmp
14322        self.pos = _save
14323        break
14324      end
14325      while true
14326
14327        _save2 = self.pos
14328        while true # sequence
14329          _save3 = self.pos
14330          _tmp = match_string("-->")
14331          _tmp = _tmp ? nil : true
14332          self.pos = _save3
14333          unless _tmp
14334            self.pos = _save2
14335            break
14336          end
14337          _tmp = get_byte
14338          unless _tmp
14339            self.pos = _save2
14340          end
14341          break
14342        end # end sequence
14343
14344        break unless _tmp
14345      end
14346      _tmp = true
14347      unless _tmp
14348        self.pos = _save
14349        break
14350      end
14351      _tmp = match_string("-->")
14352      unless _tmp
14353        self.pos = _save
14354      end
14355      break
14356    end # end sequence
14357
14358    set_failed_rule :_HtmlComment unless _tmp
14359    return _tmp
14360  end
14361
14362  # HtmlTag = "<" Spnl "/"? AlphanumericAscii+ Spnl HtmlAttribute* "/"? Spnl ">"
14363  def _HtmlTag
14364
14365    _save = self.pos
14366    while true # sequence
14367      _tmp = match_string("<")
14368      unless _tmp
14369        self.pos = _save
14370        break
14371      end
14372      _tmp = apply(:_Spnl)
14373      unless _tmp
14374        self.pos = _save
14375        break
14376      end
14377      _save1 = self.pos
14378      _tmp = match_string("/")
14379      unless _tmp
14380        _tmp = true
14381        self.pos = _save1
14382      end
14383      unless _tmp
14384        self.pos = _save
14385        break
14386      end
14387      _save2 = self.pos
14388      _tmp = apply(:_AlphanumericAscii)
14389      if _tmp
14390        while true
14391          _tmp = apply(:_AlphanumericAscii)
14392          break unless _tmp
14393        end
14394        _tmp = true
14395      else
14396        self.pos = _save2
14397      end
14398      unless _tmp
14399        self.pos = _save
14400        break
14401      end
14402      _tmp = apply(:_Spnl)
14403      unless _tmp
14404        self.pos = _save
14405        break
14406      end
14407      while true
14408        _tmp = apply(:_HtmlAttribute)
14409        break unless _tmp
14410      end
14411      _tmp = true
14412      unless _tmp
14413        self.pos = _save
14414        break
14415      end
14416      _save4 = self.pos
14417      _tmp = match_string("/")
14418      unless _tmp
14419        _tmp = true
14420        self.pos = _save4
14421      end
14422      unless _tmp
14423        self.pos = _save
14424        break
14425      end
14426      _tmp = apply(:_Spnl)
14427      unless _tmp
14428        self.pos = _save
14429        break
14430      end
14431      _tmp = match_string(">")
14432      unless _tmp
14433        self.pos = _save
14434      end
14435      break
14436    end # end sequence
14437
14438    set_failed_rule :_HtmlTag unless _tmp
14439    return _tmp
14440  end
14441
14442  # Eof = !.
14443  def _Eof
14444    _save = self.pos
14445    _tmp = get_byte
14446    _tmp = _tmp ? nil : true
14447    self.pos = _save
14448    set_failed_rule :_Eof unless _tmp
14449    return _tmp
14450  end
14451
14452  # Nonspacechar = !@Spacechar !@Newline .
14453  def _Nonspacechar
14454
14455    _save = self.pos
14456    while true # sequence
14457      _save1 = self.pos
14458      _tmp = _Spacechar()
14459      _tmp = _tmp ? nil : true
14460      self.pos = _save1
14461      unless _tmp
14462        self.pos = _save
14463        break
14464      end
14465      _save2 = self.pos
14466      _tmp = _Newline()
14467      _tmp = _tmp ? nil : true
14468      self.pos = _save2
14469      unless _tmp
14470        self.pos = _save
14471        break
14472      end
14473      _tmp = get_byte
14474      unless _tmp
14475        self.pos = _save
14476      end
14477      break
14478    end # end sequence
14479
14480    set_failed_rule :_Nonspacechar unless _tmp
14481    return _tmp
14482  end
14483
14484  # Sp = @Spacechar*
14485  def _Sp
14486    while true
14487      _tmp = _Spacechar()
14488      break unless _tmp
14489    end
14490    _tmp = true
14491    set_failed_rule :_Sp unless _tmp
14492    return _tmp
14493  end
14494
14495  # Spnl = @Sp (@Newline @Sp)?
14496  def _Spnl
14497
14498    _save = self.pos
14499    while true # sequence
14500      _tmp = _Sp()
14501      unless _tmp
14502        self.pos = _save
14503        break
14504      end
14505      _save1 = self.pos
14506
14507      _save2 = self.pos
14508      while true # sequence
14509        _tmp = _Newline()
14510        unless _tmp
14511          self.pos = _save2
14512          break
14513        end
14514        _tmp = _Sp()
14515        unless _tmp
14516          self.pos = _save2
14517        end
14518        break
14519      end # end sequence
14520
14521      unless _tmp
14522        _tmp = true
14523        self.pos = _save1
14524      end
14525      unless _tmp
14526        self.pos = _save
14527      end
14528      break
14529    end # end sequence
14530
14531    set_failed_rule :_Spnl unless _tmp
14532    return _tmp
14533  end
14534
14535  # SpecialChar = (/[~*_`&\[\]()<!#\\'"]/ | @ExtendedSpecialChar)
14536  def _SpecialChar
14537
14538    _save = self.pos
14539    while true # choice
14540      _tmp = scan(/\A(?-mix:[~*_`&\[\]()<!#\\'"])/)
14541      break if _tmp
14542      self.pos = _save
14543      _tmp = _ExtendedSpecialChar()
14544      break if _tmp
14545      self.pos = _save
14546      break
14547    end # end choice
14548
14549    set_failed_rule :_SpecialChar unless _tmp
14550    return _tmp
14551  end
14552
14553  # NormalChar = !(@SpecialChar | @Spacechar | @Newline) .
14554  def _NormalChar
14555
14556    _save = self.pos
14557    while true # sequence
14558      _save1 = self.pos
14559
14560      _save2 = self.pos
14561      while true # choice
14562        _tmp = _SpecialChar()
14563        break if _tmp
14564        self.pos = _save2
14565        _tmp = _Spacechar()
14566        break if _tmp
14567        self.pos = _save2
14568        _tmp = _Newline()
14569        break if _tmp
14570        self.pos = _save2
14571        break
14572      end # end choice
14573
14574      _tmp = _tmp ? nil : true
14575      self.pos = _save1
14576      unless _tmp
14577        self.pos = _save
14578        break
14579      end
14580      _tmp = get_byte
14581      unless _tmp
14582        self.pos = _save
14583      end
14584      break
14585    end # end sequence
14586
14587    set_failed_rule :_NormalChar unless _tmp
14588    return _tmp
14589  end
14590
14591  # Digit = [0-9]
14592  def _Digit
14593    _save = self.pos
14594    _tmp = get_byte
14595    if _tmp
14596      unless _tmp >= 48 and _tmp <= 57
14597        self.pos = _save
14598        _tmp = nil
14599      end
14600    end
14601    set_failed_rule :_Digit unless _tmp
14602    return _tmp
14603  end
14604
14605  # Alphanumeric = %literals.Alphanumeric
14606  def _Alphanumeric
14607    _tmp = @_grammar_literals.external_invoke(self, :_Alphanumeric)
14608    set_failed_rule :_Alphanumeric unless _tmp
14609    return _tmp
14610  end
14611
14612  # AlphanumericAscii = %literals.AlphanumericAscii
14613  def _AlphanumericAscii
14614    _tmp = @_grammar_literals.external_invoke(self, :_AlphanumericAscii)
14615    set_failed_rule :_AlphanumericAscii unless _tmp
14616    return _tmp
14617  end
14618
14619  # BOM = %literals.BOM
14620  def _BOM
14621    _tmp = @_grammar_literals.external_invoke(self, :_BOM)
14622    set_failed_rule :_BOM unless _tmp
14623    return _tmp
14624  end
14625
14626  # Newline = %literals.Newline
14627  def _Newline
14628    _tmp = @_grammar_literals.external_invoke(self, :_Newline)
14629    set_failed_rule :_Newline unless _tmp
14630    return _tmp
14631  end
14632
14633  # Spacechar = %literals.Spacechar
14634  def _Spacechar
14635    _tmp = @_grammar_literals.external_invoke(self, :_Spacechar)
14636    set_failed_rule :_Spacechar unless _tmp
14637    return _tmp
14638  end
14639
14640  # HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";" { [text.to_i(16)].pack 'U' }
14641  def _HexEntity
14642
14643    _save = self.pos
14644    while true # sequence
14645      _tmp = scan(/\A(?i-mx:&#x)/)
14646      unless _tmp
14647        self.pos = _save
14648        break
14649      end
14650      _text_start = self.pos
14651      _tmp = scan(/\A(?-mix:[0-9a-fA-F]+)/)
14652      if _tmp
14653        text = get_text(_text_start)
14654      end
14655      unless _tmp
14656        self.pos = _save
14657        break
14658      end
14659      _tmp = match_string(";")
14660      unless _tmp
14661        self.pos = _save
14662        break
14663      end
14664      @result = begin;  [text.to_i(16)].pack 'U' ; end
14665      _tmp = true
14666      unless _tmp
14667        self.pos = _save
14668      end
14669      break
14670    end # end sequence
14671
14672    set_failed_rule :_HexEntity unless _tmp
14673    return _tmp
14674  end
14675
14676  # DecEntity = "&#" < /[0-9]+/ > ";" { [text.to_i].pack 'U' }
14677  def _DecEntity
14678
14679    _save = self.pos
14680    while true # sequence
14681      _tmp = match_string("&#")
14682      unless _tmp
14683        self.pos = _save
14684        break
14685      end
14686      _text_start = self.pos
14687      _tmp = scan(/\A(?-mix:[0-9]+)/)
14688      if _tmp
14689        text = get_text(_text_start)
14690      end
14691      unless _tmp
14692        self.pos = _save
14693        break
14694      end
14695      _tmp = match_string(";")
14696      unless _tmp
14697        self.pos = _save
14698        break
14699      end
14700      @result = begin;  [text.to_i].pack 'U' ; end
14701      _tmp = true
14702      unless _tmp
14703        self.pos = _save
14704      end
14705      break
14706    end # end sequence
14707
14708    set_failed_rule :_DecEntity unless _tmp
14709    return _tmp
14710  end
14711
14712  # CharEntity = "&" < /[A-Za-z0-9]+/ > ";" { if entity = HTML_ENTITIES[text] then                  entity.pack 'U*'                else                  "&#{text};"                end              }
14713  def _CharEntity
14714
14715    _save = self.pos
14716    while true # sequence
14717      _tmp = match_string("&")
14718      unless _tmp
14719        self.pos = _save
14720        break
14721      end
14722      _text_start = self.pos
14723      _tmp = scan(/\A(?-mix:[A-Za-z0-9]+)/)
14724      if _tmp
14725        text = get_text(_text_start)
14726      end
14727      unless _tmp
14728        self.pos = _save
14729        break
14730      end
14731      _tmp = match_string(";")
14732      unless _tmp
14733        self.pos = _save
14734        break
14735      end
14736      @result = begin;  if entity = HTML_ENTITIES[text] then
14737                 entity.pack 'U*'
14738               else
14739                 "&#{text};"
14740               end
14741             ; end
14742      _tmp = true
14743      unless _tmp
14744        self.pos = _save
14745      end
14746      break
14747    end # end sequence
14748
14749    set_failed_rule :_CharEntity unless _tmp
14750    return _tmp
14751  end
14752
14753  # NonindentSpace = / {0,3}/
14754  def _NonindentSpace
14755    _tmp = scan(/\A(?-mix: {0,3})/)
14756    set_failed_rule :_NonindentSpace unless _tmp
14757    return _tmp
14758  end
14759
14760  # Indent = /\t|    /
14761  def _Indent
14762    _tmp = scan(/\A(?-mix:\t|    )/)
14763    set_failed_rule :_Indent unless _tmp
14764    return _tmp
14765  end
14766
14767  # IndentedLine = Indent Line
14768  def _IndentedLine
14769
14770    _save = self.pos
14771    while true # sequence
14772      _tmp = apply(:_Indent)
14773      unless _tmp
14774        self.pos = _save
14775        break
14776      end
14777      _tmp = apply(:_Line)
14778      unless _tmp
14779        self.pos = _save
14780      end
14781      break
14782    end # end sequence
14783
14784    set_failed_rule :_IndentedLine unless _tmp
14785    return _tmp
14786  end
14787
14788  # OptionallyIndentedLine = Indent? Line
14789  def _OptionallyIndentedLine
14790
14791    _save = self.pos
14792    while true # sequence
14793      _save1 = self.pos
14794      _tmp = apply(:_Indent)
14795      unless _tmp
14796        _tmp = true
14797        self.pos = _save1
14798      end
14799      unless _tmp
14800        self.pos = _save
14801        break
14802      end
14803      _tmp = apply(:_Line)
14804      unless _tmp
14805        self.pos = _save
14806      end
14807      break
14808    end # end sequence
14809
14810    set_failed_rule :_OptionallyIndentedLine unless _tmp
14811    return _tmp
14812  end
14813
14814  # StartList = &. { [] }
14815  def _StartList
14816
14817    _save = self.pos
14818    while true # sequence
14819      _save1 = self.pos
14820      _tmp = get_byte
14821      self.pos = _save1
14822      unless _tmp
14823        self.pos = _save
14824        break
14825      end
14826      @result = begin;  [] ; end
14827      _tmp = true
14828      unless _tmp
14829        self.pos = _save
14830      end
14831      break
14832    end # end sequence
14833
14834    set_failed_rule :_StartList unless _tmp
14835    return _tmp
14836  end
14837
14838  # Line = @RawLine:a { a }
14839  def _Line
14840
14841    _save = self.pos
14842    while true # sequence
14843      _tmp = _RawLine()
14844      a = @result
14845      unless _tmp
14846        self.pos = _save
14847        break
14848      end
14849      @result = begin;  a ; end
14850      _tmp = true
14851      unless _tmp
14852        self.pos = _save
14853      end
14854      break
14855    end # end sequence
14856
14857    set_failed_rule :_Line unless _tmp
14858    return _tmp
14859  end
14860
14861  # RawLine = (< (!"\r" !"\n" .)* @Newline > | < .+ > @Eof) { text }
14862  def _RawLine
14863
14864    _save = self.pos
14865    while true # sequence
14866
14867      _save1 = self.pos
14868      while true # choice
14869        _text_start = self.pos
14870
14871        _save2 = self.pos
14872        while true # sequence
14873          while true
14874
14875            _save4 = self.pos
14876            while true # sequence
14877              _save5 = self.pos
14878              _tmp = match_string("\r")
14879              _tmp = _tmp ? nil : true
14880              self.pos = _save5
14881              unless _tmp
14882                self.pos = _save4
14883                break
14884              end
14885              _save6 = self.pos
14886              _tmp = match_string("\n")
14887              _tmp = _tmp ? nil : true
14888              self.pos = _save6
14889              unless _tmp
14890                self.pos = _save4
14891                break
14892              end
14893              _tmp = get_byte
14894              unless _tmp
14895                self.pos = _save4
14896              end
14897              break
14898            end # end sequence
14899
14900            break unless _tmp
14901          end
14902          _tmp = true
14903          unless _tmp
14904            self.pos = _save2
14905            break
14906          end
14907          _tmp = _Newline()
14908          unless _tmp
14909            self.pos = _save2
14910          end
14911          break
14912        end # end sequence
14913
14914        if _tmp
14915          text = get_text(_text_start)
14916        end
14917        break if _tmp
14918        self.pos = _save1
14919
14920        _save7 = self.pos
14921        while true # sequence
14922          _text_start = self.pos
14923          _save8 = self.pos
14924          _tmp = get_byte
14925          if _tmp
14926            while true
14927              _tmp = get_byte
14928              break unless _tmp
14929            end
14930            _tmp = true
14931          else
14932            self.pos = _save8
14933          end
14934          if _tmp
14935            text = get_text(_text_start)
14936          end
14937          unless _tmp
14938            self.pos = _save7
14939            break
14940          end
14941          _tmp = _Eof()
14942          unless _tmp
14943            self.pos = _save7
14944          end
14945          break
14946        end # end sequence
14947
14948        break if _tmp
14949        self.pos = _save1
14950        break
14951      end # end choice
14952
14953      unless _tmp
14954        self.pos = _save
14955        break
14956      end
14957      @result = begin;  text ; end
14958      _tmp = true
14959      unless _tmp
14960        self.pos = _save
14961      end
14962      break
14963    end # end sequence
14964
14965    set_failed_rule :_RawLine unless _tmp
14966    return _tmp
14967  end
14968
14969  # SkipBlock = (HtmlBlock | (!"#" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)
14970  def _SkipBlock
14971
14972    _save = self.pos
14973    while true # choice
14974      _tmp = apply(:_HtmlBlock)
14975      break if _tmp
14976      self.pos = _save
14977
14978      _save1 = self.pos
14979      while true # sequence
14980        _save2 = self.pos
14981
14982        _save3 = self.pos
14983        while true # sequence
14984          _save4 = self.pos
14985          _tmp = match_string("#")
14986          _tmp = _tmp ? nil : true
14987          self.pos = _save4
14988          unless _tmp
14989            self.pos = _save3
14990            break
14991          end
14992          _save5 = self.pos
14993          _tmp = apply(:_SetextBottom1)
14994          _tmp = _tmp ? nil : true
14995          self.pos = _save5
14996          unless _tmp
14997            self.pos = _save3
14998            break
14999          end
15000          _save6 = self.pos
15001          _tmp = apply(:_SetextBottom2)
15002          _tmp = _tmp ? nil : true
15003          self.pos = _save6
15004          unless _tmp
15005            self.pos = _save3
15006            break
15007          end
15008          _save7 = self.pos
15009          _tmp = _BlankLine()
15010          _tmp = _tmp ? nil : true
15011          self.pos = _save7
15012          unless _tmp
15013            self.pos = _save3
15014            break
15015          end
15016          _tmp = _RawLine()
15017          unless _tmp
15018            self.pos = _save3
15019          end
15020          break
15021        end # end sequence
15022
15023        if _tmp
15024          while true
15025
15026            _save8 = self.pos
15027            while true # sequence
15028              _save9 = self.pos
15029              _tmp = match_string("#")
15030              _tmp = _tmp ? nil : true
15031              self.pos = _save9
15032              unless _tmp
15033                self.pos = _save8
15034                break
15035              end
15036              _save10 = self.pos
15037              _tmp = apply(:_SetextBottom1)
15038              _tmp = _tmp ? nil : true
15039              self.pos = _save10
15040              unless _tmp
15041                self.pos = _save8
15042                break
15043              end
15044              _save11 = self.pos
15045              _tmp = apply(:_SetextBottom2)
15046              _tmp = _tmp ? nil : true
15047              self.pos = _save11
15048              unless _tmp
15049                self.pos = _save8
15050                break
15051              end
15052              _save12 = self.pos
15053              _tmp = _BlankLine()
15054              _tmp = _tmp ? nil : true
15055              self.pos = _save12
15056              unless _tmp
15057                self.pos = _save8
15058                break
15059              end
15060              _tmp = _RawLine()
15061              unless _tmp
15062                self.pos = _save8
15063              end
15064              break
15065            end # end sequence
15066
15067            break unless _tmp
15068          end
15069          _tmp = true
15070        else
15071          self.pos = _save2
15072        end
15073        unless _tmp
15074          self.pos = _save1
15075          break
15076        end
15077        while true
15078          _tmp = _BlankLine()
15079          break unless _tmp
15080        end
15081        _tmp = true
15082        unless _tmp
15083          self.pos = _save1
15084        end
15085        break
15086      end # end sequence
15087
15088      break if _tmp
15089      self.pos = _save
15090      _save14 = self.pos
15091      _tmp = _BlankLine()
15092      if _tmp
15093        while true
15094          _tmp = _BlankLine()
15095          break unless _tmp
15096        end
15097        _tmp = true
15098      else
15099        self.pos = _save14
15100      end
15101      break if _tmp
15102      self.pos = _save
15103      _tmp = _RawLine()
15104      break if _tmp
15105      self.pos = _save
15106      break
15107    end # end choice
15108
15109    set_failed_rule :_SkipBlock unless _tmp
15110    return _tmp
15111  end
15112
15113  # ExtendedSpecialChar = &{ notes? } "^"
15114  def _ExtendedSpecialChar
15115
15116    _save = self.pos
15117    while true # sequence
15118      _save1 = self.pos
15119      _tmp = begin;  notes? ; end
15120      self.pos = _save1
15121      unless _tmp
15122        self.pos = _save
15123        break
15124      end
15125      _tmp = match_string("^")
15126      unless _tmp
15127        self.pos = _save
15128      end
15129      break
15130    end # end sequence
15131
15132    set_failed_rule :_ExtendedSpecialChar unless _tmp
15133    return _tmp
15134  end
15135
15136  # NoteReference = &{ notes? } RawNoteReference:ref { note_for ref }
15137  def _NoteReference
15138
15139    _save = self.pos
15140    while true # sequence
15141      _save1 = self.pos
15142      _tmp = begin;  notes? ; end
15143      self.pos = _save1
15144      unless _tmp
15145        self.pos = _save
15146        break
15147      end
15148      _tmp = apply(:_RawNoteReference)
15149      ref = @result
15150      unless _tmp
15151        self.pos = _save
15152        break
15153      end
15154      @result = begin;  note_for ref ; end
15155      _tmp = true
15156      unless _tmp
15157        self.pos = _save
15158      end
15159      break
15160    end # end sequence
15161
15162    set_failed_rule :_NoteReference unless _tmp
15163    return _tmp
15164  end
15165
15166  # RawNoteReference = "[^" < (!@Newline !"]" .)+ > "]" { text }
15167  def _RawNoteReference
15168
15169    _save = self.pos
15170    while true # sequence
15171      _tmp = match_string("[^")
15172      unless _tmp
15173        self.pos = _save
15174        break
15175      end
15176      _text_start = self.pos
15177      _save1 = self.pos
15178
15179      _save2 = self.pos
15180      while true # sequence
15181        _save3 = self.pos
15182        _tmp = _Newline()
15183        _tmp = _tmp ? nil : true
15184        self.pos = _save3
15185        unless _tmp
15186          self.pos = _save2
15187          break
15188        end
15189        _save4 = self.pos
15190        _tmp = match_string("]")
15191        _tmp = _tmp ? nil : true
15192        self.pos = _save4
15193        unless _tmp
15194          self.pos = _save2
15195          break
15196        end
15197        _tmp = get_byte
15198        unless _tmp
15199          self.pos = _save2
15200        end
15201        break
15202      end # end sequence
15203
15204      if _tmp
15205        while true
15206
15207          _save5 = self.pos
15208          while true # sequence
15209            _save6 = self.pos
15210            _tmp = _Newline()
15211            _tmp = _tmp ? nil : true
15212            self.pos = _save6
15213            unless _tmp
15214              self.pos = _save5
15215              break
15216            end
15217            _save7 = self.pos
15218            _tmp = match_string("]")
15219            _tmp = _tmp ? nil : true
15220            self.pos = _save7
15221            unless _tmp
15222              self.pos = _save5
15223              break
15224            end
15225            _tmp = get_byte
15226            unless _tmp
15227              self.pos = _save5
15228            end
15229            break
15230          end # end sequence
15231
15232          break unless _tmp
15233        end
15234        _tmp = true
15235      else
15236        self.pos = _save1
15237      end
15238      if _tmp
15239        text = get_text(_text_start)
15240      end
15241      unless _tmp
15242        self.pos = _save
15243        break
15244      end
15245      _tmp = match_string("]")
15246      unless _tmp
15247        self.pos = _save
15248        break
15249      end
15250      @result = begin;  text ; end
15251      _tmp = true
15252      unless _tmp
15253        self.pos = _save
15254      end
15255      break
15256    end # end sequence
15257
15258    set_failed_rule :_RawNoteReference unless _tmp
15259    return _tmp
15260  end
15261
15262  # Note = &{ notes? } @NonindentSpace RawNoteReference:ref ":" @Sp @StartList:a RawNoteBlock:i { a.concat i } (&Indent RawNoteBlock:i { a.concat i })* { @footnotes[ref] = paragraph a                    nil                 }
15263  def _Note
15264
15265    _save = self.pos
15266    while true # sequence
15267      _save1 = self.pos
15268      _tmp = begin;  notes? ; end
15269      self.pos = _save1
15270      unless _tmp
15271        self.pos = _save
15272        break
15273      end
15274      _tmp = _NonindentSpace()
15275      unless _tmp
15276        self.pos = _save
15277        break
15278      end
15279      _tmp = apply(:_RawNoteReference)
15280      ref = @result
15281      unless _tmp
15282        self.pos = _save
15283        break
15284      end
15285      _tmp = match_string(":")
15286      unless _tmp
15287        self.pos = _save
15288        break
15289      end
15290      _tmp = _Sp()
15291      unless _tmp
15292        self.pos = _save
15293        break
15294      end
15295      _tmp = _StartList()
15296      a = @result
15297      unless _tmp
15298        self.pos = _save
15299        break
15300      end
15301      _tmp = apply(:_RawNoteBlock)
15302      i = @result
15303      unless _tmp
15304        self.pos = _save
15305        break
15306      end
15307      @result = begin;  a.concat i ; end
15308      _tmp = true
15309      unless _tmp
15310        self.pos = _save
15311        break
15312      end
15313      while true
15314
15315        _save3 = self.pos
15316        while true # sequence
15317          _save4 = self.pos
15318          _tmp = apply(:_Indent)
15319          self.pos = _save4
15320          unless _tmp
15321            self.pos = _save3
15322            break
15323          end
15324          _tmp = apply(:_RawNoteBlock)
15325          i = @result
15326          unless _tmp
15327            self.pos = _save3
15328            break
15329          end
15330          @result = begin;  a.concat i ; end
15331          _tmp = true
15332          unless _tmp
15333            self.pos = _save3
15334          end
15335          break
15336        end # end sequence
15337
15338        break unless _tmp
15339      end
15340      _tmp = true
15341      unless _tmp
15342        self.pos = _save
15343        break
15344      end
15345      @result = begin;  @footnotes[ref] = paragraph a
15346
15347                  nil
15348                ; end
15349      _tmp = true
15350      unless _tmp
15351        self.pos = _save
15352      end
15353      break
15354    end # end sequence
15355
15356    set_failed_rule :_Note unless _tmp
15357    return _tmp
15358  end
15359
15360  # InlineNote = &{ notes? } "^[" @StartList:a (!"]" Inline:l { a << l })+ "]" { ref = [:inline, @note_order.length]                @footnotes[ref] = paragraph a                 note_for ref              }
15361  def _InlineNote
15362
15363    _save = self.pos
15364    while true # sequence
15365      _save1 = self.pos
15366      _tmp = begin;  notes? ; end
15367      self.pos = _save1
15368      unless _tmp
15369        self.pos = _save
15370        break
15371      end
15372      _tmp = match_string("^[")
15373      unless _tmp
15374        self.pos = _save
15375        break
15376      end
15377      _tmp = _StartList()
15378      a = @result
15379      unless _tmp
15380        self.pos = _save
15381        break
15382      end
15383      _save2 = self.pos
15384
15385      _save3 = self.pos
15386      while true # sequence
15387        _save4 = self.pos
15388        _tmp = match_string("]")
15389        _tmp = _tmp ? nil : true
15390        self.pos = _save4
15391        unless _tmp
15392          self.pos = _save3
15393          break
15394        end
15395        _tmp = apply(:_Inline)
15396        l = @result
15397        unless _tmp
15398          self.pos = _save3
15399          break
15400        end
15401        @result = begin;  a << l ; end
15402        _tmp = true
15403        unless _tmp
15404          self.pos = _save3
15405        end
15406        break
15407      end # end sequence
15408
15409      if _tmp
15410        while true
15411
15412          _save5 = self.pos
15413          while true # sequence
15414            _save6 = self.pos
15415            _tmp = match_string("]")
15416            _tmp = _tmp ? nil : true
15417            self.pos = _save6
15418            unless _tmp
15419              self.pos = _save5
15420              break
15421            end
15422            _tmp = apply(:_Inline)
15423            l = @result
15424            unless _tmp
15425              self.pos = _save5
15426              break
15427            end
15428            @result = begin;  a << l ; end
15429            _tmp = true
15430            unless _tmp
15431              self.pos = _save5
15432            end
15433            break
15434          end # end sequence
15435
15436          break unless _tmp
15437        end
15438        _tmp = true
15439      else
15440        self.pos = _save2
15441      end
15442      unless _tmp
15443        self.pos = _save
15444        break
15445      end
15446      _tmp = match_string("]")
15447      unless _tmp
15448        self.pos = _save
15449        break
15450      end
15451      @result = begin;  ref = [:inline, @note_order.length]
15452               @footnotes[ref] = paragraph a
15453
15454               note_for ref
15455             ; end
15456      _tmp = true
15457      unless _tmp
15458        self.pos = _save
15459      end
15460      break
15461    end # end sequence
15462
15463    set_failed_rule :_InlineNote unless _tmp
15464    return _tmp
15465  end
15466
15467  # Notes = (Note | SkipBlock)*
15468  def _Notes
15469    while true
15470
15471      _save1 = self.pos
15472      while true # choice
15473        _tmp = apply(:_Note)
15474        break if _tmp
15475        self.pos = _save1
15476        _tmp = apply(:_SkipBlock)
15477        break if _tmp
15478        self.pos = _save1
15479        break
15480      end # end choice
15481
15482      break unless _tmp
15483    end
15484    _tmp = true
15485    set_failed_rule :_Notes unless _tmp
15486    return _tmp
15487  end
15488
15489  # RawNoteBlock = @StartList:a (!@BlankLine OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }
15490  def _RawNoteBlock
15491
15492    _save = self.pos
15493    while true # sequence
15494      _tmp = _StartList()
15495      a = @result
15496      unless _tmp
15497        self.pos = _save
15498        break
15499      end
15500      _save1 = self.pos
15501
15502      _save2 = self.pos
15503      while true # sequence
15504        _save3 = self.pos
15505        _tmp = _BlankLine()
15506        _tmp = _tmp ? nil : true
15507        self.pos = _save3
15508        unless _tmp
15509          self.pos = _save2
15510          break
15511        end
15512        _tmp = apply(:_OptionallyIndentedLine)
15513        l = @result
15514        unless _tmp
15515          self.pos = _save2
15516          break
15517        end
15518        @result = begin;  a << l ; end
15519        _tmp = true
15520        unless _tmp
15521          self.pos = _save2
15522        end
15523        break
15524      end # end sequence
15525
15526      if _tmp
15527        while true
15528
15529          _save4 = self.pos
15530          while true # sequence
15531            _save5 = self.pos
15532            _tmp = _BlankLine()
15533            _tmp = _tmp ? nil : true
15534            self.pos = _save5
15535            unless _tmp
15536              self.pos = _save4
15537              break
15538            end
15539            _tmp = apply(:_OptionallyIndentedLine)
15540            l = @result
15541            unless _tmp
15542              self.pos = _save4
15543              break
15544            end
15545            @result = begin;  a << l ; end
15546            _tmp = true
15547            unless _tmp
15548              self.pos = _save4
15549            end
15550            break
15551          end # end sequence
15552
15553          break unless _tmp
15554        end
15555        _tmp = true
15556      else
15557        self.pos = _save1
15558      end
15559      unless _tmp
15560        self.pos = _save
15561        break
15562      end
15563      _text_start = self.pos
15564      while true
15565        _tmp = _BlankLine()
15566        break unless _tmp
15567      end
15568      _tmp = true
15569      if _tmp
15570        text = get_text(_text_start)
15571      end
15572      unless _tmp
15573        self.pos = _save
15574        break
15575      end
15576      @result = begin;  a << text ; end
15577      _tmp = true
15578      unless _tmp
15579        self.pos = _save
15580        break
15581      end
15582      @result = begin;  a ; end
15583      _tmp = true
15584      unless _tmp
15585        self.pos = _save
15586      end
15587      break
15588    end # end sequence
15589
15590    set_failed_rule :_RawNoteBlock unless _tmp
15591    return _tmp
15592  end
15593
15594  # CodeFence = &{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!"`" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text               verbatim.format = format.intern if format.instance_of?(String)               verbatim             }
15595  def _CodeFence
15596
15597    _save = self.pos
15598    while true # sequence
15599      _save1 = self.pos
15600      _tmp = begin;  github? ; end
15601      self.pos = _save1
15602      unless _tmp
15603        self.pos = _save
15604        break
15605      end
15606      _tmp = apply(:_Ticks3)
15607      unless _tmp
15608        self.pos = _save
15609        break
15610      end
15611      _save2 = self.pos
15612
15613      _save3 = self.pos
15614      while true # sequence
15615        _tmp = _Sp()
15616        unless _tmp
15617          self.pos = _save3
15618          break
15619        end
15620        _tmp = apply(:_StrChunk)
15621        format = @result
15622        unless _tmp
15623          self.pos = _save3
15624        end
15625        break
15626      end # end sequence
15627
15628      unless _tmp
15629        _tmp = true
15630        self.pos = _save2
15631      end
15632      unless _tmp
15633        self.pos = _save
15634        break
15635      end
15636      _tmp = apply(:_Spnl)
15637      unless _tmp
15638        self.pos = _save
15639        break
15640      end
15641      _text_start = self.pos
15642      _save4 = self.pos
15643
15644      _save5 = self.pos
15645      while true # choice
15646        _save6 = self.pos
15647
15648        _save7 = self.pos
15649        while true # sequence
15650          _save8 = self.pos
15651          _tmp = match_string("`")
15652          _tmp = _tmp ? nil : true
15653          self.pos = _save8
15654          unless _tmp
15655            self.pos = _save7
15656            break
15657          end
15658          _tmp = apply(:_Nonspacechar)
15659          unless _tmp
15660            self.pos = _save7
15661          end
15662          break
15663        end # end sequence
15664
15665        if _tmp
15666          while true
15667
15668            _save9 = self.pos
15669            while true # sequence
15670              _save10 = self.pos
15671              _tmp = match_string("`")
15672              _tmp = _tmp ? nil : true
15673              self.pos = _save10
15674              unless _tmp
15675                self.pos = _save9
15676                break
15677              end
15678              _tmp = apply(:_Nonspacechar)
15679              unless _tmp
15680                self.pos = _save9
15681              end
15682              break
15683            end # end sequence
15684
15685            break unless _tmp
15686          end
15687          _tmp = true
15688        else
15689          self.pos = _save6
15690        end
15691        break if _tmp
15692        self.pos = _save5
15693
15694        _save11 = self.pos
15695        while true # sequence
15696          _save12 = self.pos
15697          _tmp = apply(:_Ticks3)
15698          _tmp = _tmp ? nil : true
15699          self.pos = _save12
15700          unless _tmp
15701            self.pos = _save11
15702            break
15703          end
15704          _tmp = scan(/\A(?-mix:`+)/)
15705          unless _tmp
15706            self.pos = _save11
15707          end
15708          break
15709        end # end sequence
15710
15711        break if _tmp
15712        self.pos = _save5
15713        _tmp = apply(:_Spacechar)
15714        break if _tmp
15715        self.pos = _save5
15716        _tmp = _Newline()
15717        break if _tmp
15718        self.pos = _save5
15719        break
15720      end # end choice
15721
15722      if _tmp
15723        while true
15724
15725          _save13 = self.pos
15726          while true # choice
15727            _save14 = self.pos
15728
15729            _save15 = self.pos
15730            while true # sequence
15731              _save16 = self.pos
15732              _tmp = match_string("`")
15733              _tmp = _tmp ? nil : true
15734              self.pos = _save16
15735              unless _tmp
15736                self.pos = _save15
15737                break
15738              end
15739              _tmp = apply(:_Nonspacechar)
15740              unless _tmp
15741                self.pos = _save15
15742              end
15743              break
15744            end # end sequence
15745
15746            if _tmp
15747              while true
15748
15749                _save17 = self.pos
15750                while true # sequence
15751                  _save18 = self.pos
15752                  _tmp = match_string("`")
15753                  _tmp = _tmp ? nil : true
15754                  self.pos = _save18
15755                  unless _tmp
15756                    self.pos = _save17
15757                    break
15758                  end
15759                  _tmp = apply(:_Nonspacechar)
15760                  unless _tmp
15761                    self.pos = _save17
15762                  end
15763                  break
15764                end # end sequence
15765
15766                break unless _tmp
15767              end
15768              _tmp = true
15769            else
15770              self.pos = _save14
15771            end
15772            break if _tmp
15773            self.pos = _save13
15774
15775            _save19 = self.pos
15776            while true # sequence
15777              _save20 = self.pos
15778              _tmp = apply(:_Ticks3)
15779              _tmp = _tmp ? nil : true
15780              self.pos = _save20
15781              unless _tmp
15782                self.pos = _save19
15783                break
15784              end
15785              _tmp = scan(/\A(?-mix:`+)/)
15786              unless _tmp
15787                self.pos = _save19
15788              end
15789              break
15790            end # end sequence
15791
15792            break if _tmp
15793            self.pos = _save13
15794            _tmp = apply(:_Spacechar)
15795            break if _tmp
15796            self.pos = _save13
15797            _tmp = _Newline()
15798            break if _tmp
15799            self.pos = _save13
15800            break
15801          end # end choice
15802
15803          break unless _tmp
15804        end
15805        _tmp = true
15806      else
15807        self.pos = _save4
15808      end
15809      if _tmp
15810        text = get_text(_text_start)
15811      end
15812      unless _tmp
15813        self.pos = _save
15814        break
15815      end
15816      _tmp = apply(:_Ticks3)
15817      unless _tmp
15818        self.pos = _save
15819        break
15820      end
15821      _tmp = _Sp()
15822      unless _tmp
15823        self.pos = _save
15824        break
15825      end
15826      while true
15827        _tmp = _Newline()
15828        break unless _tmp
15829      end
15830      _tmp = true
15831      unless _tmp
15832        self.pos = _save
15833        break
15834      end
15835      @result = begin;  verbatim = RDoc::Markup::Verbatim.new text
15836              verbatim.format = format.intern if format.instance_of?(String)
15837              verbatim
15838            ; end
15839      _tmp = true
15840      unless _tmp
15841        self.pos = _save
15842      end
15843      break
15844    end # end sequence
15845
15846    set_failed_rule :_CodeFence unless _tmp
15847    return _tmp
15848  end
15849
15850  # DefinitionList = &{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }
15851  def _DefinitionList
15852
15853    _save = self.pos
15854    while true # sequence
15855      _save1 = self.pos
15856      _tmp = begin;  definition_lists? ; end
15857      self.pos = _save1
15858      unless _tmp
15859        self.pos = _save
15860        break
15861      end
15862      _save2 = self.pos
15863      _ary = []
15864      _tmp = apply(:_DefinitionListItem)
15865      if _tmp
15866        _ary << @result
15867        while true
15868          _tmp = apply(:_DefinitionListItem)
15869          _ary << @result if _tmp
15870          break unless _tmp
15871        end
15872        _tmp = true
15873        @result = _ary
15874      else
15875        self.pos = _save2
15876      end
15877      list = @result
15878      unless _tmp
15879        self.pos = _save
15880        break
15881      end
15882      @result = begin;  RDoc::Markup::List.new :NOTE, *list.flatten ; end
15883      _tmp = true
15884      unless _tmp
15885        self.pos = _save
15886      end
15887      break
15888    end # end sequence
15889
15890    set_failed_rule :_DefinitionList unless _tmp
15891    return _tmp
15892  end
15893
15894  # DefinitionListItem = DefinitionListLabel+:label DefinitionListDefinition+:defns { list_items = []                        list_items <<                          RDoc::Markup::ListItem.new(label, defns.shift)                         list_items.concat defns.map { |defn|                          RDoc::Markup::ListItem.new nil, defn                        } unless list_items.empty?                         list_items                      }
15895  def _DefinitionListItem
15896
15897    _save = self.pos
15898    while true # sequence
15899      _save1 = self.pos
15900      _ary = []
15901      _tmp = apply(:_DefinitionListLabel)
15902      if _tmp
15903        _ary << @result
15904        while true
15905          _tmp = apply(:_DefinitionListLabel)
15906          _ary << @result if _tmp
15907          break unless _tmp
15908        end
15909        _tmp = true
15910        @result = _ary
15911      else
15912        self.pos = _save1
15913      end
15914      label = @result
15915      unless _tmp
15916        self.pos = _save
15917        break
15918      end
15919      _save2 = self.pos
15920      _ary = []
15921      _tmp = apply(:_DefinitionListDefinition)
15922      if _tmp
15923        _ary << @result
15924        while true
15925          _tmp = apply(:_DefinitionListDefinition)
15926          _ary << @result if _tmp
15927          break unless _tmp
15928        end
15929        _tmp = true
15930        @result = _ary
15931      else
15932        self.pos = _save2
15933      end
15934      defns = @result
15935      unless _tmp
15936        self.pos = _save
15937        break
15938      end
15939      @result = begin;  list_items = []
15940                       list_items <<
15941                         RDoc::Markup::ListItem.new(label, defns.shift)
15942
15943                       list_items.concat defns.map { |defn|
15944                         RDoc::Markup::ListItem.new nil, defn
15945                       } unless list_items.empty?
15946
15947                       list_items
15948                     ; end
15949      _tmp = true
15950      unless _tmp
15951        self.pos = _save
15952      end
15953      break
15954    end # end sequence
15955
15956    set_failed_rule :_DefinitionListItem unless _tmp
15957    return _tmp
15958  end
15959
15960  # DefinitionListLabel = StrChunk:label @Sp @Newline { label }
15961  def _DefinitionListLabel
15962
15963    _save = self.pos
15964    while true # sequence
15965      _tmp = apply(:_StrChunk)
15966      label = @result
15967      unless _tmp
15968        self.pos = _save
15969        break
15970      end
15971      _tmp = _Sp()
15972      unless _tmp
15973        self.pos = _save
15974        break
15975      end
15976      _tmp = _Newline()
15977      unless _tmp
15978        self.pos = _save
15979        break
15980      end
15981      @result = begin;  label ; end
15982      _tmp = true
15983      unless _tmp
15984        self.pos = _save
15985      end
15986      break
15987    end # end sequence
15988
15989    set_failed_rule :_DefinitionListLabel unless _tmp
15990    return _tmp
15991  end
15992
15993  # DefinitionListDefinition = @NonindentSpace ":" @Space Inlines:a @BlankLine+ { paragraph a }
15994  def _DefinitionListDefinition
15995
15996    _save = self.pos
15997    while true # sequence
15998      _tmp = _NonindentSpace()
15999      unless _tmp
16000        self.pos = _save
16001        break
16002      end
16003      _tmp = match_string(":")
16004      unless _tmp
16005        self.pos = _save
16006        break
16007      end
16008      _tmp = _Space()
16009      unless _tmp
16010        self.pos = _save
16011        break
16012      end
16013      _tmp = apply(:_Inlines)
16014      a = @result
16015      unless _tmp
16016        self.pos = _save
16017        break
16018      end
16019      _save1 = self.pos
16020      _tmp = _BlankLine()
16021      if _tmp
16022        while true
16023          _tmp = _BlankLine()
16024          break unless _tmp
16025        end
16026        _tmp = true
16027      else
16028        self.pos = _save1
16029      end
16030      unless _tmp
16031        self.pos = _save
16032        break
16033      end
16034      @result = begin;  paragraph a ; end
16035      _tmp = true
16036      unless _tmp
16037        self.pos = _save
16038      end
16039      break
16040    end # end sequence
16041
16042    set_failed_rule :_DefinitionListDefinition unless _tmp
16043    return _tmp
16044  end
16045
16046  Rules = {}
16047  Rules[:_root] = rule_info("root", "Doc")
16048  Rules[:_Doc] = rule_info("Doc", "BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }")
16049  Rules[:_Block] = rule_info("Block", "@BlankLine* (BlockQuote | Verbatim | CodeFence | Note | Reference | HorizontalRule | Heading | OrderedList | BulletList | DefinitionList | HtmlBlock | StyleBlock | Para | Plain)")
16050  Rules[:_Para] = rule_info("Para", "@NonindentSpace Inlines:a @BlankLine+ { paragraph a }")
16051  Rules[:_Plain] = rule_info("Plain", "Inlines:a { paragraph a }")
16052  Rules[:_AtxInline] = rule_info("AtxInline", "!@Newline !(@Sp /\#*/ @Sp @Newline) Inline")
16053  Rules[:_AtxStart] = rule_info("AtxStart", "< /\\\#{1,6}/ > { text.length }")
16054  Rules[:_AtxHeading] = rule_info("AtxHeading", "AtxStart:s @Sp AtxInline+:a (@Sp /\#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }")
16055  Rules[:_SetextHeading] = rule_info("SetextHeading", "(SetextHeading1 | SetextHeading2)")
16056  Rules[:_SetextBottom1] = rule_info("SetextBottom1", "/={1,}/ @Newline")
16057  Rules[:_SetextBottom2] = rule_info("SetextBottom2", "/-{1,}/ @Newline")
16058  Rules[:_SetextHeading1] = rule_info("SetextHeading1", "&(@RawLine SetextBottom1) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom1 { RDoc::Markup::Heading.new(1, a.join) }")
16059  Rules[:_SetextHeading2] = rule_info("SetextHeading2", "&(@RawLine SetextBottom2) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom2 { RDoc::Markup::Heading.new(2, a.join) }")
16060  Rules[:_Heading] = rule_info("Heading", "(SetextHeading | AtxHeading)")
16061  Rules[:_BlockQuote] = rule_info("BlockQuote", "BlockQuoteRaw:a { RDoc::Markup::BlockQuote.new(*a) }")
16062  Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "@StartList:a (\">\" \" \"? Line:l { a << l } (!\">\" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }")
16063  Rules[:_NonblankIndentedLine] = rule_info("NonblankIndentedLine", "!@BlankLine IndentedLine")
16064  Rules[:_VerbatimChunk] = rule_info("VerbatimChunk", "@BlankLine*:a NonblankIndentedLine+:b { a.concat b }")
16065  Rules[:_Verbatim] = rule_info("Verbatim", "VerbatimChunk+:a { RDoc::Markup::Verbatim.new(*a.flatten) }")
16066  Rules[:_HorizontalRule] = rule_info("HorizontalRule", "@NonindentSpace (\"*\" @Sp \"*\" @Sp \"*\" (@Sp \"*\")* | \"-\" @Sp \"-\" @Sp \"-\" (@Sp \"-\")* | \"_\" @Sp \"_\" @Sp \"_\" (@Sp \"_\")*) @Sp @Newline @BlankLine+ { RDoc::Markup::Rule.new 1 }")
16067  Rules[:_Bullet] = rule_info("Bullet", "!HorizontalRule @NonindentSpace /[+*-]/ @Spacechar+")
16068  Rules[:_BulletList] = rule_info("BulletList", "&Bullet (ListTight | ListLoose):a { RDoc::Markup::List.new(:BULLET, *a) }")
16069  Rules[:_ListTight] = rule_info("ListTight", "ListItemTight+:a @BlankLine* !(Bullet | Enumerator) { a }")
16070  Rules[:_ListLoose] = rule_info("ListLoose", "@StartList:a (ListItem:b @BlankLine* { a << b })+ { a }")
16071  Rules[:_ListItem] = rule_info("ListItem", "(Bullet | Enumerator) @StartList:a ListBlock:b { a << b } (ListContinuationBlock:c { a.push(*c) })* { list_item_from a }")
16072  Rules[:_ListItemTight] = rule_info("ListItemTight", "(Bullet | Enumerator) ListBlock:a (!@BlankLine ListContinuationBlock:b { a.push(*b) })* !ListContinuationBlock { list_item_from a }")
16073  Rules[:_ListBlock] = rule_info("ListBlock", "!@BlankLine Line:a ListBlockLine*:c { [a, *c] }")
16074  Rules[:_ListContinuationBlock] = rule_info("ListContinuationBlock", "@StartList:a @BlankLine* { a << \"\\n\" } (Indent ListBlock:b { a.concat b })+ { a }")
16075  Rules[:_Enumerator] = rule_info("Enumerator", "@NonindentSpace [0-9]+ \".\" @Spacechar+")
16076  Rules[:_OrderedList] = rule_info("OrderedList", "&Enumerator (ListTight | ListLoose):a { RDoc::Markup::List.new(:NUMBER, *a) }")
16077  Rules[:_ListBlockLine] = rule_info("ListBlockLine", "!@BlankLine !(Indent? (Bullet | Enumerator)) !HorizontalRule OptionallyIndentedLine")
16078  Rules[:_HtmlOpenAnchor] = rule_info("HtmlOpenAnchor", "\"<\" Spnl (\"a\" | \"A\") Spnl HtmlAttribute* \">\"")
16079  Rules[:_HtmlCloseAnchor] = rule_info("HtmlCloseAnchor", "\"<\" Spnl \"/\" (\"a\" | \"A\") Spnl \">\"")
16080  Rules[:_HtmlAnchor] = rule_info("HtmlAnchor", "HtmlOpenAnchor (HtmlAnchor | !HtmlCloseAnchor .)* HtmlCloseAnchor")
16081  Rules[:_HtmlBlockOpenAddress] = rule_info("HtmlBlockOpenAddress", "\"<\" Spnl (\"address\" | \"ADDRESS\") Spnl HtmlAttribute* \">\"")
16082  Rules[:_HtmlBlockCloseAddress] = rule_info("HtmlBlockCloseAddress", "\"<\" Spnl \"/\" (\"address\" | \"ADDRESS\") Spnl \">\"")
16083  Rules[:_HtmlBlockAddress] = rule_info("HtmlBlockAddress", "HtmlBlockOpenAddress (HtmlBlockAddress | !HtmlBlockCloseAddress .)* HtmlBlockCloseAddress")
16084  Rules[:_HtmlBlockOpenBlockquote] = rule_info("HtmlBlockOpenBlockquote", "\"<\" Spnl (\"blockquote\" | \"BLOCKQUOTE\") Spnl HtmlAttribute* \">\"")
16085  Rules[:_HtmlBlockCloseBlockquote] = rule_info("HtmlBlockCloseBlockquote", "\"<\" Spnl \"/\" (\"blockquote\" | \"BLOCKQUOTE\") Spnl \">\"")
16086  Rules[:_HtmlBlockBlockquote] = rule_info("HtmlBlockBlockquote", "HtmlBlockOpenBlockquote (HtmlBlockBlockquote | !HtmlBlockCloseBlockquote .)* HtmlBlockCloseBlockquote")
16087  Rules[:_HtmlBlockOpenCenter] = rule_info("HtmlBlockOpenCenter", "\"<\" Spnl (\"center\" | \"CENTER\") Spnl HtmlAttribute* \">\"")
16088  Rules[:_HtmlBlockCloseCenter] = rule_info("HtmlBlockCloseCenter", "\"<\" Spnl \"/\" (\"center\" | \"CENTER\") Spnl \">\"")
16089  Rules[:_HtmlBlockCenter] = rule_info("HtmlBlockCenter", "HtmlBlockOpenCenter (HtmlBlockCenter | !HtmlBlockCloseCenter .)* HtmlBlockCloseCenter")
16090  Rules[:_HtmlBlockOpenDir] = rule_info("HtmlBlockOpenDir", "\"<\" Spnl (\"dir\" | \"DIR\") Spnl HtmlAttribute* \">\"")
16091  Rules[:_HtmlBlockCloseDir] = rule_info("HtmlBlockCloseDir", "\"<\" Spnl \"/\" (\"dir\" | \"DIR\") Spnl \">\"")
16092  Rules[:_HtmlBlockDir] = rule_info("HtmlBlockDir", "HtmlBlockOpenDir (HtmlBlockDir | !HtmlBlockCloseDir .)* HtmlBlockCloseDir")
16093  Rules[:_HtmlBlockOpenDiv] = rule_info("HtmlBlockOpenDiv", "\"<\" Spnl (\"div\" | \"DIV\") Spnl HtmlAttribute* \">\"")
16094  Rules[:_HtmlBlockCloseDiv] = rule_info("HtmlBlockCloseDiv", "\"<\" Spnl \"/\" (\"div\" | \"DIV\") Spnl \">\"")
16095  Rules[:_HtmlBlockDiv] = rule_info("HtmlBlockDiv", "HtmlBlockOpenDiv (HtmlBlockDiv | !HtmlBlockCloseDiv .)* HtmlBlockCloseDiv")
16096  Rules[:_HtmlBlockOpenDl] = rule_info("HtmlBlockOpenDl", "\"<\" Spnl (\"dl\" | \"DL\") Spnl HtmlAttribute* \">\"")
16097  Rules[:_HtmlBlockCloseDl] = rule_info("HtmlBlockCloseDl", "\"<\" Spnl \"/\" (\"dl\" | \"DL\") Spnl \">\"")
16098  Rules[:_HtmlBlockDl] = rule_info("HtmlBlockDl", "HtmlBlockOpenDl (HtmlBlockDl | !HtmlBlockCloseDl .)* HtmlBlockCloseDl")
16099  Rules[:_HtmlBlockOpenFieldset] = rule_info("HtmlBlockOpenFieldset", "\"<\" Spnl (\"fieldset\" | \"FIELDSET\") Spnl HtmlAttribute* \">\"")
16100  Rules[:_HtmlBlockCloseFieldset] = rule_info("HtmlBlockCloseFieldset", "\"<\" Spnl \"/\" (\"fieldset\" | \"FIELDSET\") Spnl \">\"")
16101  Rules[:_HtmlBlockFieldset] = rule_info("HtmlBlockFieldset", "HtmlBlockOpenFieldset (HtmlBlockFieldset | !HtmlBlockCloseFieldset .)* HtmlBlockCloseFieldset")
16102  Rules[:_HtmlBlockOpenForm] = rule_info("HtmlBlockOpenForm", "\"<\" Spnl (\"form\" | \"FORM\") Spnl HtmlAttribute* \">\"")
16103  Rules[:_HtmlBlockCloseForm] = rule_info("HtmlBlockCloseForm", "\"<\" Spnl \"/\" (\"form\" | \"FORM\") Spnl \">\"")
16104  Rules[:_HtmlBlockForm] = rule_info("HtmlBlockForm", "HtmlBlockOpenForm (HtmlBlockForm | !HtmlBlockCloseForm .)* HtmlBlockCloseForm")
16105  Rules[:_HtmlBlockOpenH1] = rule_info("HtmlBlockOpenH1", "\"<\" Spnl (\"h1\" | \"H1\") Spnl HtmlAttribute* \">\"")
16106  Rules[:_HtmlBlockCloseH1] = rule_info("HtmlBlockCloseH1", "\"<\" Spnl \"/\" (\"h1\" | \"H1\") Spnl \">\"")
16107  Rules[:_HtmlBlockH1] = rule_info("HtmlBlockH1", "HtmlBlockOpenH1 (HtmlBlockH1 | !HtmlBlockCloseH1 .)* HtmlBlockCloseH1")
16108  Rules[:_HtmlBlockOpenH2] = rule_info("HtmlBlockOpenH2", "\"<\" Spnl (\"h2\" | \"H2\") Spnl HtmlAttribute* \">\"")
16109  Rules[:_HtmlBlockCloseH2] = rule_info("HtmlBlockCloseH2", "\"<\" Spnl \"/\" (\"h2\" | \"H2\") Spnl \">\"")
16110  Rules[:_HtmlBlockH2] = rule_info("HtmlBlockH2", "HtmlBlockOpenH2 (HtmlBlockH2 | !HtmlBlockCloseH2 .)* HtmlBlockCloseH2")
16111  Rules[:_HtmlBlockOpenH3] = rule_info("HtmlBlockOpenH3", "\"<\" Spnl (\"h3\" | \"H3\") Spnl HtmlAttribute* \">\"")
16112  Rules[:_HtmlBlockCloseH3] = rule_info("HtmlBlockCloseH3", "\"<\" Spnl \"/\" (\"h3\" | \"H3\") Spnl \">\"")
16113  Rules[:_HtmlBlockH3] = rule_info("HtmlBlockH3", "HtmlBlockOpenH3 (HtmlBlockH3 | !HtmlBlockCloseH3 .)* HtmlBlockCloseH3")
16114  Rules[:_HtmlBlockOpenH4] = rule_info("HtmlBlockOpenH4", "\"<\" Spnl (\"h4\" | \"H4\") Spnl HtmlAttribute* \">\"")
16115  Rules[:_HtmlBlockCloseH4] = rule_info("HtmlBlockCloseH4", "\"<\" Spnl \"/\" (\"h4\" | \"H4\") Spnl \">\"")
16116  Rules[:_HtmlBlockH4] = rule_info("HtmlBlockH4", "HtmlBlockOpenH4 (HtmlBlockH4 | !HtmlBlockCloseH4 .)* HtmlBlockCloseH4")
16117  Rules[:_HtmlBlockOpenH5] = rule_info("HtmlBlockOpenH5", "\"<\" Spnl (\"h5\" | \"H5\") Spnl HtmlAttribute* \">\"")
16118  Rules[:_HtmlBlockCloseH5] = rule_info("HtmlBlockCloseH5", "\"<\" Spnl \"/\" (\"h5\" | \"H5\") Spnl \">\"")
16119  Rules[:_HtmlBlockH5] = rule_info("HtmlBlockH5", "HtmlBlockOpenH5 (HtmlBlockH5 | !HtmlBlockCloseH5 .)* HtmlBlockCloseH5")
16120  Rules[:_HtmlBlockOpenH6] = rule_info("HtmlBlockOpenH6", "\"<\" Spnl (\"h6\" | \"H6\") Spnl HtmlAttribute* \">\"")
16121  Rules[:_HtmlBlockCloseH6] = rule_info("HtmlBlockCloseH6", "\"<\" Spnl \"/\" (\"h6\" | \"H6\") Spnl \">\"")
16122  Rules[:_HtmlBlockH6] = rule_info("HtmlBlockH6", "HtmlBlockOpenH6 (HtmlBlockH6 | !HtmlBlockCloseH6 .)* HtmlBlockCloseH6")
16123  Rules[:_HtmlBlockOpenMenu] = rule_info("HtmlBlockOpenMenu", "\"<\" Spnl (\"menu\" | \"MENU\") Spnl HtmlAttribute* \">\"")
16124  Rules[:_HtmlBlockCloseMenu] = rule_info("HtmlBlockCloseMenu", "\"<\" Spnl \"/\" (\"menu\" | \"MENU\") Spnl \">\"")
16125  Rules[:_HtmlBlockMenu] = rule_info("HtmlBlockMenu", "HtmlBlockOpenMenu (HtmlBlockMenu | !HtmlBlockCloseMenu .)* HtmlBlockCloseMenu")
16126  Rules[:_HtmlBlockOpenNoframes] = rule_info("HtmlBlockOpenNoframes", "\"<\" Spnl (\"noframes\" | \"NOFRAMES\") Spnl HtmlAttribute* \">\"")
16127  Rules[:_HtmlBlockCloseNoframes] = rule_info("HtmlBlockCloseNoframes", "\"<\" Spnl \"/\" (\"noframes\" | \"NOFRAMES\") Spnl \">\"")
16128  Rules[:_HtmlBlockNoframes] = rule_info("HtmlBlockNoframes", "HtmlBlockOpenNoframes (HtmlBlockNoframes | !HtmlBlockCloseNoframes .)* HtmlBlockCloseNoframes")
16129  Rules[:_HtmlBlockOpenNoscript] = rule_info("HtmlBlockOpenNoscript", "\"<\" Spnl (\"noscript\" | \"NOSCRIPT\") Spnl HtmlAttribute* \">\"")
16130  Rules[:_HtmlBlockCloseNoscript] = rule_info("HtmlBlockCloseNoscript", "\"<\" Spnl \"/\" (\"noscript\" | \"NOSCRIPT\") Spnl \">\"")
16131  Rules[:_HtmlBlockNoscript] = rule_info("HtmlBlockNoscript", "HtmlBlockOpenNoscript (HtmlBlockNoscript | !HtmlBlockCloseNoscript .)* HtmlBlockCloseNoscript")
16132  Rules[:_HtmlBlockOpenOl] = rule_info("HtmlBlockOpenOl", "\"<\" Spnl (\"ol\" | \"OL\") Spnl HtmlAttribute* \">\"")
16133  Rules[:_HtmlBlockCloseOl] = rule_info("HtmlBlockCloseOl", "\"<\" Spnl \"/\" (\"ol\" | \"OL\") Spnl \">\"")
16134  Rules[:_HtmlBlockOl] = rule_info("HtmlBlockOl", "HtmlBlockOpenOl (HtmlBlockOl | !HtmlBlockCloseOl .)* HtmlBlockCloseOl")
16135  Rules[:_HtmlBlockOpenP] = rule_info("HtmlBlockOpenP", "\"<\" Spnl (\"p\" | \"P\") Spnl HtmlAttribute* \">\"")
16136  Rules[:_HtmlBlockCloseP] = rule_info("HtmlBlockCloseP", "\"<\" Spnl \"/\" (\"p\" | \"P\") Spnl \">\"")
16137  Rules[:_HtmlBlockP] = rule_info("HtmlBlockP", "HtmlBlockOpenP (HtmlBlockP | !HtmlBlockCloseP .)* HtmlBlockCloseP")
16138  Rules[:_HtmlBlockOpenPre] = rule_info("HtmlBlockOpenPre", "\"<\" Spnl (\"pre\" | \"PRE\") Spnl HtmlAttribute* \">\"")
16139  Rules[:_HtmlBlockClosePre] = rule_info("HtmlBlockClosePre", "\"<\" Spnl \"/\" (\"pre\" | \"PRE\") Spnl \">\"")
16140  Rules[:_HtmlBlockPre] = rule_info("HtmlBlockPre", "HtmlBlockOpenPre (HtmlBlockPre | !HtmlBlockClosePre .)* HtmlBlockClosePre")
16141  Rules[:_HtmlBlockOpenTable] = rule_info("HtmlBlockOpenTable", "\"<\" Spnl (\"table\" | \"TABLE\") Spnl HtmlAttribute* \">\"")
16142  Rules[:_HtmlBlockCloseTable] = rule_info("HtmlBlockCloseTable", "\"<\" Spnl \"/\" (\"table\" | \"TABLE\") Spnl \">\"")
16143  Rules[:_HtmlBlockTable] = rule_info("HtmlBlockTable", "HtmlBlockOpenTable (HtmlBlockTable | !HtmlBlockCloseTable .)* HtmlBlockCloseTable")
16144  Rules[:_HtmlBlockOpenUl] = rule_info("HtmlBlockOpenUl", "\"<\" Spnl (\"ul\" | \"UL\") Spnl HtmlAttribute* \">\"")
16145  Rules[:_HtmlBlockCloseUl] = rule_info("HtmlBlockCloseUl", "\"<\" Spnl \"/\" (\"ul\" | \"UL\") Spnl \">\"")
16146  Rules[:_HtmlBlockUl] = rule_info("HtmlBlockUl", "HtmlBlockOpenUl (HtmlBlockUl | !HtmlBlockCloseUl .)* HtmlBlockCloseUl")
16147  Rules[:_HtmlBlockOpenDd] = rule_info("HtmlBlockOpenDd", "\"<\" Spnl (\"dd\" | \"DD\") Spnl HtmlAttribute* \">\"")
16148  Rules[:_HtmlBlockCloseDd] = rule_info("HtmlBlockCloseDd", "\"<\" Spnl \"/\" (\"dd\" | \"DD\") Spnl \">\"")
16149  Rules[:_HtmlBlockDd] = rule_info("HtmlBlockDd", "HtmlBlockOpenDd (HtmlBlockDd | !HtmlBlockCloseDd .)* HtmlBlockCloseDd")
16150  Rules[:_HtmlBlockOpenDt] = rule_info("HtmlBlockOpenDt", "\"<\" Spnl (\"dt\" | \"DT\") Spnl HtmlAttribute* \">\"")
16151  Rules[:_HtmlBlockCloseDt] = rule_info("HtmlBlockCloseDt", "\"<\" Spnl \"/\" (\"dt\" | \"DT\") Spnl \">\"")
16152  Rules[:_HtmlBlockDt] = rule_info("HtmlBlockDt", "HtmlBlockOpenDt (HtmlBlockDt | !HtmlBlockCloseDt .)* HtmlBlockCloseDt")
16153  Rules[:_HtmlBlockOpenFrameset] = rule_info("HtmlBlockOpenFrameset", "\"<\" Spnl (\"frameset\" | \"FRAMESET\") Spnl HtmlAttribute* \">\"")
16154  Rules[:_HtmlBlockCloseFrameset] = rule_info("HtmlBlockCloseFrameset", "\"<\" Spnl \"/\" (\"frameset\" | \"FRAMESET\") Spnl \">\"")
16155  Rules[:_HtmlBlockFrameset] = rule_info("HtmlBlockFrameset", "HtmlBlockOpenFrameset (HtmlBlockFrameset | !HtmlBlockCloseFrameset .)* HtmlBlockCloseFrameset")
16156  Rules[:_HtmlBlockOpenLi] = rule_info("HtmlBlockOpenLi", "\"<\" Spnl (\"li\" | \"LI\") Spnl HtmlAttribute* \">\"")
16157  Rules[:_HtmlBlockCloseLi] = rule_info("HtmlBlockCloseLi", "\"<\" Spnl \"/\" (\"li\" | \"LI\") Spnl \">\"")
16158  Rules[:_HtmlBlockLi] = rule_info("HtmlBlockLi", "HtmlBlockOpenLi (HtmlBlockLi | !HtmlBlockCloseLi .)* HtmlBlockCloseLi")
16159  Rules[:_HtmlBlockOpenTbody] = rule_info("HtmlBlockOpenTbody", "\"<\" Spnl (\"tbody\" | \"TBODY\") Spnl HtmlAttribute* \">\"")
16160  Rules[:_HtmlBlockCloseTbody] = rule_info("HtmlBlockCloseTbody", "\"<\" Spnl \"/\" (\"tbody\" | \"TBODY\") Spnl \">\"")
16161  Rules[:_HtmlBlockTbody] = rule_info("HtmlBlockTbody", "HtmlBlockOpenTbody (HtmlBlockTbody | !HtmlBlockCloseTbody .)* HtmlBlockCloseTbody")
16162  Rules[:_HtmlBlockOpenTd] = rule_info("HtmlBlockOpenTd", "\"<\" Spnl (\"td\" | \"TD\") Spnl HtmlAttribute* \">\"")
16163  Rules[:_HtmlBlockCloseTd] = rule_info("HtmlBlockCloseTd", "\"<\" Spnl \"/\" (\"td\" | \"TD\") Spnl \">\"")
16164  Rules[:_HtmlBlockTd] = rule_info("HtmlBlockTd", "HtmlBlockOpenTd (HtmlBlockTd | !HtmlBlockCloseTd .)* HtmlBlockCloseTd")
16165  Rules[:_HtmlBlockOpenTfoot] = rule_info("HtmlBlockOpenTfoot", "\"<\" Spnl (\"tfoot\" | \"TFOOT\") Spnl HtmlAttribute* \">\"")
16166  Rules[:_HtmlBlockCloseTfoot] = rule_info("HtmlBlockCloseTfoot", "\"<\" Spnl \"/\" (\"tfoot\" | \"TFOOT\") Spnl \">\"")
16167  Rules[:_HtmlBlockTfoot] = rule_info("HtmlBlockTfoot", "HtmlBlockOpenTfoot (HtmlBlockTfoot | !HtmlBlockCloseTfoot .)* HtmlBlockCloseTfoot")
16168  Rules[:_HtmlBlockOpenTh] = rule_info("HtmlBlockOpenTh", "\"<\" Spnl (\"th\" | \"TH\") Spnl HtmlAttribute* \">\"")
16169  Rules[:_HtmlBlockCloseTh] = rule_info("HtmlBlockCloseTh", "\"<\" Spnl \"/\" (\"th\" | \"TH\") Spnl \">\"")
16170  Rules[:_HtmlBlockTh] = rule_info("HtmlBlockTh", "HtmlBlockOpenTh (HtmlBlockTh | !HtmlBlockCloseTh .)* HtmlBlockCloseTh")
16171  Rules[:_HtmlBlockOpenThead] = rule_info("HtmlBlockOpenThead", "\"<\" Spnl (\"thead\" | \"THEAD\") Spnl HtmlAttribute* \">\"")
16172  Rules[:_HtmlBlockCloseThead] = rule_info("HtmlBlockCloseThead", "\"<\" Spnl \"/\" (\"thead\" | \"THEAD\") Spnl \">\"")
16173  Rules[:_HtmlBlockThead] = rule_info("HtmlBlockThead", "HtmlBlockOpenThead (HtmlBlockThead | !HtmlBlockCloseThead .)* HtmlBlockCloseThead")
16174  Rules[:_HtmlBlockOpenTr] = rule_info("HtmlBlockOpenTr", "\"<\" Spnl (\"tr\" | \"TR\") Spnl HtmlAttribute* \">\"")
16175  Rules[:_HtmlBlockCloseTr] = rule_info("HtmlBlockCloseTr", "\"<\" Spnl \"/\" (\"tr\" | \"TR\") Spnl \">\"")
16176  Rules[:_HtmlBlockTr] = rule_info("HtmlBlockTr", "HtmlBlockOpenTr (HtmlBlockTr | !HtmlBlockCloseTr .)* HtmlBlockCloseTr")
16177  Rules[:_HtmlBlockOpenScript] = rule_info("HtmlBlockOpenScript", "\"<\" Spnl (\"script\" | \"SCRIPT\") Spnl HtmlAttribute* \">\"")
16178  Rules[:_HtmlBlockCloseScript] = rule_info("HtmlBlockCloseScript", "\"<\" Spnl \"/\" (\"script\" | \"SCRIPT\") Spnl \">\"")
16179  Rules[:_HtmlBlockScript] = rule_info("HtmlBlockScript", "HtmlBlockOpenScript (!HtmlBlockCloseScript .)* HtmlBlockCloseScript")
16180  Rules[:_HtmlBlockOpenHead] = rule_info("HtmlBlockOpenHead", "\"<\" Spnl (\"head\" | \"HEAD\") Spnl HtmlAttribute* \">\"")
16181  Rules[:_HtmlBlockCloseHead] = rule_info("HtmlBlockCloseHead", "\"<\" Spnl \"/\" (\"head\" | \"HEAD\") Spnl \">\"")
16182  Rules[:_HtmlBlockHead] = rule_info("HtmlBlockHead", "HtmlBlockOpenHead (!HtmlBlockCloseHead .)* HtmlBlockCloseHead")
16183  Rules[:_HtmlBlockInTags] = rule_info("HtmlBlockInTags", "(HtmlAnchor | HtmlBlockAddress | HtmlBlockBlockquote | HtmlBlockCenter | HtmlBlockDir | HtmlBlockDiv | HtmlBlockDl | HtmlBlockFieldset | HtmlBlockForm | HtmlBlockH1 | HtmlBlockH2 | HtmlBlockH3 | HtmlBlockH4 | HtmlBlockH5 | HtmlBlockH6 | HtmlBlockMenu | HtmlBlockNoframes | HtmlBlockNoscript | HtmlBlockOl | HtmlBlockP | HtmlBlockPre | HtmlBlockTable | HtmlBlockUl | HtmlBlockDd | HtmlBlockDt | HtmlBlockFrameset | HtmlBlockLi | HtmlBlockTbody | HtmlBlockTd | HtmlBlockTfoot | HtmlBlockTh | HtmlBlockThead | HtmlBlockTr | HtmlBlockScript | HtmlBlockHead)")
16184  Rules[:_HtmlBlock] = rule_info("HtmlBlock", "< (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then                 RDoc::Markup::Raw.new text               end }")
16185  Rules[:_HtmlUnclosed] = rule_info("HtmlUnclosed", "\"<\" Spnl HtmlUnclosedType Spnl HtmlAttribute* Spnl \">\"")
16186  Rules[:_HtmlUnclosedType] = rule_info("HtmlUnclosedType", "(\"HR\" | \"hr\")")
16187  Rules[:_HtmlBlockSelfClosing] = rule_info("HtmlBlockSelfClosing", "\"<\" Spnl HtmlBlockType Spnl HtmlAttribute* \"/\" Spnl \">\"")
16188  Rules[:_HtmlBlockType] = rule_info("HtmlBlockType", "(\"ADDRESS\" | \"BLOCKQUOTE\" | \"CENTER\" | \"DD\" | \"DIR\" | \"DIV\" | \"DL\" | \"DT\" | \"FIELDSET\" | \"FORM\" | \"FRAMESET\" | \"H1\" | \"H2\" | \"H3\" | \"H4\" | \"H5\" | \"H6\" | \"HR\" | \"ISINDEX\" | \"LI\" | \"MENU\" | \"NOFRAMES\" | \"NOSCRIPT\" | \"OL\" | \"P\" | \"PRE\" | \"SCRIPT\" | \"TABLE\" | \"TBODY\" | \"TD\" | \"TFOOT\" | \"TH\" | \"THEAD\" | \"TR\" | \"UL\" | \"address\" | \"blockquote\" | \"center\" | \"dd\" | \"dir\" | \"div\" | \"dl\" | \"dt\" | \"fieldset\" | \"form\" | \"frameset\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"hr\" | \"isindex\" | \"li\" | \"menu\" | \"noframes\" | \"noscript\" | \"ol\" | \"p\" | \"pre\" | \"script\" | \"table\" | \"tbody\" | \"td\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"ul\")")
16189  Rules[:_StyleOpen] = rule_info("StyleOpen", "\"<\" Spnl (\"style\" | \"STYLE\") Spnl HtmlAttribute* \">\"")
16190  Rules[:_StyleClose] = rule_info("StyleClose", "\"<\" Spnl \"/\" (\"style\" | \"STYLE\") Spnl \">\"")
16191  Rules[:_InStyleTags] = rule_info("InStyleTags", "StyleOpen (!StyleClose .)* StyleClose")
16192  Rules[:_StyleBlock] = rule_info("StyleBlock", "< InStyleTags > @BlankLine* { if css? then                     RDoc::Markup::Raw.new text                   end }")
16193  Rules[:_Inlines] = rule_info("Inlines", "(!@Endline Inline:i { i } | @Endline:c &Inline { c })+:chunks @Endline? { chunks }")
16194  Rules[:_Inline] = rule_info("Inline", "(Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)")
16195  Rules[:_Space] = rule_info("Space", "@Spacechar+ { \" \" }")
16196  Rules[:_Str] = rule_info("Str", "@StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }")
16197  Rules[:_StrChunk] = rule_info("StrChunk", "< (@NormalChar | /_+/ &Alphanumeric)+ > { text }")
16198  Rules[:_EscapedChar] = rule_info("EscapedChar", "\"\\\\\" !@Newline < /[:\\\\`|*_{}\\[\\]()\#+.!><-]/ > { text }")
16199  Rules[:_Entity] = rule_info("Entity", "(HexEntity | DecEntity | CharEntity):a { a }")
16200  Rules[:_Endline] = rule_info("Endline", "(@LineBreak | @TerminalEndline | @NormalEndline)")
16201  Rules[:_NormalEndline] = rule_info("NormalEndline", "@Sp @Newline !@BlankLine !\">\" !AtxStart !(Line /={1,}|-{1,}/ @Newline) { \"\\n\" }")
16202  Rules[:_TerminalEndline] = rule_info("TerminalEndline", "@Sp @Newline @Eof")
16203  Rules[:_LineBreak] = rule_info("LineBreak", "\"  \" @NormalEndline { RDoc::Markup::HardBreak.new }")
16204  Rules[:_Symbol] = rule_info("Symbol", "< @SpecialChar > { text }")
16205  Rules[:_UlOrStarLine] = rule_info("UlOrStarLine", "(UlLine | StarLine):a { a }")
16206  Rules[:_StarLine] = rule_info("StarLine", "(< /\\*{4,}/ > { text } | < @Spacechar /\\*+/ &@Spacechar > { text })")
16207  Rules[:_UlLine] = rule_info("UlLine", "(< /_{4,}/ > { text } | < @Spacechar /_+/ &@Spacechar > { text })")
16208  Rules[:_Emph] = rule_info("Emph", "(EmphStar | EmphUl)")
16209  Rules[:_Whitespace] = rule_info("Whitespace", "(@Spacechar | @Newline)")
16210  Rules[:_EmphStar] = rule_info("EmphStar", "\"*\" !@Whitespace @StartList:a (!\"*\" Inline:b { a << b } | StrongStar:b { a << b })+ \"*\" { emphasis a.join }")
16211  Rules[:_EmphUl] = rule_info("EmphUl", "\"_\" !@Whitespace @StartList:a (!\"_\" Inline:b { a << b } | StrongUl:b { a << b })+ \"_\" { emphasis a.join }")
16212  Rules[:_Strong] = rule_info("Strong", "(StrongStar | StrongUl)")
16213  Rules[:_StrongStar] = rule_info("StrongStar", "\"**\" !@Whitespace @StartList:a (!\"**\" Inline:b { a << b })+ \"**\" { strong a.join }")
16214  Rules[:_StrongUl] = rule_info("StrongUl", "\"__\" !@Whitespace @StartList:a (!\"__\" Inline:b { a << b })+ \"__\" { strong a.join }")
16215  Rules[:_Strike] = rule_info("Strike", "&{ strike? } \"~~\" !@Whitespace @StartList:a (!\"~~\" Inline:b { a << b })+ \"~~\" { strike a.join }")
16216  Rules[:_Image] = rule_info("Image", "\"!\" (ExplicitLink | ReferenceLink):a { \"rdoc-image:\#{a[/\\[(.*)\\]/, 1]}\" }")
16217  Rules[:_Link] = rule_info("Link", "(ExplicitLink | ReferenceLink | AutoLink)")
16218  Rules[:_ReferenceLink] = rule_info("ReferenceLink", "(ReferenceLinkDouble | ReferenceLinkSingle)")
16219  Rules[:_ReferenceLinkDouble] = rule_info("ReferenceLinkDouble", "Label:content < Spnl > !\"[]\" Label:label { link_to content, label, text }")
16220  Rules[:_ReferenceLinkSingle] = rule_info("ReferenceLinkSingle", "Label:content < (Spnl \"[]\")? > { link_to content, content, text }")
16221  Rules[:_ExplicitLink] = rule_info("ExplicitLink", "Label:l \"(\" @Sp Source:s Spnl Title @Sp \")\" { \"{\#{l}}[\#{s}]\" }")
16222  Rules[:_Source] = rule_info("Source", "(\"<\" < SourceContents > \">\" | < SourceContents >) { text }")
16223  Rules[:_SourceContents] = rule_info("SourceContents", "((!\"(\" !\")\" !\">\" Nonspacechar)+ | \"(\" SourceContents \")\")*")
16224  Rules[:_Title] = rule_info("Title", "(TitleSingle | TitleDouble | \"\"):a { a }")
16225  Rules[:_TitleSingle] = rule_info("TitleSingle", "\"'\" (!(\"'\" @Sp (\")\" | @Newline)) .)* \"'\"")
16226  Rules[:_TitleDouble] = rule_info("TitleDouble", "\"\\\"\" (!(\"\\\"\" @Sp (\")\" | @Newline)) .)* \"\\\"\"")
16227  Rules[:_AutoLink] = rule_info("AutoLink", "(AutoLinkUrl | AutoLinkEmail)")
16228  Rules[:_AutoLinkUrl] = rule_info("AutoLinkUrl", "\"<\" < /[A-Za-z]+/ \"://\" (!@Newline !\">\" .)+ > \">\" { text }")
16229  Rules[:_AutoLinkEmail] = rule_info("AutoLinkEmail", "\"<\" \"mailto:\"? < /[\\w+.\\/!%~$-]+/i \"@\" (!@Newline !\">\" .)+ > \">\" { \"mailto:\#{text}\" }")
16230  Rules[:_Reference] = rule_info("Reference", "@NonindentSpace !\"[]\" Label:label \":\" Spnl RefSrc:link RefTitle @BlankLine+ { \# TODO use title               reference label, link               nil             }")
16231  Rules[:_Label] = rule_info("Label", "\"[\" (!\"^\" &{ notes? } | &. &{ !notes? }) @StartList:a (!\"]\" Inline:l { a << l })* \"]\" { a.join.gsub(/\\s+/, ' ') }")
16232  Rules[:_RefSrc] = rule_info("RefSrc", "< Nonspacechar+ > { text }")
16233  Rules[:_RefTitle] = rule_info("RefTitle", "(RefTitleSingle | RefTitleDouble | RefTitleParens | EmptyTitle)")
16234  Rules[:_EmptyTitle] = rule_info("EmptyTitle", "\"\"")
16235  Rules[:_RefTitleSingle] = rule_info("RefTitleSingle", "Spnl \"'\" < (!(\"'\" @Sp @Newline | @Newline) .)* > \"'\" { text }")
16236  Rules[:_RefTitleDouble] = rule_info("RefTitleDouble", "Spnl \"\\\"\" < (!(\"\\\"\" @Sp @Newline | @Newline) .)* > \"\\\"\" { text }")
16237  Rules[:_RefTitleParens] = rule_info("RefTitleParens", "Spnl \"(\" < (!(\")\" @Sp @Newline | @Newline) .)* > \")\" { text }")
16238  Rules[:_References] = rule_info("References", "(Reference | SkipBlock)*")
16239  Rules[:_Ticks1] = rule_info("Ticks1", "\"`\" !\"`\"")
16240  Rules[:_Ticks2] = rule_info("Ticks2", "\"``\" !\"`\"")
16241  Rules[:_Ticks3] = rule_info("Ticks3", "\"```\" !\"`\"")
16242  Rules[:_Ticks4] = rule_info("Ticks4", "\"````\" !\"`\"")
16243  Rules[:_Ticks5] = rule_info("Ticks5", "\"`````\" !\"`\"")
16244  Rules[:_Code] = rule_info("Code", "(Ticks1 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks1 /`+/ | !(@Sp Ticks1) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks1 | Ticks2 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks2 /`+/ | !(@Sp Ticks2) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks2 | Ticks3 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | !(@Sp Ticks3) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks3 | Ticks4 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks4 /`+/ | !(@Sp Ticks4) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks4 | Ticks5 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks5 /`+/ | !(@Sp Ticks5) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks5) { \"<code>\#{text}</code>\" }")
16245  Rules[:_RawHtml] = rule_info("RawHtml", "< (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }")
16246  Rules[:_BlankLine] = rule_info("BlankLine", "@Sp @Newline { \"\\n\" }")
16247  Rules[:_Quoted] = rule_info("Quoted", "(\"\\\"\" (!\"\\\"\" .)* \"\\\"\" | \"'\" (!\"'\" .)* \"'\")")
16248  Rules[:_HtmlAttribute] = rule_info("HtmlAttribute", "(AlphanumericAscii | \"-\")+ Spnl (\"=\" Spnl (Quoted | (!\">\" Nonspacechar)+))? Spnl")
16249  Rules[:_HtmlComment] = rule_info("HtmlComment", "\"<!--\" (!\"-->\" .)* \"-->\"")
16250  Rules[:_HtmlTag] = rule_info("HtmlTag", "\"<\" Spnl \"/\"? AlphanumericAscii+ Spnl HtmlAttribute* \"/\"? Spnl \">\"")
16251  Rules[:_Eof] = rule_info("Eof", "!.")
16252  Rules[:_Nonspacechar] = rule_info("Nonspacechar", "!@Spacechar !@Newline .")
16253  Rules[:_Sp] = rule_info("Sp", "@Spacechar*")
16254  Rules[:_Spnl] = rule_info("Spnl", "@Sp (@Newline @Sp)?")
16255  Rules[:_SpecialChar] = rule_info("SpecialChar", "(/[~*_`&\\[\\]()<!\#\\\\'\"]/ | @ExtendedSpecialChar)")
16256  Rules[:_NormalChar] = rule_info("NormalChar", "!(@SpecialChar | @Spacechar | @Newline) .")
16257  Rules[:_Digit] = rule_info("Digit", "[0-9]")
16258  Rules[:_Alphanumeric] = rule_info("Alphanumeric", "%literals.Alphanumeric")
16259  Rules[:_AlphanumericAscii] = rule_info("AlphanumericAscii", "%literals.AlphanumericAscii")
16260  Rules[:_BOM] = rule_info("BOM", "%literals.BOM")
16261  Rules[:_Newline] = rule_info("Newline", "%literals.Newline")
16262  Rules[:_Spacechar] = rule_info("Spacechar", "%literals.Spacechar")
16263  Rules[:_HexEntity] = rule_info("HexEntity", "/&\#x/i < /[0-9a-fA-F]+/ > \";\" { [text.to_i(16)].pack 'U' }")
16264  Rules[:_DecEntity] = rule_info("DecEntity", "\"&\#\" < /[0-9]+/ > \";\" { [text.to_i].pack 'U' }")
16265  Rules[:_CharEntity] = rule_info("CharEntity", "\"&\" < /[A-Za-z0-9]+/ > \";\" { if entity = HTML_ENTITIES[text] then                  entity.pack 'U*'                else                  \"&\#{text};\"                end              }")
16266  Rules[:_NonindentSpace] = rule_info("NonindentSpace", "/ {0,3}/")
16267  Rules[:_Indent] = rule_info("Indent", "/\\t|    /")
16268  Rules[:_IndentedLine] = rule_info("IndentedLine", "Indent Line")
16269  Rules[:_OptionallyIndentedLine] = rule_info("OptionallyIndentedLine", "Indent? Line")
16270  Rules[:_StartList] = rule_info("StartList", "&. { [] }")
16271  Rules[:_Line] = rule_info("Line", "@RawLine:a { a }")
16272  Rules[:_RawLine] = rule_info("RawLine", "(< (!\"\\r\" !\"\\n\" .)* @Newline > | < .+ > @Eof) { text }")
16273  Rules[:_SkipBlock] = rule_info("SkipBlock", "(HtmlBlock | (!\"\#\" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)")
16274  Rules[:_ExtendedSpecialChar] = rule_info("ExtendedSpecialChar", "&{ notes? } \"^\"")
16275  Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
16276  Rules[:_RawNoteReference] = rule_info("RawNoteReference", "\"[^\" < (!@Newline !\"]\" .)+ > \"]\" { text }")
16277  Rules[:_Note] = rule_info("Note", "&{ notes? } @NonindentSpace RawNoteReference:ref \":\" @Sp @StartList:a RawNoteBlock:i { a.concat i } (&Indent RawNoteBlock:i { a.concat i })* { @footnotes[ref] = paragraph a                    nil                 }")
16278  Rules[:_InlineNote] = rule_info("InlineNote", "&{ notes? } \"^[\" @StartList:a (!\"]\" Inline:l { a << l })+ \"]\" { ref = [:inline, @note_order.length]                @footnotes[ref] = paragraph a                 note_for ref              }")
16279  Rules[:_Notes] = rule_info("Notes", "(Note | SkipBlock)*")
16280  Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
16281  Rules[:_CodeFence] = rule_info("CodeFence", "&{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text               verbatim.format = format.intern if format.instance_of?(String)               verbatim             }")
16282  Rules[:_DefinitionList] = rule_info("DefinitionList", "&{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }")
16283  Rules[:_DefinitionListItem] = rule_info("DefinitionListItem", "DefinitionListLabel+:label DefinitionListDefinition+:defns { list_items = []                        list_items <<                          RDoc::Markup::ListItem.new(label, defns.shift)                         list_items.concat defns.map { |defn|                          RDoc::Markup::ListItem.new nil, defn                        } unless list_items.empty?                         list_items                      }")
16284  Rules[:_DefinitionListLabel] = rule_info("DefinitionListLabel", "StrChunk:label @Sp @Newline { label }")
16285  Rules[:_DefinitionListDefinition] = rule_info("DefinitionListDefinition", "@NonindentSpace \":\" @Space Inlines:a @BlankLine+ { paragraph a }")
16286  # :startdoc:
16287end
16288