mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
d42d6e690e
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1207 lines
31 KiB
Ruby
1207 lines
31 KiB
Ruby
#
|
|
# DO NOT MODIFY!!!!
|
|
# This file is automatically generated by Racc 1.4.11
|
|
# from Racc grammer file "".
|
|
#
|
|
|
|
require 'racc/parser.rb'
|
|
|
|
require 'strscan'
|
|
|
|
class RDoc::RD
|
|
|
|
##
|
|
# RD format parser for inline markup such as emphasis, links, footnotes, etc.
|
|
|
|
class InlineParser < Racc::Parser
|
|
|
|
|
|
# :stopdoc:
|
|
|
|
EM_OPEN = '((*'
|
|
EM_OPEN_RE = /\A#{Regexp.quote(EM_OPEN)}/
|
|
EM_CLOSE = '*))'
|
|
EM_CLOSE_RE = /\A#{Regexp.quote(EM_CLOSE)}/
|
|
CODE_OPEN = '(({'
|
|
CODE_OPEN_RE = /\A#{Regexp.quote(CODE_OPEN)}/
|
|
CODE_CLOSE = '}))'
|
|
CODE_CLOSE_RE = /\A#{Regexp.quote(CODE_CLOSE)}/
|
|
VAR_OPEN = '((|'
|
|
VAR_OPEN_RE = /\A#{Regexp.quote(VAR_OPEN)}/
|
|
VAR_CLOSE = '|))'
|
|
VAR_CLOSE_RE = /\A#{Regexp.quote(VAR_CLOSE)}/
|
|
KBD_OPEN = '((%'
|
|
KBD_OPEN_RE = /\A#{Regexp.quote(KBD_OPEN)}/
|
|
KBD_CLOSE = '%))'
|
|
KBD_CLOSE_RE = /\A#{Regexp.quote(KBD_CLOSE)}/
|
|
INDEX_OPEN = '((:'
|
|
INDEX_OPEN_RE = /\A#{Regexp.quote(INDEX_OPEN)}/
|
|
INDEX_CLOSE = ':))'
|
|
INDEX_CLOSE_RE = /\A#{Regexp.quote(INDEX_CLOSE)}/
|
|
REF_OPEN = '((<'
|
|
REF_OPEN_RE = /\A#{Regexp.quote(REF_OPEN)}/
|
|
REF_CLOSE = '>))'
|
|
REF_CLOSE_RE = /\A#{Regexp.quote(REF_CLOSE)}/
|
|
FOOTNOTE_OPEN = '((-'
|
|
FOOTNOTE_OPEN_RE = /\A#{Regexp.quote(FOOTNOTE_OPEN)}/
|
|
FOOTNOTE_CLOSE = '-))'
|
|
FOOTNOTE_CLOSE_RE = /\A#{Regexp.quote(FOOTNOTE_CLOSE)}/
|
|
VERB_OPEN = "(('"
|
|
VERB_OPEN_RE = /\A#{Regexp.quote(VERB_OPEN)}/
|
|
VERB_CLOSE = "'))"
|
|
VERB_CLOSE_RE = /\A#{Regexp.quote(VERB_CLOSE)}/
|
|
|
|
BAR = "|"
|
|
BAR_RE = /\A#{Regexp.quote(BAR)}/
|
|
QUOTE = '"'
|
|
QUOTE_RE = /\A#{Regexp.quote(QUOTE)}/
|
|
SLASH = "/"
|
|
SLASH_RE = /\A#{Regexp.quote(SLASH)}/
|
|
BACK_SLASH = "\\"
|
|
BACK_SLASH_RE = /\A#{Regexp.quote(BACK_SLASH)}/
|
|
URL = "URL:"
|
|
URL_RE = /\A#{Regexp.quote(URL)}/
|
|
|
|
other_re_mode = Regexp::EXTENDED
|
|
other_re_mode |= Regexp::MULTILINE
|
|
|
|
OTHER_RE = Regexp.new(
|
|
"\\A.+?(?=#{Regexp.quote(EM_OPEN)}|#{Regexp.quote(EM_CLOSE)}|
|
|
#{Regexp.quote(CODE_OPEN)}|#{Regexp.quote(CODE_CLOSE)}|
|
|
#{Regexp.quote(VAR_OPEN)}|#{Regexp.quote(VAR_CLOSE)}|
|
|
#{Regexp.quote(KBD_OPEN)}|#{Regexp.quote(KBD_CLOSE)}|
|
|
#{Regexp.quote(INDEX_OPEN)}|#{Regexp.quote(INDEX_CLOSE)}|
|
|
#{Regexp.quote(REF_OPEN)}|#{Regexp.quote(REF_CLOSE)}|
|
|
#{Regexp.quote(FOOTNOTE_OPEN)}|#{Regexp.quote(FOOTNOTE_CLOSE)}|
|
|
#{Regexp.quote(VERB_OPEN)}|#{Regexp.quote(VERB_CLOSE)}|
|
|
#{Regexp.quote(BAR)}|
|
|
#{Regexp.quote(QUOTE)}|
|
|
#{Regexp.quote(SLASH)}|
|
|
#{Regexp.quote(BACK_SLASH)}|
|
|
#{Regexp.quote(URL)})", other_re_mode)
|
|
|
|
# :startdoc:
|
|
|
|
##
|
|
# Creates a new parser for inline markup in the rd format. The +block_parser+
|
|
# is used to for footnotes and labels in the inline text.
|
|
|
|
def initialize block_parser
|
|
@block_parser = block_parser
|
|
end
|
|
|
|
##
|
|
# Parses the +inline+ text from RD format into RDoc format.
|
|
|
|
def parse inline
|
|
@inline = inline
|
|
@src = StringScanner.new inline
|
|
@pre = ""
|
|
@yydebug = true
|
|
do_parse.to_s
|
|
end
|
|
|
|
##
|
|
# Returns the next token from the inline text
|
|
|
|
def next_token
|
|
return [false, false] if @src.eos?
|
|
# p @src.rest if @yydebug
|
|
if ret = @src.scan(EM_OPEN_RE)
|
|
@pre << ret
|
|
[:EM_OPEN, ret]
|
|
elsif ret = @src.scan(EM_CLOSE_RE)
|
|
@pre << ret
|
|
[:EM_CLOSE, ret]
|
|
elsif ret = @src.scan(CODE_OPEN_RE)
|
|
@pre << ret
|
|
[:CODE_OPEN, ret]
|
|
elsif ret = @src.scan(CODE_CLOSE_RE)
|
|
@pre << ret
|
|
[:CODE_CLOSE, ret]
|
|
elsif ret = @src.scan(VAR_OPEN_RE)
|
|
@pre << ret
|
|
[:VAR_OPEN, ret]
|
|
elsif ret = @src.scan(VAR_CLOSE_RE)
|
|
@pre << ret
|
|
[:VAR_CLOSE, ret]
|
|
elsif ret = @src.scan(KBD_OPEN_RE)
|
|
@pre << ret
|
|
[:KBD_OPEN, ret]
|
|
elsif ret = @src.scan(KBD_CLOSE_RE)
|
|
@pre << ret
|
|
[:KBD_CLOSE, ret]
|
|
elsif ret = @src.scan(INDEX_OPEN_RE)
|
|
@pre << ret
|
|
[:INDEX_OPEN, ret]
|
|
elsif ret = @src.scan(INDEX_CLOSE_RE)
|
|
@pre << ret
|
|
[:INDEX_CLOSE, ret]
|
|
elsif ret = @src.scan(REF_OPEN_RE)
|
|
@pre << ret
|
|
[:REF_OPEN, ret]
|
|
elsif ret = @src.scan(REF_CLOSE_RE)
|
|
@pre << ret
|
|
[:REF_CLOSE, ret]
|
|
elsif ret = @src.scan(FOOTNOTE_OPEN_RE)
|
|
@pre << ret
|
|
[:FOOTNOTE_OPEN, ret]
|
|
elsif ret = @src.scan(FOOTNOTE_CLOSE_RE)
|
|
@pre << ret
|
|
[:FOOTNOTE_CLOSE, ret]
|
|
elsif ret = @src.scan(VERB_OPEN_RE)
|
|
@pre << ret
|
|
[:VERB_OPEN, ret]
|
|
elsif ret = @src.scan(VERB_CLOSE_RE)
|
|
@pre << ret
|
|
[:VERB_CLOSE, ret]
|
|
elsif ret = @src.scan(BAR_RE)
|
|
@pre << ret
|
|
[:BAR, ret]
|
|
elsif ret = @src.scan(QUOTE_RE)
|
|
@pre << ret
|
|
[:QUOTE, ret]
|
|
elsif ret = @src.scan(SLASH_RE)
|
|
@pre << ret
|
|
[:SLASH, ret]
|
|
elsif ret = @src.scan(BACK_SLASH_RE)
|
|
@pre << ret
|
|
[:BACK_SLASH, ret]
|
|
elsif ret = @src.scan(URL_RE)
|
|
@pre << ret
|
|
[:URL, ret]
|
|
elsif ret = @src.scan(OTHER_RE)
|
|
@pre << ret
|
|
[:OTHER, ret]
|
|
else
|
|
ret = @src.rest
|
|
@pre << ret
|
|
@src.terminate
|
|
[:OTHER, ret]
|
|
end
|
|
end
|
|
|
|
##
|
|
# Raises a ParseError when invalid formatting is found
|
|
|
|
def on_error(et, ev, values)
|
|
lines_of_rest = @src.rest.lines.to_a.length
|
|
prev_words = prev_words_on_error(ev)
|
|
at = 4 + prev_words.length
|
|
|
|
message = <<-MSG
|
|
RD syntax error: line #{@block_parser.line_index - lines_of_rest}:
|
|
...#{prev_words} #{(ev||'')} #{next_words_on_error()} ...
|
|
MSG
|
|
|
|
message << " " * at + "^" * (ev ? ev.length : 0) + "\n"
|
|
raise ParseError, message
|
|
end
|
|
|
|
##
|
|
# Returns words before the error
|
|
|
|
def prev_words_on_error(ev)
|
|
pre = @pre
|
|
if ev and /#{Regexp.quote(ev)}$/ =~ pre
|
|
pre = $`
|
|
end
|
|
last_line(pre)
|
|
end
|
|
|
|
##
|
|
# Returns the last line of +src+
|
|
|
|
def last_line(src)
|
|
if n = src.rindex("\n")
|
|
src[(n+1) .. -1]
|
|
else
|
|
src
|
|
end
|
|
end
|
|
private :last_line
|
|
|
|
##
|
|
# Returns words following an error
|
|
|
|
def next_words_on_error
|
|
if n = @src.rest.index("\n")
|
|
@src.rest[0 .. (n-1)]
|
|
else
|
|
@src.rest
|
|
end
|
|
end
|
|
|
|
##
|
|
# Creates a new RDoc::RD::Inline for the +rdoc+ markup and the raw +reference+
|
|
|
|
def inline rdoc, reference = rdoc
|
|
RDoc::RD::Inline.new rdoc, reference
|
|
end
|
|
|
|
# :stopdoc:
|
|
##### State transition tables begin ###
|
|
|
|
racc_action_table = [
|
|
63, 64, 65, 153, 81, 62, 76, 78, 79, 87,
|
|
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
|
|
77, 80, 152, 63, 64, 65, 61, 81, 62, 76,
|
|
78, 79, 124, 66, 67, 68, 69, 70, 71, 72,
|
|
73, 74, 75, 77, 80, 149, 104, 103, 102, 100,
|
|
101, 99, 115, 116, 117, 164, 105, 106, 107, 108,
|
|
109, 110, 111, 112, 113, 114, 96, 118, 119, 104,
|
|
103, 102, 100, 101, 99, 115, 116, 117, 89, 105,
|
|
106, 107, 108, 109, 110, 111, 112, 113, 114, 88,
|
|
118, 119, 104, 103, 102, 100, 101, 99, 115, 116,
|
|
117, 161, 105, 106, 107, 108, 109, 110, 111, 112,
|
|
113, 114, 86, 118, 119, 104, 103, 102, 100, 101,
|
|
99, 115, 116, 117, 85, 105, 106, 107, 108, 109,
|
|
110, 111, 112, 113, 114, 137, 118, 119, 63, 64,
|
|
65, 61, 81, 62, 76, 78, 79, 84, 66, 67,
|
|
68, 69, 70, 71, 72, 73, 74, 75, 77, 80,
|
|
22, 23, 24, 25, 26, 21, 18, 19, 176, 177,
|
|
13, 173, 14, 154, 15, 175, 16, 137, 17, 42,
|
|
148, 20, 54, 38, 53, 55, 56, 57, 29, 13,
|
|
177, 14, nil, 15, nil, 16, nil, 17, nil, nil,
|
|
20, 22, 23, 24, 25, 26, 21, 18, 19, nil,
|
|
nil, 13, nil, 14, nil, 15, nil, 16, nil, 17,
|
|
nil, nil, 20, 22, 23, 24, 25, 26, 21, 18,
|
|
19, nil, nil, 13, nil, 14, nil, 15, nil, 16,
|
|
nil, 17, nil, nil, 20, 22, 23, 24, 25, 26,
|
|
21, 18, 19, nil, nil, 13, nil, 14, nil, 15,
|
|
nil, 16, nil, 17, 145, nil, 20, 54, 133, 53,
|
|
55, 56, 57, nil, 13, nil, 14, nil, 15, nil,
|
|
16, nil, 17, nil, nil, 20, 22, 23, 24, 25,
|
|
26, 21, 18, 19, nil, nil, 13, nil, 14, nil,
|
|
15, nil, 16, nil, 17, 145, nil, 20, 54, 133,
|
|
53, 55, 56, 57, nil, 13, nil, 14, nil, 15,
|
|
nil, 16, nil, 17, nil, nil, 20, 22, 23, 24,
|
|
25, 26, 21, 18, 19, nil, nil, 13, nil, 14,
|
|
nil, 15, nil, 16, nil, 17, 145, nil, 20, 54,
|
|
133, 53, 55, 56, 57, nil, 13, nil, 14, nil,
|
|
15, nil, 16, nil, 17, 145, nil, 20, 54, 133,
|
|
53, 55, 56, 57, nil, 13, nil, 14, nil, 15,
|
|
nil, 16, nil, 17, nil, nil, 20, 22, 23, 24,
|
|
25, 26, 21, 18, 19, nil, nil, 13, nil, 14,
|
|
nil, 15, nil, 16, 122, 17, nil, 54, 20, 53,
|
|
55, 56, 57, nil, 13, nil, 14, nil, 15, nil,
|
|
16, nil, 17, nil, nil, 20, 22, 23, 24, 25,
|
|
26, 21, 18, 19, nil, nil, 13, nil, 14, nil,
|
|
15, nil, 16, nil, 17, nil, nil, 20, 135, 136,
|
|
54, 133, 53, 55, 56, 57, nil, 13, nil, 14,
|
|
nil, 15, nil, 16, nil, 17, nil, nil, 20, 135,
|
|
136, 54, 133, 53, 55, 56, 57, nil, 13, nil,
|
|
14, nil, 15, nil, 16, nil, 17, nil, nil, 20,
|
|
135, 136, 54, 133, 53, 55, 56, 57, nil, 13,
|
|
nil, 14, nil, 15, nil, 16, nil, 17, nil, nil,
|
|
20, 172, 135, 136, 54, 133, 53, 55, 56, 57,
|
|
165, 135, 136, 54, 133, 53, 55, 56, 57, 95,
|
|
nil, nil, 54, 91, 53, 55, 56, 57, 174, 135,
|
|
136, 54, 133, 53, 55, 56, 57, 158, nil, nil,
|
|
54, nil, 53, 55, 56, 57, 178, 135, 136, 54,
|
|
133, 53, 55, 56, 57, 145, nil, nil, 54, 133,
|
|
53, 55, 56, 57, 145, nil, nil, 54, 133, 53,
|
|
55, 56, 57, 135, 136, 54, 133, 53, 55, 56,
|
|
57, 135, 136, 54, 133, 53, 55, 56, 57, 135,
|
|
136, 54, 133, 53, 55, 56, 57, 22, 23, 24,
|
|
25, 26, 21 ]
|
|
|
|
racc_action_check = [
|
|
61, 61, 61, 61, 61, 61, 61, 61, 61, 33,
|
|
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
|
|
61, 61, 61, 59, 59, 59, 59, 59, 59, 59,
|
|
59, 59, 41, 59, 59, 59, 59, 59, 59, 59,
|
|
59, 59, 59, 59, 59, 59, 97, 97, 97, 97,
|
|
97, 97, 97, 97, 97, 125, 97, 97, 97, 97,
|
|
97, 97, 97, 97, 97, 97, 37, 97, 97, 38,
|
|
38, 38, 38, 38, 38, 38, 38, 38, 35, 38,
|
|
38, 38, 38, 38, 38, 38, 38, 38, 38, 34,
|
|
38, 38, 155, 155, 155, 155, 155, 155, 155, 155,
|
|
155, 100, 155, 155, 155, 155, 155, 155, 155, 155,
|
|
155, 155, 32, 155, 155, 91, 91, 91, 91, 91,
|
|
91, 91, 91, 91, 31, 91, 91, 91, 91, 91,
|
|
91, 91, 91, 91, 91, 43, 91, 91, 20, 20,
|
|
20, 20, 20, 20, 20, 20, 20, 29, 20, 20,
|
|
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
|
|
17, 17, 17, 17, 17, 17, 17, 17, 165, 165,
|
|
17, 162, 17, 90, 17, 164, 17, 94, 17, 18,
|
|
58, 17, 18, 18, 18, 18, 18, 18, 1, 18,
|
|
172, 18, nil, 18, nil, 18, nil, 18, nil, nil,
|
|
18, 19, 19, 19, 19, 19, 19, 19, 19, nil,
|
|
nil, 19, nil, 19, nil, 19, nil, 19, nil, 19,
|
|
nil, nil, 19, 16, 16, 16, 16, 16, 16, 16,
|
|
16, nil, nil, 16, nil, 16, nil, 16, nil, 16,
|
|
nil, 16, nil, nil, 16, 15, 15, 15, 15, 15,
|
|
15, 15, 15, nil, nil, 15, nil, 15, nil, 15,
|
|
nil, 15, nil, 15, 45, nil, 15, 45, 45, 45,
|
|
45, 45, 45, nil, 45, nil, 45, nil, 45, nil,
|
|
45, nil, 45, nil, nil, 45, 14, 14, 14, 14,
|
|
14, 14, 14, 14, nil, nil, 14, nil, 14, nil,
|
|
14, nil, 14, nil, 14, 146, nil, 14, 146, 146,
|
|
146, 146, 146, 146, nil, 146, nil, 146, nil, 146,
|
|
nil, 146, nil, 146, nil, nil, 146, 13, 13, 13,
|
|
13, 13, 13, 13, 13, nil, nil, 13, nil, 13,
|
|
nil, 13, nil, 13, nil, 13, 138, nil, 13, 138,
|
|
138, 138, 138, 138, 138, nil, 138, nil, 138, nil,
|
|
138, nil, 138, nil, 138, 44, nil, 138, 44, 44,
|
|
44, 44, 44, 44, nil, 44, nil, 44, nil, 44,
|
|
nil, 44, nil, 44, nil, nil, 44, 2, 2, 2,
|
|
2, 2, 2, 2, 2, nil, nil, 2, nil, 2,
|
|
nil, 2, nil, 2, 39, 2, nil, 39, 2, 39,
|
|
39, 39, 39, nil, 39, nil, 39, nil, 39, nil,
|
|
39, nil, 39, nil, nil, 39, 0, 0, 0, 0,
|
|
0, 0, 0, 0, nil, nil, 0, nil, 0, nil,
|
|
0, nil, 0, nil, 0, nil, nil, 0, 122, 122,
|
|
122, 122, 122, 122, 122, 122, nil, 122, nil, 122,
|
|
nil, 122, nil, 122, nil, 122, nil, nil, 122, 127,
|
|
127, 127, 127, 127, 127, 127, 127, nil, 127, nil,
|
|
127, nil, 127, nil, 127, nil, 127, nil, nil, 127,
|
|
42, 42, 42, 42, 42, 42, 42, 42, nil, 42,
|
|
nil, 42, nil, 42, nil, 42, nil, 42, nil, nil,
|
|
42, 159, 159, 159, 159, 159, 159, 159, 159, 159,
|
|
126, 126, 126, 126, 126, 126, 126, 126, 126, 36,
|
|
nil, nil, 36, 36, 36, 36, 36, 36, 163, 163,
|
|
163, 163, 163, 163, 163, 163, 163, 92, nil, nil,
|
|
92, nil, 92, 92, 92, 92, 171, 171, 171, 171,
|
|
171, 171, 171, 171, 171, 142, nil, nil, 142, 142,
|
|
142, 142, 142, 142, 52, nil, nil, 52, 52, 52,
|
|
52, 52, 52, 95, 95, 95, 95, 95, 95, 95,
|
|
95, 168, 168, 168, 168, 168, 168, 168, 168, 158,
|
|
158, 158, 158, 158, 158, 158, 158, 27, 27, 27,
|
|
27, 27, 27 ]
|
|
|
|
racc_action_pointer = [
|
|
423, 188, 384, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, nil, nil, 324, 283, 242, 220, 157, 176, 198,
|
|
135, nil, nil, nil, nil, nil, nil, 604, nil, 147,
|
|
nil, 110, 96, -9, 69, 56, 526, 43, 66, 401,
|
|
nil, 28, 486, 130, 362, 261, nil, nil, nil, nil,
|
|
nil, nil, 571, nil, nil, nil, nil, nil, 169, 20,
|
|
nil, -3, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
150, 112, 544, nil, 172, 579, nil, 43, nil, nil,
|
|
95, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, nil, 444, nil, nil, 52, 517, 465, nil, nil,
|
|
nil, nil, nil, nil, nil, nil, nil, nil, 343, nil,
|
|
nil, nil, 562, nil, nil, nil, 302, nil, nil, nil,
|
|
nil, nil, nil, nil, nil, 89, nil, nil, 595, 508,
|
|
nil, nil, 168, 535, 171, 164, nil, nil, 587, nil,
|
|
nil, 553, 185, nil, nil, nil, nil, nil, nil ]
|
|
|
|
racc_action_default = [
|
|
-138, -138, -1, -3, -4, -5, -6, -7, -8, -9,
|
|
-10, -11, -12, -138, -138, -138, -138, -138, -138, -138,
|
|
-138, -103, -104, -105, -106, -107, -108, -111, -110, -138,
|
|
-2, -138, -138, -138, -138, -138, -138, -138, -138, -27,
|
|
-26, -35, -138, -58, -41, -40, -47, -48, -49, -50,
|
|
-51, -52, -63, -66, -67, -68, -69, -70, -138, -138,
|
|
-112, -138, -116, -117, -118, -119, -120, -121, -122, -123,
|
|
-124, -125, -126, -127, -128, -129, -130, -131, -132, -133,
|
|
-134, -135, -137, -109, 179, -13, -14, -15, -16, -17,
|
|
-138, -138, -23, -22, -33, -138, -19, -24, -79, -80,
|
|
-138, -82, -83, -84, -85, -86, -87, -88, -89, -90,
|
|
-91, -92, -93, -94, -95, -96, -97, -98, -99, -100,
|
|
-25, -35, -138, -58, -28, -138, -59, -42, -46, -55,
|
|
-56, -65, -71, -72, -75, -76, -77, -31, -38, -44,
|
|
-53, -54, -57, -61, -73, -74, -39, -62, -101, -102,
|
|
-136, -113, -114, -115, -18, -20, -21, -33, -138, -138,
|
|
-78, -81, -138, -59, -36, -37, -64, -45, -59, -43,
|
|
-60, -138, -34, -36, -37, -29, -30, -32, -34 ]
|
|
|
|
racc_goto_table = [
|
|
126, 44, 125, 43, 144, 144, 160, 93, 97, 52,
|
|
166, 82, 144, 41, 40, 39, 138, 146, 169, 147,
|
|
167, 94, 44, 1, 123, 129, 169, 52, 36, 37,
|
|
52, 90, 59, 92, 121, 120, 31, 32, 33, 34,
|
|
35, 170, 58, 166, 83, 30, 170, 166, 151, nil,
|
|
150, nil, 166, 159, 8, 166, 8, nil, nil, nil,
|
|
nil, 155, nil, 156, 160, nil, nil, 8, 8, 8,
|
|
8, 8, nil, 8, 4, nil, 4, 157, nil, nil,
|
|
163, nil, 162, 52, nil, 168, nil, 4, 4, 4,
|
|
4, 4, nil, 4, nil, nil, nil, nil, 144, nil,
|
|
nil, nil, 144, nil, nil, 129, 144, 144, nil, 5,
|
|
129, 5, nil, nil, nil, nil, 171, 6, nil, 6,
|
|
nil, nil, 5, 5, 5, 5, 5, 11, 5, 11,
|
|
6, 6, 6, 6, 6, 7, 6, 7, nil, nil,
|
|
11, 11, 11, 11, 11, nil, 11, nil, 7, 7,
|
|
7, 7, 7, nil, 7 ]
|
|
|
|
racc_goto_check = [
|
|
22, 24, 21, 23, 36, 36, 37, 18, 16, 34,
|
|
35, 41, 36, 20, 19, 17, 25, 25, 28, 32,
|
|
29, 23, 24, 1, 23, 24, 28, 34, 13, 15,
|
|
34, 14, 38, 17, 20, 19, 1, 1, 1, 1,
|
|
1, 33, 1, 35, 39, 3, 33, 35, 42, nil,
|
|
41, nil, 35, 22, 8, 35, 8, nil, nil, nil,
|
|
nil, 16, nil, 18, 37, nil, nil, 8, 8, 8,
|
|
8, 8, nil, 8, 4, nil, 4, 23, nil, nil,
|
|
22, nil, 21, 34, nil, 22, nil, 4, 4, 4,
|
|
4, 4, nil, 4, nil, nil, nil, nil, 36, nil,
|
|
nil, nil, 36, nil, nil, 24, 36, 36, nil, 5,
|
|
24, 5, nil, nil, nil, nil, 22, 6, nil, 6,
|
|
nil, nil, 5, 5, 5, 5, 5, 11, 5, 11,
|
|
6, 6, 6, 6, 6, 7, 6, 7, nil, nil,
|
|
11, 11, 11, 11, 11, nil, 11, nil, 7, 7,
|
|
7, 7, 7, nil, 7 ]
|
|
|
|
racc_goto_pointer = [
|
|
nil, 23, nil, 43, 74, 109, 117, 135, 54, nil,
|
|
nil, 127, nil, 10, -5, 11, -30, -3, -29, -4,
|
|
-5, -40, -42, -15, -17, -28, nil, nil, -120, -107,
|
|
nil, nil, -33, -101, -9, -116, -40, -91, 12, 17,
|
|
nil, -9, -13 ]
|
|
|
|
racc_goto_default = [
|
|
nil, nil, 2, 3, 46, 47, 48, 49, 50, 9,
|
|
10, 51, 12, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, nil, nil, nil, 140, nil, 45, 127, 139, 128,
|
|
141, 130, 142, 143, 132, 131, 134, 98, nil, 28,
|
|
27, nil, 60 ]
|
|
|
|
racc_reduce_table = [
|
|
0, 0, :racc_error,
|
|
1, 27, :_reduce_none,
|
|
2, 28, :_reduce_2,
|
|
1, 28, :_reduce_3,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
1, 29, :_reduce_none,
|
|
3, 30, :_reduce_13,
|
|
3, 31, :_reduce_14,
|
|
3, 32, :_reduce_15,
|
|
3, 33, :_reduce_16,
|
|
3, 34, :_reduce_17,
|
|
4, 35, :_reduce_18,
|
|
3, 35, :_reduce_19,
|
|
2, 40, :_reduce_20,
|
|
2, 40, :_reduce_21,
|
|
1, 40, :_reduce_22,
|
|
1, 40, :_reduce_23,
|
|
2, 41, :_reduce_24,
|
|
2, 41, :_reduce_25,
|
|
1, 41, :_reduce_26,
|
|
1, 41, :_reduce_27,
|
|
2, 39, :_reduce_none,
|
|
4, 39, :_reduce_29,
|
|
4, 39, :_reduce_30,
|
|
2, 43, :_reduce_31,
|
|
4, 43, :_reduce_32,
|
|
1, 44, :_reduce_33,
|
|
3, 44, :_reduce_34,
|
|
1, 45, :_reduce_none,
|
|
3, 45, :_reduce_36,
|
|
3, 45, :_reduce_37,
|
|
2, 46, :_reduce_38,
|
|
2, 46, :_reduce_39,
|
|
1, 46, :_reduce_40,
|
|
1, 46, :_reduce_41,
|
|
1, 47, :_reduce_none,
|
|
2, 51, :_reduce_43,
|
|
1, 51, :_reduce_44,
|
|
2, 53, :_reduce_45,
|
|
1, 53, :_reduce_46,
|
|
1, 50, :_reduce_none,
|
|
1, 50, :_reduce_none,
|
|
1, 50, :_reduce_none,
|
|
1, 50, :_reduce_none,
|
|
1, 50, :_reduce_none,
|
|
1, 50, :_reduce_none,
|
|
1, 54, :_reduce_none,
|
|
1, 54, :_reduce_none,
|
|
1, 55, :_reduce_none,
|
|
1, 55, :_reduce_none,
|
|
1, 56, :_reduce_57,
|
|
1, 52, :_reduce_58,
|
|
1, 57, :_reduce_59,
|
|
2, 58, :_reduce_60,
|
|
1, 58, :_reduce_none,
|
|
2, 49, :_reduce_62,
|
|
1, 49, :_reduce_none,
|
|
2, 48, :_reduce_64,
|
|
1, 48, :_reduce_none,
|
|
1, 60, :_reduce_none,
|
|
1, 60, :_reduce_none,
|
|
1, 60, :_reduce_none,
|
|
1, 60, :_reduce_none,
|
|
1, 60, :_reduce_none,
|
|
1, 62, :_reduce_none,
|
|
1, 62, :_reduce_none,
|
|
1, 59, :_reduce_none,
|
|
1, 59, :_reduce_none,
|
|
1, 61, :_reduce_none,
|
|
1, 61, :_reduce_none,
|
|
1, 61, :_reduce_none,
|
|
2, 42, :_reduce_78,
|
|
1, 42, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
2, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
1, 63, :_reduce_none,
|
|
3, 36, :_reduce_101,
|
|
3, 37, :_reduce_102,
|
|
1, 65, :_reduce_none,
|
|
1, 65, :_reduce_none,
|
|
1, 65, :_reduce_none,
|
|
1, 65, :_reduce_none,
|
|
1, 65, :_reduce_none,
|
|
1, 65, :_reduce_none,
|
|
2, 66, :_reduce_109,
|
|
1, 66, :_reduce_none,
|
|
1, 38, :_reduce_111,
|
|
1, 67, :_reduce_none,
|
|
2, 67, :_reduce_113,
|
|
2, 67, :_reduce_114,
|
|
2, 67, :_reduce_115,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
1, 68, :_reduce_none,
|
|
2, 64, :_reduce_136,
|
|
1, 64, :_reduce_none ]
|
|
|
|
racc_reduce_n = 138
|
|
|
|
racc_shift_n = 179
|
|
|
|
racc_token_table = {
|
|
false => 0,
|
|
:error => 1,
|
|
:EX_LOW => 2,
|
|
:QUOTE => 3,
|
|
:BAR => 4,
|
|
:SLASH => 5,
|
|
:BACK_SLASH => 6,
|
|
:URL => 7,
|
|
:OTHER => 8,
|
|
:REF_OPEN => 9,
|
|
:FOOTNOTE_OPEN => 10,
|
|
:FOOTNOTE_CLOSE => 11,
|
|
:EX_HIGH => 12,
|
|
:EM_OPEN => 13,
|
|
:EM_CLOSE => 14,
|
|
:CODE_OPEN => 15,
|
|
:CODE_CLOSE => 16,
|
|
:VAR_OPEN => 17,
|
|
:VAR_CLOSE => 18,
|
|
:KBD_OPEN => 19,
|
|
:KBD_CLOSE => 20,
|
|
:INDEX_OPEN => 21,
|
|
:INDEX_CLOSE => 22,
|
|
:REF_CLOSE => 23,
|
|
:VERB_OPEN => 24,
|
|
:VERB_CLOSE => 25 }
|
|
|
|
racc_nt_base = 26
|
|
|
|
racc_use_result_var = true
|
|
|
|
Racc_arg = [
|
|
racc_action_table,
|
|
racc_action_check,
|
|
racc_action_default,
|
|
racc_action_pointer,
|
|
racc_goto_table,
|
|
racc_goto_check,
|
|
racc_goto_default,
|
|
racc_goto_pointer,
|
|
racc_nt_base,
|
|
racc_reduce_table,
|
|
racc_token_table,
|
|
racc_shift_n,
|
|
racc_reduce_n,
|
|
racc_use_result_var ]
|
|
|
|
Racc_token_to_s_table = [
|
|
"$end",
|
|
"error",
|
|
"EX_LOW",
|
|
"QUOTE",
|
|
"BAR",
|
|
"SLASH",
|
|
"BACK_SLASH",
|
|
"URL",
|
|
"OTHER",
|
|
"REF_OPEN",
|
|
"FOOTNOTE_OPEN",
|
|
"FOOTNOTE_CLOSE",
|
|
"EX_HIGH",
|
|
"EM_OPEN",
|
|
"EM_CLOSE",
|
|
"CODE_OPEN",
|
|
"CODE_CLOSE",
|
|
"VAR_OPEN",
|
|
"VAR_CLOSE",
|
|
"KBD_OPEN",
|
|
"KBD_CLOSE",
|
|
"INDEX_OPEN",
|
|
"INDEX_CLOSE",
|
|
"REF_CLOSE",
|
|
"VERB_OPEN",
|
|
"VERB_CLOSE",
|
|
"$start",
|
|
"content",
|
|
"elements",
|
|
"element",
|
|
"emphasis",
|
|
"code",
|
|
"var",
|
|
"keyboard",
|
|
"index",
|
|
"reference",
|
|
"footnote",
|
|
"verb",
|
|
"normal_str_ele",
|
|
"substitute",
|
|
"ref_label",
|
|
"ref_label2",
|
|
"ref_url_strings",
|
|
"filename",
|
|
"element_label",
|
|
"element_label2",
|
|
"ref_subst_content",
|
|
"ref_subst_content_q",
|
|
"ref_subst_strings_q",
|
|
"ref_subst_strings_first",
|
|
"ref_subst_ele2",
|
|
"ref_subst_eles",
|
|
"ref_subst_str_ele_first",
|
|
"ref_subst_eles_q",
|
|
"ref_subst_ele",
|
|
"ref_subst_ele_q",
|
|
"ref_subst_str_ele",
|
|
"ref_subst_str_ele_q",
|
|
"ref_subst_strings",
|
|
"ref_subst_string3",
|
|
"ref_subst_string",
|
|
"ref_subst_string_q",
|
|
"ref_subst_string2",
|
|
"ref_url_string",
|
|
"verb_strings",
|
|
"normal_string",
|
|
"normal_strings",
|
|
"verb_string",
|
|
"verb_normal_string" ]
|
|
|
|
Racc_debug_parser = false
|
|
|
|
##### State transition tables end #####
|
|
|
|
# reduce 0 omitted
|
|
|
|
# reduce 1 omitted
|
|
|
|
def _reduce_2(val, _values, result)
|
|
result.append val[1]
|
|
result
|
|
end
|
|
|
|
def _reduce_3(val, _values, result)
|
|
result = val[0]
|
|
result
|
|
end
|
|
|
|
# reduce 4 omitted
|
|
|
|
# reduce 5 omitted
|
|
|
|
# reduce 6 omitted
|
|
|
|
# reduce 7 omitted
|
|
|
|
# reduce 8 omitted
|
|
|
|
# reduce 9 omitted
|
|
|
|
# reduce 10 omitted
|
|
|
|
# reduce 11 omitted
|
|
|
|
# reduce 12 omitted
|
|
|
|
def _reduce_13(val, _values, result)
|
|
content = val[1]
|
|
result = inline "<em>#{content}</em>", content
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_14(val, _values, result)
|
|
content = val[1]
|
|
result = inline "<code>#{content}</code>", content
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_15(val, _values, result)
|
|
content = val[1]
|
|
result = inline "+#{content}+", content
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_16(val, _values, result)
|
|
content = val[1]
|
|
result = inline "<tt>#{content}</tt>", content
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_17(val, _values, result)
|
|
label = val[1]
|
|
@block_parser.add_label label.reference
|
|
result = "<span id=\"label-#{label}\">#{label}</span>"
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_18(val, _values, result)
|
|
result = "{#{val[1]}}[#{val[2].join}]"
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_19(val, _values, result)
|
|
scheme, inline = val[1]
|
|
|
|
result = "{#{inline}}[#{scheme}#{inline.reference}]"
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_20(val, _values, result)
|
|
result = [nil, inline(val[1])]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_21(val, _values, result)
|
|
result = [
|
|
'rdoc-label:',
|
|
inline("#{val[0].reference}/#{val[1].reference}")
|
|
]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_22(val, _values, result)
|
|
result = ['rdoc-label:', val[0].reference]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_23(val, _values, result)
|
|
result = ['rdoc-label:', "#{val[0].reference}/"]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_24(val, _values, result)
|
|
result = [nil, inline(val[1])]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_25(val, _values, result)
|
|
result = [
|
|
'rdoc-label:',
|
|
inline("#{val[0].reference}/#{val[1].reference}")
|
|
]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_26(val, _values, result)
|
|
result = ['rdoc-label:', val[0]]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_27(val, _values, result)
|
|
ref = val[0].reference
|
|
result = ['rdoc-label:', inline(ref, "#{ref}/")]
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 28 omitted
|
|
|
|
def _reduce_29(val, _values, result)
|
|
result = val[1]
|
|
result
|
|
end
|
|
|
|
def _reduce_30(val, _values, result)
|
|
result = val[1]
|
|
result
|
|
end
|
|
|
|
def _reduce_31(val, _values, result)
|
|
result = inline val[0]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_32(val, _values, result)
|
|
result = inline "\"#{val[1]}\""
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_33(val, _values, result)
|
|
result = inline val[0]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_34(val, _values, result)
|
|
result = inline "\"#{val[1]}\""
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 35 omitted
|
|
|
|
def _reduce_36(val, _values, result)
|
|
result = val[1]
|
|
result
|
|
end
|
|
|
|
def _reduce_37(val, _values, result)
|
|
result = inline val[1]
|
|
result
|
|
end
|
|
|
|
def _reduce_38(val, _values, result)
|
|
result = val[0].append val[1]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_39(val, _values, result)
|
|
result = val[0].append val[1]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_40(val, _values, result)
|
|
result = val[0]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_41(val, _values, result)
|
|
result = inline val[0]
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 42 omitted
|
|
|
|
def _reduce_43(val, _values, result)
|
|
result = val[0].append val[1]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_44(val, _values, result)
|
|
result = inline val[0]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_45(val, _values, result)
|
|
result = val[0].append val[1]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_46(val, _values, result)
|
|
result = val[0]
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 47 omitted
|
|
|
|
# reduce 48 omitted
|
|
|
|
# reduce 49 omitted
|
|
|
|
# reduce 50 omitted
|
|
|
|
# reduce 51 omitted
|
|
|
|
# reduce 52 omitted
|
|
|
|
# reduce 53 omitted
|
|
|
|
# reduce 54 omitted
|
|
|
|
# reduce 55 omitted
|
|
|
|
# reduce 56 omitted
|
|
|
|
def _reduce_57(val, _values, result)
|
|
result = val[0]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_58(val, _values, result)
|
|
result = inline val[0]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_59(val, _values, result)
|
|
result = inline val[0]
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_60(val, _values, result)
|
|
result << val[1]
|
|
result
|
|
end
|
|
|
|
# reduce 61 omitted
|
|
|
|
def _reduce_62(val, _values, result)
|
|
result << val[1]
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 63 omitted
|
|
|
|
def _reduce_64(val, _values, result)
|
|
result << val[1]
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 65 omitted
|
|
|
|
# reduce 66 omitted
|
|
|
|
# reduce 67 omitted
|
|
|
|
# reduce 68 omitted
|
|
|
|
# reduce 69 omitted
|
|
|
|
# reduce 70 omitted
|
|
|
|
# reduce 71 omitted
|
|
|
|
# reduce 72 omitted
|
|
|
|
# reduce 73 omitted
|
|
|
|
# reduce 74 omitted
|
|
|
|
# reduce 75 omitted
|
|
|
|
# reduce 76 omitted
|
|
|
|
# reduce 77 omitted
|
|
|
|
def _reduce_78(val, _values, result)
|
|
result << val[1]
|
|
result
|
|
end
|
|
|
|
# reduce 79 omitted
|
|
|
|
# reduce 80 omitted
|
|
|
|
# reduce 81 omitted
|
|
|
|
# reduce 82 omitted
|
|
|
|
# reduce 83 omitted
|
|
|
|
# reduce 84 omitted
|
|
|
|
# reduce 85 omitted
|
|
|
|
# reduce 86 omitted
|
|
|
|
# reduce 87 omitted
|
|
|
|
# reduce 88 omitted
|
|
|
|
# reduce 89 omitted
|
|
|
|
# reduce 90 omitted
|
|
|
|
# reduce 91 omitted
|
|
|
|
# reduce 92 omitted
|
|
|
|
# reduce 93 omitted
|
|
|
|
# reduce 94 omitted
|
|
|
|
# reduce 95 omitted
|
|
|
|
# reduce 96 omitted
|
|
|
|
# reduce 97 omitted
|
|
|
|
# reduce 98 omitted
|
|
|
|
# reduce 99 omitted
|
|
|
|
# reduce 100 omitted
|
|
|
|
def _reduce_101(val, _values, result)
|
|
index = @block_parser.add_footnote val[1].rdoc
|
|
result = "{*#{index}}[rdoc-label:foottext-#{index}:footmark-#{index}]"
|
|
|
|
result
|
|
end
|
|
|
|
def _reduce_102(val, _values, result)
|
|
result = inline "<tt>#{val[1]}</tt>", val[1]
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 103 omitted
|
|
|
|
# reduce 104 omitted
|
|
|
|
# reduce 105 omitted
|
|
|
|
# reduce 106 omitted
|
|
|
|
# reduce 107 omitted
|
|
|
|
# reduce 108 omitted
|
|
|
|
def _reduce_109(val, _values, result)
|
|
result << val[1]
|
|
result
|
|
end
|
|
|
|
# reduce 110 omitted
|
|
|
|
def _reduce_111(val, _values, result)
|
|
result = inline val[0]
|
|
|
|
result
|
|
end
|
|
|
|
# reduce 112 omitted
|
|
|
|
def _reduce_113(val, _values, result)
|
|
result = val[1]
|
|
result
|
|
end
|
|
|
|
def _reduce_114(val, _values, result)
|
|
result = val[1]
|
|
result
|
|
end
|
|
|
|
def _reduce_115(val, _values, result)
|
|
result = val[1]
|
|
result
|
|
end
|
|
|
|
# reduce 116 omitted
|
|
|
|
# reduce 117 omitted
|
|
|
|
# reduce 118 omitted
|
|
|
|
# reduce 119 omitted
|
|
|
|
# reduce 120 omitted
|
|
|
|
# reduce 121 omitted
|
|
|
|
# reduce 122 omitted
|
|
|
|
# reduce 123 omitted
|
|
|
|
# reduce 124 omitted
|
|
|
|
# reduce 125 omitted
|
|
|
|
# reduce 126 omitted
|
|
|
|
# reduce 127 omitted
|
|
|
|
# reduce 128 omitted
|
|
|
|
# reduce 129 omitted
|
|
|
|
# reduce 130 omitted
|
|
|
|
# reduce 131 omitted
|
|
|
|
# reduce 132 omitted
|
|
|
|
# reduce 133 omitted
|
|
|
|
# reduce 134 omitted
|
|
|
|
# reduce 135 omitted
|
|
|
|
def _reduce_136(val, _values, result)
|
|
result << val[1]
|
|
result
|
|
end
|
|
|
|
# reduce 137 omitted
|
|
|
|
def _reduce_none(val, _values, result)
|
|
val[0]
|
|
end
|
|
|
|
end # class InlineParser
|
|
|
|
end
|