lib/biodiversity/parser/scientific_name_clean.rb in dimus-biodiversity-0.5.1 vs lib/biodiversity/parser/scientific_name_clean.rb in dimus-biodiversity-0.5.2
- old
+ new
@@ -649,30 +649,34 @@
def space
elements[3]
end
+ def space
+ elements[5]
+ end
+
def c
- elements[4]
+ elements[6]
end
def space_hard
- elements[5]
+ elements[7]
end
def d
- elements[6]
+ elements[8]
end
end
module MultinomialName1
def value
a.value + " " + b.value + " " + c.value + " " + d.value
end
def canonical
- a.canonical + " " + c.canonical + " " + d.canonical
+ a.canonical + " " + b.canonical + " " + c.canonical + " " + d.canonical
end
def pos
a.pos.merge(b.pos).merge(c.pos).merge(d.pos)
end
@@ -697,12 +701,16 @@
def space
elements[3]
end
+ def space
+ elements[5]
+ end
+
def c
- elements[4]
+ elements[6]
end
end
module MultinomialName3
def value
@@ -725,24 +733,28 @@
module MultinomialName4
def a
elements[0]
end
- def space_hard
+ def space
elements[1]
end
+ def space
+ elements[3]
+ end
+
def b
- elements[2]
+ elements[4]
end
def space_hard
- elements[3]
+ elements[5]
end
def c
- elements[4]
+ elements[6]
end
end
module MultinomialName5
def value
@@ -765,16 +777,20 @@
module MultinomialName6
def a
elements[0]
end
- def space_hard
+ def space
elements[1]
end
+ def space
+ elements[3]
+ end
+
def b
- elements[2]
+ elements[4]
end
end
module MultinomialName7
def value
@@ -814,18 +830,31 @@
s1 << r4
if r4
r5 = _nt_space
s1 << r5
if r5
- r6 = _nt_species
+ r7 = _nt_species_prefix
+ if r7
+ r6 = r7
+ else
+ r6 = instantiate_node(SyntaxNode,input, index...index)
+ end
s1 << r6
if r6
- r7 = _nt_space_hard
- s1 << r7
- if r7
- r8 = _nt_infraspecies_mult
- s1 << r8
+ r8 = _nt_space
+ s1 << r8
+ if r8
+ r9 = _nt_species
+ s1 << r9
+ if r9
+ r10 = _nt_space_hard
+ s1 << r10
+ if r10
+ r11 = _nt_infraspecies_mult
+ s1 << r11
+ end
+ end
end
end
end
end
end
@@ -839,91 +868,130 @@
r1 = nil
end
if r1
r0 = r1
else
- i9, s9 = index, []
- r10 = _nt_genus
- s9 << r10
- if r10
- r11 = _nt_space
- s9 << r11
- if r11
- r12 = _nt_subgenus
- s9 << r12
- if r12
- r13 = _nt_space
- s9 << r13
- if r13
- r14 = _nt_species
- s9 << r14
+ i12, s12 = index, []
+ r13 = _nt_genus
+ s12 << r13
+ if r13
+ r14 = _nt_space
+ s12 << r14
+ if r14
+ r15 = _nt_subgenus
+ s12 << r15
+ if r15
+ r16 = _nt_space
+ s12 << r16
+ if r16
+ r18 = _nt_species_prefix
+ if r18
+ r17 = r18
+ else
+ r17 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s12 << r17
+ if r17
+ r19 = _nt_space
+ s12 << r19
+ if r19
+ r20 = _nt_species
+ s12 << r20
+ end
+ end
end
end
end
end
- if s9.last
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
- r9.extend(MultinomialName2)
- r9.extend(MultinomialName3)
+ if s12.last
+ r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
+ r12.extend(MultinomialName2)
+ r12.extend(MultinomialName3)
else
- self.index = i9
- r9 = nil
+ self.index = i12
+ r12 = nil
end
- if r9
- r0 = r9
+ if r12
+ r0 = r12
else
- i15, s15 = index, []
- r16 = _nt_genus
- s15 << r16
- if r16
- r17 = _nt_space_hard
- s15 << r17
- if r17
- r18 = _nt_species
- s15 << r18
- if r18
- r19 = _nt_space_hard
- s15 << r19
- if r19
- r20 = _nt_infraspecies_mult
- s15 << r20
+ i21, s21 = index, []
+ r22 = _nt_genus
+ s21 << r22
+ if r22
+ r23 = _nt_space
+ s21 << r23
+ if r23
+ r25 = _nt_species_prefix
+ if r25
+ r24 = r25
+ else
+ r24 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s21 << r24
+ if r24
+ r26 = _nt_space
+ s21 << r26
+ if r26
+ r27 = _nt_species
+ s21 << r27
+ if r27
+ r28 = _nt_space_hard
+ s21 << r28
+ if r28
+ r29 = _nt_infraspecies_mult
+ s21 << r29
+ end
+ end
end
end
end
end
- if s15.last
- r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
- r15.extend(MultinomialName4)
- r15.extend(MultinomialName5)
+ if s21.last
+ r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
+ r21.extend(MultinomialName4)
+ r21.extend(MultinomialName5)
else
- self.index = i15
- r15 = nil
+ self.index = i21
+ r21 = nil
end
- if r15
- r0 = r15
+ if r21
+ r0 = r21
else
- i21, s21 = index, []
- r22 = _nt_genus
- s21 << r22
- if r22
- r23 = _nt_space_hard
- s21 << r23
- if r23
- r24 = _nt_species
- s21 << r24
+ i30, s30 = index, []
+ r31 = _nt_genus
+ s30 << r31
+ if r31
+ r32 = _nt_space
+ s30 << r32
+ if r32
+ r34 = _nt_species_prefix
+ if r34
+ r33 = r34
+ else
+ r33 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s30 << r33
+ if r33
+ r35 = _nt_space
+ s30 << r35
+ if r35
+ r36 = _nt_species
+ s30 << r36
+ end
+ end
end
end
- if s21.last
- r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
- r21.extend(MultinomialName6)
- r21.extend(MultinomialName7)
+ if s30.last
+ r30 = instantiate_node(SyntaxNode,input, i30...index, s30)
+ r30.extend(MultinomialName6)
+ r30.extend(MultinomialName7)
else
- self.index = i21
- r21 = nil
+ self.index = i30
+ r30 = nil
end
- if r21
- r0 = r21
+ if r30
+ r0 = r30
else
self.index = i0
r0 = nil
end
end
@@ -961,11 +1029,10 @@
def pos
a.pos.merge(b.pos)
end
def details
- #{:infraspecies => a.details[:infraspceies] << b.details[:infraspecies]}
a_array = a.details[:infraspecies].class == Array ? a.details[:infraspecies] : [a.details[:infraspecies]]
b_array = b.details[:infraspecies].class == Array ? b.details[:infraspecies] : [b.details[:infraspecies]]
a.details.merge({:infraspecies => a_array + b_array})
end
end
@@ -1237,18 +1304,37 @@
cached = node_cache[:taxon_concept_rank][index]
@index = cached.interval.end if cached
return cached
end
+ i0 = index
if input.index("sec.", index) == index
- r0 = instantiate_node(SyntaxNode,input, index...(index + 4))
- r0.extend(TaxonConceptRank0)
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
@index += 4
else
terminal_parse_failure("sec.")
- r0 = nil
+ r1 = nil
end
+ if r1
+ r0 = r1
+ r0.extend(TaxonConceptRank0)
+ else
+ if input.index("sensu.", index) == index
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 6))
+ @index += 6
+ else
+ terminal_parse_failure("sensu.")
+ r2 = nil
+ end
+ if r2
+ r0 = r2
+ r0.extend(TaxonConceptRank0)
+ else
+ self.index = i0
+ r0 = nil
+ end
+ end
node_cache[:taxon_concept_rank][start_index] = r0
return r0
end
@@ -2081,20 +2167,49 @@
return r0
end
module Genus0
+ def space_hard
+ elements[0]
+ end
+
+ def author_prefix_word
+ elements[1]
+ end
+
+ def space_hard
+ elements[2]
+ end
+
+ def author_word
+ elements[3]
+ end
+ end
+
+ module Genus1
+ def a
+ elements[0]
+ end
+
+ end
+
+ module Genus2
+ def value
+ a.value
+ end
+
def pos
- {interval.begin => ['genus', interval.end]}
+ {a.interval.begin => ['genus', a.interval.end]}
end
def canonical
- value
+ a.value
end
def details
- {:genus => {:epitheton => value}}
+ {:genus => {:epitheton => a.value}}
end
end
def _nt_genus
start_index = index
@@ -2102,12 +2217,53 @@
cached = node_cache[:genus][index]
@index = cached.interval.end if cached
return cached
end
- r0 = _nt_cap_latin_word
- r0.extend(Genus0)
+ i0, s0 = index, []
+ r1 = _nt_cap_latin_word
+ s0 << r1
+ if r1
+ i2 = index
+ i3, s3 = index, []
+ r4 = _nt_space_hard
+ s3 << r4
+ if r4
+ r5 = _nt_author_prefix_word
+ s3 << r5
+ if r5
+ r6 = _nt_space_hard
+ s3 << r6
+ if r6
+ r7 = _nt_author_word
+ s3 << r7
+ end
+ end
+ end
+ if s3.last
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
+ r3.extend(Genus0)
+ else
+ self.index = i3
+ r3 = nil
+ end
+ if r3
+ r2 = nil
+ else
+ self.index = i2
+ r2 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s0 << r2
+ end
+ if s0.last
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
+ r0.extend(Genus1)
+ r0.extend(Genus2)
+ else
+ self.index = i0
+ r0 = nil
+ end
node_cache[:genus][start_index] = r0
return r0
end
@@ -2231,15 +2387,15 @@
def b
elements[2]
end
def space
- elements[3]
+ elements[4]
end
def c
- elements[4]
+ elements[5]
end
end
module Authorship1
def value
@@ -2289,15 +2445,15 @@
def a
elements[0]
end
def space
- elements[1]
+ elements[2]
end
def b
- elements[2]
+ elements[3]
end
end
module Authorship5
def value
@@ -2333,15 +2489,30 @@
s1 << r3
if r3
r4 = _nt_simple_authorship
s1 << r4
if r4
- r5 = _nt_space
+ if input.index(",", index) == index
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ terminal_parse_failure(",")
+ r6 = nil
+ end
+ if r6
+ r5 = r6
+ else
+ r5 = instantiate_node(SyntaxNode,input, index...index)
+ end
s1 << r5
if r5
- r6 = _nt_ex_authorship
- s1 << r6
+ r7 = _nt_space
+ s1 << r7
+ if r7
+ r8 = _nt_ex_authorship
+ s1 << r8
+ end
end
end
end
end
if s1.last
@@ -2353,61 +2524,76 @@
r1 = nil
end
if r1
r0 = r1
else
- i7, s7 = index, []
- r8 = _nt_basionym_authorship_with_parenthesis
- s7 << r8
- if r8
- r9 = _nt_space
- s7 << r9
- if r9
- r10 = _nt_simple_authorship
- s7 << r10
+ i9, s9 = index, []
+ r10 = _nt_basionym_authorship_with_parenthesis
+ s9 << r10
+ if r10
+ r11 = _nt_space
+ s9 << r11
+ if r11
+ r12 = _nt_simple_authorship
+ s9 << r12
end
end
- if s7.last
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
- r7.extend(Authorship2)
- r7.extend(Authorship3)
+ if s9.last
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
+ r9.extend(Authorship2)
+ r9.extend(Authorship3)
else
- self.index = i7
- r7 = nil
+ self.index = i9
+ r9 = nil
end
- if r7
- r0 = r7
+ if r9
+ r0 = r9
else
- r11 = _nt_basionym_authorship_with_parenthesis
- if r11
- r0 = r11
+ r13 = _nt_basionym_authorship_with_parenthesis
+ if r13
+ r0 = r13
else
- i12, s12 = index, []
- r13 = _nt_simple_authorship
- s12 << r13
- if r13
- r14 = _nt_space
- s12 << r14
- if r14
- r15 = _nt_ex_authorship
- s12 << r15
+ i14, s14 = index, []
+ r15 = _nt_simple_authorship
+ s14 << r15
+ if r15
+ if input.index(",", index) == index
+ r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ terminal_parse_failure(",")
+ r17 = nil
end
+ if r17
+ r16 = r17
+ else
+ r16 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s14 << r16
+ if r16
+ r18 = _nt_space
+ s14 << r18
+ if r18
+ r19 = _nt_ex_authorship
+ s14 << r19
+ end
+ end
end
- if s12.last
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
- r12.extend(Authorship4)
- r12.extend(Authorship5)
+ if s14.last
+ r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
+ r14.extend(Authorship4)
+ r14.extend(Authorship5)
else
- self.index = i12
- r12 = nil
+ self.index = i14
+ r14 = nil
end
- if r12
- r0 = r12
+ if r14
+ r0 = r14
else
- r16 = _nt_simple_authorship
- if r16
- r0 = r16
+ r20 = _nt_simple_authorship
+ if r20
+ r0 = r20
else
self.index = i0
r0 = nil
end
end
@@ -2482,23 +2668,23 @@
def a
elements[2]
end
def space
- elements[3]
+ elements[4]
end
def b
- elements[4]
+ elements[5]
end
def space
- elements[5]
+ elements[6]
end
def right_paren
- elements[6]
+ elements[7]
end
end
module BasionymAuthorshipWithParenthesis3
def value
@@ -2664,21 +2850,36 @@
s12 << r14
if r14
r15 = _nt_simple_authorship
s12 << r15
if r15
- r16 = _nt_space
+ if input.index(",", index) == index
+ r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ terminal_parse_failure(",")
+ r17 = nil
+ end
+ if r17
+ r16 = r17
+ else
+ r16 = instantiate_node(SyntaxNode,input, index...index)
+ end
s12 << r16
if r16
- r17 = _nt_ex_authorship
- s12 << r17
- if r17
- r18 = _nt_space
- s12 << r18
- if r18
- r19 = _nt_right_paren
- s12 << r19
+ r18 = _nt_space
+ s12 << r18
+ if r18
+ r19 = _nt_ex_authorship
+ s12 << r19
+ if r19
+ r20 = _nt_space
+ s12 << r20
+ if r20
+ r21 = _nt_right_paren
+ s12 << r21
+ end
end
end
end
end
end
@@ -2692,75 +2893,75 @@
r12 = nil
end
if r12
r0 = r12
else
- i20, s20 = index, []
- r21 = _nt_left_paren
- s20 << r21
- if r21
- r22 = _nt_space
- s20 << r22
- if r22
- r23 = _nt_simple_authorship
- s20 << r23
- if r23
- r24 = _nt_space
- s20 << r24
- if r24
- r25 = _nt_right_paren
- s20 << r25
+ i22, s22 = index, []
+ r23 = _nt_left_paren
+ s22 << r23
+ if r23
+ r24 = _nt_space
+ s22 << r24
+ if r24
+ r25 = _nt_simple_authorship
+ s22 << r25
+ if r25
+ r26 = _nt_space
+ s22 << r26
+ if r26
+ r27 = _nt_right_paren
+ s22 << r27
end
end
end
end
- if s20.last
- r20 = instantiate_node(SyntaxNode,input, i20...index, s20)
- r20.extend(BasionymAuthorshipWithParenthesis4)
- r20.extend(BasionymAuthorshipWithParenthesis5)
+ if s22.last
+ r22 = instantiate_node(SyntaxNode,input, i22...index, s22)
+ r22.extend(BasionymAuthorshipWithParenthesis4)
+ r22.extend(BasionymAuthorshipWithParenthesis5)
else
- self.index = i20
- r20 = nil
+ self.index = i22
+ r22 = nil
end
- if r20
- r0 = r20
+ if r22
+ r0 = r22
else
- i26, s26 = index, []
- r27 = _nt_left_paren
- s26 << r27
- if r27
- r28 = _nt_space
- s26 << r28
- if r28
+ i28, s28 = index, []
+ r29 = _nt_left_paren
+ s28 << r29
+ if r29
+ r30 = _nt_space
+ s28 << r30
+ if r30
if input.index("?", index) == index
- r29 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r31 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("?")
- r29 = nil
+ r31 = nil
end
- s26 << r29
- if r29
- r30 = _nt_space
- s26 << r30
- if r30
- r31 = _nt_right_paren
- s26 << r31
+ s28 << r31
+ if r31
+ r32 = _nt_space
+ s28 << r32
+ if r32
+ r33 = _nt_right_paren
+ s28 << r33
end
end
end
end
- if s26.last
- r26 = instantiate_node(SyntaxNode,input, i26...index, s26)
- r26.extend(BasionymAuthorshipWithParenthesis6)
- r26.extend(BasionymAuthorshipWithParenthesis7)
+ if s28.last
+ r28 = instantiate_node(SyntaxNode,input, i28...index, s28)
+ r28.extend(BasionymAuthorshipWithParenthesis6)
+ r28.extend(BasionymAuthorshipWithParenthesis7)
else
- self.index = i26
- r26 = nil
+ self.index = i28
+ r28 = nil
end
- if r26
- r0 = r26
+ if r28
+ r0 = r28
else
self.index = i0
r0 = nil
end
end
@@ -2848,10 +3049,34 @@
end
def b
elements[4]
end
+
+ def space
+ elements[6]
+ end
+
+ def space
+ elements[8]
+ end
+
+ def authors_names
+ elements[9]
+ end
+
+ def space
+ elements[10]
+ end
+
+ def space
+ elements[12]
+ end
+
+ def year
+ elements[13]
+ end
end
module SimpleAuthorship1
def value
a.value + " " + b.value
@@ -2873,11 +3098,51 @@
}
end
end
module SimpleAuthorship2
+ def a
+ elements[0]
+ end
+
+ def space
+ elements[1]
+ end
+
+ def space
+ elements[3]
+ end
+
+ def b
+ elements[4]
+ end
+ end
+
+ module SimpleAuthorship3
+ def value
+ a.value + " " + b.value
+ end
+
+ def pos
+ a.pos.merge(b.pos)
+ end
+
def details
+ details_with_arg(:basionymAuthorTeam)
+ end
+
+ def details_with_arg(authorTeamType = 'basionymAuthorTeam')
+ { :authorship => text_value,
+ authorTeamType.to_sym => {
+ :authorTeam => a.text_value.strip
+ }.merge(a.details).merge(b.details)
+ }
+ end
+ end
+
+ module SimpleAuthorship4
+ def details
details = details_with_arg(:basionymAuthorTeam)
details[:basionymAuthorTeam].merge!(super)
details
end
@@ -2920,12 +3185,79 @@
s1 << r4
if r4
r6 = _nt_space
s1 << r6
if r6
- r7 = _nt_year
+ r8 = _nt_year
+ if r8
+ r7 = r8
+ else
+ r7 = instantiate_node(SyntaxNode,input, index...index)
+ end
s1 << r7
+ if r7
+ if input.index(Regexp.new('[,]'), index) == index
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ r10 = nil
+ end
+ if r10
+ r9 = r10
+ else
+ r9 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s1 << r9
+ if r9
+ r11 = _nt_space
+ s1 << r11
+ if r11
+ if input.index("non", index) == index
+ r12 = instantiate_node(SyntaxNode,input, index...(index + 3))
+ @index += 3
+ else
+ terminal_parse_failure("non")
+ r12 = nil
+ end
+ s1 << r12
+ if r12
+ r13 = _nt_space
+ s1 << r13
+ if r13
+ r14 = _nt_authors_names
+ s1 << r14
+ if r14
+ r15 = _nt_space
+ s1 << r15
+ if r15
+ if input.index(Regexp.new('[,]'), index) == index
+ r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ r17 = nil
+ end
+ if r17
+ r16 = r17
+ else
+ r16 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s1 << r16
+ if r16
+ r18 = _nt_space
+ s1 << r18
+ if r18
+ r19 = _nt_year
+ s1 << r19
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
end
end
end
end
if s1.last
@@ -2937,18 +3269,59 @@
r1 = nil
end
if r1
r0 = r1
else
- r8 = _nt_authors_names
- r8.extend(SimpleAuthorship2)
- if r8
- r0 = r8
+ i20, s20 = index, []
+ r21 = _nt_authors_names
+ s20 << r21
+ if r21
+ r22 = _nt_space
+ s20 << r22
+ if r22
+ if input.index(Regexp.new('[,]'), index) == index
+ r24 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ r24 = nil
+ end
+ if r24
+ r23 = r24
+ else
+ r23 = instantiate_node(SyntaxNode,input, index...index)
+ end
+ s20 << r23
+ if r23
+ r25 = _nt_space
+ s20 << r25
+ if r25
+ r26 = _nt_year
+ s20 << r26
+ end
+ end
+ end
+ end
+ if s20.last
+ r20 = instantiate_node(SyntaxNode,input, i20...index, s20)
+ r20.extend(SimpleAuthorship2)
+ r20.extend(SimpleAuthorship3)
else
- self.index = i0
- r0 = nil
+ self.index = i20
+ r20 = nil
end
+ if r20
+ r0 = r20
+ else
+ r27 = _nt_authors_names
+ r27.extend(SimpleAuthorship4)
+ if r27
+ r0 = r27
+ else
+ self.index = i0
+ r0 = nil
+ end
+ end
end
node_cache[:simple_authorship][start_index] = r0
return r0
@@ -3513,205 +3886,193 @@
end
if r1
r0 = r1
else
i2 = index
- if input.index("bis", index) == index
- r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
- @index += 3
+ if input.index("arg.", index) == index
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 4))
+ @index += 4
else
- terminal_parse_failure("bis")
+ terminal_parse_failure("arg.")
r3 = nil
end
if r3
r2 = r3
r2.extend(AuthorWord1)
else
- if input.index("arg.", index) == index
- r4 = instantiate_node(SyntaxNode,input, index...(index + 4))
- @index += 4
+ if input.index("et al.\{\?\}", index) == index
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 9))
+ @index += 9
else
- terminal_parse_failure("arg.")
+ terminal_parse_failure("et al.\{\?\}")
r4 = nil
end
if r4
r2 = r4
r2.extend(AuthorWord1)
else
- if input.index("et al.\{\?\}", index) == index
- r5 = instantiate_node(SyntaxNode,input, index...(index + 9))
- @index += 9
+ if input.index("et al.", index) == index
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 6))
+ @index += 6
else
- terminal_parse_failure("et al.\{\?\}")
+ terminal_parse_failure("et al.")
r5 = nil
end
if r5
r2 = r5
r2.extend(AuthorWord1)
else
- if input.index("et al.", index) == index
- r6 = instantiate_node(SyntaxNode,input, index...(index + 6))
- @index += 6
- else
- terminal_parse_failure("et al.")
- r6 = nil
- end
- if r6
- r2 = r6
- r2.extend(AuthorWord1)
- else
- self.index = i2
- r2 = nil
- end
+ self.index = i2
+ r2 = nil
end
end
end
if r2
r0 = r2
else
- i7, s7 = index, []
- i8 = index
+ i6, s6 = index, []
+ i7 = index
if input.index("Å", index) == index
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Å")
- r9 = nil
+ r8 = nil
end
- if r9
- r8 = r9
+ if r8
+ r7 = r8
else
if input.index("Ö", index) == index
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Ö")
- r10 = nil
+ r9 = nil
end
- if r10
- r8 = r10
+ if r9
+ r7 = r9
else
if input.index("Á", index) == index
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Á")
- r11 = nil
+ r10 = nil
end
- if r11
- r8 = r11
+ if r10
+ r7 = r10
else
if input.index("Ø", index) == index
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Ø")
- r12 = nil
+ r11 = nil
end
- if r12
- r8 = r12
+ if r11
+ r7 = r11
else
if input.index("Ô", index) == index
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Ô")
- r13 = nil
+ r12 = nil
end
- if r13
- r8 = r13
+ if r12
+ r7 = r12
else
if input.index("Š", index) == index
- r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Š")
- r14 = nil
+ r13 = nil
end
- if r14
- r8 = r14
+ if r13
+ r7 = r13
else
if input.index("Ś", index) == index
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Ś")
- r15 = nil
+ r14 = nil
end
- if r15
- r8 = r15
+ if r14
+ r7 = r14
else
if input.index("Č", index) == index
- r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Č")
- r16 = nil
+ r15 = nil
end
- if r16
- r8 = r16
+ if r15
+ r7 = r15
else
if input.index("Ķ", index) == index
- r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Ķ")
- r17 = nil
+ r16 = nil
end
- if r17
- r8 = r17
+ if r16
+ r7 = r16
else
if input.index("Ł", index) == index
- r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Ł")
- r18 = nil
+ r17 = nil
end
- if r18
- r8 = r18
+ if r17
+ r7 = r17
else
if input.index("É", index) == index
- r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("É")
- r19 = nil
+ r18 = nil
end
- if r19
- r8 = r19
+ if r18
+ r7 = r18
else
if input.index("Ž", index) == index
- r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("Ž")
- r20 = nil
+ r19 = nil
end
- if r20
- r8 = r20
+ if r19
+ r7 = r19
else
if input.index(Regexp.new('[A-W]'), index) == index
- r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
- r21 = nil
+ r20 = nil
end
- if r21
- r8 = r21
+ if r20
+ r7 = r20
else
if input.index(Regexp.new('[Y-Z]'), index) == index
- r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
- r22 = nil
+ r21 = nil
end
- if r22
- r8 = r22
+ if r21
+ r7 = r21
else
- self.index = i8
- r8 = nil
+ self.index = i7
+ r7 = nil
end
end
end
end
end
@@ -3722,86 +4083,86 @@
end
end
end
end
end
- s7 << r8
- if r8
- s23, i23 = [], index
+ s6 << r7
+ if r7
+ s22, i22 = [], index
loop do
if input.index(Regexp.new('[^0-9\\[\\]\\(\\)\\s&,]'), index) == index
- r24 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r23 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
- r24 = nil
+ r23 = nil
end
- if r24
- s23 << r24
+ if r23
+ s22 << r23
else
break
end
end
- r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
- s7 << r23
+ r22 = instantiate_node(SyntaxNode,input, i22...index, s22)
+ s6 << r22
end
- if s7.last
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
- r7.extend(AuthorWord2)
- r7.extend(AuthorWord3)
+ if s6.last
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
+ r6.extend(AuthorWord2)
+ r6.extend(AuthorWord3)
else
- self.index = i7
- r7 = nil
+ self.index = i6
+ r6 = nil
end
- if r7
- r0 = r7
+ if r6
+ r0 = r6
else
- i25, s25 = index, []
+ i24, s24 = index, []
if input.index("X", index) == index
- r26 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r25 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("X")
- r26 = nil
+ r25 = nil
end
- s25 << r26
- if r26
- s27, i27 = [], index
+ s24 << r25
+ if r25
+ s26, i26 = [], index
loop do
if input.index(Regexp.new('[^0-9\\[\\]\\(\\)\\s&,]'), index) == index
- r28 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ r27 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
- r28 = nil
+ r27 = nil
end
- if r28
- s27 << r28
+ if r27
+ s26 << r27
else
break
end
end
- if s27.empty?
- self.index = i27
- r27 = nil
+ if s26.empty?
+ self.index = i26
+ r26 = nil
else
- r27 = instantiate_node(SyntaxNode,input, i27...index, s27)
+ r26 = instantiate_node(SyntaxNode,input, i26...index, s26)
end
- s25 << r27
+ s24 << r26
end
- if s25.last
- r25 = instantiate_node(SyntaxNode,input, i25...index, s25)
- r25.extend(AuthorWord4)
- r25.extend(AuthorWord5)
+ if s24.last
+ r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
+ r24.extend(AuthorWord4)
+ r24.extend(AuthorWord5)
else
- self.index = i25
- r25 = nil
+ self.index = i24
+ r24 = nil
end
- if r25
- r0 = r25
+ if r24
+ r0 = r24
else
- r29 = _nt_author_prefix_word
- if r29
- r0 = r29
+ r28 = _nt_author_prefix_word
+ if r28
+ r0 = r28
else
self.index = i0
r0 = nil
end
end
@@ -3843,102 +4204,157 @@
i0, s0 = index, []
r1 = _nt_space
s0 << r1
if r1
i2 = index
- if input.index("da", index) == index
+ if input.index("ab", index) == index
r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
@index += 2
else
- terminal_parse_failure("da")
+ terminal_parse_failure("ab")
r3 = nil
end
if r3
r2 = r3
else
- if input.index("der", index) == index
+ if input.index("bis", index) == index
r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
@index += 3
else
- terminal_parse_failure("der")
+ terminal_parse_failure("bis")
r4 = nil
end
if r4
r2 = r4
else
- if input.index("den", index) == index
- r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
- @index += 3
+ if input.index("da", index) == index
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 2))
+ @index += 2
else
- terminal_parse_failure("den")
+ terminal_parse_failure("da")
r5 = nil
end
if r5
r2 = r5
else
- if input.index("de", index) == index
- r6 = instantiate_node(SyntaxNode,input, index...(index + 2))
- @index += 2
+ if input.index("der", index) == index
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
+ @index += 3
else
- terminal_parse_failure("de")
+ terminal_parse_failure("der")
r6 = nil
end
if r6
r2 = r6
else
- if input.index("du", index) == index
- r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
- @index += 2
+ if input.index("den", index) == index
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
+ @index += 3
else
- terminal_parse_failure("du")
+ terminal_parse_failure("den")
r7 = nil
end
if r7
r2 = r7
else
- if input.index("la", index) == index
- r8 = instantiate_node(SyntaxNode,input, index...(index + 2))
- @index += 2
+ if input.index("della", index) == index
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 5))
+ @index += 5
else
- terminal_parse_failure("la")
+ terminal_parse_failure("della")
r8 = nil
end
if r8
r2 = r8
else
- if input.index("ter", index) == index
- r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
- @index += 3
+ if input.index("dela", index) == index
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 4))
+ @index += 4
else
- terminal_parse_failure("ter")
+ terminal_parse_failure("dela")
r9 = nil
end
if r9
r2 = r9
else
- if input.index("van", index) == index
- r10 = instantiate_node(SyntaxNode,input, index...(index + 3))
- @index += 3
+ if input.index("de", index) == index
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 2))
+ @index += 2
else
- terminal_parse_failure("van")
+ terminal_parse_failure("de")
r10 = nil
end
if r10
r2 = r10
else
- if input.index("von", index) == index
- r11 = instantiate_node(SyntaxNode,input, index...(index + 3))
- @index += 3
+ if input.index("di", index) == index
+ r11 = instantiate_node(SyntaxNode,input, index...(index + 2))
+ @index += 2
else
- terminal_parse_failure("von")
+ terminal_parse_failure("di")
r11 = nil
end
if r11
r2 = r11
else
- self.index = i2
- r2 = nil
+ if input.index("du", index) == index
+ r12 = instantiate_node(SyntaxNode,input, index...(index + 2))
+ @index += 2
+ else
+ terminal_parse_failure("du")
+ r12 = nil
+ end
+ if r12
+ r2 = r12
+ else
+ if input.index("la", index) == index
+ r13 = instantiate_node(SyntaxNode,input, index...(index + 2))
+ @index += 2
+ else
+ terminal_parse_failure("la")
+ r13 = nil
+ end
+ if r13
+ r2 = r13
+ else
+ if input.index("ter", index) == index
+ r14 = instantiate_node(SyntaxNode,input, index...(index + 3))
+ @index += 3
+ else
+ terminal_parse_failure("ter")
+ r14 = nil
+ end
+ if r14
+ r2 = r14
+ else
+ if input.index("van", index) == index
+ r15 = instantiate_node(SyntaxNode,input, index...(index + 3))
+ @index += 3
+ else
+ terminal_parse_failure("van")
+ r15 = nil
+ end
+ if r15
+ r2 = r15
+ else
+ if input.index("von", index) == index
+ r16 = instantiate_node(SyntaxNode,input, index...(index + 3))
+ @index += 3
+ else
+ terminal_parse_failure("von")
+ r16 = nil
+ end
+ if r16
+ r2 = r16
+ else
+ self.index = i2
+ r2 = nil
+ end
+ end
+ end
+ end
+ end
end
end
end
end
end
@@ -3946,19 +4362,19 @@
end
end
end
s0 << r2
if r2
- i12 = index
- r13 = _nt_space_hard
- if r13
- self.index = i12
- r12 = instantiate_node(SyntaxNode,input, index...index)
+ i17 = index
+ r18 = _nt_space_hard
+ if r18
+ self.index = i17
+ r17 = instantiate_node(SyntaxNode,input, index...index)
else
- r12 = nil
+ r17 = nil
end
- s0 << r12
+ s0 << r17
end
end
if s0.last
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
r0.extend(AuthorPrefixWord0)
@@ -4538,10 +4954,83 @@
node_cache[:species_word_hybrid][start_index] = r0
return r0
end
+ module SpeciesPrefix0
+ end
+
+ def _nt_species_prefix
+ start_index = index
+ if node_cache[:species_prefix].has_key?(index)
+ cached = node_cache[:species_prefix][index]
+ @index = cached.interval.end if cached
+ return cached
+ end
+
+ i0, s0 = index, []
+ i1 = index
+ if input.index("aff.", index) == index
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 4))
+ @index += 4
+ else
+ terminal_parse_failure("aff.")
+ r2 = nil
+ end
+ if r2
+ r1 = r2
+ else
+ if input.index("corrig.", index) == index
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 7))
+ @index += 7
+ else
+ terminal_parse_failure("corrig.")
+ r3 = nil
+ end
+ if r3
+ r1 = r3
+ else
+ if input.index("?", index) == index
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ terminal_parse_failure("?")
+ r4 = nil
+ end
+ if r4
+ r1 = r4
+ else
+ self.index = i1
+ r1 = nil
+ end
+ end
+ end
+ s0 << r1
+ if r1
+ i5 = index
+ r6 = _nt_space_hard
+ if r6
+ self.index = i5
+ r5 = instantiate_node(SyntaxNode,input, index...index)
+ else
+ r5 = nil
+ end
+ s0 << r5
+ end
+ if s0.last
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
+ r0.extend(SpeciesPrefix0)
+ else
+ self.index = i0
+ r0 = nil
+ end
+
+ node_cache[:species_prefix][start_index] = r0
+
+ return r0
+ end
+
module SpeciesWord0
def a
elements[0]
end
@@ -4671,11 +5160,11 @@
return cached
end
i0 = index
i1, s1 = index, []
- if input.index(Regexp.new('[a-zëüäöïé]'), index) == index
+ if input.index(Regexp.new('[a-zëüäöïéåóç]'), index) == index
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
r2 = nil
end
@@ -4837,10 +5326,10 @@
return cached
end
s0, i0 = [], index
loop do
- if input.index(Regexp.new('[a-z\\-ëüäöïé]'), index) == index
+ if input.index(Regexp.new('[a-z\\-ëüäöïéåóç]'), index) == index
r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
r1 = nil
end