regexp_parser 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/lib/regexp_parser/expression.rb +6 -43
  4. data/lib/regexp_parser/expression/classes/conditional.rb +3 -2
  5. data/lib/regexp_parser/expression/classes/escape.rb +0 -4
  6. data/lib/regexp_parser/expression/methods/match.rb +13 -0
  7. data/lib/regexp_parser/expression/methods/options.rb +35 -0
  8. data/lib/regexp_parser/expression/methods/strfregexp.rb +0 -1
  9. data/lib/regexp_parser/expression/methods/tests.rb +6 -15
  10. data/lib/regexp_parser/expression/sequence.rb +3 -2
  11. data/lib/regexp_parser/expression/sequence_operation.rb +2 -6
  12. data/lib/regexp_parser/lexer.rb +0 -21
  13. data/lib/regexp_parser/parser.rb +22 -21
  14. data/lib/regexp_parser/scanner.rb +1159 -1329
  15. data/lib/regexp_parser/scanner/char_type.rl +0 -3
  16. data/lib/regexp_parser/scanner/scanner.rl +82 -190
  17. data/lib/regexp_parser/version.rb +1 -1
  18. data/spec/expression/base_spec.rb +14 -0
  19. data/spec/expression/methods/match_length_spec.rb +13 -0
  20. data/spec/expression/methods/match_spec.rb +25 -0
  21. data/spec/expression/methods/tests_spec.rb +2 -0
  22. data/spec/expression/options_spec.rb +128 -0
  23. data/spec/expression/root_spec.rb +9 -0
  24. data/spec/expression/sequence_spec.rb +9 -0
  25. data/spec/lexer/conditionals_spec.rb +49 -119
  26. data/spec/lexer/escapes_spec.rb +8 -32
  27. data/spec/lexer/keep_spec.rb +5 -17
  28. data/spec/lexer/literals_spec.rb +73 -110
  29. data/spec/lexer/nesting_spec.rb +86 -117
  30. data/spec/lexer/refcalls_spec.rb +51 -50
  31. data/spec/parser/all_spec.rb +13 -1
  32. data/spec/parser/anchors_spec.rb +9 -23
  33. data/spec/parser/conditionals_spec.rb +9 -9
  34. data/spec/parser/errors_spec.rb +22 -43
  35. data/spec/parser/escapes_spec.rb +33 -44
  36. data/spec/parser/groups_spec.rb +98 -257
  37. data/spec/parser/keep_spec.rb +2 -15
  38. data/spec/parser/posix_classes_spec.rb +5 -24
  39. data/spec/parser/properties_spec.rb +42 -54
  40. data/spec/parser/quantifiers_spec.rb +41 -283
  41. data/spec/parser/refcalls_spec.rb +60 -185
  42. data/spec/parser/set/intersections_spec.rb +17 -17
  43. data/spec/parser/set/ranges_spec.rb +17 -17
  44. data/spec/parser/sets_spec.rb +5 -5
  45. data/spec/parser/types_spec.rb +11 -36
  46. data/spec/scanner/anchors_spec.rb +13 -28
  47. data/spec/scanner/conditionals_spec.rb +121 -173
  48. data/spec/scanner/errors_spec.rb +65 -87
  49. data/spec/scanner/escapes_spec.rb +49 -50
  50. data/spec/scanner/free_space_spec.rb +102 -165
  51. data/spec/scanner/groups_spec.rb +45 -64
  52. data/spec/scanner/keep_spec.rb +5 -28
  53. data/spec/scanner/literals_spec.rb +45 -81
  54. data/spec/scanner/meta_spec.rb +13 -33
  55. data/spec/scanner/properties_spec.rb +43 -286
  56. data/spec/scanner/quantifiers_spec.rb +13 -28
  57. data/spec/scanner/refcalls_spec.rb +32 -48
  58. data/spec/scanner/sets_spec.rb +88 -102
  59. data/spec/scanner/types_spec.rb +10 -25
  60. data/spec/spec_helper.rb +1 -0
  61. data/spec/support/shared_examples.rb +77 -0
  62. data/spec/syntax/syntax_spec.rb +4 -0
  63. data/spec/syntax/versions/1.8.6_spec.rb +12 -33
  64. data/spec/syntax/versions/1.9.1_spec.rb +5 -18
  65. data/spec/syntax/versions/1.9.3_spec.rb +4 -17
  66. data/spec/syntax/versions/2.0.0_spec.rb +8 -23
  67. data/spec/syntax/versions/2.2.0_spec.rb +4 -17
  68. data/spec/syntax/versions/aliases_spec.rb +25 -109
  69. metadata +14 -6
  70. data/spec/scanner/scripts_spec.rb +0 -49
  71. data/spec/scanner/unicode_blocks_spec.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 707834a32bc2295b448953730eabddabb11bafc68fdf3148174f7be61d8b1f30
4
- data.tar.gz: 72d199d28c342d6aae178a5876a7df6f59abcdf40c6ac4f05ea9dc40d16d9f3a
3
+ metadata.gz: 43db9cc4386341a5cf035787960682043390ae0d4c19c7e2a165a6e3a1f58a3e
4
+ data.tar.gz: c501318f87c285e73ae5374cc7accc9b1822d9c08ac4a6db7e95aa7a031d69bd
5
5
  SHA512:
6
- metadata.gz: 4c1402afedc1efb79f633ee93065598b64732519ba587ca3f682eb8bbb4aaa264e31dd916b95f9751f7c6e85e867efa260501b40e55409327efa5b769346a183
7
- data.tar.gz: 6335cbc411b08adb64bfca9646eebc3a5c39d4651a2495d34f87fca21927da3a363fc320159a3732cdd9e2d8732986190fcd6c9d523b7308531f91848951ccbd
6
+ metadata.gz: 85e8424ad11e4cb8d50d8900be3bd5fc79755a49561d5ae64e4d0913dccd0473254d2ad78e77a2695013b81dcc70c78c7209049b291d7cab5784c9cc4e6c8043
7
+ data.tar.gz: de283a627fc5caed42da0c01cab7f9680136c2438536d443c2c3a62d7f8fb1fda86d2a5f7daf2f3d5d3f111d5e23abf3beff55586d7560f76f23b03aa926bbd9
@@ -1,5 +1,19 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ### [1.5.1] - 2019-05-23 - [Janosch Müller](mailto:janosch84@gmail.com)
4
+
5
+ ### Fixed
6
+
7
+ - Fixed `#options` (and thus `#i?`, `#u?` etc.) not being set for some expressions:
8
+ * this affected posix classes as well as alternation, conditional, and intersection branches
9
+ * `#options` was already correct for all child expressions of such branches
10
+ * this only made an operational difference for posix classes as they respect encoding flags
11
+ - Fixed `#options` not respecting all negative options in weird cases like '(?u-m-x)'
12
+ - Fixed `Group#option_changes` not accounting for indirectly disabled (overridden) encoding flags
13
+ - Fixed `Scanner` allowing negative encoding options if there were no positive options, e.g. '(?-u)'
14
+ - Fixed `ScannerError` for some valid meta/control sequences such as '\\C-\\\\'
15
+ - Fixed `Expression#match` and `#=~` not working with a single argument
16
+
3
17
  ### [1.5.0] - 2019-05-14 - [Janosch Müller](mailto:janosch84@gmail.com)
4
18
 
5
19
  ### Added
@@ -97,47 +97,6 @@ module Regexp::Expression
97
97
  quantified? and quantifier.possessive?
98
98
  end
99
99
 
100
- def multiline?
101
- options[:m] == true
102
- end
103
- alias :m? :multiline?
104
-
105
- def case_insensitive?
106
- options[:i] == true
107
- end
108
- alias :i? :case_insensitive?
109
- alias :ignore_case? :case_insensitive?
110
-
111
- def free_spacing?
112
- options[:x] == true
113
- end
114
- alias :x? :free_spacing?
115
- alias :extended? :free_spacing?
116
-
117
- def default_classes?
118
- options[:d] == true
119
- end
120
- alias :d? :default_classes?
121
-
122
- def ascii_classes?
123
- options[:a] == true
124
- end
125
- alias :a? :ascii_classes?
126
-
127
- def unicode_classes?
128
- options[:u] == true
129
- end
130
- alias :u? :unicode_classes?
131
-
132
- def matches?(string)
133
- Regexp.new(to_s) =~ string ? true : false
134
- end
135
-
136
- def match(string, offset)
137
- Regexp.new(to_s).match(string, offset)
138
- end
139
- alias :=~ :match
140
-
141
100
  def attributes
142
101
  {
143
102
  type: type,
@@ -156,12 +115,14 @@ module Regexp::Expression
156
115
  end
157
116
 
158
117
  def self.parsed(exp)
118
+ warn('WARNING: Regexp::Expression::Base.parsed is buggy and '\
119
+ 'will be removed in 2.0.0. Use Regexp::Parser.parse instead.')
159
120
  case exp
160
121
  when String
161
122
  Regexp::Parser.parse(exp)
162
123
  when Regexp
163
- Regexp::Parser.parse(exp.source)
164
- when Regexp::Expression
124
+ Regexp::Parser.parse(exp.source) # <- causes loss of root options
125
+ when Regexp::Expression # <- never triggers
165
126
  exp
166
127
  else
167
128
  raise ArgumentError, 'Expression.parsed accepts a String, Regexp, or '\
@@ -194,7 +155,9 @@ require 'regexp_parser/expression/classes/set/intersection'
194
155
  require 'regexp_parser/expression/classes/set/range'
195
156
  require 'regexp_parser/expression/classes/type'
196
157
 
158
+ require 'regexp_parser/expression/methods/match'
197
159
  require 'regexp_parser/expression/methods/match_length'
160
+ require 'regexp_parser/expression/methods/options'
198
161
  require 'regexp_parser/expression/methods/strfregexp'
199
162
  require 'regexp_parser/expression/methods/tests'
200
163
  require 'regexp_parser/expression/methods/traverse'
@@ -26,9 +26,10 @@ module Regexp::Expression
26
26
  expressions.last << exp
27
27
  end
28
28
 
29
- def add_sequence
29
+ def add_sequence(active_opts = {})
30
30
  raise TooManyBranches.new if branches.length == 2
31
- Branch.add_to(self, { conditional_level: conditional_level + 1 })
31
+ params = { conditional_level: conditional_level + 1 }
32
+ Branch.add_to(self, params, active_opts)
32
33
  end
33
34
  alias :branch :add_sequence
34
35
 
@@ -60,10 +60,6 @@ module Regexp::Expression
60
60
  codepoint.chr('utf-8')
61
61
  end
62
62
 
63
- def codepoint
64
- raise NotImplementedError, 'implement in subclass'
65
- end
66
-
67
63
  private
68
64
 
69
65
  def control_sequence_to_s(control_sequence)
@@ -0,0 +1,13 @@
1
+ module Regexp::Expression
2
+ class Base
3
+ def match?(string)
4
+ !!match(string)
5
+ end
6
+ alias :matches? :match?
7
+
8
+ def match(string, offset = 0)
9
+ Regexp.new(to_s).match(string, offset)
10
+ end
11
+ alias :=~ :match
12
+ end
13
+ end
@@ -0,0 +1,35 @@
1
+ module Regexp::Expression
2
+ class Base
3
+ def multiline?
4
+ options[:m] == true
5
+ end
6
+ alias :m? :multiline?
7
+
8
+ def case_insensitive?
9
+ options[:i] == true
10
+ end
11
+ alias :i? :case_insensitive?
12
+ alias :ignore_case? :case_insensitive?
13
+
14
+ def free_spacing?
15
+ options[:x] == true
16
+ end
17
+ alias :x? :free_spacing?
18
+ alias :extended? :free_spacing?
19
+
20
+ def default_classes?
21
+ options[:d] == true
22
+ end
23
+ alias :d? :default_classes?
24
+
25
+ def ascii_classes?
26
+ options[:a] == true
27
+ end
28
+ alias :a? :ascii_classes?
29
+
30
+ def unicode_classes?
31
+ options[:u] == true
32
+ end
33
+ alias :u? :unicode_classes?
34
+ end
35
+ end
@@ -1,5 +1,4 @@
1
1
  module Regexp::Expression
2
-
3
2
  class Base
4
3
 
5
4
  # %l Level (depth) of the expression. Returns 'root' for the root
@@ -75,32 +75,23 @@ module Regexp::Expression
75
75
  def one_of?(scope, top = true)
76
76
  case scope
77
77
  when Array
78
- if scope.include?(:*)
79
- return (scope.include?(token) or scope.include?(:*))
80
- else
81
- return scope.include?(token)
82
- end
78
+ scope.include?(:*) || scope.include?(token)
83
79
 
84
80
  when Hash
85
81
  if scope.has_key?(:*)
86
82
  test_type = scope.has_key?(type) ? type : :*
87
- return one_of?(scope[test_type], false)
83
+ one_of?(scope[test_type], false)
88
84
  else
89
- return (scope.has_key?(type) and one_of?(scope[type], false))
85
+ scope.has_key?(type) && one_of?(scope[type], false)
90
86
  end
91
87
 
92
88
  when Symbol
93
- return true if scope == :*
94
-
95
- return is?(scope) unless top
96
- return type?(scope) if top
89
+ scope.equal?(:*) || (top ? type?(scope) : is?(scope))
97
90
 
98
91
  else
99
- raise "Array, Hash, or Symbol expected, #{scope.class.name} given"
92
+ raise ArgumentError,
93
+ "Array, Hash, or Symbol expected, #{scope.class.name} given"
100
94
  end
101
-
102
- false
103
95
  end
104
-
105
96
  end
106
97
  end
@@ -18,13 +18,14 @@ module Regexp::Expression
18
18
  end
19
19
 
20
20
  class << self
21
- def add_to(subexpression, options = {})
21
+ def add_to(subexpression, params = {}, active_opts = {})
22
22
  sequence = at_levels(
23
23
  subexpression.level,
24
24
  subexpression.set_level,
25
- options[:conditional_level] || subexpression.conditional_level
25
+ params[:conditional_level] || subexpression.conditional_level
26
26
  )
27
27
  sequence.nesting_level = subexpression.nesting_level + 1
28
+ sequence.options = active_opts
28
29
  subexpression.expressions << sequence
29
30
  sequence
30
31
  end
@@ -14,12 +14,8 @@ module Regexp::Expression
14
14
  expressions.last << exp
15
15
  end
16
16
 
17
- def add_sequence
18
- self.class::OPERAND.add_to(self)
19
- end
20
-
21
- def quantify(token, text, min = nil, max = nil, mode = :greedy)
22
- sequences.last.last.quantify(token, text, min, max, mode)
17
+ def add_sequence(active_opts = {})
18
+ self.class::OPERAND.add_to(self, {}, active_opts)
23
19
  end
24
20
 
25
21
  def to_s(format = :full)
@@ -39,10 +39,6 @@ class Regexp::Lexer
39
39
  current = Regexp::Token.new(type, token, text, ts + shift, te + shift,
40
40
  nesting, set_nesting, conditional_nesting)
41
41
 
42
- current = merge_literal(current) if type == :literal and
43
- set_nesting == 0 and
44
- last and last.type == :literal
45
-
46
42
  current = merge_condition(current) if type == :conditional and
47
43
  [:condition, :condition_close].include?(token)
48
44
 
@@ -122,23 +118,6 @@ class Regexp::Lexer
122
118
  self.shift = shift + 3 # one space less, but extra \, u, {, and }
123
119
  end
124
120
 
125
- # called by scan to merge two consecutive literals. this happens when tokens
126
- # get normalized (as in the case of posix/bre) and end up becoming literals.
127
- def merge_literal(current)
128
- last = tokens.pop
129
-
130
- Regexp::Token.new(
131
- :literal,
132
- :literal,
133
- last.text + current.text,
134
- last.ts,
135
- current.te,
136
- nesting,
137
- set_nesting,
138
- conditional_nesting,
139
- )
140
- end
141
-
142
121
  def merge_condition(current)
143
122
  last = tokens.pop
144
123
  Regexp::Token.new(:conditional, :condition, last.text + current.text,
@@ -215,9 +215,9 @@ class Regexp::Parser
215
215
  nest_conditional(Conditional::Expression.new(token, active_opts))
216
216
  when :condition
217
217
  conditional_nesting.last.condition = Conditional::Condition.new(token, active_opts)
218
- conditional_nesting.last.branch
218
+ conditional_nesting.last.add_sequence(active_opts)
219
219
  when :separator
220
- conditional_nesting.last.branch
220
+ conditional_nesting.last.add_sequence(active_opts)
221
221
  self.node = conditional_nesting.last.branches.last
222
222
  when :close
223
223
  conditional_nesting.pop
@@ -235,7 +235,7 @@ class Regexp::Parser
235
235
  end
236
236
 
237
237
  def posixclass(token)
238
- node << PosixClass.new(token)
238
+ node << PosixClass.new(token, active_opts)
239
239
  end
240
240
 
241
241
  include Regexp::Expression::UnicodeProperty
@@ -497,6 +497,9 @@ class Regexp::Parser
497
497
  end
498
498
  end
499
499
 
500
+ MOD_FLAGS = %w[i m x].map(&:to_sym)
501
+ ENC_FLAGS = %w[a d u].map(&:to_sym)
502
+
500
503
  def options_group(token)
501
504
  positive, negative = token.text.split('-', 2)
502
505
  negative ||= ''
@@ -505,23 +508,23 @@ class Regexp::Parser
505
508
  opt_changes = {}
506
509
  new_active_opts = active_opts.dup
507
510
 
508
- # Negative options have precedence. E.g. /(?i-i)a/ is case-sensitive.
509
- %w[i m x].each do |flag|
510
- if positive.include?(flag)
511
- opt_changes[flag.to_sym] = new_active_opts[flag.to_sym] = true
511
+ MOD_FLAGS.each do |flag|
512
+ if positive.include?(flag.to_s)
513
+ opt_changes[flag] = new_active_opts[flag] = true
512
514
  end
513
- if negative.include?(flag)
514
- opt_changes[flag.to_sym] = false
515
- new_active_opts.delete(flag.to_sym)
515
+ if negative.include?(flag.to_s)
516
+ opt_changes[flag] = false
517
+ new_active_opts.delete(flag)
516
518
  end
517
519
  end
518
520
 
519
- # Any encoding flag overrides all previous encoding flags. If there are
520
- # multiple encoding flags in an options string, the last one wins.
521
- # E.g. /(?dau)\w/ matches UTF8 chars but /(?dua)\w/ only ASCII chars.
522
- if (flag = positive.reverse[/[adu]/])
523
- %w[a d u].each { |key| new_active_opts.delete(key.to_sym) }
524
- opt_changes[flag.to_sym] = new_active_opts[flag.to_sym] = true
521
+ if (enc_flag = positive.reverse[/[adu]/])
522
+ enc_flag = enc_flag.to_sym
523
+ (ENC_FLAGS - [enc_flag]).each do |other|
524
+ opt_changes[other] = false if new_active_opts[other]
525
+ new_active_opts.delete(other)
526
+ end
527
+ opt_changes[enc_flag] = new_active_opts[enc_flag] = true
525
528
  end
526
529
 
527
530
  options_stack << new_active_opts
@@ -606,16 +609,14 @@ class Regexp::Parser
606
609
  end
607
610
 
608
611
  def sequence_operation(klass, token)
609
- if node.last.is_a?(klass)
610
- self.node = node.last
611
- elsif !node.is_a?(klass)
612
+ unless node.is_a?(klass)
612
613
  operator = klass.new(token, active_opts)
613
- sequence = operator.add_sequence
614
+ sequence = operator.add_sequence(active_opts)
614
615
  sequence.expressions = node.expressions
615
616
  node.expressions = []
616
617
  nest(operator)
617
618
  end
618
- node.add_sequence
619
+ node.add_sequence(active_opts)
619
620
  end
620
621
 
621
622
  def active_opts
@@ -2,7 +2,7 @@
2
2
 
3
3
  # line 1 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
4
4
 
5
- # line 710 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
5
+ # line 661 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
6
6
 
7
7
 
8
8
  # THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
@@ -82,7 +82,7 @@ class Regexp::Scanner
82
82
  input = input_object
83
83
  self.free_spacing = false
84
84
  end
85
-
85
+ self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
86
86
 
87
87
  data = input.unpack("c*") if input.is_a?(String)
88
88
  eof = data.length
@@ -90,18 +90,12 @@ class Regexp::Scanner
90
90
  self.tokens = []
91
91
  self.block = block_given? ? block : nil
92
92
 
93
- self.in_group = false
93
+ self.set_depth = 0
94
94
  self.group_depth = 0
95
- self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
96
-
97
- in_set = false
98
- set_depth = 0
99
- in_conditional = false
100
- conditional_depth = 0
101
- conditional_stack = []
95
+ self.conditional_stack = []
102
96
 
103
97
 
104
- # line 104 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
98
+ # line 98 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
105
99
  class << self
106
100
  attr_accessor :_re_scanner_trans_keys
107
101
  private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
@@ -110,60 +104,61 @@ self._re_scanner_trans_keys = [
110
104
  0, 0, -128, -65, -128, -65,
111
105
  -128, -65, -128, -65, -128,
112
106
  -65, -128, -65, 10, 10,
113
- 33, 126, 41, 41, 39, 122,
114
- 33, 122, 48, 122, 39,
115
- 60, 39, 122, 48, 57,
116
- 39, 57, 48, 57, 39, 57,
117
- 39, 122, 43, 122, 48,
118
- 57, 48, 62, 48, 57,
119
- 43, 62, 43, 122, 44, 125,
120
- 48, 125, 123, 123, 9,
121
- 122, 9, 125, 9, 122,
122
- -128, -65, -128, -65, 38, 38,
123
- 45, 122, 45, 122, 93,
124
- 93, 94, 120, 97, 120,
125
- 108, 115, 110, 112, 117, 117,
126
- 109, 109, 58, 58, 93,
127
- 93, 104, 104, 97, 97,
128
- 99, 99, 105, 105, 105, 105,
129
- 108, 108, 97, 97, 110,
130
- 110, 107, 107, 110, 110,
131
- 116, 116, 114, 114, 108, 108,
132
- 105, 105, 103, 103, 105,
133
- 105, 116, 116, 114, 114,
134
- 97, 97, 112, 112, 104, 104,
135
- 111, 111, 119, 119, 101,
136
- 101, 114, 114, 114, 117,
137
- 105, 105, 110, 110, 110, 110,
138
- 99, 99, 112, 112, 97,
139
- 97, 99, 99, 101, 101,
140
- 112, 112, 112, 112, 111, 111,
141
- 114, 114, 100, 100, 100,
142
- 100, 65, 122, 61, 61,
143
- 93, 93, 45, 45, 77, 77,
144
- 45, 45, 45, 45, 67,
145
- 99, 45, 45, 77, 77,
146
- 45, 45, 48, 123, 48, 102,
147
- 48, 102, 48, 102, 48,
148
- 102, 9, 125, 9, 125,
149
- 9, 125, 9, 125, 9, 125,
150
- 9, 125, 48, 123, 41,
151
- 41, 39, 122, 41, 57,
152
- 48, 122, -62, 127, -62, -33,
153
- -32, -17, -16, -12, 1,
154
- 127, 1, 127, 9, 32,
155
- 33, 126, 10, 126, 63, 63,
156
- 43, 63, 43, 63, 43,
157
- 63, 65, 122, 43, 63,
158
- 68, 119, 80, 112, -62, 125,
159
- -128, -65, -128, -65, -128,
160
- -65, 38, 38, 38, 93,
161
- 46, 61, 48, 122, 36, 125,
162
- 48, 55, 48, 55, 92,
163
- 92, 92, 92, 92, 92,
164
- 48, 102, 39, 60, 39, 122,
165
- 49, 57, 41, 57, 48,
166
- 122, 0
107
+ 41, 41, 39, 122, 33, 122,
108
+ 48, 122, 39, 60, 39,
109
+ 122, 48, 57, 39, 57,
110
+ 48, 57, 39, 57, 39, 122,
111
+ 43, 122, 48, 57, 48,
112
+ 62, 48, 57, 43, 62,
113
+ 43, 122, 44, 125, 48, 125,
114
+ 123, 123, 9, 122, 9,
115
+ 125, 9, 122, -128, -65,
116
+ -128, -65, 38, 38, 45, 122,
117
+ 45, 122, 93, 93, 94,
118
+ 120, 97, 120, 108, 115,
119
+ 110, 112, 117, 117, 109, 109,
120
+ 58, 58, 93, 93, 104,
121
+ 104, 97, 97, 99, 99,
122
+ 105, 105, 105, 105, 108, 108,
123
+ 97, 97, 110, 110, 107,
124
+ 107, 110, 110, 116, 116,
125
+ 114, 114, 108, 108, 105, 105,
126
+ 103, 103, 105, 105, 116,
127
+ 116, 114, 114, 97, 97,
128
+ 112, 112, 104, 104, 111, 111,
129
+ 119, 119, 101, 101, 114,
130
+ 114, 114, 117, 105, 105,
131
+ 110, 110, 110, 110, 99, 99,
132
+ 112, 112, 97, 97, 99,
133
+ 99, 101, 101, 112, 112,
134
+ 112, 112, 111, 111, 114, 114,
135
+ 100, 100, 100, 100, 65,
136
+ 122, 61, 61, 93, 93,
137
+ 45, 45, 92, 92, 92, 92,
138
+ 45, 45, 92, 92, 92,
139
+ 92, 48, 123, 48, 102,
140
+ 48, 102, 48, 102, 48, 102,
141
+ 9, 125, 9, 125, 9,
142
+ 125, 9, 125, 9, 125,
143
+ 9, 125, 48, 123, 41, 41,
144
+ 39, 122, 41, 57, 48,
145
+ 122, -62, 127, -62, -33,
146
+ -32, -17, -16, -12, 1, 127,
147
+ 1, 127, 9, 32, 33,
148
+ 126, 10, 126, 63, 63,
149
+ 33, 126, 33, 126, 43, 63,
150
+ 43, 63, 43, 63, 65,
151
+ 122, 43, 63, 68, 119,
152
+ 80, 112, -62, 125, -128, -65,
153
+ -128, -65, -128, -65, 38,
154
+ 38, 38, 93, 46, 61,
155
+ 48, 122, 36, 125, 48, 55,
156
+ 48, 55, 77, 77, 45,
157
+ 45, 0, 0, 67, 99,
158
+ 45, 45, 0, 0, 92, 92,
159
+ 48, 102, 39, 60, 39,
160
+ 122, 49, 57, 41, 57,
161
+ 48, 122, 0
167
162
  ]
168
163
 
169
164
  class << self
@@ -172,24 +167,25 @@ class << self
172
167
  end
173
168
  self._re_scanner_key_spans = [
174
169
  0, 64, 64, 64, 64, 64, 64, 1,
175
- 94, 1, 84, 90, 75, 22, 84, 10,
176
- 19, 10, 19, 84, 80, 10, 15, 10,
177
- 20, 80, 82, 78, 1, 114, 117, 114,
178
- 64, 64, 1, 78, 78, 1, 27, 24,
179
- 8, 3, 1, 1, 1, 1, 1, 1,
170
+ 1, 84, 90, 75, 22, 84, 10, 19,
171
+ 10, 19, 84, 80, 10, 15, 10, 20,
172
+ 80, 82, 78, 1, 114, 117, 114, 64,
173
+ 64, 1, 78, 78, 1, 27, 24, 8,
174
+ 3, 1, 1, 1, 1, 1, 1, 1,
180
175
  1, 1, 1, 1, 1, 1, 1, 1,
181
176
  1, 1, 1, 1, 1, 1, 1, 1,
182
- 1, 1, 1, 1, 1, 1, 1, 4,
177
+ 1, 1, 1, 1, 1, 1, 4, 1,
183
178
  1, 1, 1, 1, 1, 1, 1, 1,
184
- 1, 1, 1, 1, 1, 1, 58, 1,
185
- 1, 1, 1, 1, 1, 33, 1, 1,
186
- 1, 76, 55, 55, 55, 55, 117, 117,
187
- 117, 117, 117, 117, 76, 1, 84, 17,
188
- 75, 190, 30, 16, 5, 127, 127, 24,
189
- 94, 117, 1, 21, 21, 21, 58, 21,
190
- 52, 33, 188, 64, 64, 64, 1, 56,
191
- 16, 75, 90, 8, 8, 1, 1, 1,
192
- 55, 22, 84, 9, 17, 75
179
+ 1, 1, 1, 1, 1, 58, 1, 1,
180
+ 1, 1, 1, 1, 1, 1, 76, 55,
181
+ 55, 55, 55, 117, 117, 117, 117, 117,
182
+ 117, 76, 1, 84, 17, 75, 190, 30,
183
+ 16, 5, 127, 127, 24, 94, 117, 1,
184
+ 94, 94, 21, 21, 21, 58, 21, 52,
185
+ 33, 188, 64, 64, 64, 1, 56, 16,
186
+ 75, 90, 8, 8, 1, 1, 0, 33,
187
+ 1, 0, 1, 55, 22, 84, 9, 17,
188
+ 75
193
189
  ]
194
190
 
195
191
  class << self
@@ -198,24 +194,25 @@ class << self
198
194
  end
199
195
  self._re_scanner_index_offsets = [
200
196
  0, 0, 65, 130, 195, 260, 325, 390,
201
- 392, 487, 489, 574, 665, 741, 764, 849,
202
- 860, 880, 891, 911, 996, 1077, 1088, 1104,
203
- 1115, 1136, 1217, 1300, 1379, 1381, 1496, 1614,
204
- 1729, 1794, 1859, 1861, 1940, 2019, 2021, 2049,
205
- 2074, 2083, 2087, 2089, 2091, 2093, 2095, 2097,
206
- 2099, 2101, 2103, 2105, 2107, 2109, 2111, 2113,
207
- 2115, 2117, 2119, 2121, 2123, 2125, 2127, 2129,
208
- 2131, 2133, 2135, 2137, 2139, 2141, 2143, 2145,
209
- 2150, 2152, 2154, 2156, 2158, 2160, 2162, 2164,
210
- 2166, 2168, 2170, 2172, 2174, 2176, 2178, 2237,
211
- 2239, 2241, 2243, 2245, 2247, 2249, 2283, 2285,
212
- 2287, 2289, 2366, 2422, 2478, 2534, 2590, 2708,
213
- 2826, 2944, 3062, 3180, 3298, 3375, 3377, 3462,
214
- 3480, 3556, 3747, 3778, 3795, 3801, 3929, 4057,
215
- 4082, 4177, 4295, 4297, 4319, 4341, 4363, 4422,
216
- 4444, 4497, 4531, 4720, 4785, 4850, 4915, 4917,
217
- 4974, 4991, 5067, 5158, 5167, 5176, 5178, 5180,
218
- 5182, 5238, 5261, 5346, 5356, 5374
197
+ 392, 394, 479, 570, 646, 669, 754, 765,
198
+ 785, 796, 816, 901, 982, 993, 1009, 1020,
199
+ 1041, 1122, 1205, 1284, 1286, 1401, 1519, 1634,
200
+ 1699, 1764, 1766, 1845, 1924, 1926, 1954, 1979,
201
+ 1988, 1992, 1994, 1996, 1998, 2000, 2002, 2004,
202
+ 2006, 2008, 2010, 2012, 2014, 2016, 2018, 2020,
203
+ 2022, 2024, 2026, 2028, 2030, 2032, 2034, 2036,
204
+ 2038, 2040, 2042, 2044, 2046, 2048, 2050, 2055,
205
+ 2057, 2059, 2061, 2063, 2065, 2067, 2069, 2071,
206
+ 2073, 2075, 2077, 2079, 2081, 2083, 2142, 2144,
207
+ 2146, 2148, 2150, 2152, 2154, 2156, 2158, 2235,
208
+ 2291, 2347, 2403, 2459, 2577, 2695, 2813, 2931,
209
+ 3049, 3167, 3244, 3246, 3331, 3349, 3425, 3616,
210
+ 3647, 3664, 3670, 3798, 3926, 3951, 4046, 4164,
211
+ 4166, 4261, 4356, 4378, 4400, 4422, 4481, 4503,
212
+ 4556, 4590, 4779, 4844, 4909, 4974, 4976, 5033,
213
+ 5050, 5126, 5217, 5226, 5235, 5237, 5239, 5240,
214
+ 5274, 5276, 5277, 5279, 5335, 5358, 5443, 5453,
215
+ 5471
219
216
  ]
220
217
 
221
218
  class << self
@@ -272,437 +269,482 @@ self._re_scanner_indicies = [
272
269
  6, 6, 6, 6, 6, 6, 6, 6,
273
270
  6, 6, 6, 6, 6, 6, 6, 6,
274
271
  6, 6, 6, 6, 6, 0, 9, 8,
275
- 11, 10, 12, 10, 10, 10, 13, 14,
276
- 10, 10, 10, 10, 15, 10, 10, 10,
277
- 10, 10, 10, 10, 10, 10, 10, 10,
278
- 10, 16, 10, 17, 11, 16, 10, 10,
279
- 10, 10, 10, 10, 10, 10, 10, 10,
280
- 10, 10, 10, 10, 10, 10, 10, 10,
272
+ 12, 11, 13, 10, 10, 10, 10, 10,
273
+ 10, 10, 10, 14, 14, 14, 14, 14,
274
+ 14, 14, 14, 14, 14, 10, 10, 10,
275
+ 10, 10, 10, 10, 14, 14, 14, 14,
276
+ 14, 14, 14, 14, 14, 14, 14, 14,
277
+ 14, 14, 14, 14, 14, 14, 14, 14,
278
+ 14, 14, 14, 14, 14, 14, 10, 10,
279
+ 10, 10, 14, 10, 14, 14, 14, 14,
280
+ 14, 14, 14, 14, 14, 14, 14, 14,
281
+ 14, 14, 14, 14, 14, 14, 14, 14,
282
+ 14, 14, 14, 14, 14, 14, 10, 15,
281
283
  10, 10, 10, 10, 10, 10, 10, 10,
282
- 10, 10, 10, 10, 10, 10, 10, 10,
283
- 15, 10, 10, 15, 10, 10, 10, 10,
284
- 15, 10, 10, 10, 15, 10, 10, 10,
285
- 10, 10, 10, 10, 15, 10, 10, 15,
286
- 10, 10, 10, 10, 10, 16, 10, 18,
287
- 12, 16, 10, 10, 10, 10, 10, 10,
288
- 10, 10, 13, 13, 13, 13, 13, 13,
289
- 13, 13, 13, 13, 10, 10, 10, 10,
290
- 10, 10, 10, 13, 13, 13, 13, 13,
291
- 13, 13, 13, 13, 13, 13, 13, 13,
292
- 13, 13, 13, 13, 13, 13, 13, 13,
293
- 13, 13, 13, 13, 13, 10, 10, 10,
294
- 10, 13, 10, 13, 13, 13, 13, 13,
295
- 13, 13, 13, 13, 13, 13, 13, 13,
296
- 13, 13, 13, 13, 13, 13, 13, 13,
297
- 13, 13, 13, 13, 13, 10, 11, 10,
298
- 10, 10, 10, 10, 10, 10, 10, 10,
299
- 10, 10, 10, 10, 10, 19, 19, 19,
300
- 19, 19, 19, 19, 19, 19, 19, 10,
301
- 10, 10, 11, 16, 10, 10, 19, 19,
302
- 19, 19, 19, 19, 19, 19, 19, 19,
303
- 19, 19, 19, 19, 19, 19, 19, 19,
304
- 19, 19, 19, 19, 19, 19, 19, 19,
305
- 10, 10, 10, 10, 19, 10, 19, 19,
306
- 19, 19, 19, 19, 19, 19, 19, 19,
307
- 19, 19, 19, 19, 19, 19, 19, 19,
308
- 19, 19, 19, 19, 19, 19, 19, 19,
309
- 10, 19, 19, 19, 19, 19, 19, 19,
310
- 19, 19, 19, 10, 10, 10, 10, 16,
311
- 10, 10, 19, 19, 19, 19, 19, 19,
312
- 19, 19, 19, 19, 19, 19, 19, 19,
313
- 19, 19, 19, 19, 19, 19, 19, 19,
314
- 19, 19, 19, 19, 10, 10, 10, 10,
315
- 19, 10, 19, 19, 19, 19, 19, 19,
316
- 19, 19, 19, 19, 19, 19, 19, 19,
317
- 19, 19, 19, 19, 19, 19, 19, 19,
318
- 19, 19, 19, 19, 10, 21, 20, 20,
319
- 20, 20, 20, 20, 20, 20, 20, 20,
320
- 20, 20, 20, 20, 20, 20, 20, 20,
321
- 20, 20, 22, 20, 23, 20, 20, 20,
322
- 24, 20, 25, 20, 20, 26, 26, 26,
323
- 26, 26, 26, 26, 26, 26, 26, 20,
324
- 20, 20, 20, 20, 20, 20, 26, 26,
325
- 26, 26, 26, 26, 26, 26, 26, 26,
326
- 26, 26, 26, 26, 26, 26, 26, 26,
327
- 26, 26, 26, 26, 26, 26, 26, 26,
328
- 20, 20, 20, 20, 26, 20, 26, 26,
329
- 26, 26, 26, 26, 26, 26, 26, 26,
330
- 26, 26, 26, 26, 26, 26, 26, 26,
331
- 26, 26, 26, 26, 26, 26, 26, 26,
332
- 20, 27, 27, 27, 27, 27, 27, 27,
333
- 27, 27, 27, 20, 23, 20, 20, 20,
334
- 20, 20, 20, 20, 20, 27, 27, 27,
335
- 27, 27, 27, 27, 27, 27, 27, 20,
336
- 27, 28, 28, 28, 28, 28, 28, 28,
337
- 28, 28, 20, 23, 20, 20, 20, 24,
338
- 20, 24, 20, 20, 28, 28, 28, 28,
339
- 28, 28, 28, 28, 28, 28, 20, 23,
340
- 20, 20, 20, 24, 20, 24, 20, 20,
341
- 26, 26, 26, 26, 26, 26, 26, 26,
342
- 26, 26, 20, 20, 20, 20, 20, 20,
343
- 20, 26, 26, 26, 26, 26, 26, 26,
344
- 26, 26, 26, 26, 26, 26, 26, 26,
345
- 26, 26, 26, 26, 26, 26, 26, 26,
346
- 26, 26, 26, 20, 20, 20, 20, 26,
347
- 20, 26, 26, 26, 26, 26, 26, 26,
348
- 26, 26, 26, 26, 26, 26, 26, 26,
349
- 26, 26, 26, 26, 26, 26, 26, 26,
350
- 26, 26, 26, 20, 29, 20, 30, 20,
351
- 20, 31, 31, 31, 31, 31, 31, 31,
352
- 31, 31, 31, 20, 20, 20, 20, 23,
353
- 20, 20, 31, 31, 31, 31, 31, 31,
284
+ 10, 10, 10, 10, 10, 10, 16, 16,
285
+ 16, 16, 16, 16, 16, 16, 16, 16,
286
+ 10, 10, 10, 15, 13, 10, 10, 16,
287
+ 16, 16, 16, 16, 16, 16, 16, 16,
288
+ 16, 16, 16, 16, 16, 16, 16, 16,
289
+ 16, 16, 16, 16, 16, 16, 16, 16,
290
+ 16, 10, 10, 10, 10, 16, 10, 16,
291
+ 16, 16, 16, 16, 16, 16, 16, 16,
292
+ 16, 16, 16, 16, 16, 16, 16, 16,
293
+ 16, 16, 16, 16, 16, 16, 16, 16,
294
+ 16, 10, 16, 16, 16, 16, 16, 16,
295
+ 16, 16, 16, 16, 10, 10, 10, 10,
296
+ 13, 10, 10, 16, 16, 16, 16, 16,
297
+ 16, 16, 16, 16, 16, 16, 16, 16,
298
+ 16, 16, 16, 16, 16, 16, 16, 16,
299
+ 16, 16, 16, 16, 16, 10, 10, 10,
300
+ 10, 16, 10, 16, 16, 16, 16, 16,
301
+ 16, 16, 16, 16, 16, 16, 16, 16,
302
+ 16, 16, 16, 16, 16, 16, 16, 16,
303
+ 16, 16, 16, 16, 16, 10, 18, 17,
304
+ 17, 17, 17, 17, 17, 17, 17, 17,
305
+ 17, 17, 17, 17, 17, 17, 17, 17,
306
+ 17, 17, 17, 19, 17, 20, 17, 17,
307
+ 17, 21, 17, 22, 17, 17, 23, 23,
308
+ 23, 23, 23, 23, 23, 23, 23, 23,
309
+ 17, 17, 17, 17, 17, 17, 17, 23,
310
+ 23, 23, 23, 23, 23, 23, 23, 23,
311
+ 23, 23, 23, 23, 23, 23, 23, 23,
312
+ 23, 23, 23, 23, 23, 23, 23, 23,
313
+ 23, 17, 17, 17, 17, 23, 17, 23,
314
+ 23, 23, 23, 23, 23, 23, 23, 23,
315
+ 23, 23, 23, 23, 23, 23, 23, 23,
316
+ 23, 23, 23, 23, 23, 23, 23, 23,
317
+ 23, 17, 24, 24, 24, 24, 24, 24,
318
+ 24, 24, 24, 24, 17, 20, 17, 17,
319
+ 17, 17, 17, 17, 17, 17, 24, 24,
320
+ 24, 24, 24, 24, 24, 24, 24, 24,
321
+ 17, 24, 25, 25, 25, 25, 25, 25,
322
+ 25, 25, 25, 17, 20, 17, 17, 17,
323
+ 21, 17, 21, 17, 17, 25, 25, 25,
324
+ 25, 25, 25, 25, 25, 25, 25, 17,
325
+ 20, 17, 17, 17, 21, 17, 21, 17,
326
+ 17, 23, 23, 23, 23, 23, 23, 23,
327
+ 23, 23, 23, 17, 17, 17, 17, 17,
328
+ 17, 17, 23, 23, 23, 23, 23, 23,
329
+ 23, 23, 23, 23, 23, 23, 23, 23,
330
+ 23, 23, 23, 23, 23, 23, 23, 23,
331
+ 23, 23, 23, 23, 17, 17, 17, 17,
332
+ 23, 17, 23, 23, 23, 23, 23, 23,
333
+ 23, 23, 23, 23, 23, 23, 23, 23,
334
+ 23, 23, 23, 23, 23, 23, 23, 23,
335
+ 23, 23, 23, 23, 17, 26, 17, 27,
336
+ 17, 17, 28, 28, 28, 28, 28, 28,
337
+ 28, 28, 28, 28, 17, 17, 17, 17,
338
+ 20, 17, 17, 28, 28, 28, 28, 28,
339
+ 28, 28, 28, 28, 28, 28, 28, 28,
340
+ 28, 28, 28, 28, 28, 28, 28, 28,
341
+ 28, 28, 28, 28, 28, 17, 17, 17,
342
+ 17, 28, 17, 28, 28, 28, 28, 28,
343
+ 28, 28, 28, 28, 28, 28, 28, 28,
344
+ 28, 28, 28, 28, 28, 28, 28, 28,
345
+ 28, 28, 28, 28, 28, 17, 29, 29,
346
+ 29, 29, 29, 29, 29, 29, 29, 29,
347
+ 17, 29, 29, 29, 29, 29, 29, 29,
348
+ 29, 29, 29, 17, 17, 17, 17, 20,
349
+ 17, 29, 30, 30, 30, 30, 30, 30,
350
+ 30, 30, 30, 17, 26, 17, 26, 17,
351
+ 17, 30, 30, 30, 30, 30, 30, 30,
352
+ 30, 30, 30, 17, 17, 17, 17, 20,
353
+ 17, 26, 17, 26, 17, 17, 28, 28,
354
+ 28, 28, 28, 28, 28, 28, 28, 28,
355
+ 17, 17, 17, 17, 20, 17, 17, 28,
356
+ 28, 28, 28, 28, 28, 28, 28, 28,
357
+ 28, 28, 28, 28, 28, 28, 28, 28,
358
+ 28, 28, 28, 28, 28, 28, 28, 28,
359
+ 28, 17, 17, 17, 17, 28, 17, 28,
360
+ 28, 28, 28, 28, 28, 28, 28, 28,
361
+ 28, 28, 28, 28, 28, 28, 28, 28,
362
+ 28, 28, 28, 28, 28, 28, 28, 28,
363
+ 28, 17, 32, 31, 31, 31, 33, 33,
364
+ 33, 33, 33, 33, 33, 33, 33, 33,
354
365
  31, 31, 31, 31, 31, 31, 31, 31,
355
366
  31, 31, 31, 31, 31, 31, 31, 31,
356
- 31, 31, 31, 31, 20, 20, 20, 20,
357
- 31, 20, 31, 31, 31, 31, 31, 31,
358
367
  31, 31, 31, 31, 31, 31, 31, 31,
359
368
  31, 31, 31, 31, 31, 31, 31, 31,
360
- 31, 31, 31, 31, 20, 32, 32, 32,
361
- 32, 32, 32, 32, 32, 32, 32, 20,
362
- 32, 32, 32, 32, 32, 32, 32, 32,
363
- 32, 32, 20, 20, 20, 20, 23, 20,
364
- 32, 33, 33, 33, 33, 33, 33, 33,
365
- 33, 33, 20, 29, 20, 29, 20, 20,
366
- 33, 33, 33, 33, 33, 33, 33, 33,
367
- 33, 33, 20, 20, 20, 20, 23, 20,
368
- 29, 20, 29, 20, 20, 31, 31, 31,
369
- 31, 31, 31, 31, 31, 31, 31, 20,
370
- 20, 20, 20, 23, 20, 20, 31, 31,
371
369
  31, 31, 31, 31, 31, 31, 31, 31,
372
370
  31, 31, 31, 31, 31, 31, 31, 31,
373
371
  31, 31, 31, 31, 31, 31, 31, 31,
374
- 20, 20, 20, 20, 31, 20, 31, 31,
375
372
  31, 31, 31, 31, 31, 31, 31, 31,
373
+ 31, 31, 31, 34, 31, 32, 32, 32,
374
+ 32, 32, 32, 32, 32, 32, 32, 31,
376
375
  31, 31, 31, 31, 31, 31, 31, 31,
377
376
  31, 31, 31, 31, 31, 31, 31, 31,
378
- 20, 35, 34, 34, 34, 36, 36, 36,
379
- 36, 36, 36, 36, 36, 36, 36, 34,
380
- 34, 34, 34, 34, 34, 34, 34, 34,
381
- 34, 34, 34, 34, 34, 34, 34, 34,
382
- 34, 34, 34, 34, 34, 34, 34, 34,
383
- 34, 34, 34, 34, 34, 34, 34, 34,
384
- 34, 34, 34, 34, 34, 34, 34, 34,
385
- 34, 34, 34, 34, 34, 34, 34, 34,
386
- 34, 34, 34, 34, 34, 34, 34, 34,
387
- 34, 34, 34, 34, 34, 34, 34, 34,
388
- 34, 34, 37, 34, 35, 35, 35, 35,
389
- 35, 35, 35, 35, 35, 35, 34, 34,
390
- 34, 34, 34, 34, 34, 34, 34, 34,
391
- 34, 34, 34, 34, 34, 34, 34, 34,
392
- 34, 34, 34, 34, 34, 34, 34, 34,
393
- 34, 34, 34, 34, 34, 34, 34, 34,
394
- 34, 34, 34, 34, 34, 34, 34, 34,
395
- 34, 34, 34, 34, 34, 34, 34, 34,
396
- 34, 34, 34, 34, 34, 34, 34, 34,
397
- 34, 34, 34, 34, 34, 34, 34, 34,
398
- 34, 37, 34, 38, 39, 40, 40, 40,
399
- 40, 40, 39, 39, 39, 39, 39, 39,
400
- 39, 39, 39, 39, 39, 39, 39, 39,
401
- 39, 39, 39, 39, 40, 39, 39, 39,
402
- 39, 39, 39, 39, 39, 39, 39, 39,
403
- 39, 40, 40, 39, 40, 40, 40, 40,
404
- 40, 40, 40, 40, 40, 40, 39, 39,
405
- 39, 40, 39, 39, 39, 40, 40, 40,
406
- 40, 40, 40, 40, 40, 40, 40, 40,
407
- 40, 40, 40, 40, 40, 40, 40, 40,
408
- 40, 40, 40, 40, 40, 40, 40, 39,
409
- 39, 39, 41, 40, 39, 40, 40, 40,
410
- 40, 40, 40, 40, 40, 40, 40, 40,
411
- 40, 40, 40, 40, 40, 40, 40, 40,
412
- 40, 40, 40, 40, 40, 40, 40, 39,
413
- 40, 40, 40, 40, 40, 39, 39, 39,
414
- 39, 39, 39, 39, 39, 39, 39, 39,
415
- 39, 39, 39, 39, 39, 39, 39, 40,
416
- 39, 39, 39, 39, 39, 39, 39, 39,
417
- 39, 39, 39, 39, 40, 40, 39, 40,
418
- 40, 40, 40, 40, 40, 40, 40, 40,
419
- 40, 39, 39, 39, 40, 39, 39, 39,
420
- 40, 40, 40, 40, 40, 40, 40, 40,
421
- 40, 40, 40, 40, 40, 40, 40, 40,
422
- 40, 40, 40, 40, 40, 40, 40, 40,
423
- 40, 40, 39, 39, 39, 39, 40, 39,
424
- 40, 40, 40, 40, 40, 40, 40, 40,
425
- 40, 40, 40, 40, 40, 40, 40, 40,
426
- 40, 40, 40, 40, 40, 40, 40, 40,
427
- 40, 40, 39, 39, 42, 39, 40, 40,
428
- 40, 40, 40, 39, 39, 39, 39, 39,
429
- 39, 39, 39, 39, 39, 39, 39, 39,
430
- 39, 39, 39, 39, 39, 40, 39, 39,
431
- 39, 39, 39, 39, 39, 39, 39, 39,
432
- 39, 39, 40, 40, 39, 40, 40, 40,
433
- 40, 40, 40, 40, 40, 40, 40, 39,
434
- 39, 39, 40, 39, 39, 39, 40, 40,
435
- 40, 40, 40, 40, 40, 40, 40, 40,
436
- 40, 40, 40, 40, 40, 40, 40, 40,
437
- 40, 40, 40, 40, 40, 40, 40, 40,
438
- 39, 39, 39, 39, 40, 39, 40, 40,
439
- 40, 40, 40, 40, 40, 40, 40, 40,
440
- 40, 40, 40, 40, 40, 40, 40, 40,
441
- 40, 40, 40, 40, 40, 40, 40, 40,
442
- 39, 44, 44, 44, 44, 44, 44, 44,
443
- 44, 44, 44, 44, 44, 44, 44, 44,
444
- 44, 44, 44, 44, 44, 44, 44, 44,
445
- 44, 44, 44, 44, 44, 44, 44, 44,
446
- 44, 44, 44, 44, 44, 44, 44, 44,
447
- 44, 44, 44, 44, 44, 44, 44, 44,
448
- 44, 44, 44, 44, 44, 44, 44, 44,
449
- 44, 44, 44, 44, 44, 44, 44, 44,
450
- 44, 43, 45, 45, 45, 45, 45, 45,
451
- 45, 45, 45, 45, 45, 45, 45, 45,
452
- 45, 45, 45, 45, 45, 45, 45, 45,
453
- 45, 45, 45, 45, 45, 45, 45, 45,
454
- 45, 45, 45, 45, 45, 45, 45, 45,
455
- 45, 45, 45, 45, 45, 45, 45, 45,
456
- 45, 45, 45, 45, 45, 45, 45, 45,
457
- 45, 45, 45, 45, 45, 45, 45, 45,
458
- 45, 45, 43, 47, 46, 50, 49, 49,
459
- 49, 49, 49, 49, 49, 49, 49, 49,
460
- 49, 49, 49, 49, 49, 49, 49, 49,
461
- 49, 50, 50, 50, 50, 50, 50, 50,
462
- 50, 50, 50, 50, 50, 50, 50, 50,
463
- 50, 50, 50, 50, 50, 50, 50, 50,
464
- 50, 50, 50, 49, 49, 49, 49, 49,
465
- 49, 50, 50, 50, 50, 50, 50, 50,
466
- 50, 50, 50, 50, 50, 50, 50, 50,
467
- 50, 50, 50, 50, 50, 50, 50, 50,
468
- 50, 50, 50, 49, 50, 51, 49, 49,
469
- 49, 49, 49, 49, 49, 49, 49, 49,
470
- 49, 49, 49, 49, 49, 49, 49, 49,
471
- 50, 50, 50, 50, 50, 50, 50, 50,
472
- 50, 50, 50, 50, 50, 50, 50, 50,
473
- 50, 50, 50, 50, 50, 50, 50, 50,
474
- 50, 50, 49, 49, 49, 49, 49, 49,
475
- 50, 50, 50, 50, 50, 50, 50, 50,
476
- 50, 50, 50, 50, 50, 50, 50, 50,
477
- 50, 50, 50, 50, 50, 50, 50, 50,
478
- 50, 50, 49, 52, 49, 53, 49, 49,
479
- 54, 55, 56, 57, 49, 49, 58, 49,
480
- 49, 49, 49, 59, 49, 49, 49, 60,
481
- 49, 49, 61, 49, 62, 49, 63, 64,
482
- 49, 54, 55, 56, 57, 49, 49, 58,
483
- 49, 49, 49, 49, 59, 49, 49, 49,
484
- 60, 49, 49, 61, 49, 62, 49, 63,
485
- 64, 49, 65, 49, 49, 49, 49, 49,
486
- 49, 66, 49, 67, 49, 68, 49, 69,
487
- 49, 70, 49, 71, 49, 72, 49, 73,
488
- 49, 70, 49, 74, 49, 75, 49, 70,
489
- 49, 76, 49, 77, 49, 78, 49, 70,
490
- 49, 79, 49, 80, 49, 81, 49, 70,
491
- 49, 82, 49, 83, 49, 84, 49, 70,
492
- 49, 85, 49, 86, 49, 87, 49, 70,
493
- 49, 88, 49, 89, 49, 90, 49, 70,
494
- 49, 91, 49, 49, 92, 49, 93, 49,
495
- 84, 49, 94, 49, 84, 49, 95, 49,
496
- 96, 49, 97, 49, 70, 49, 98, 49,
497
- 89, 49, 99, 49, 100, 49, 70, 49,
498
- 57, 49, 101, 101, 101, 101, 101, 101,
499
- 101, 101, 101, 101, 101, 101, 101, 101,
500
- 101, 101, 101, 101, 101, 101, 101, 101,
501
- 101, 101, 101, 101, 49, 49, 49, 49,
502
- 49, 49, 101, 101, 101, 101, 101, 101,
503
- 101, 101, 101, 101, 101, 101, 101, 101,
504
- 101, 101, 101, 101, 101, 101, 101, 101,
505
- 101, 101, 101, 101, 49, 102, 49, 103,
506
- 49, 104, 39, 107, 106, 108, 106, 109,
507
- 39, 112, 111, 111, 111, 111, 111, 111,
508
- 111, 111, 111, 111, 111, 111, 111, 111,
509
- 111, 111, 111, 111, 111, 111, 111, 111,
377
+ 31, 31, 31, 31, 31, 31, 31, 31,
378
+ 31, 31, 31, 31, 31, 31, 31, 31,
379
+ 31, 31, 31, 31, 31, 31, 31, 31,
380
+ 31, 31, 31, 31, 31, 31, 31, 31,
381
+ 31, 31, 31, 31, 31, 31, 31, 31,
382
+ 31, 31, 31, 31, 31, 31, 31, 31,
383
+ 31, 31, 34, 31, 35, 36, 37, 37,
384
+ 37, 37, 37, 36, 36, 36, 36, 36,
385
+ 36, 36, 36, 36, 36, 36, 36, 36,
386
+ 36, 36, 36, 36, 36, 37, 36, 36,
387
+ 36, 36, 36, 36, 36, 36, 36, 36,
388
+ 36, 36, 37, 37, 36, 37, 37, 37,
389
+ 37, 37, 37, 37, 37, 37, 37, 36,
390
+ 36, 36, 37, 36, 36, 36, 37, 37,
391
+ 37, 37, 37, 37, 37, 37, 37, 37,
392
+ 37, 37, 37, 37, 37, 37, 37, 37,
393
+ 37, 37, 37, 37, 37, 37, 37, 37,
394
+ 36, 36, 36, 38, 37, 36, 37, 37,
395
+ 37, 37, 37, 37, 37, 37, 37, 37,
396
+ 37, 37, 37, 37, 37, 37, 37, 37,
397
+ 37, 37, 37, 37, 37, 37, 37, 37,
398
+ 36, 37, 37, 37, 37, 37, 36, 36,
399
+ 36, 36, 36, 36, 36, 36, 36, 36,
400
+ 36, 36, 36, 36, 36, 36, 36, 36,
401
+ 37, 36, 36, 36, 36, 36, 36, 36,
402
+ 36, 36, 36, 36, 36, 37, 37, 36,
403
+ 37, 37, 37, 37, 37, 37, 37, 37,
404
+ 37, 37, 36, 36, 36, 37, 36, 36,
405
+ 36, 37, 37, 37, 37, 37, 37, 37,
406
+ 37, 37, 37, 37, 37, 37, 37, 37,
407
+ 37, 37, 37, 37, 37, 37, 37, 37,
408
+ 37, 37, 37, 36, 36, 36, 36, 37,
409
+ 36, 37, 37, 37, 37, 37, 37, 37,
410
+ 37, 37, 37, 37, 37, 37, 37, 37,
411
+ 37, 37, 37, 37, 37, 37, 37, 37,
412
+ 37, 37, 37, 36, 36, 39, 36, 37,
413
+ 37, 37, 37, 37, 36, 36, 36, 36,
414
+ 36, 36, 36, 36, 36, 36, 36, 36,
415
+ 36, 36, 36, 36, 36, 36, 37, 36,
416
+ 36, 36, 36, 36, 36, 36, 36, 36,
417
+ 36, 36, 36, 37, 37, 36, 37, 37,
418
+ 37, 37, 37, 37, 37, 37, 37, 37,
419
+ 36, 36, 36, 37, 36, 36, 36, 37,
420
+ 37, 37, 37, 37, 37, 37, 37, 37,
421
+ 37, 37, 37, 37, 37, 37, 37, 37,
422
+ 37, 37, 37, 37, 37, 37, 37, 37,
423
+ 37, 36, 36, 36, 36, 37, 36, 37,
424
+ 37, 37, 37, 37, 37, 37, 37, 37,
425
+ 37, 37, 37, 37, 37, 37, 37, 37,
426
+ 37, 37, 37, 37, 37, 37, 37, 37,
427
+ 37, 36, 41, 41, 41, 41, 41, 41,
428
+ 41, 41, 41, 41, 41, 41, 41, 41,
429
+ 41, 41, 41, 41, 41, 41, 41, 41,
430
+ 41, 41, 41, 41, 41, 41, 41, 41,
431
+ 41, 41, 41, 41, 41, 41, 41, 41,
432
+ 41, 41, 41, 41, 41, 41, 41, 41,
433
+ 41, 41, 41, 41, 41, 41, 41, 41,
434
+ 41, 41, 41, 41, 41, 41, 41, 41,
435
+ 41, 41, 40, 42, 42, 42, 42, 42,
436
+ 42, 42, 42, 42, 42, 42, 42, 42,
437
+ 42, 42, 42, 42, 42, 42, 42, 42,
438
+ 42, 42, 42, 42, 42, 42, 42, 42,
439
+ 42, 42, 42, 42, 42, 42, 42, 42,
440
+ 42, 42, 42, 42, 42, 42, 42, 42,
441
+ 42, 42, 42, 42, 42, 42, 42, 42,
442
+ 42, 42, 42, 42, 42, 42, 42, 42,
443
+ 42, 42, 42, 40, 44, 43, 47, 46,
444
+ 46, 46, 46, 46, 46, 46, 46, 46,
445
+ 46, 46, 46, 46, 46, 46, 46, 46,
446
+ 46, 46, 47, 47, 47, 47, 47, 47,
447
+ 47, 47, 47, 47, 47, 47, 47, 47,
448
+ 47, 47, 47, 47, 47, 47, 47, 47,
449
+ 47, 47, 47, 47, 46, 46, 46, 46,
450
+ 46, 46, 47, 47, 47, 47, 47, 47,
451
+ 47, 47, 47, 47, 47, 47, 47, 47,
452
+ 47, 47, 47, 47, 47, 47, 47, 47,
453
+ 47, 47, 47, 47, 46, 47, 48, 46,
454
+ 46, 46, 46, 46, 46, 46, 46, 46,
455
+ 46, 46, 46, 46, 46, 46, 46, 46,
456
+ 46, 47, 47, 47, 47, 47, 47, 47,
457
+ 47, 47, 47, 47, 47, 47, 47, 47,
458
+ 47, 47, 47, 47, 47, 47, 47, 47,
459
+ 47, 47, 47, 46, 46, 46, 46, 46,
460
+ 46, 47, 47, 47, 47, 47, 47, 47,
461
+ 47, 47, 47, 47, 47, 47, 47, 47,
462
+ 47, 47, 47, 47, 47, 47, 47, 47,
463
+ 47, 47, 47, 46, 49, 46, 50, 46,
464
+ 46, 51, 52, 53, 54, 46, 46, 55,
465
+ 46, 46, 46, 46, 56, 46, 46, 46,
466
+ 57, 46, 46, 58, 46, 59, 46, 60,
467
+ 61, 46, 51, 52, 53, 54, 46, 46,
468
+ 55, 46, 46, 46, 46, 56, 46, 46,
469
+ 46, 57, 46, 46, 58, 46, 59, 46,
470
+ 60, 61, 46, 62, 46, 46, 46, 46,
471
+ 46, 46, 63, 46, 64, 46, 65, 46,
472
+ 66, 46, 67, 46, 68, 46, 69, 46,
473
+ 70, 46, 67, 46, 71, 46, 72, 46,
474
+ 67, 46, 73, 46, 74, 46, 75, 46,
475
+ 67, 46, 76, 46, 77, 46, 78, 46,
476
+ 67, 46, 79, 46, 80, 46, 81, 46,
477
+ 67, 46, 82, 46, 83, 46, 84, 46,
478
+ 67, 46, 85, 46, 86, 46, 87, 46,
479
+ 67, 46, 88, 46, 46, 89, 46, 90,
480
+ 46, 81, 46, 91, 46, 81, 46, 92,
481
+ 46, 93, 46, 94, 46, 67, 46, 95,
482
+ 46, 86, 46, 96, 46, 97, 46, 67,
483
+ 46, 54, 46, 98, 98, 98, 98, 98,
484
+ 98, 98, 98, 98, 98, 98, 98, 98,
485
+ 98, 98, 98, 98, 98, 98, 98, 98,
486
+ 98, 98, 98, 98, 98, 46, 46, 46,
487
+ 46, 46, 46, 98, 98, 98, 98, 98,
488
+ 98, 98, 98, 98, 98, 98, 98, 98,
489
+ 98, 98, 98, 98, 98, 98, 98, 98,
490
+ 98, 98, 98, 98, 98, 46, 99, 46,
491
+ 100, 46, 101, 36, 103, 102, 105, 102,
492
+ 106, 36, 108, 107, 110, 107, 111, 111,
510
493
  111, 111, 111, 111, 111, 111, 111, 111,
511
- 111, 113, 111, 113, 111, 114, 111, 115,
512
- 111, 116, 116, 116, 116, 116, 116, 116,
513
- 116, 116, 116, 39, 39, 39, 39, 39,
514
- 39, 39, 116, 116, 116, 116, 116, 116,
515
- 39, 39, 39, 39, 39, 39, 39, 39,
516
- 39, 39, 39, 39, 39, 39, 39, 39,
517
- 39, 39, 39, 39, 39, 39, 39, 39,
518
- 39, 39, 116, 116, 116, 116, 116, 116,
519
- 39, 39, 39, 39, 39, 39, 39, 39,
520
- 39, 39, 39, 39, 39, 39, 39, 39,
521
- 39, 39, 39, 39, 117, 39, 118, 118,
494
+ 36, 36, 36, 36, 36, 36, 36, 111,
495
+ 111, 111, 111, 111, 111, 36, 36, 36,
496
+ 36, 36, 36, 36, 36, 36, 36, 36,
497
+ 36, 36, 36, 36, 36, 36, 36, 36,
498
+ 36, 36, 36, 36, 36, 36, 36, 111,
499
+ 111, 111, 111, 111, 111, 36, 36, 36,
500
+ 36, 36, 36, 36, 36, 36, 36, 36,
501
+ 36, 36, 36, 36, 36, 36, 36, 36,
502
+ 36, 112, 36, 113, 113, 113, 113, 113,
503
+ 113, 113, 113, 113, 113, 36, 36, 36,
504
+ 36, 36, 36, 36, 113, 113, 113, 113,
505
+ 113, 113, 36, 36, 36, 36, 36, 36,
506
+ 36, 36, 36, 36, 36, 36, 36, 36,
507
+ 36, 36, 36, 36, 36, 36, 36, 36,
508
+ 36, 36, 36, 36, 113, 113, 113, 113,
509
+ 113, 113, 36, 114, 114, 114, 114, 114,
510
+ 114, 114, 114, 114, 114, 36, 36, 36,
511
+ 36, 36, 36, 36, 114, 114, 114, 114,
512
+ 114, 114, 36, 36, 36, 36, 36, 36,
513
+ 36, 36, 36, 36, 36, 36, 36, 36,
514
+ 36, 36, 36, 36, 36, 36, 36, 36,
515
+ 36, 36, 36, 36, 114, 114, 114, 114,
516
+ 114, 114, 36, 115, 115, 115, 115, 115,
517
+ 115, 115, 115, 115, 115, 36, 36, 36,
518
+ 36, 36, 36, 36, 115, 115, 115, 115,
519
+ 115, 115, 36, 36, 36, 36, 36, 36,
520
+ 36, 36, 36, 36, 36, 36, 36, 36,
521
+ 36, 36, 36, 36, 36, 36, 36, 36,
522
+ 36, 36, 36, 36, 115, 115, 115, 115,
523
+ 115, 115, 36, 116, 116, 116, 116, 116,
524
+ 116, 116, 116, 116, 116, 36, 36, 36,
525
+ 36, 36, 36, 36, 116, 116, 116, 116,
526
+ 116, 116, 36, 36, 36, 36, 36, 36,
527
+ 36, 36, 36, 36, 36, 36, 36, 36,
528
+ 36, 36, 36, 36, 36, 36, 36, 36,
529
+ 36, 36, 36, 36, 116, 116, 116, 116,
530
+ 116, 116, 36, 112, 112, 112, 112, 112,
531
+ 36, 36, 36, 36, 36, 36, 36, 36,
532
+ 36, 36, 36, 36, 36, 36, 36, 36,
533
+ 36, 36, 112, 36, 36, 36, 36, 36,
534
+ 36, 36, 36, 36, 36, 36, 36, 36,
535
+ 36, 36, 117, 117, 117, 117, 117, 117,
536
+ 117, 117, 117, 117, 36, 36, 36, 36,
537
+ 36, 36, 36, 117, 117, 117, 117, 117,
538
+ 117, 36, 36, 36, 36, 36, 36, 36,
539
+ 36, 36, 36, 36, 36, 36, 36, 36,
540
+ 36, 36, 36, 36, 36, 36, 36, 36,
541
+ 36, 36, 36, 117, 117, 117, 117, 117,
542
+ 117, 36, 36, 36, 36, 36, 36, 36,
543
+ 36, 36, 36, 36, 36, 36, 36, 36,
544
+ 36, 36, 36, 36, 36, 36, 36, 115,
545
+ 36, 112, 112, 112, 112, 112, 36, 36,
546
+ 36, 36, 36, 36, 36, 36, 36, 36,
547
+ 36, 36, 36, 36, 36, 36, 36, 36,
548
+ 112, 36, 36, 36, 36, 36, 36, 36,
549
+ 36, 36, 36, 36, 36, 36, 36, 36,
522
550
  118, 118, 118, 118, 118, 118, 118, 118,
523
- 39, 39, 39, 39, 39, 39, 39, 118,
524
- 118, 118, 118, 118, 118, 39, 39, 39,
525
- 39, 39, 39, 39, 39, 39, 39, 39,
526
- 39, 39, 39, 39, 39, 39, 39, 39,
527
- 39, 39, 39, 39, 39, 39, 39, 118,
528
- 118, 118, 118, 118, 118, 39, 119, 119,
551
+ 118, 118, 36, 36, 36, 36, 36, 36,
552
+ 36, 118, 118, 118, 118, 118, 118, 36,
553
+ 36, 36, 36, 36, 36, 36, 36, 36,
554
+ 36, 36, 36, 36, 36, 36, 36, 36,
555
+ 36, 36, 36, 36, 36, 36, 36, 36,
556
+ 36, 118, 118, 118, 118, 118, 118, 36,
557
+ 36, 36, 36, 36, 36, 36, 36, 36,
558
+ 36, 36, 36, 36, 36, 36, 36, 36,
559
+ 36, 36, 36, 36, 36, 115, 36, 112,
560
+ 112, 112, 112, 112, 36, 36, 36, 36,
561
+ 36, 36, 36, 36, 36, 36, 36, 36,
562
+ 36, 36, 36, 36, 36, 36, 112, 36,
563
+ 36, 36, 36, 36, 36, 36, 36, 36,
564
+ 36, 36, 36, 36, 36, 36, 119, 119,
529
565
  119, 119, 119, 119, 119, 119, 119, 119,
530
- 39, 39, 39, 39, 39, 39, 39, 119,
531
- 119, 119, 119, 119, 119, 39, 39, 39,
532
- 39, 39, 39, 39, 39, 39, 39, 39,
533
- 39, 39, 39, 39, 39, 39, 39, 39,
534
- 39, 39, 39, 39, 39, 39, 39, 119,
535
- 119, 119, 119, 119, 119, 39, 120, 120,
536
- 120, 120, 120, 120, 120, 120, 120, 120,
537
- 39, 39, 39, 39, 39, 39, 39, 120,
538
- 120, 120, 120, 120, 120, 39, 39, 39,
539
- 39, 39, 39, 39, 39, 39, 39, 39,
540
- 39, 39, 39, 39, 39, 39, 39, 39,
541
- 39, 39, 39, 39, 39, 39, 39, 120,
542
- 120, 120, 120, 120, 120, 39, 121, 121,
543
- 121, 121, 121, 121, 121, 121, 121, 121,
544
- 39, 39, 39, 39, 39, 39, 39, 121,
545
- 121, 121, 121, 121, 121, 39, 39, 39,
546
- 39, 39, 39, 39, 39, 39, 39, 39,
547
- 39, 39, 39, 39, 39, 39, 39, 39,
548
- 39, 39, 39, 39, 39, 39, 39, 121,
549
- 121, 121, 121, 121, 121, 39, 117, 117,
550
- 117, 117, 117, 39, 39, 39, 39, 39,
551
- 39, 39, 39, 39, 39, 39, 39, 39,
552
- 39, 39, 39, 39, 39, 117, 39, 39,
553
- 39, 39, 39, 39, 39, 39, 39, 39,
554
- 39, 39, 39, 39, 39, 122, 122, 122,
555
- 122, 122, 122, 122, 122, 122, 122, 39,
556
- 39, 39, 39, 39, 39, 39, 122, 122,
557
- 122, 122, 122, 122, 39, 39, 39, 39,
558
- 39, 39, 39, 39, 39, 39, 39, 39,
559
- 39, 39, 39, 39, 39, 39, 39, 39,
560
- 39, 39, 39, 39, 39, 39, 122, 122,
561
- 122, 122, 122, 122, 39, 39, 39, 39,
562
- 39, 39, 39, 39, 39, 39, 39, 39,
563
- 39, 39, 39, 39, 39, 39, 39, 39,
564
- 39, 39, 120, 39, 117, 117, 117, 117,
565
- 117, 39, 39, 39, 39, 39, 39, 39,
566
- 39, 39, 39, 39, 39, 39, 39, 39,
567
- 39, 39, 39, 117, 39, 39, 39, 39,
568
- 39, 39, 39, 39, 39, 39, 39, 39,
569
- 39, 39, 39, 123, 123, 123, 123, 123,
570
- 123, 123, 123, 123, 123, 39, 39, 39,
571
- 39, 39, 39, 39, 123, 123, 123, 123,
572
- 123, 123, 39, 39, 39, 39, 39, 39,
573
- 39, 39, 39, 39, 39, 39, 39, 39,
574
- 39, 39, 39, 39, 39, 39, 39, 39,
575
- 39, 39, 39, 39, 123, 123, 123, 123,
576
- 123, 123, 39, 39, 39, 39, 39, 39,
577
- 39, 39, 39, 39, 39, 39, 39, 39,
578
- 39, 39, 39, 39, 39, 39, 39, 39,
579
- 120, 39, 117, 117, 117, 117, 117, 39,
580
- 39, 39, 39, 39, 39, 39, 39, 39,
581
- 39, 39, 39, 39, 39, 39, 39, 39,
582
- 39, 117, 39, 39, 39, 39, 39, 39,
583
- 39, 39, 39, 39, 39, 39, 39, 39,
584
- 39, 124, 124, 124, 124, 124, 124, 124,
585
- 124, 124, 124, 39, 39, 39, 39, 39,
586
- 39, 39, 124, 124, 124, 124, 124, 124,
587
- 39, 39, 39, 39, 39, 39, 39, 39,
588
- 39, 39, 39, 39, 39, 39, 39, 39,
589
- 39, 39, 39, 39, 39, 39, 39, 39,
590
- 39, 39, 124, 124, 124, 124, 124, 124,
591
- 39, 39, 39, 39, 39, 39, 39, 39,
592
- 39, 39, 39, 39, 39, 39, 39, 39,
593
- 39, 39, 39, 39, 39, 39, 120, 39,
594
- 117, 117, 117, 117, 117, 39, 39, 39,
595
- 39, 39, 39, 39, 39, 39, 39, 39,
596
- 39, 39, 39, 39, 39, 39, 39, 117,
597
- 39, 39, 39, 39, 39, 39, 39, 39,
598
- 39, 39, 39, 39, 39, 39, 39, 125,
599
- 125, 125, 125, 125, 125, 125, 125, 125,
600
- 125, 39, 39, 39, 39, 39, 39, 39,
601
- 125, 125, 125, 125, 125, 125, 39, 39,
602
- 39, 39, 39, 39, 39, 39, 39, 39,
603
- 39, 39, 39, 39, 39, 39, 39, 39,
604
- 39, 39, 39, 39, 39, 39, 39, 39,
605
- 125, 125, 125, 125, 125, 125, 39, 39,
606
- 39, 39, 39, 39, 39, 39, 39, 39,
607
- 39, 39, 39, 39, 39, 39, 39, 39,
608
- 39, 39, 39, 39, 120, 39, 117, 117,
609
- 117, 117, 117, 39, 39, 39, 39, 39,
610
- 39, 39, 39, 39, 39, 39, 39, 39,
611
- 39, 39, 39, 39, 39, 117, 39, 39,
612
- 39, 39, 39, 39, 39, 39, 39, 39,
613
- 39, 39, 39, 39, 39, 126, 126, 126,
614
- 126, 126, 126, 126, 126, 126, 126, 39,
615
- 39, 39, 39, 39, 39, 39, 126, 126,
616
- 126, 126, 126, 126, 39, 39, 39, 39,
617
- 39, 39, 39, 39, 39, 39, 39, 39,
618
- 39, 39, 39, 39, 39, 39, 39, 39,
619
- 39, 39, 39, 39, 39, 39, 126, 126,
620
- 126, 126, 126, 126, 39, 39, 39, 39,
621
- 39, 39, 39, 39, 39, 39, 39, 39,
622
- 39, 39, 39, 39, 39, 39, 39, 39,
623
- 39, 39, 120, 39, 117, 117, 117, 117,
624
- 117, 39, 39, 39, 39, 39, 39, 39,
625
- 39, 39, 39, 39, 39, 39, 39, 39,
626
- 39, 39, 39, 117, 39, 39, 39, 39,
627
- 39, 39, 39, 39, 39, 39, 39, 39,
628
- 39, 39, 39, 39, 39, 39, 39, 39,
629
- 39, 39, 39, 39, 39, 39, 39, 39,
630
- 39, 39, 39, 39, 39, 39, 39, 39,
631
- 39, 39, 39, 39, 39, 39, 39, 39,
632
- 39, 39, 39, 39, 39, 39, 39, 39,
633
- 39, 39, 39, 39, 39, 39, 39, 39,
634
- 39, 39, 39, 39, 39, 39, 39, 39,
635
- 39, 39, 39, 39, 39, 39, 39, 39,
636
- 39, 39, 39, 39, 39, 39, 39, 39,
637
- 39, 39, 39, 39, 39, 39, 39, 39,
638
- 120, 39, 128, 128, 128, 128, 128, 128,
639
- 128, 128, 128, 128, 127, 127, 127, 127,
640
- 127, 127, 127, 128, 128, 128, 128, 128,
641
- 128, 127, 127, 127, 127, 127, 127, 127,
566
+ 36, 36, 36, 36, 36, 36, 36, 119,
567
+ 119, 119, 119, 119, 119, 36, 36, 36,
568
+ 36, 36, 36, 36, 36, 36, 36, 36,
569
+ 36, 36, 36, 36, 36, 36, 36, 36,
570
+ 36, 36, 36, 36, 36, 36, 36, 119,
571
+ 119, 119, 119, 119, 119, 36, 36, 36,
572
+ 36, 36, 36, 36, 36, 36, 36, 36,
573
+ 36, 36, 36, 36, 36, 36, 36, 36,
574
+ 36, 36, 36, 115, 36, 112, 112, 112,
575
+ 112, 112, 36, 36, 36, 36, 36, 36,
576
+ 36, 36, 36, 36, 36, 36, 36, 36,
577
+ 36, 36, 36, 36, 112, 36, 36, 36,
578
+ 36, 36, 36, 36, 36, 36, 36, 36,
579
+ 36, 36, 36, 36, 120, 120, 120, 120,
580
+ 120, 120, 120, 120, 120, 120, 36, 36,
581
+ 36, 36, 36, 36, 36, 120, 120, 120,
582
+ 120, 120, 120, 36, 36, 36, 36, 36,
583
+ 36, 36, 36, 36, 36, 36, 36, 36,
584
+ 36, 36, 36, 36, 36, 36, 36, 36,
585
+ 36, 36, 36, 36, 36, 120, 120, 120,
586
+ 120, 120, 120, 36, 36, 36, 36, 36,
587
+ 36, 36, 36, 36, 36, 36, 36, 36,
588
+ 36, 36, 36, 36, 36, 36, 36, 36,
589
+ 36, 115, 36, 112, 112, 112, 112, 112,
590
+ 36, 36, 36, 36, 36, 36, 36, 36,
591
+ 36, 36, 36, 36, 36, 36, 36, 36,
592
+ 36, 36, 112, 36, 36, 36, 36, 36,
593
+ 36, 36, 36, 36, 36, 36, 36, 36,
594
+ 36, 36, 121, 121, 121, 121, 121, 121,
595
+ 121, 121, 121, 121, 36, 36, 36, 36,
596
+ 36, 36, 36, 121, 121, 121, 121, 121,
597
+ 121, 36, 36, 36, 36, 36, 36, 36,
598
+ 36, 36, 36, 36, 36, 36, 36, 36,
599
+ 36, 36, 36, 36, 36, 36, 36, 36,
600
+ 36, 36, 36, 121, 121, 121, 121, 121,
601
+ 121, 36, 36, 36, 36, 36, 36, 36,
602
+ 36, 36, 36, 36, 36, 36, 36, 36,
603
+ 36, 36, 36, 36, 36, 36, 36, 115,
604
+ 36, 112, 112, 112, 112, 112, 36, 36,
605
+ 36, 36, 36, 36, 36, 36, 36, 36,
606
+ 36, 36, 36, 36, 36, 36, 36, 36,
607
+ 112, 36, 36, 36, 36, 36, 36, 36,
608
+ 36, 36, 36, 36, 36, 36, 36, 36,
609
+ 36, 36, 36, 36, 36, 36, 36, 36,
610
+ 36, 36, 36, 36, 36, 36, 36, 36,
611
+ 36, 36, 36, 36, 36, 36, 36, 36,
612
+ 36, 36, 36, 36, 36, 36, 36, 36,
613
+ 36, 36, 36, 36, 36, 36, 36, 36,
614
+ 36, 36, 36, 36, 36, 36, 36, 36,
615
+ 36, 36, 36, 36, 36, 36, 36, 36,
616
+ 36, 36, 36, 36, 36, 36, 36, 36,
617
+ 36, 36, 36, 36, 36, 36, 36, 36,
618
+ 36, 36, 36, 36, 36, 115, 36, 123,
619
+ 123, 123, 123, 123, 123, 123, 123, 123,
620
+ 123, 122, 122, 122, 122, 122, 122, 122,
621
+ 123, 123, 123, 123, 123, 123, 122, 122,
622
+ 122, 122, 122, 122, 122, 122, 122, 122,
623
+ 122, 122, 122, 122, 122, 122, 122, 122,
624
+ 122, 122, 122, 122, 122, 122, 122, 122,
625
+ 123, 123, 123, 123, 123, 123, 122, 122,
626
+ 122, 122, 122, 122, 122, 122, 122, 122,
627
+ 122, 122, 122, 122, 122, 122, 122, 122,
628
+ 122, 122, 36, 122, 125, 124, 126, 124,
629
+ 124, 124, 124, 124, 124, 124, 124, 127,
630
+ 127, 127, 127, 127, 127, 127, 127, 127,
631
+ 127, 124, 124, 124, 124, 124, 124, 124,
632
+ 127, 127, 127, 127, 127, 127, 127, 127,
633
+ 127, 127, 127, 127, 127, 127, 127, 127,
634
+ 127, 127, 127, 127, 127, 127, 127, 127,
635
+ 127, 127, 124, 124, 124, 124, 127, 124,
642
636
  127, 127, 127, 127, 127, 127, 127, 127,
643
637
  127, 127, 127, 127, 127, 127, 127, 127,
644
- 127, 127, 127, 128, 128, 128, 128, 128,
645
- 128, 127, 127, 127, 127, 127, 127, 127,
646
638
  127, 127, 127, 127, 127, 127, 127, 127,
647
- 127, 127, 127, 127, 127, 39, 127, 130,
648
- 129, 131, 129, 129, 129, 129, 129, 129,
649
- 129, 129, 132, 132, 132, 132, 132, 132,
650
- 132, 132, 132, 132, 129, 129, 129, 129,
651
- 129, 129, 129, 132, 132, 132, 132, 132,
652
- 132, 132, 132, 132, 132, 132, 132, 132,
653
- 132, 132, 132, 132, 132, 132, 132, 132,
654
- 132, 132, 132, 132, 132, 129, 129, 129,
655
- 129, 132, 129, 132, 132, 132, 132, 132,
656
- 132, 132, 132, 132, 132, 132, 132, 132,
657
- 132, 132, 132, 132, 132, 132, 132, 132,
658
- 132, 132, 132, 132, 132, 129, 130, 129,
659
- 129, 129, 129, 129, 129, 133, 133, 133,
660
- 133, 133, 133, 133, 133, 133, 133, 129,
661
- 134, 134, 134, 134, 134, 134, 134, 134,
662
- 134, 134, 129, 129, 129, 129, 131, 129,
663
- 129, 134, 134, 134, 134, 134, 134, 134,
664
- 134, 134, 134, 134, 134, 134, 134, 134,
665
- 134, 134, 134, 134, 134, 134, 134, 134,
666
- 134, 134, 134, 129, 129, 129, 129, 134,
667
- 129, 134, 134, 134, 134, 134, 134, 134,
668
- 134, 134, 134, 134, 134, 134, 134, 134,
669
- 134, 134, 134, 134, 134, 134, 134, 134,
670
- 134, 134, 134, 129, 135, 135, 135, 135,
671
- 135, 135, 135, 135, 135, 135, 135, 135,
672
- 135, 135, 135, 135, 135, 135, 135, 135,
673
- 135, 135, 135, 135, 135, 135, 135, 135,
674
- 135, 135, 136, 136, 136, 136, 136, 136,
639
+ 127, 127, 124, 125, 124, 124, 124, 124,
640
+ 124, 124, 128, 128, 128, 128, 128, 128,
641
+ 128, 128, 128, 128, 124, 129, 129, 129,
642
+ 129, 129, 129, 129, 129, 129, 129, 124,
643
+ 124, 124, 124, 126, 124, 124, 129, 129,
644
+ 129, 129, 129, 129, 129, 129, 129, 129,
645
+ 129, 129, 129, 129, 129, 129, 129, 129,
646
+ 129, 129, 129, 129, 129, 129, 129, 129,
647
+ 124, 124, 124, 124, 129, 124, 129, 129,
648
+ 129, 129, 129, 129, 129, 129, 129, 129,
649
+ 129, 129, 129, 129, 129, 129, 129, 129,
650
+ 129, 129, 129, 129, 129, 129, 129, 129,
651
+ 124, 130, 130, 130, 130, 130, 130, 130,
652
+ 130, 130, 130, 130, 130, 130, 130, 130,
653
+ 130, 130, 130, 130, 130, 130, 130, 130,
654
+ 130, 130, 130, 130, 130, 130, 130, 131,
655
+ 131, 131, 131, 131, 131, 131, 131, 131,
656
+ 131, 131, 131, 131, 131, 131, 131, 132,
657
+ 132, 132, 132, 132, 31, 31, 31, 31,
658
+ 31, 31, 31, 31, 31, 31, 31, 31,
659
+ 133, 133, 133, 133, 133, 133, 133, 133,
660
+ 134, 134, 134, 134, 134, 133, 133, 133,
661
+ 133, 133, 133, 133, 133, 133, 133, 133,
662
+ 133, 133, 133, 133, 133, 133, 133, 135,
663
+ 136, 136, 137, 138, 136, 136, 136, 139,
664
+ 140, 141, 142, 136, 136, 143, 136, 136,
665
+ 136, 136, 136, 136, 136, 136, 136, 136,
666
+ 136, 136, 136, 136, 136, 136, 144, 136,
667
+ 136, 136, 136, 136, 136, 136, 136, 136,
668
+ 136, 136, 136, 136, 136, 136, 136, 136,
669
+ 136, 136, 136, 136, 136, 136, 136, 136,
670
+ 136, 136, 145, 146, 31, 147, 136, 136,
671
+ 136, 136, 136, 136, 136, 136, 136, 136,
672
+ 136, 136, 136, 136, 136, 136, 136, 136,
673
+ 136, 136, 136, 136, 136, 136, 136, 136,
674
+ 136, 136, 33, 148, 31, 136, 133, 31,
675
+ 130, 130, 130, 130, 130, 130, 130, 130,
676
+ 130, 130, 130, 130, 130, 130, 130, 130,
677
+ 130, 130, 130, 130, 130, 130, 130, 130,
678
+ 130, 130, 130, 130, 130, 130, 149, 131,
679
+ 131, 131, 131, 131, 131, 131, 131, 131,
680
+ 131, 131, 131, 131, 131, 131, 131, 149,
681
+ 132, 132, 132, 132, 132, 149, 133, 133,
682
+ 133, 133, 133, 133, 133, 133, 133, 133,
683
+ 133, 133, 133, 133, 133, 133, 133, 133,
684
+ 133, 133, 133, 133, 133, 133, 133, 133,
685
+ 133, 133, 133, 133, 133, 149, 149, 149,
686
+ 149, 149, 149, 149, 149, 149, 149, 149,
687
+ 149, 149, 149, 149, 149, 149, 149, 149,
688
+ 149, 149, 149, 149, 149, 149, 149, 149,
689
+ 149, 149, 149, 149, 149, 149, 149, 149,
690
+ 149, 149, 149, 149, 149, 149, 149, 149,
691
+ 149, 149, 149, 149, 149, 149, 149, 149,
692
+ 149, 149, 149, 149, 149, 149, 149, 149,
693
+ 149, 149, 149, 149, 149, 149, 149, 149,
694
+ 149, 149, 149, 149, 149, 149, 149, 149,
695
+ 149, 149, 149, 149, 149, 149, 149, 149,
696
+ 149, 149, 149, 149, 149, 149, 149, 149,
697
+ 149, 149, 149, 149, 133, 149, 133, 133,
698
+ 133, 133, 133, 133, 133, 133, 134, 134,
699
+ 134, 134, 134, 133, 133, 133, 133, 133,
700
+ 133, 133, 133, 133, 133, 133, 133, 133,
701
+ 133, 133, 133, 133, 133, 135, 150, 150,
702
+ 150, 150, 150, 150, 150, 150, 150, 150,
703
+ 150, 150, 150, 150, 150, 150, 150, 150,
704
+ 150, 150, 150, 150, 150, 150, 150, 150,
705
+ 150, 150, 150, 150, 150, 150, 150, 150,
706
+ 150, 150, 150, 150, 150, 150, 150, 150,
707
+ 150, 150, 150, 150, 150, 150, 150, 150,
708
+ 150, 150, 150, 150, 150, 150, 150, 150,
709
+ 150, 150, 150, 150, 150, 150, 150, 150,
710
+ 150, 150, 150, 150, 150, 150, 150, 150,
711
+ 150, 150, 150, 150, 150, 150, 150, 150,
712
+ 150, 150, 150, 150, 150, 150, 150, 150,
713
+ 150, 150, 150, 150, 133, 150, 135, 135,
714
+ 135, 135, 135, 150, 150, 150, 150, 150,
715
+ 150, 150, 150, 150, 150, 150, 150, 150,
716
+ 150, 150, 150, 150, 150, 135, 150, 136,
717
+ 136, 136, 149, 136, 136, 136, 149, 149,
718
+ 149, 149, 136, 136, 149, 136, 136, 136,
675
719
  136, 136, 136, 136, 136, 136, 136, 136,
676
- 136, 136, 137, 137, 137, 137, 137, 34,
677
- 34, 34, 34, 34, 34, 34, 34, 34,
678
- 34, 34, 34, 138, 138, 138, 138, 138,
679
- 138, 138, 138, 139, 139, 139, 139, 139,
680
- 138, 138, 138, 138, 138, 138, 138, 138,
681
- 138, 138, 138, 138, 138, 138, 138, 138,
682
- 138, 138, 140, 141, 141, 142, 143, 141,
683
- 141, 141, 144, 145, 146, 147, 141, 141,
684
- 148, 141, 141, 141, 141, 141, 141, 141,
685
- 141, 141, 141, 141, 141, 141, 141, 141,
686
- 141, 149, 141, 141, 141, 141, 141, 141,
687
- 141, 141, 141, 141, 141, 141, 141, 141,
688
- 141, 141, 141, 141, 141, 141, 141, 141,
689
- 141, 141, 141, 141, 141, 150, 151, 34,
690
- 152, 141, 141, 141, 141, 141, 141, 141,
691
- 141, 141, 141, 141, 141, 141, 141, 141,
692
- 141, 141, 141, 141, 141, 141, 141, 141,
693
- 141, 141, 141, 141, 141, 36, 153, 34,
694
- 141, 138, 34, 135, 135, 135, 135, 135,
695
- 135, 135, 135, 135, 135, 135, 135, 135,
696
- 135, 135, 135, 135, 135, 135, 135, 135,
697
- 135, 135, 135, 135, 135, 135, 135, 135,
698
- 135, 154, 136, 136, 136, 136, 136, 136,
720
+ 136, 136, 136, 136, 136, 149, 136, 136,
699
721
  136, 136, 136, 136, 136, 136, 136, 136,
700
- 136, 136, 154, 137, 137, 137, 137, 137,
701
- 154, 138, 138, 138, 138, 138, 138, 138,
702
- 138, 138, 138, 138, 138, 138, 138, 138,
703
- 138, 138, 138, 138, 138, 138, 138, 138,
704
- 138, 138, 138, 138, 138, 138, 138, 138,
722
+ 136, 136, 136, 136, 136, 136, 136, 136,
723
+ 136, 136, 136, 136, 136, 136, 136, 136,
724
+ 136, 149, 149, 149, 149, 136, 136, 136,
725
+ 136, 136, 136, 136, 136, 136, 136, 136,
726
+ 136, 136, 136, 136, 136, 136, 136, 136,
727
+ 136, 136, 136, 136, 136, 136, 136, 136,
728
+ 136, 149, 149, 149, 136, 149, 9, 8,
729
+ 8, 8, 8, 8, 8, 8, 8, 8,
730
+ 8, 8, 8, 8, 8, 8, 8, 8,
731
+ 8, 8, 8, 8, 8, 137, 137, 137,
732
+ 8, 137, 137, 137, 8, 8, 8, 8,
733
+ 137, 137, 8, 137, 137, 137, 137, 137,
734
+ 137, 137, 137, 137, 137, 137, 137, 137,
735
+ 137, 137, 137, 8, 137, 137, 137, 137,
736
+ 137, 137, 137, 137, 137, 137, 137, 137,
737
+ 137, 137, 137, 137, 137, 137, 137, 137,
738
+ 137, 137, 137, 137, 137, 137, 137, 8,
739
+ 8, 8, 8, 137, 137, 137, 137, 137,
740
+ 137, 137, 137, 137, 137, 137, 137, 137,
741
+ 137, 137, 137, 137, 137, 137, 137, 137,
742
+ 137, 137, 137, 137, 137, 137, 137, 8,
743
+ 8, 8, 137, 8, 152, 151, 15, 154,
744
+ 11, 154, 154, 154, 14, 155, 153, 154,
705
745
  154, 154, 154, 154, 154, 154, 154, 154,
746
+ 154, 154, 154, 154, 154, 154, 154, 13,
747
+ 154, 156, 15, 13, 154, 154, 154, 154,
706
748
  154, 154, 154, 154, 154, 154, 154, 154,
707
749
  154, 154, 154, 154, 154, 154, 154, 154,
708
750
  154, 154, 154, 154, 154, 154, 154, 154,
@@ -710,126 +752,88 @@ self._re_scanner_indicies = [
710
752
  154, 154, 154, 154, 154, 154, 154, 154,
711
753
  154, 154, 154, 154, 154, 154, 154, 154,
712
754
  154, 154, 154, 154, 154, 154, 154, 154,
755
+ 154, 154, 154, 13, 154, 153, 154, 153,
756
+ 154, 154, 154, 153, 153, 153, 154, 154,
713
757
  154, 154, 154, 154, 154, 154, 154, 154,
758
+ 154, 154, 154, 154, 154, 154, 157, 154,
759
+ 153, 153, 153, 154, 154, 154, 154, 154,
714
760
  154, 154, 154, 154, 154, 154, 154, 154,
715
761
  154, 154, 154, 154, 154, 154, 154, 154,
716
- 154, 154, 154, 154, 154, 154, 154, 138,
717
- 154, 138, 138, 138, 138, 138, 138, 138,
718
- 138, 139, 139, 139, 139, 139, 138, 138,
719
- 138, 138, 138, 138, 138, 138, 138, 138,
720
- 138, 138, 138, 138, 138, 138, 138, 138,
721
- 140, 155, 155, 155, 155, 155, 155, 155,
722
- 155, 155, 155, 155, 155, 155, 155, 155,
723
- 155, 155, 155, 155, 155, 155, 155, 155,
724
- 155, 155, 155, 155, 155, 155, 155, 155,
725
- 155, 155, 155, 155, 155, 155, 155, 155,
726
- 155, 155, 155, 155, 155, 155, 155, 155,
727
- 155, 155, 155, 155, 155, 155, 155, 155,
728
- 155, 155, 155, 155, 155, 155, 155, 155,
729
- 155, 155, 155, 155, 155, 155, 155, 155,
730
- 155, 155, 155, 155, 155, 155, 155, 155,
731
- 155, 155, 155, 155, 155, 155, 155, 155,
732
- 155, 155, 155, 155, 155, 155, 155, 138,
733
- 155, 140, 140, 140, 140, 140, 155, 155,
734
- 155, 155, 155, 155, 155, 155, 155, 155,
735
- 155, 155, 155, 155, 155, 155, 155, 155,
736
- 140, 155, 141, 141, 141, 154, 141, 141,
737
- 141, 154, 154, 154, 154, 141, 141, 154,
738
- 141, 141, 141, 141, 141, 141, 141, 141,
739
- 141, 141, 141, 141, 141, 141, 141, 141,
740
- 154, 141, 141, 141, 141, 141, 141, 141,
741
- 141, 141, 141, 141, 141, 141, 141, 141,
742
- 141, 141, 141, 141, 141, 141, 141, 141,
743
- 141, 141, 141, 141, 154, 154, 154, 154,
744
- 141, 141, 141, 141, 141, 141, 141, 141,
745
- 141, 141, 141, 141, 141, 141, 141, 141,
746
- 141, 141, 141, 141, 141, 141, 141, 141,
747
- 141, 141, 141, 141, 154, 154, 154, 141,
748
- 154, 9, 8, 8, 8, 8, 8, 8,
749
- 8, 8, 8, 8, 8, 8, 8, 8,
750
- 8, 8, 8, 8, 8, 8, 8, 8,
751
- 142, 142, 142, 8, 142, 142, 142, 8,
752
- 8, 8, 8, 142, 142, 8, 142, 142,
753
- 142, 142, 142, 142, 142, 142, 142, 142,
754
- 142, 142, 142, 142, 142, 142, 8, 142,
755
- 142, 142, 142, 142, 142, 142, 142, 142,
756
- 142, 142, 142, 142, 142, 142, 142, 142,
757
- 142, 142, 142, 142, 142, 142, 142, 142,
758
- 142, 142, 8, 8, 8, 8, 142, 142,
759
- 142, 142, 142, 142, 142, 142, 142, 142,
760
- 142, 142, 142, 142, 142, 142, 142, 142,
761
- 142, 142, 142, 142, 142, 142, 142, 142,
762
- 142, 142, 8, 8, 8, 142, 8, 157,
763
- 156, 159, 158, 158, 158, 158, 158, 158,
762
+ 154, 154, 154, 154, 154, 154, 154, 154,
763
+ 154, 154, 154, 154, 154, 154, 154, 154,
764
+ 154, 154, 154, 154, 154, 154, 154, 154,
765
+ 154, 154, 154, 154, 154, 154, 154, 154,
766
+ 154, 154, 154, 154, 154, 154, 154, 154,
767
+ 154, 154, 153, 154, 159, 158, 158, 158,
764
768
  158, 158, 158, 158, 158, 158, 158, 158,
765
- 158, 158, 158, 158, 158, 159, 158, 161,
766
- 160, 160, 160, 160, 160, 160, 160, 160,
769
+ 158, 158, 158, 158, 158, 158, 158, 158,
770
+ 159, 158, 161, 160, 160, 160, 160, 160,
767
771
  160, 160, 160, 160, 160, 160, 160, 160,
768
- 160, 160, 160, 161, 160, 163, 162, 162,
772
+ 160, 160, 160, 160, 160, 160, 161, 160,
773
+ 163, 162, 162, 162, 162, 162, 162, 162,
769
774
  162, 162, 162, 162, 162, 162, 162, 162,
770
- 162, 162, 162, 162, 162, 162, 162, 162,
771
- 162, 163, 162, 165, 165, 164, 164, 164,
772
- 164, 165, 164, 164, 164, 166, 164, 164,
773
- 164, 164, 164, 164, 164, 164, 164, 164,
774
- 164, 164, 164, 164, 165, 164, 164, 164,
775
+ 162, 162, 162, 162, 163, 162, 165, 165,
775
776
  164, 164, 164, 164, 165, 164, 164, 164,
776
- 164, 167, 164, 164, 164, 167, 164, 164,
777
- 164, 164, 164, 164, 164, 164, 164, 164,
778
- 164, 164, 164, 164, 165, 164, 169, 168,
777
+ 166, 164, 164, 164, 164, 164, 164, 164,
778
+ 164, 164, 164, 164, 164, 164, 164, 165,
779
+ 164, 164, 164, 164, 164, 164, 164, 165,
780
+ 164, 164, 164, 164, 167, 164, 164, 164,
781
+ 167, 164, 164, 164, 164, 164, 164, 164,
782
+ 164, 164, 164, 164, 164, 164, 164, 165,
783
+ 164, 169, 168, 168, 168, 168, 168, 168,
779
784
  168, 168, 168, 168, 168, 168, 168, 168,
780
- 168, 168, 168, 168, 168, 168, 168, 168,
781
- 168, 168, 169, 168, 170, 39, 39, 39,
782
- 170, 39, 39, 39, 39, 39, 39, 39,
783
- 39, 39, 170, 170, 39, 39, 39, 170,
784
- 170, 39, 39, 39, 39, 39, 39, 39,
785
- 39, 39, 39, 39, 170, 39, 39, 39,
786
- 170, 39, 39, 39, 39, 39, 39, 39,
787
- 39, 39, 39, 170, 39, 39, 39, 170,
788
- 39, 171, 39, 39, 39, 39, 39, 39,
789
- 39, 39, 39, 39, 39, 39, 39, 39,
790
- 39, 39, 39, 39, 39, 39, 39, 39,
791
- 39, 39, 39, 39, 39, 39, 39, 39,
792
- 39, 171, 39, 172, 172, 172, 172, 172,
785
+ 168, 168, 168, 168, 168, 169, 168, 170,
786
+ 36, 36, 36, 170, 36, 36, 36, 36,
787
+ 36, 36, 36, 36, 36, 170, 170, 36,
788
+ 36, 36, 170, 170, 36, 36, 36, 36,
789
+ 36, 36, 36, 36, 36, 36, 36, 170,
790
+ 36, 36, 36, 170, 36, 36, 36, 36,
791
+ 36, 36, 36, 36, 36, 36, 170, 36,
792
+ 36, 36, 170, 36, 171, 36, 36, 36,
793
+ 36, 36, 36, 36, 36, 36, 36, 36,
794
+ 36, 36, 36, 36, 36, 36, 36, 36,
795
+ 36, 36, 36, 36, 36, 36, 36, 36,
796
+ 36, 36, 36, 36, 171, 36, 172, 172,
793
797
  172, 172, 172, 172, 172, 172, 172, 172,
794
798
  172, 172, 172, 172, 172, 172, 172, 172,
795
799
  172, 172, 172, 172, 172, 172, 172, 172,
796
- 172, 173, 173, 173, 173, 173, 173, 173,
800
+ 172, 172, 172, 172, 173, 173, 173, 173,
797
801
  173, 173, 173, 173, 173, 173, 173, 173,
798
- 173, 174, 174, 174, 174, 174, 44, 44,
799
- 44, 44, 44, 44, 44, 44, 44, 44,
800
- 44, 44, 44, 44, 44, 44, 44, 44,
801
- 44, 44, 44, 44, 44, 44, 44, 44,
802
- 44, 44, 44, 44, 44, 44, 44, 44,
803
- 44, 44, 44, 44, 44, 44, 44, 44,
804
- 44, 44, 44, 44, 44, 175, 44, 176,
805
- 44, 175, 175, 175, 175, 44, 177, 175,
806
- 44, 44, 44, 44, 44, 44, 44, 44,
807
- 44, 44, 44, 44, 44, 44, 44, 44,
808
- 175, 44, 44, 44, 44, 44, 44, 44,
809
- 44, 44, 44, 44, 44, 44, 44, 44,
810
- 44, 44, 44, 44, 44, 44, 44, 44,
811
- 44, 44, 44, 44, 178, 179, 180, 181,
812
- 44, 44, 44, 44, 44, 44, 44, 44,
813
- 44, 44, 44, 44, 44, 44, 44, 44,
814
- 44, 44, 44, 44, 44, 44, 44, 44,
815
- 44, 44, 44, 44, 175, 175, 175, 44,
816
- 44, 44, 44, 44, 44, 44, 44, 44,
817
- 44, 44, 44, 44, 44, 44, 44, 44,
818
- 44, 44, 44, 44, 44, 44, 44, 44,
819
- 44, 44, 44, 44, 44, 44, 44, 44,
820
- 44, 44, 44, 44, 44, 44, 44, 44,
821
- 44, 44, 44, 44, 44, 44, 44, 44,
822
- 44, 44, 44, 44, 44, 44, 44, 44,
823
- 44, 44, 44, 44, 44, 44, 44, 44,
824
- 182, 45, 45, 45, 45, 45, 45, 45,
825
- 45, 45, 45, 45, 45, 45, 45, 45,
826
- 45, 45, 45, 45, 45, 45, 45, 45,
827
- 45, 45, 45, 45, 45, 45, 45, 45,
828
- 45, 45, 45, 45, 45, 45, 45, 45,
829
- 45, 45, 45, 45, 45, 45, 45, 45,
830
- 45, 45, 45, 45, 45, 45, 45, 45,
831
- 45, 45, 45, 45, 45, 45, 45, 45,
832
- 45, 182, 183, 183, 183, 183, 183, 183,
802
+ 173, 173, 173, 173, 174, 174, 174, 174,
803
+ 174, 41, 41, 41, 41, 41, 41, 41,
804
+ 41, 41, 41, 41, 41, 41, 41, 41,
805
+ 41, 41, 41, 41, 41, 41, 41, 41,
806
+ 41, 41, 41, 41, 41, 41, 41, 41,
807
+ 41, 41, 41, 41, 41, 41, 41, 41,
808
+ 41, 41, 41, 41, 41, 41, 41, 41,
809
+ 175, 41, 176, 41, 175, 175, 175, 175,
810
+ 41, 177, 175, 41, 41, 41, 41, 41,
811
+ 41, 41, 41, 41, 41, 41, 41, 41,
812
+ 41, 41, 41, 175, 41, 41, 41, 41,
813
+ 41, 41, 41, 41, 41, 41, 41, 41,
814
+ 41, 41, 41, 41, 41, 41, 41, 41,
815
+ 41, 41, 41, 41, 41, 41, 41, 178,
816
+ 179, 180, 181, 41, 41, 41, 41, 41,
817
+ 41, 41, 41, 41, 41, 41, 41, 41,
818
+ 41, 41, 41, 41, 41, 41, 41, 41,
819
+ 41, 41, 41, 41, 41, 41, 41, 175,
820
+ 175, 175, 41, 41, 41, 41, 41, 41,
821
+ 41, 41, 41, 41, 41, 41, 41, 41,
822
+ 41, 41, 41, 41, 41, 41, 41, 41,
823
+ 41, 41, 41, 41, 41, 41, 41, 41,
824
+ 41, 41, 41, 41, 41, 41, 41, 41,
825
+ 41, 41, 41, 41, 41, 41, 41, 41,
826
+ 41, 41, 41, 41, 41, 41, 41, 41,
827
+ 41, 41, 41, 41, 41, 41, 41, 41,
828
+ 41, 41, 41, 182, 42, 42, 42, 42,
829
+ 42, 42, 42, 42, 42, 42, 42, 42,
830
+ 42, 42, 42, 42, 42, 42, 42, 42,
831
+ 42, 42, 42, 42, 42, 42, 42, 42,
832
+ 42, 42, 42, 42, 42, 42, 42, 42,
833
+ 42, 42, 42, 42, 42, 42, 42, 42,
834
+ 42, 42, 42, 42, 42, 42, 42, 42,
835
+ 42, 42, 42, 42, 42, 42, 42, 42,
836
+ 42, 42, 42, 42, 182, 183, 183, 183,
833
837
  183, 183, 183, 183, 183, 183, 183, 183,
834
838
  183, 183, 183, 183, 183, 183, 183, 183,
835
839
  183, 183, 183, 183, 183, 183, 183, 183,
@@ -837,74 +841,79 @@ self._re_scanner_indicies = [
837
841
  183, 183, 183, 183, 183, 183, 183, 183,
838
842
  183, 183, 183, 183, 183, 183, 183, 183,
839
843
  183, 183, 183, 183, 183, 183, 183, 183,
840
- 183, 183, 182, 184, 182, 186, 185, 185,
841
- 185, 185, 185, 185, 185, 185, 185, 185,
844
+ 183, 183, 183, 183, 183, 182, 184, 182,
845
+ 186, 185, 185, 185, 185, 185, 185, 185,
842
846
  185, 185, 185, 185, 185, 185, 185, 185,
843
847
  185, 185, 185, 185, 185, 185, 185, 185,
844
848
  185, 185, 185, 185, 185, 185, 185, 185,
845
849
  185, 185, 185, 185, 185, 185, 185, 185,
846
850
  185, 185, 185, 185, 185, 185, 185, 185,
847
- 185, 185, 185, 185, 187, 185, 190, 189,
848
- 189, 189, 189, 189, 189, 189, 189, 189,
849
- 189, 189, 191, 189, 189, 192, 189, 194,
850
- 194, 194, 194, 194, 194, 194, 194, 194,
851
- 194, 193, 193, 193, 193, 193, 193, 193,
852
- 194, 194, 194, 193, 193, 193, 194, 193,
851
+ 185, 185, 185, 185, 185, 185, 185, 187,
852
+ 185, 190, 189, 189, 189, 189, 189, 189,
853
+ 189, 189, 189, 189, 189, 191, 189, 189,
854
+ 192, 189, 194, 194, 194, 194, 194, 194,
855
+ 194, 194, 194, 194, 193, 193, 193, 193,
856
+ 193, 193, 193, 194, 194, 194, 193, 193,
857
+ 193, 194, 193, 193, 193, 194, 193, 194,
858
+ 193, 193, 193, 193, 194, 193, 193, 193,
853
859
  193, 193, 194, 193, 194, 193, 193, 193,
854
- 193, 194, 193, 193, 193, 193, 193, 194,
855
- 193, 194, 193, 193, 193, 193, 193, 193,
856
- 193, 193, 194, 193, 193, 193, 194, 193,
857
- 193, 193, 194, 193, 193, 193, 193, 193,
860
+ 193, 193, 193, 193, 193, 194, 193, 193,
861
+ 193, 194, 193, 193, 193, 194, 193, 193,
858
862
  193, 193, 193, 193, 193, 193, 193, 193,
859
- 193, 194, 193, 196, 195, 195, 195, 196,
860
- 196, 196, 196, 195, 195, 196, 195, 197,
861
- 198, 198, 198, 198, 198, 198, 198, 199,
862
- 199, 195, 195, 195, 195, 195, 196, 195,
863
- 39, 39, 200, 201, 195, 195, 39, 201,
864
- 195, 195, 39, 195, 202, 195, 195, 203,
865
- 195, 201, 201, 195, 195, 195, 201, 201,
866
- 195, 39, 196, 196, 196, 196, 195, 195,
867
- 204, 204, 104, 201, 204, 204, 39, 201,
868
- 195, 195, 39, 195, 195, 204, 195, 203,
869
- 195, 204, 201, 204, 205, 204, 201, 206,
870
- 195, 39, 196, 196, 196, 195, 208, 208,
871
- 208, 208, 208, 208, 208, 208, 207, 210,
872
- 210, 210, 210, 210, 210, 210, 210, 209,
873
- 213, 212, 216, 215, 217, 215, 220, 220,
874
- 220, 220, 220, 220, 220, 220, 220, 220,
875
- 219, 219, 219, 219, 219, 219, 219, 220,
876
- 220, 220, 220, 220, 220, 219, 219, 219,
877
- 219, 219, 219, 219, 219, 219, 219, 219,
878
- 219, 219, 219, 219, 219, 219, 219, 219,
879
- 219, 219, 219, 219, 219, 219, 219, 220,
880
- 220, 220, 220, 220, 220, 219, 222, 221,
881
- 221, 221, 221, 221, 223, 221, 221, 221,
882
- 224, 224, 224, 224, 224, 224, 224, 224,
883
- 224, 221, 221, 225, 221, 131, 226, 226,
884
- 226, 226, 226, 226, 226, 226, 132, 132,
885
- 132, 132, 132, 132, 132, 132, 132, 132,
886
- 226, 226, 226, 226, 226, 226, 226, 132,
887
- 132, 132, 132, 132, 132, 132, 132, 132,
888
- 132, 132, 132, 132, 132, 132, 132, 132,
889
- 132, 132, 132, 132, 132, 132, 132, 132,
890
- 132, 226, 226, 226, 226, 132, 226, 132,
891
- 132, 132, 132, 132, 132, 132, 132, 132,
892
- 132, 132, 132, 132, 132, 132, 132, 132,
893
- 132, 132, 132, 132, 132, 132, 132, 132,
894
- 132, 226, 133, 133, 133, 133, 133, 133,
895
- 133, 133, 133, 226, 130, 226, 226, 226,
896
- 226, 226, 226, 133, 133, 133, 133, 133,
897
- 133, 133, 133, 133, 133, 226, 134, 134,
898
- 134, 134, 134, 134, 134, 134, 134, 134,
899
- 226, 226, 226, 226, 131, 226, 226, 134,
900
- 134, 134, 134, 134, 134, 134, 134, 134,
901
- 134, 134, 134, 134, 134, 134, 134, 134,
902
- 134, 134, 134, 134, 134, 134, 134, 134,
903
- 134, 226, 226, 226, 226, 134, 226, 134,
904
- 134, 134, 134, 134, 134, 134, 134, 134,
905
- 134, 134, 134, 134, 134, 134, 134, 134,
906
- 134, 134, 134, 134, 134, 134, 134, 134,
907
- 134, 226, 0
863
+ 193, 193, 193, 193, 194, 193, 196, 195,
864
+ 195, 195, 196, 196, 196, 196, 195, 195,
865
+ 196, 195, 197, 198, 198, 198, 198, 198,
866
+ 198, 198, 199, 199, 195, 195, 195, 195,
867
+ 195, 196, 195, 36, 36, 200, 201, 195,
868
+ 195, 36, 201, 195, 195, 36, 195, 202,
869
+ 195, 195, 203, 195, 201, 201, 195, 195,
870
+ 195, 201, 201, 195, 36, 196, 196, 196,
871
+ 196, 195, 195, 204, 204, 101, 201, 204,
872
+ 204, 36, 201, 195, 195, 36, 195, 195,
873
+ 204, 195, 203, 195, 204, 201, 204, 205,
874
+ 204, 201, 206, 195, 36, 196, 196, 196,
875
+ 195, 208, 208, 208, 208, 208, 208, 208,
876
+ 208, 207, 210, 210, 210, 210, 210, 210,
877
+ 210, 210, 209, 212, 102, 214, 213, 102,
878
+ 216, 107, 107, 107, 107, 107, 107, 107,
879
+ 107, 107, 107, 107, 107, 107, 107, 107,
880
+ 107, 107, 107, 107, 107, 107, 107, 107,
881
+ 107, 107, 107, 107, 107, 107, 107, 107,
882
+ 217, 107, 219, 218, 107, 110, 107, 222,
883
+ 222, 222, 222, 222, 222, 222, 222, 222,
884
+ 222, 221, 221, 221, 221, 221, 221, 221,
885
+ 222, 222, 222, 222, 222, 222, 221, 221,
886
+ 221, 221, 221, 221, 221, 221, 221, 221,
887
+ 221, 221, 221, 221, 221, 221, 221, 221,
888
+ 221, 221, 221, 221, 221, 221, 221, 221,
889
+ 222, 222, 222, 222, 222, 222, 221, 224,
890
+ 223, 223, 223, 223, 223, 225, 223, 223,
891
+ 223, 226, 226, 226, 226, 226, 226, 226,
892
+ 226, 226, 223, 223, 227, 223, 126, 228,
893
+ 228, 228, 228, 228, 228, 228, 228, 127,
894
+ 127, 127, 127, 127, 127, 127, 127, 127,
895
+ 127, 228, 228, 228, 228, 228, 228, 228,
896
+ 127, 127, 127, 127, 127, 127, 127, 127,
897
+ 127, 127, 127, 127, 127, 127, 127, 127,
898
+ 127, 127, 127, 127, 127, 127, 127, 127,
899
+ 127, 127, 228, 228, 228, 228, 127, 228,
900
+ 127, 127, 127, 127, 127, 127, 127, 127,
901
+ 127, 127, 127, 127, 127, 127, 127, 127,
902
+ 127, 127, 127, 127, 127, 127, 127, 127,
903
+ 127, 127, 228, 128, 128, 128, 128, 128,
904
+ 128, 128, 128, 128, 228, 125, 228, 228,
905
+ 228, 228, 228, 228, 128, 128, 128, 128,
906
+ 128, 128, 128, 128, 128, 128, 228, 129,
907
+ 129, 129, 129, 129, 129, 129, 129, 129,
908
+ 129, 228, 228, 228, 228, 126, 228, 228,
909
+ 129, 129, 129, 129, 129, 129, 129, 129,
910
+ 129, 129, 129, 129, 129, 129, 129, 129,
911
+ 129, 129, 129, 129, 129, 129, 129, 129,
912
+ 129, 129, 228, 228, 228, 228, 129, 228,
913
+ 129, 129, 129, 129, 129, 129, 129, 129,
914
+ 129, 129, 129, 129, 129, 129, 129, 129,
915
+ 129, 129, 129, 129, 129, 129, 129, 129,
916
+ 129, 129, 228, 0
908
917
  ]
909
918
 
910
919
  class << self
@@ -912,35 +921,35 @@ class << self
912
921
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
913
922
  end
914
923
  self._re_scanner_trans_targs = [
915
- 113, 114, 3, 115, 5, 6, 116, 113,
916
- 7, 113, 113, 113, 9, 10, 113, 113,
917
- 113, 11, 113, 12, 113, 14, 20, 113,
918
- 15, 17, 19, 16, 18, 21, 23, 25,
919
- 22, 24, 0, 27, 26, 127, 29, 0,
920
- 30, 31, 129, 130, 130, 32, 130, 130,
921
- 130, 130, 36, 37, 130, 39, 40, 51,
922
- 55, 59, 63, 67, 71, 76, 80, 82,
923
- 85, 41, 48, 42, 46, 43, 44, 45,
924
- 130, 47, 49, 50, 52, 53, 54, 56,
925
- 57, 58, 60, 61, 62, 64, 65, 66,
926
- 68, 69, 70, 72, 74, 73, 75, 77,
927
- 78, 79, 81, 83, 84, 87, 88, 130,
928
- 141, 138, 138, 91, 138, 142, 138, 138,
929
- 94, 143, 96, 138, 98, 101, 99, 100,
930
- 138, 102, 103, 104, 105, 106, 107, 138,
931
- 144, 145, 145, 109, 110, 111, 112, 1,
932
- 2, 4, 117, 118, 119, 120, 121, 113,
933
- 122, 113, 123, 124, 113, 125, 113, 126,
934
- 113, 113, 113, 113, 113, 8, 113, 113,
935
- 113, 113, 113, 113, 113, 113, 113, 13,
936
- 113, 113, 128, 28, 131, 132, 133, 130,
937
- 134, 135, 136, 130, 130, 130, 130, 33,
938
- 130, 130, 34, 130, 130, 130, 35, 38,
939
- 86, 137, 137, 138, 138, 139, 139, 138,
940
- 89, 138, 92, 138, 138, 97, 108, 138,
941
- 140, 138, 138, 138, 138, 90, 138, 138,
942
- 93, 95, 138, 138, 138, 145, 146, 147,
943
- 148, 149, 145
924
+ 110, 111, 3, 112, 5, 6, 113, 110,
925
+ 7, 110, 110, 8, 110, 110, 9, 110,
926
+ 11, 110, 13, 19, 110, 14, 16, 18,
927
+ 15, 17, 20, 22, 24, 21, 23, 0,
928
+ 26, 25, 126, 28, 0, 29, 30, 128,
929
+ 129, 129, 31, 129, 129, 129, 129, 35,
930
+ 36, 129, 38, 39, 50, 54, 58, 62,
931
+ 66, 70, 75, 79, 81, 84, 40, 47,
932
+ 41, 45, 42, 43, 44, 129, 46, 48,
933
+ 49, 51, 52, 53, 55, 56, 57, 59,
934
+ 60, 61, 63, 64, 65, 67, 68, 69,
935
+ 71, 73, 72, 74, 76, 77, 78, 80,
936
+ 82, 83, 86, 87, 129, 89, 137, 140,
937
+ 137, 142, 92, 137, 143, 137, 145, 95,
938
+ 98, 96, 97, 137, 99, 100, 101, 102,
939
+ 103, 104, 137, 147, 148, 148, 106, 107,
940
+ 108, 109, 1, 2, 4, 114, 115, 116,
941
+ 117, 118, 110, 119, 110, 122, 123, 110,
942
+ 124, 110, 125, 110, 110, 110, 110, 110,
943
+ 120, 110, 121, 110, 10, 110, 110, 110,
944
+ 110, 110, 110, 110, 110, 110, 110, 12,
945
+ 110, 110, 127, 27, 130, 131, 132, 129,
946
+ 133, 134, 135, 129, 129, 129, 129, 32,
947
+ 129, 129, 33, 129, 129, 129, 34, 37,
948
+ 85, 136, 136, 137, 137, 138, 138, 137,
949
+ 88, 137, 91, 137, 137, 94, 105, 137,
950
+ 139, 137, 137, 137, 141, 137, 90, 137,
951
+ 144, 146, 137, 93, 137, 137, 137, 148,
952
+ 149, 150, 151, 152, 148
944
953
  ]
945
954
 
946
955
  class << self
@@ -949,34 +958,34 @@ class << self
949
958
  end
950
959
  self._re_scanner_trans_actions = [
951
960
  1, 2, 0, 2, 0, 0, 2, 3,
952
- 0, 4, 5, 6, 7, 0, 8, 9,
953
- 10, 0, 11, 0, 12, 0, 0, 13,
961
+ 0, 4, 5, 6, 7, 8, 0, 9,
962
+ 0, 10, 0, 0, 11, 0, 0, 0,
963
+ 0, 0, 0, 0, 0, 0, 0, 12,
964
+ 0, 0, 0, 0, 0, 0, 0, 14,
965
+ 15, 16, 0, 17, 18, 19, 20, 0,
966
+ 0, 21, 0, 0, 0, 0, 0, 0,
954
967
  0, 0, 0, 0, 0, 0, 0, 0,
955
- 0, 0, 14, 0, 0, 0, 0, 0,
956
- 0, 0, 16, 17, 18, 0, 19, 20,
957
- 21, 22, 0, 0, 23, 0, 0, 0,
968
+ 0, 0, 0, 0, 0, 22, 0, 0,
958
969
  0, 0, 0, 0, 0, 0, 0, 0,
959
970
  0, 0, 0, 0, 0, 0, 0, 0,
960
- 24, 0, 0, 0, 0, 0, 0, 0,
961
971
  0, 0, 0, 0, 0, 0, 0, 0,
972
+ 0, 0, 0, 0, 23, 0, 24, 0,
973
+ 25, 0, 0, 26, 0, 27, 0, 0,
974
+ 0, 0, 0, 28, 0, 0, 0, 0,
975
+ 0, 0, 29, 0, 30, 31, 0, 0,
962
976
  0, 0, 0, 0, 0, 0, 0, 0,
963
- 0, 0, 0, 0, 0, 0, 0, 25,
964
- 26, 27, 28, 0, 29, 26, 30, 31,
965
- 0, 26, 0, 32, 0, 0, 0, 0,
966
- 33, 0, 0, 0, 0, 0, 0, 34,
967
- 0, 35, 36, 0, 0, 0, 0, 0,
968
- 0, 0, 0, 0, 0, 0, 26, 39,
969
- 40, 41, 0, 0, 42, 0, 43, 26,
970
- 44, 45, 46, 47, 48, 49, 50, 51,
971
- 52, 53, 54, 55, 56, 57, 58, 0,
972
- 59, 60, 62, 0, 0, 26, 26, 63,
973
- 0, 26, 26, 64, 65, 66, 67, 0,
977
+ 0, 34, 35, 36, 37, 0, 0, 38,
978
+ 0, 39, 34, 40, 41, 42, 43, 44,
979
+ 45, 46, 0, 47, 0, 48, 49, 50,
980
+ 51, 52, 53, 54, 55, 56, 57, 0,
981
+ 58, 59, 61, 0, 0, 34, 34, 62,
982
+ 0, 34, 63, 64, 65, 66, 67, 0,
974
983
  68, 69, 0, 70, 71, 72, 0, 0,
975
984
  0, 73, 74, 75, 76, 77, 78, 79,
976
985
  0, 80, 0, 81, 82, 0, 0, 83,
977
- 0, 84, 85, 86, 87, 0, 88, 89,
978
- 0, 0, 90, 91, 92, 93, 26, 26,
979
- 26, 26, 94
986
+ 0, 84, 85, 86, 34, 87, 0, 88,
987
+ 34, 0, 89, 0, 90, 91, 92, 93,
988
+ 34, 34, 34, 34, 94
980
989
  ]
981
990
 
982
991
  class << self
@@ -997,12 +1006,13 @@ self._re_scanner_to_state_actions = [
997
1006
  0, 0, 0, 0, 0, 0, 0, 0,
998
1007
  0, 0, 0, 0, 0, 0, 0, 0,
999
1008
  0, 0, 0, 0, 0, 0, 0, 0,
1009
+ 0, 0, 0, 0, 0, 0, 32, 0,
1000
1010
  0, 0, 0, 0, 0, 0, 0, 0,
1001
- 0, 37, 0, 0, 0, 0, 0, 0,
1002
- 0, 0, 0, 0, 0, 0, 0, 0,
1003
- 61, 61, 61, 0, 0, 0, 0, 0,
1004
- 0, 61, 61, 0, 0, 0, 0, 0,
1005
- 0, 61, 0, 0, 0, 0
1011
+ 0, 0, 0, 0, 0, 0, 0, 60,
1012
+ 60, 60, 0, 0, 0, 0, 0, 0,
1013
+ 60, 60, 0, 0, 0, 0, 0, 0,
1014
+ 0, 0, 0, 0, 60, 0, 0, 0,
1015
+ 0
1006
1016
  ]
1007
1017
 
1008
1018
  class << self
@@ -1023,12 +1033,13 @@ self._re_scanner_from_state_actions = [
1023
1033
  0, 0, 0, 0, 0, 0, 0, 0,
1024
1034
  0, 0, 0, 0, 0, 0, 0, 0,
1025
1035
  0, 0, 0, 0, 0, 0, 0, 0,
1036
+ 0, 0, 0, 0, 0, 0, 33, 0,
1026
1037
  0, 0, 0, 0, 0, 0, 0, 0,
1027
- 0, 38, 0, 0, 0, 0, 0, 0,
1028
- 0, 0, 0, 0, 0, 0, 0, 0,
1029
- 38, 38, 38, 0, 0, 0, 0, 0,
1030
- 0, 38, 38, 0, 0, 0, 0, 0,
1031
- 0, 38, 0, 0, 0, 0
1038
+ 0, 0, 0, 0, 0, 0, 0, 33,
1039
+ 33, 33, 0, 0, 0, 0, 0, 0,
1040
+ 33, 33, 0, 0, 0, 0, 0, 0,
1041
+ 0, 0, 0, 0, 33, 0, 0, 0,
1042
+ 0
1032
1043
  ]
1033
1044
 
1034
1045
  class << self
@@ -1039,22 +1050,23 @@ self._re_scanner_eof_actions = [
1039
1050
  0, 0, 0, 0, 0, 0, 0, 0,
1040
1051
  0, 0, 0, 0, 0, 0, 0, 0,
1041
1052
  0, 0, 0, 0, 0, 0, 0, 0,
1042
- 0, 0, 14, 14, 15, 15, 15, 15,
1053
+ 0, 12, 12, 13, 13, 13, 13, 0,
1054
+ 0, 0, 0, 0, 0, 0, 0, 0,
1043
1055
  0, 0, 0, 0, 0, 0, 0, 0,
1044
1056
  0, 0, 0, 0, 0, 0, 0, 0,
1045
1057
  0, 0, 0, 0, 0, 0, 0, 0,
1046
1058
  0, 0, 0, 0, 0, 0, 0, 0,
1047
1059
  0, 0, 0, 0, 0, 0, 0, 0,
1048
1060
  0, 0, 0, 0, 0, 0, 0, 0,
1061
+ 12, 12, 0, 12, 12, 0, 12, 12,
1062
+ 12, 12, 12, 12, 12, 12, 12, 12,
1063
+ 12, 12, 0, 0, 0, 0, 0, 0,
1049
1064
  0, 0, 0, 0, 0, 0, 0, 0,
1050
- 0, 14, 0, 0, 14, 0, 0, 0,
1051
- 0, 14, 14, 14, 14, 14, 14, 14,
1052
- 14, 14, 14, 14, 14, 0, 0, 0,
1053
1065
  0, 0, 0, 0, 0, 0, 0, 0,
1066
+ 0, 12, 0, 0, 0, 0, 0, 0,
1067
+ 0, 12, 0, 0, 0, 0, 0, 0,
1054
1068
  0, 0, 0, 0, 0, 0, 0, 0,
1055
- 0, 0, 14, 0, 0, 0, 0, 0,
1056
- 0, 0, 14, 0, 0, 0, 0, 0,
1057
- 0, 0, 0, 0, 0, 0
1069
+ 0
1058
1070
  ]
1059
1071
 
1060
1072
  class << self
@@ -1063,34 +1075,35 @@ class << self
1063
1075
  end
1064
1076
  self._re_scanner_eof_trans = [
1065
1077
  0, 1, 1, 1, 1, 1, 1, 8,
1066
- 11, 11, 11, 11, 11, 21, 21, 21,
1067
- 21, 21, 21, 21, 21, 21, 21, 21,
1068
- 21, 21, 0, 0, 0, 0, 0, 0,
1069
- 44, 44, 47, 49, 49, 49, 49, 49,
1070
- 49, 49, 49, 49, 49, 49, 49, 49,
1071
- 49, 49, 49, 49, 49, 49, 49, 49,
1072
- 49, 49, 49, 49, 49, 49, 49, 49,
1073
- 49, 49, 49, 49, 49, 49, 49, 49,
1074
- 49, 49, 49, 49, 49, 49, 49, 49,
1075
- 49, 49, 49, 49, 49, 49, 49, 49,
1076
- 49, 0, 106, 106, 0, 111, 111, 111,
1077
- 111, 0, 0, 0, 0, 0, 0, 0,
1078
- 0, 0, 0, 0, 0, 130, 130, 130,
1079
- 130, 0, 155, 155, 155, 155, 156, 156,
1080
- 155, 155, 157, 159, 161, 163, 165, 169,
1081
- 0, 0, 0, 183, 183, 183, 183, 186,
1082
- 189, 0, 0, 208, 210, 212, 215, 215,
1083
- 219, 0, 227, 227, 227, 227
1078
+ 11, 11, 11, 11, 18, 18, 18, 18,
1079
+ 18, 18, 18, 18, 18, 18, 18, 18,
1080
+ 18, 0, 0, 0, 0, 0, 0, 41,
1081
+ 41, 44, 46, 46, 46, 46, 46, 46,
1082
+ 46, 46, 46, 46, 46, 46, 46, 46,
1083
+ 46, 46, 46, 46, 46, 46, 46, 46,
1084
+ 46, 46, 46, 46, 46, 46, 46, 46,
1085
+ 46, 46, 46, 46, 46, 46, 46, 46,
1086
+ 46, 46, 46, 46, 46, 46, 46, 46,
1087
+ 46, 46, 46, 46, 46, 46, 46, 46,
1088
+ 0, 0, 105, 0, 0, 110, 0, 0,
1089
+ 0, 0, 0, 0, 0, 0, 0, 0,
1090
+ 0, 0, 125, 125, 125, 125, 0, 150,
1091
+ 150, 150, 150, 151, 151, 150, 150, 152,
1092
+ 154, 154, 159, 161, 163, 165, 169, 0,
1093
+ 0, 0, 183, 183, 183, 183, 186, 189,
1094
+ 0, 0, 208, 210, 212, 212, 212, 216,
1095
+ 216, 216, 216, 221, 0, 229, 229, 229,
1096
+ 229
1084
1097
  ]
1085
1098
 
1086
1099
  class << self
1087
1100
  attr_accessor :re_scanner_start
1088
1101
  end
1089
- self.re_scanner_start = 113;
1102
+ self.re_scanner_start = 110;
1090
1103
  class << self
1091
1104
  attr_accessor :re_scanner_first_final
1092
1105
  end
1093
- self.re_scanner_first_final = 113;
1106
+ self.re_scanner_first_final = 110;
1094
1107
  class << self
1095
1108
  attr_accessor :re_scanner_error
1096
1109
  end
@@ -1099,36 +1112,36 @@ self.re_scanner_error = 0;
1099
1112
  class << self
1100
1113
  attr_accessor :re_scanner_en_char_type
1101
1114
  end
1102
- self.re_scanner_en_char_type = 128;
1115
+ self.re_scanner_en_char_type = 127;
1103
1116
  class << self
1104
1117
  attr_accessor :re_scanner_en_unicode_property
1105
1118
  end
1106
- self.re_scanner_en_unicode_property = 129;
1119
+ self.re_scanner_en_unicode_property = 128;
1107
1120
  class << self
1108
1121
  attr_accessor :re_scanner_en_character_set
1109
1122
  end
1110
- self.re_scanner_en_character_set = 130;
1123
+ self.re_scanner_en_character_set = 129;
1111
1124
  class << self
1112
1125
  attr_accessor :re_scanner_en_set_escape_sequence
1113
1126
  end
1114
- self.re_scanner_en_set_escape_sequence = 137;
1127
+ self.re_scanner_en_set_escape_sequence = 136;
1115
1128
  class << self
1116
1129
  attr_accessor :re_scanner_en_escape_sequence
1117
1130
  end
1118
- self.re_scanner_en_escape_sequence = 138;
1131
+ self.re_scanner_en_escape_sequence = 137;
1119
1132
  class << self
1120
1133
  attr_accessor :re_scanner_en_conditional_expression
1121
1134
  end
1122
- self.re_scanner_en_conditional_expression = 145;
1135
+ self.re_scanner_en_conditional_expression = 148;
1123
1136
  class << self
1124
1137
  attr_accessor :re_scanner_en_main
1125
1138
  end
1126
- self.re_scanner_en_main = 113;
1139
+ self.re_scanner_en_main = 110;
1127
1140
 
1128
1141
 
1129
- # line 808 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1142
+ # line 753 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1130
1143
 
1131
- # line 1131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1144
+ # line 1144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1132
1145
  begin
1133
1146
  p ||= 0
1134
1147
  pe ||= data.length
@@ -1139,9 +1152,9 @@ begin
1139
1152
  act = 0
1140
1153
  end
1141
1154
 
1142
- # line 809 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1155
+ # line 754 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1143
1156
 
1144
- # line 1144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1157
+ # line 1157 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1145
1158
  begin
1146
1159
  testEof = false
1147
1160
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1164,12 +1177,12 @@ begin
1164
1177
  end
1165
1178
  if _goto_level <= _resume
1166
1179
  case _re_scanner_from_state_actions[cs]
1167
- when 38 then
1180
+ when 33 then
1168
1181
  # line 1 "NONE"
1169
1182
  begin
1170
1183
  ts = p
1171
1184
  end
1172
- # line 1172 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1185
+ # line 1185 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1173
1186
  end
1174
1187
  _keys = cs << 1
1175
1188
  _inds = _re_scanner_index_offsets[cs]
@@ -1188,23 +1201,27 @@ ts = p
1188
1201
  cs = _re_scanner_trans_targs[_trans]
1189
1202
  if _re_scanner_trans_actions[_trans] != 0
1190
1203
  case _re_scanner_trans_actions[_trans]
1191
- when 14 then
1192
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1204
+ when 12 then
1205
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1193
1206
  begin
1194
1207
 
1195
1208
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
1196
1209
  raise PrematureEndError.new( text )
1197
1210
  end
1198
- when 7 then
1211
+ when 36 then
1199
1212
  # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1200
1213
  begin
1201
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
1202
- when 26 then
1214
+ self.group_depth = group_depth + 1 end
1215
+ when 6 then
1216
+ # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1217
+ begin
1218
+ self.group_depth = group_depth - 1 end
1219
+ when 34 then
1203
1220
  # line 1 "NONE"
1204
1221
  begin
1205
1222
  te = p+1
1206
1223
  end
1207
- when 62 then
1224
+ when 61 then
1208
1225
  # line 12 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/char_type.rl"
1209
1226
  begin
1210
1227
  te = p+1
@@ -1220,9 +1237,6 @@ te = p+1
1220
1237
  when '\W'; emit(:type, :nonword, text, ts - 1, te)
1221
1238
  when '\R'; emit(:type, :linebreak, text, ts - 1, te)
1222
1239
  when '\X'; emit(:type, :xgrapheme, text, ts - 1, te)
1223
- else
1224
- raise ScannerError.new(
1225
- "Unexpected character in type at #{text} (char #{ts})")
1226
1240
  end
1227
1241
  begin
1228
1242
  top -= 1
@@ -1233,7 +1247,7 @@ te = p+1
1233
1247
 
1234
1248
  end
1235
1249
  end
1236
- when 16 then
1250
+ when 14 then
1237
1251
  # line 16 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
1238
1252
  begin
1239
1253
  te = p+1
@@ -1257,65 +1271,8 @@ te = p+1
1257
1271
 
1258
1272
  end
1259
1273
  end
1260
- when 65 then
1261
- # line 149 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1262
- begin
1263
- te = p+1
1264
- begin
1265
- set_depth -= 1
1266
- in_set = set_depth > 0 ? true : false
1267
-
1268
- emit(:set, :close, *text(data, ts, te))
1269
-
1270
- if set_depth == 0
1271
- begin
1272
- cs = 113
1273
- _goto_level = _again
1274
- next
1275
- end
1276
-
1277
- else
1278
- begin
1279
- top -= 1
1280
- cs = stack[top]
1281
- _goto_level = _again
1282
- next
1283
- end
1284
-
1285
- end
1286
- end
1287
- end
1288
- when 70 then
1289
- # line 162 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1290
- begin
1291
- te = p+1
1292
- begin # special case, emits two tokens
1293
- set_depth -= 1
1294
- in_set = set_depth > 0 ? true : false
1295
-
1296
- emit(:literal, :literal, copy(data, ts..te-2), ts, te)
1297
- emit(:set, :close, copy(data, ts+1..te-1), ts, te)
1298
-
1299
- if set_depth == 0
1300
- begin
1301
- cs = 113
1302
- _goto_level = _again
1303
- next
1304
- end
1305
-
1306
- else
1307
- begin
1308
- top -= 1
1309
- cs = stack[top]
1310
- _goto_level = _again
1311
- next
1312
- end
1313
-
1314
- end
1315
- end
1316
- end
1317
- when 20 then
1318
- # line 176 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1274
+ when 18 then
1275
+ # line 171 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1319
1276
  begin
1320
1277
  te = p+1
1321
1278
  begin # special case, emits two tokens
@@ -1324,7 +1281,7 @@ te = p+1
1324
1281
  end
1325
1282
  end
1326
1283
  when 66 then
1327
- # line 181 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1284
+ # line 176 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1328
1285
  begin
1329
1286
  te = p+1
1330
1287
  begin
@@ -1337,7 +1294,7 @@ te = p+1
1337
1294
  end
1338
1295
  end
1339
1296
  when 68 then
1340
- # line 202 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1297
+ # line 197 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1341
1298
  begin
1342
1299
  te = p+1
1343
1300
  begin
@@ -1345,63 +1302,30 @@ te = p+1
1345
1302
  end
1346
1303
  end
1347
1304
  when 64 then
1348
- # line 206 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1305
+ # line 201 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1349
1306
  begin
1350
1307
  te = p+1
1351
1308
  begin
1352
1309
  begin
1353
1310
  stack[top] = cs
1354
1311
  top+= 1
1355
- cs = 137
1312
+ cs = 136
1356
1313
  _goto_level = _again
1357
1314
  next
1358
1315
  end
1359
1316
 
1360
1317
  end
1361
1318
  end
1362
- when 24 then
1363
- # line 217 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1364
- begin
1365
- te = p+1
1366
- begin
1367
- text = text(data, ts, te).first
1368
-
1369
- type = :posixclass
1370
- class_name = text[2..-3]
1371
- if class_name[0].chr == '^'
1372
- class_name = class_name[1..-1]
1373
- type = :nonposixclass
1374
- end
1375
-
1376
- emit(type, class_name.to_sym, text, ts, te)
1377
- end
1378
- end
1379
- when 23 then
1380
- # line 230 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1381
- begin
1382
- te = p+1
1383
- begin
1384
- emit(:set, :collation, *text(data, ts, te))
1385
- end
1386
- end
1387
- when 25 then
1388
- # line 234 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1389
- begin
1390
- te = p+1
1391
- begin
1392
- emit(:set, :equivalent, *text(data, ts, te))
1393
- end
1394
- end
1395
- when 63 then
1396
- # line 238 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1319
+ when 62 then
1320
+ # line 231 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1397
1321
  begin
1398
1322
  te = p+1
1399
1323
  begin
1400
1324
  emit(:literal, :literal, *text(data, ts, te))
1401
1325
  end
1402
1326
  end
1403
- when 18 then
1404
- # line 246 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1327
+ when 16 then
1328
+ # line 239 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1405
1329
  begin
1406
1330
  te = p+1
1407
1331
  begin
@@ -1411,7 +1335,7 @@ te = p+1
1411
1335
  end
1412
1336
  end
1413
1337
  when 69 then
1414
- # line 190 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1338
+ # line 185 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1415
1339
  begin
1416
1340
  te = p
1417
1341
  p = p - 1; begin
@@ -1425,17 +1349,15 @@ p = p - 1; begin
1425
1349
  end
1426
1350
  end
1427
1351
  when 72 then
1428
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1352
+ # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1429
1353
  begin
1430
1354
  te = p
1431
1355
  p = p - 1; begin
1432
- set_depth += 1
1433
-
1434
1356
  emit(:set, :open, *text(data, ts, te))
1435
1357
  begin
1436
1358
  stack[top] = cs
1437
1359
  top+= 1
1438
- cs = 130
1360
+ cs = 129
1439
1361
  _goto_level = _again
1440
1362
  next
1441
1363
  end
@@ -1443,7 +1365,7 @@ p = p - 1; begin
1443
1365
  end
1444
1366
  end
1445
1367
  when 67 then
1446
- # line 246 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1368
+ # line 239 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1447
1369
  begin
1448
1370
  te = p
1449
1371
  p = p - 1; begin
@@ -1452,8 +1374,8 @@ p = p - 1; begin
1452
1374
  emit(:literal, :literal, char, *rest)
1453
1375
  end
1454
1376
  end
1455
- when 19 then
1456
- # line 190 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1377
+ when 17 then
1378
+ # line 185 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1457
1379
  begin
1458
1380
  begin p = ((te))-1; end
1459
1381
  begin
@@ -1466,26 +1388,24 @@ p = p - 1; begin
1466
1388
  end
1467
1389
  end
1468
1390
  end
1469
- when 22 then
1470
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1391
+ when 20 then
1392
+ # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1471
1393
  begin
1472
1394
  begin p = ((te))-1; end
1473
1395
  begin
1474
- set_depth += 1
1475
-
1476
1396
  emit(:set, :open, *text(data, ts, te))
1477
1397
  begin
1478
1398
  stack[top] = cs
1479
1399
  top+= 1
1480
- cs = 130
1400
+ cs = 129
1481
1401
  _goto_level = _again
1482
1402
  next
1483
1403
  end
1484
1404
 
1485
1405
  end
1486
1406
  end
1487
- when 17 then
1488
- # line 246 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1407
+ when 15 then
1408
+ # line 239 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1489
1409
  begin
1490
1410
  begin p = ((te))-1; end
1491
1411
  begin
@@ -1495,7 +1415,7 @@ p = p - 1; begin
1495
1415
  end
1496
1416
  end
1497
1417
  when 74 then
1498
- # line 256 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1418
+ # line 249 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1499
1419
  begin
1500
1420
  te = p+1
1501
1421
  begin
@@ -1510,16 +1430,16 @@ te = p+1
1510
1430
  end
1511
1431
  end
1512
1432
  when 73 then
1513
- # line 261 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1433
+ # line 254 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1514
1434
  begin
1515
1435
  te = p+1
1516
1436
  begin
1517
1437
  p = p - 1;
1518
- cs = 130;
1438
+ cs = 129;
1519
1439
  begin
1520
1440
  stack[top] = cs
1521
1441
  top+= 1
1522
- cs = 138
1442
+ cs = 137
1523
1443
  _goto_level = _again
1524
1444
  next
1525
1445
  end
@@ -1527,7 +1447,7 @@ te = p+1
1527
1447
  end
1528
1448
  end
1529
1449
  when 79 then
1530
- # line 272 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1450
+ # line 265 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1531
1451
  begin
1532
1452
  te = p+1
1533
1453
  begin
@@ -1543,7 +1463,7 @@ te = p+1
1543
1463
  end
1544
1464
  end
1545
1465
  when 85 then
1546
- # line 278 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1466
+ # line 271 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1547
1467
  begin
1548
1468
  te = p+1
1549
1469
  begin
@@ -1558,7 +1478,7 @@ te = p+1
1558
1478
  end
1559
1479
  end
1560
1480
  when 76 then
1561
- # line 283 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1481
+ # line 276 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1562
1482
  begin
1563
1483
  te = p+1
1564
1484
  begin
@@ -1589,7 +1509,7 @@ te = p+1
1589
1509
  end
1590
1510
  end
1591
1511
  when 82 then
1592
- # line 304 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1512
+ # line 297 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1593
1513
  begin
1594
1514
  te = p+1
1595
1515
  begin
@@ -1614,8 +1534,8 @@ te = p+1
1614
1534
 
1615
1535
  end
1616
1536
  end
1617
- when 33 then
1618
- # line 320 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1537
+ when 28 then
1538
+ # line 313 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1619
1539
  begin
1620
1540
  te = p+1
1621
1541
  begin
@@ -1635,7 +1555,7 @@ te = p+1
1635
1555
  end
1636
1556
  end
1637
1557
  when 92 then
1638
- # line 330 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1558
+ # line 323 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1639
1559
  begin
1640
1560
  te = p+1
1641
1561
  begin
@@ -1649,22 +1569,12 @@ te = p+1
1649
1569
 
1650
1570
  end
1651
1571
  end
1652
- when 29 then
1653
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1572
+ when 24 then
1573
+ # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1654
1574
  begin
1655
1575
  te = p+1
1656
1576
  begin
1657
- if data[te]
1658
- c = data[te].chr
1659
- if c =~ /[\x00-\x7F]/
1660
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
1661
- p += 1
1662
- else
1663
- raise InvalidSequenceError.new("control sequence")
1664
- end
1665
- else
1666
- raise PrematureEndError.new("control sequence")
1667
- end
1577
+ emit_meta_control_sequence(data, ts, te, :control)
1668
1578
  begin
1669
1579
  top -= 1
1670
1580
  cs = stack[top]
@@ -1674,22 +1584,12 @@ te = p+1
1674
1584
 
1675
1585
  end
1676
1586
  end
1677
- when 32 then
1678
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1587
+ when 26 then
1588
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1679
1589
  begin
1680
1590
  te = p+1
1681
1591
  begin
1682
- if data[te]
1683
- c = data[te].chr
1684
- if c =~ /[\x00-\x7F]/
1685
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
1686
- p += 1
1687
- else
1688
- raise InvalidSequenceError.new("meta sequence")
1689
- end
1690
- else
1691
- raise PrematureEndError.new("meta sequence")
1692
- end
1592
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
1693
1593
  begin
1694
1594
  top -= 1
1695
1595
  cs = stack[top]
@@ -1700,16 +1600,16 @@ te = p+1
1700
1600
  end
1701
1601
  end
1702
1602
  when 80 then
1703
- # line 369 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1603
+ # line 342 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1704
1604
  begin
1705
1605
  te = p+1
1706
1606
  begin
1707
1607
  p = p - 1;
1708
- cs = ((in_set ? 130 : 113));
1608
+ cs = ((in_set? ? 129 : 110));
1709
1609
  begin
1710
1610
  stack[top] = cs
1711
1611
  top+= 1
1712
- cs = 128
1612
+ cs = 127
1713
1613
  _goto_level = _again
1714
1614
  next
1715
1615
  end
@@ -1717,16 +1617,16 @@ te = p+1
1717
1617
  end
1718
1618
  end
1719
1619
  when 81 then
1720
- # line 375 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1620
+ # line 348 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1721
1621
  begin
1722
1622
  te = p+1
1723
1623
  begin
1724
1624
  p = p - 1;
1725
- cs = ((in_set ? 130 : 113));
1625
+ cs = ((in_set? ? 129 : 110));
1726
1626
  begin
1727
1627
  stack[top] = cs
1728
1628
  top+= 1
1729
- cs = 129
1629
+ cs = 128
1730
1630
  _goto_level = _again
1731
1631
  next
1732
1632
  end
@@ -1734,7 +1634,7 @@ te = p+1
1734
1634
  end
1735
1635
  end
1736
1636
  when 75 then
1737
- # line 381 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1637
+ # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1738
1638
  begin
1739
1639
  te = p+1
1740
1640
  begin
@@ -1749,7 +1649,7 @@ te = p+1
1749
1649
  end
1750
1650
  end
1751
1651
  when 84 then
1752
- # line 278 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1652
+ # line 271 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1753
1653
  begin
1754
1654
  te = p
1755
1655
  p = p - 1; begin
@@ -1764,7 +1664,7 @@ p = p - 1; begin
1764
1664
  end
1765
1665
  end
1766
1666
  when 91 then
1767
- # line 330 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1667
+ # line 323 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1768
1668
  begin
1769
1669
  te = p
1770
1670
  p = p - 1; begin
@@ -1779,21 +1679,11 @@ p = p - 1; begin
1779
1679
  end
1780
1680
  end
1781
1681
  when 87 then
1782
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1682
+ # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1783
1683
  begin
1784
1684
  te = p
1785
1685
  p = p - 1; begin
1786
- if data[te]
1787
- c = data[te].chr
1788
- if c =~ /[\x00-\x7F]/
1789
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
1790
- p += 1
1791
- else
1792
- raise InvalidSequenceError.new("control sequence")
1793
- end
1794
- else
1795
- raise PrematureEndError.new("control sequence")
1796
- end
1686
+ emit_meta_control_sequence(data, ts, te, :control)
1797
1687
  begin
1798
1688
  top -= 1
1799
1689
  cs = stack[top]
@@ -1804,71 +1694,11 @@ p = p - 1; begin
1804
1694
  end
1805
1695
  end
1806
1696
  when 89 then
1807
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1697
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1808
1698
  begin
1809
1699
  te = p
1810
1700
  p = p - 1; begin
1811
- if data[te]
1812
- c = data[te].chr
1813
- if c =~ /[\x00-\x7F]/
1814
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
1815
- p += 1
1816
- else
1817
- raise InvalidSequenceError.new("meta sequence")
1818
- end
1819
- else
1820
- raise PrematureEndError.new("meta sequence")
1821
- end
1822
- begin
1823
- top -= 1
1824
- cs = stack[top]
1825
- _goto_level = _again
1826
- next
1827
- end
1828
-
1829
- end
1830
- end
1831
- when 28 then
1832
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1833
- begin
1834
- begin p = ((te))-1; end
1835
- begin
1836
- if data[te]
1837
- c = data[te].chr
1838
- if c =~ /[\x00-\x7F]/
1839
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
1840
- p += 1
1841
- else
1842
- raise InvalidSequenceError.new("control sequence")
1843
- end
1844
- else
1845
- raise PrematureEndError.new("control sequence")
1846
- end
1847
- begin
1848
- top -= 1
1849
- cs = stack[top]
1850
- _goto_level = _again
1851
- next
1852
- end
1853
-
1854
- end
1855
- end
1856
- when 31 then
1857
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1858
- begin
1859
- begin p = ((te))-1; end
1860
- begin
1861
- if data[te]
1862
- c = data[te].chr
1863
- if c =~ /[\x00-\x7F]/
1864
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
1865
- p += 1
1866
- else
1867
- raise InvalidSequenceError.new("meta sequence")
1868
- end
1869
- else
1870
- raise PrematureEndError.new("meta sequence")
1871
- end
1701
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
1872
1702
  begin
1873
1703
  top -= 1
1874
1704
  cs = stack[top]
@@ -1909,8 +1739,8 @@ p = p - 1; begin
1909
1739
  end
1910
1740
  end
1911
1741
  end
1912
- when 36 then
1913
- # line 391 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1742
+ when 31 then
1743
+ # line 364 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1914
1744
  begin
1915
1745
  te = p+1
1916
1746
  begin
@@ -1920,7 +1750,7 @@ te = p+1
1920
1750
  end
1921
1751
  end
1922
1752
  when 93 then
1923
- # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1753
+ # line 370 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1924
1754
  begin
1925
1755
  te = p+1
1926
1756
  begin
@@ -1928,7 +1758,7 @@ te = p+1
1928
1758
  begin
1929
1759
  stack[top] = cs
1930
1760
  top+= 1
1931
- cs = 113
1761
+ cs = 110
1932
1762
  _goto_level = _again
1933
1763
  next
1934
1764
  end
@@ -1936,7 +1766,7 @@ te = p+1
1936
1766
  end
1937
1767
  end
1938
1768
  when 94 then
1939
- # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1769
+ # line 370 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1940
1770
  begin
1941
1771
  te = p
1942
1772
  p = p - 1; begin
@@ -1944,15 +1774,15 @@ p = p - 1; begin
1944
1774
  begin
1945
1775
  stack[top] = cs
1946
1776
  top+= 1
1947
- cs = 113
1777
+ cs = 110
1948
1778
  _goto_level = _again
1949
1779
  next
1950
1780
  end
1951
1781
 
1952
1782
  end
1953
1783
  end
1954
- when 35 then
1955
- # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1784
+ when 30 then
1785
+ # line 370 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1956
1786
  begin
1957
1787
  begin p = ((te))-1; end
1958
1788
  begin
@@ -1960,60 +1790,59 @@ p = p - 1; begin
1960
1790
  begin
1961
1791
  stack[top] = cs
1962
1792
  top+= 1
1963
- cs = 113
1793
+ cs = 110
1964
1794
  _goto_level = _again
1965
1795
  next
1966
1796
  end
1967
1797
 
1968
1798
  end
1969
1799
  end
1970
- when 42 then
1971
- # line 410 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1800
+ when 38 then
1801
+ # line 383 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1972
1802
  begin
1973
1803
  te = p+1
1974
1804
  begin
1975
1805
  emit(:meta, :dot, *text(data, ts, te))
1976
1806
  end
1977
1807
  end
1978
- when 45 then
1979
- # line 414 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1808
+ when 41 then
1809
+ # line 387 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1980
1810
  begin
1981
1811
  te = p+1
1982
1812
  begin
1983
- if in_conditional and conditional_stack.length > 0 and
1984
- conditional_stack.last[1] == group_depth
1813
+ if conditional_stack.last == group_depth
1985
1814
  emit(:conditional, :separator, *text(data, ts, te))
1986
1815
  else
1987
1816
  emit(:meta, :alternation, *text(data, ts, te))
1988
1817
  end
1989
1818
  end
1990
1819
  end
1991
- when 44 then
1992
- # line 425 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1820
+ when 40 then
1821
+ # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1993
1822
  begin
1994
1823
  te = p+1
1995
1824
  begin
1996
1825
  emit(:anchor, :bol, *text(data, ts, te))
1997
1826
  end
1998
1827
  end
1999
- when 39 then
2000
- # line 429 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1828
+ when 35 then
1829
+ # line 401 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2001
1830
  begin
2002
1831
  te = p+1
2003
1832
  begin
2004
1833
  emit(:anchor, :eol, *text(data, ts, te))
2005
1834
  end
2006
1835
  end
2007
- when 58 then
2008
- # line 433 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1836
+ when 57 then
1837
+ # line 405 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2009
1838
  begin
2010
1839
  te = p+1
2011
1840
  begin
2012
1841
  emit(:keep, :mark, *text(data, ts, te))
2013
1842
  end
2014
1843
  end
2015
- when 57 then
2016
- # line 437 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1844
+ when 56 then
1845
+ # line 409 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2017
1846
  begin
2018
1847
  te = p+1
2019
1848
  begin
@@ -2024,64 +1853,44 @@ te = p+1
2024
1853
  when '\\b'; emit(:anchor, :word_boundary, text, ts, te)
2025
1854
  when '\\B'; emit(:anchor, :nonword_boundary, text, ts, te)
2026
1855
  when '\\G'; emit(:anchor, :match_start, text, ts, te)
2027
- else
2028
- raise ScannerError.new(
2029
- "Unexpected character in anchor at #{text} (char #{ts})")
2030
1856
  end
2031
1857
  end
2032
1858
  end
2033
- when 43 then
2034
- # line 453 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2035
- begin
2036
- te = p+1
2037
- begin
2038
- set_depth += 1
2039
- in_set = true
2040
-
2041
- emit(:set, :open, *text(data, ts, te))
2042
- begin
2043
- stack[top] = cs
2044
- top+= 1
2045
- cs = 130
2046
- _goto_level = _again
2047
- next
2048
- end
2049
-
2050
- end
2051
- end
2052
- when 8 then
2053
- # line 465 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1859
+ when 47 then
1860
+ # line 431 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2054
1861
  begin
2055
1862
  te = p+1
2056
1863
  begin
2057
1864
  text = text(data, ts, te).first
2058
1865
 
2059
- in_conditional = true unless in_conditional
2060
- conditional_depth += 1
2061
- conditional_stack << [conditional_depth, group_depth]
1866
+ conditional_stack << group_depth
2062
1867
 
2063
1868
  emit(:conditional, :open, text[0..-2], ts, te-1)
2064
1869
  emit(:conditional, :condition_open, '(', te-1, te)
2065
1870
  begin
2066
1871
  stack[top] = cs
2067
1872
  top+= 1
2068
- cs = 145
1873
+ cs = 148
2069
1874
  _goto_level = _again
2070
1875
  next
2071
1876
  end
2072
1877
 
2073
1878
  end
2074
1879
  end
2075
- when 9 then
2076
- # line 498 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1880
+ when 48 then
1881
+ # line 462 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2077
1882
  begin
2078
1883
  te = p+1
2079
1884
  begin
2080
- p = scan_options(p, data, ts, te)
1885
+ text = text(data, ts, te).first
1886
+ if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1887
+ raise InvalidGroupOption.new($1 || "-#{$2}", text)
1888
+ end
1889
+ emit_options(text, ts, te)
2081
1890
  end
2082
1891
  end
2083
- when 6 then
2084
- # line 508 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1892
+ when 9 then
1893
+ # line 476 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2085
1894
  begin
2086
1895
  te = p+1
2087
1896
  begin
@@ -2093,8 +1902,8 @@ te = p+1
2093
1902
  end
2094
1903
  end
2095
1904
  end
2096
- when 10 then
2097
- # line 525 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1905
+ when 8 then
1906
+ # line 493 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2098
1907
  begin
2099
1908
  te = p+1
2100
1909
  begin
@@ -2103,33 +1912,26 @@ te = p+1
2103
1912
  when '(?>'; emit(:group, :atomic, text, ts, te)
2104
1913
  when '(?~'; emit(:group, :absence, text, ts, te)
2105
1914
 
2106
- when /^\(\?<(\w*)>/
2107
- empty_name_error(:group, 'named group (ab)') if $1.empty?
1915
+ when /^\(\?(?:<>|'')/
1916
+ validation_error(:group, 'named group', 'name is empty')
2108
1917
 
1918
+ when /^\(\?<\w*>/
2109
1919
  emit(:group, :named_ab, text, ts, te)
2110
1920
 
2111
- when /^\(\?'(\w*)'/
2112
- empty_name_error(:group, 'named group (sq)') if $1.empty?
2113
-
1921
+ when /^\(\?'\w*'/
2114
1922
  emit(:group, :named_sq, text, ts, te)
2115
1923
 
2116
- else
2117
- raise ScannerError.new(
2118
- "Unknown subexpression group format '#{text}'")
2119
1924
  end
2120
1925
  end
2121
1926
  end
2122
- when 13 then
2123
- # line 577 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1927
+ when 11 then
1928
+ # line 534 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2124
1929
  begin
2125
1930
  te = p+1
2126
1931
  begin
2127
1932
  case text = text(data, ts, te).first
2128
- when /^\\([gk])<>/ # angle brackets
2129
- empty_backref_error("ref/call (ab)")
2130
-
2131
- when /^\\([gk])''/ # single quotes
2132
- empty_backref_error("ref/call (sq)")
1933
+ when /^\\([gk])(<>|'')/ # angle brackets
1934
+ validation_error(:backref, 'ref/call', 'ref ID is empty')
2133
1935
 
2134
1936
  when /^\\([gk])<[^\d+-]\w*>/ # angle-brackets
2135
1937
  if $1 == 'k'
@@ -2185,14 +1987,11 @@ te = p+1
2185
1987
  when /^\\([gk])'[+\-]?\d+[+\-]\d+'/ # single-quotes
2186
1988
  emit(:backref, :number_recursion_ref_sq, text, ts, te)
2187
1989
 
2188
- else
2189
- raise ScannerError.new(
2190
- "Unknown backreference format '#{text}'")
2191
1990
  end
2192
1991
  end
2193
1992
  end
2194
- when 55 then
2195
- # line 648 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1993
+ when 54 then
1994
+ # line 599 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2196
1995
  begin
2197
1996
  te = p+1
2198
1997
  begin
@@ -2203,8 +2002,8 @@ te = p+1
2203
2002
  end
2204
2003
  end
2205
2004
  end
2206
- when 51 then
2207
- # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2005
+ when 50 then
2006
+ # line 607 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2208
2007
  begin
2209
2008
  te = p+1
2210
2009
  begin
@@ -2215,8 +2014,8 @@ te = p+1
2215
2014
  end
2216
2015
  end
2217
2016
  end
2218
- when 53 then
2219
- # line 664 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2017
+ when 52 then
2018
+ # line 615 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2220
2019
  begin
2221
2020
  te = p+1
2222
2021
  begin
@@ -2227,8 +2026,8 @@ te = p+1
2227
2026
  end
2228
2027
  end
2229
2028
  end
2230
- when 60 then
2231
- # line 672 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2029
+ when 59 then
2030
+ # line 623 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2232
2031
  begin
2233
2032
  te = p+1
2234
2033
  begin
@@ -2236,7 +2035,7 @@ te = p+1
2236
2035
  end
2237
2036
  end
2238
2037
  when 4 then
2239
- # line 682 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2038
+ # line 633 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2240
2039
  begin
2241
2040
  te = p+1
2242
2041
  begin
@@ -2247,8 +2046,20 @@ te = p+1
2247
2046
  end
2248
2047
  end
2249
2048
  end
2250
- when 48 then
2251
- # line 547 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2049
+ when 46 then
2050
+ # line 462 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2051
+ begin
2052
+ te = p
2053
+ p = p - 1; begin
2054
+ text = text(data, ts, te).first
2055
+ if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2056
+ raise InvalidGroupOption.new($1 || "-#{$2}", text)
2057
+ end
2058
+ emit_options(text, ts, te)
2059
+ end
2060
+ end
2061
+ when 44 then
2062
+ # line 511 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2252
2063
  begin
2253
2064
  te = p
2254
2065
  p = p - 1; begin
@@ -2256,8 +2067,8 @@ p = p - 1; begin
2256
2067
  emit(:group, :capture, text, ts, te)
2257
2068
  end
2258
2069
  end
2259
- when 54 then
2260
- # line 648 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2070
+ when 53 then
2071
+ # line 599 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2261
2072
  begin
2262
2073
  te = p
2263
2074
  p = p - 1; begin
@@ -2268,8 +2079,8 @@ p = p - 1; begin
2268
2079
  end
2269
2080
  end
2270
2081
  end
2271
- when 50 then
2272
- # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2082
+ when 49 then
2083
+ # line 607 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2273
2084
  begin
2274
2085
  te = p
2275
2086
  p = p - 1; begin
@@ -2280,8 +2091,8 @@ p = p - 1; begin
2280
2091
  end
2281
2092
  end
2282
2093
  end
2283
- when 52 then
2284
- # line 664 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2094
+ when 51 then
2095
+ # line 615 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2285
2096
  begin
2286
2097
  te = p
2287
2098
  p = p - 1; begin
@@ -2292,31 +2103,31 @@ p = p - 1; begin
2292
2103
  end
2293
2104
  end
2294
2105
  end
2295
- when 59 then
2296
- # line 672 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2106
+ when 58 then
2107
+ # line 623 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2297
2108
  begin
2298
2109
  te = p
2299
2110
  p = p - 1; begin
2300
2111
  emit(:quantifier, :interval, *text(data, ts, te))
2301
2112
  end
2302
2113
  end
2303
- when 56 then
2304
- # line 678 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2114
+ when 55 then
2115
+ # line 629 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2305
2116
  begin
2306
2117
  te = p
2307
2118
  p = p - 1; begin
2308
2119
  begin
2309
2120
  stack[top] = cs
2310
2121
  top+= 1
2311
- cs = 138
2122
+ cs = 137
2312
2123
  _goto_level = _again
2313
2124
  next
2314
2125
  end
2315
2126
 
2316
2127
  end
2317
2128
  end
2318
- when 47 then
2319
- # line 690 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2129
+ when 43 then
2130
+ # line 641 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2320
2131
  begin
2321
2132
  te = p
2322
2133
  p = p - 1; begin
@@ -2327,8 +2138,8 @@ p = p - 1; begin
2327
2138
  end
2328
2139
  end
2329
2140
  end
2330
- when 46 then
2331
- # line 705 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2141
+ when 42 then
2142
+ # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2332
2143
  begin
2333
2144
  te = p
2334
2145
  p = p - 1; begin
@@ -2336,23 +2147,26 @@ p = p - 1; begin
2336
2147
  end
2337
2148
  end
2338
2149
  when 5 then
2339
- # line 547 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2150
+ # line 462 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2340
2151
  begin
2341
2152
  begin p = ((te))-1; end
2342
2153
  begin
2343
2154
  text = text(data, ts, te).first
2344
- emit(:group, :capture, text, ts, te)
2155
+ if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2156
+ raise InvalidGroupOption.new($1 || "-#{$2}", text)
2157
+ end
2158
+ emit_options(text, ts, te)
2345
2159
  end
2346
2160
  end
2347
- when 12 then
2348
- # line 678 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2161
+ when 10 then
2162
+ # line 629 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2349
2163
  begin
2350
2164
  begin p = ((te))-1; end
2351
2165
  begin
2352
2166
  begin
2353
2167
  stack[top] = cs
2354
2168
  top+= 1
2355
- cs = 138
2169
+ cs = 137
2356
2170
  _goto_level = _again
2357
2171
  next
2358
2172
  end
@@ -2360,7 +2174,7 @@ p = p - 1; begin
2360
2174
  end
2361
2175
  end
2362
2176
  when 3 then
2363
- # line 705 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2177
+ # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2364
2178
  begin
2365
2179
  begin p = ((te))-1; end
2366
2180
  begin
@@ -2386,47 +2200,43 @@ end
2386
2200
  end
2387
2201
  end
2388
2202
  when 71 then
2389
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2203
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2390
2204
  begin
2391
2205
 
2392
2206
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2393
2207
  raise PrematureEndError.new( text )
2394
2208
  end
2395
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2209
+ # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2396
2210
  begin
2397
2211
  te = p
2398
2212
  p = p - 1; begin
2399
- set_depth += 1
2400
-
2401
2213
  emit(:set, :open, *text(data, ts, te))
2402
2214
  begin
2403
2215
  stack[top] = cs
2404
2216
  top+= 1
2405
- cs = 130
2217
+ cs = 129
2406
2218
  _goto_level = _again
2407
2219
  next
2408
2220
  end
2409
2221
 
2410
2222
  end
2411
2223
  end
2412
- when 21 then
2413
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2224
+ when 19 then
2225
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2414
2226
  begin
2415
2227
 
2416
2228
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2417
2229
  raise PrematureEndError.new( text )
2418
2230
  end
2419
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2231
+ # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2420
2232
  begin
2421
2233
  begin p = ((te))-1; end
2422
2234
  begin
2423
- set_depth += 1
2424
-
2425
2235
  emit(:set, :open, *text(data, ts, te))
2426
2236
  begin
2427
2237
  stack[top] = cs
2428
2238
  top+= 1
2429
- cs = 130
2239
+ cs = 129
2430
2240
  _goto_level = _again
2431
2241
  next
2432
2242
  end
@@ -2434,13 +2244,13 @@ p = p - 1; begin
2434
2244
  end
2435
2245
  end
2436
2246
  when 90 then
2437
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2247
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2438
2248
  begin
2439
2249
 
2440
2250
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2441
2251
  raise PrematureEndError.new( text )
2442
2252
  end
2443
- # line 330 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2253
+ # line 323 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2444
2254
  begin
2445
2255
  te = p
2446
2256
  p = p - 1; begin
@@ -2455,27 +2265,17 @@ p = p - 1; begin
2455
2265
  end
2456
2266
  end
2457
2267
  when 86 then
2458
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2268
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2459
2269
  begin
2460
2270
 
2461
2271
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2462
2272
  raise PrematureEndError.new( text )
2463
2273
  end
2464
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2274
+ # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2465
2275
  begin
2466
2276
  te = p
2467
2277
  p = p - 1; begin
2468
- if data[te]
2469
- c = data[te].chr
2470
- if c =~ /[\x00-\x7F]/
2471
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
2472
- p += 1
2473
- else
2474
- raise InvalidSequenceError.new("control sequence")
2475
- end
2476
- else
2477
- raise PrematureEndError.new("control sequence")
2478
- end
2278
+ emit_meta_control_sequence(data, ts, te, :control)
2479
2279
  begin
2480
2280
  top -= 1
2481
2281
  cs = stack[top]
@@ -2486,27 +2286,17 @@ p = p - 1; begin
2486
2286
  end
2487
2287
  end
2488
2288
  when 88 then
2489
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2289
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2490
2290
  begin
2491
2291
 
2492
2292
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2493
2293
  raise PrematureEndError.new( text )
2494
2294
  end
2495
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2295
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2496
2296
  begin
2497
2297
  te = p
2498
2298
  p = p - 1; begin
2499
- if data[te]
2500
- c = data[te].chr
2501
- if c =~ /[\x00-\x7F]/
2502
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
2503
- p += 1
2504
- else
2505
- raise InvalidSequenceError.new("meta sequence")
2506
- end
2507
- else
2508
- raise PrematureEndError.new("meta sequence")
2509
- end
2299
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
2510
2300
  begin
2511
2301
  top -= 1
2512
2302
  cs = stack[top]
@@ -2516,28 +2306,18 @@ p = p - 1; begin
2516
2306
 
2517
2307
  end
2518
2308
  end
2519
- when 27 then
2520
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2309
+ when 25 then
2310
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2521
2311
  begin
2522
2312
 
2523
2313
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2524
2314
  raise PrematureEndError.new( text )
2525
2315
  end
2526
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2316
+ # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2527
2317
  begin
2528
2318
  begin p = ((te))-1; end
2529
2319
  begin
2530
- if data[te]
2531
- c = data[te].chr
2532
- if c =~ /[\x00-\x7F]/
2533
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
2534
- p += 1
2535
- else
2536
- raise InvalidSequenceError.new("control sequence")
2537
- end
2538
- else
2539
- raise PrematureEndError.new("control sequence")
2540
- end
2320
+ emit_meta_control_sequence(data, ts, te, :control)
2541
2321
  begin
2542
2322
  top -= 1
2543
2323
  cs = stack[top]
@@ -2547,28 +2327,18 @@ p = p - 1; begin
2547
2327
 
2548
2328
  end
2549
2329
  end
2550
- when 30 then
2551
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2330
+ when 27 then
2331
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2552
2332
  begin
2553
2333
 
2554
2334
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2555
2335
  raise PrematureEndError.new( text )
2556
2336
  end
2557
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2337
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2558
2338
  begin
2559
2339
  begin p = ((te))-1; end
2560
2340
  begin
2561
- if data[te]
2562
- c = data[te].chr
2563
- if c =~ /[\x00-\x7F]/
2564
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
2565
- p += 1
2566
- else
2567
- raise InvalidSequenceError.new("meta sequence")
2568
- end
2569
- else
2570
- raise PrematureEndError.new("meta sequence")
2571
- end
2341
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
2572
2342
  begin
2573
2343
  top -= 1
2574
2344
  cs = stack[top]
@@ -2578,14 +2348,14 @@ p = p - 1; begin
2578
2348
 
2579
2349
  end
2580
2350
  end
2581
- when 34 then
2582
- # line 136 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2351
+ when 29 then
2352
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2583
2353
  begin
2584
2354
 
2585
2355
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2586
- raise InvalidSequenceError.new('sequence', text)
2356
+ validation_error(:sequence, 'sequence', text)
2587
2357
  end
2588
- # line 335 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2358
+ # line 328 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2589
2359
  begin
2590
2360
  te = p+1
2591
2361
  begin
@@ -2598,46 +2368,32 @@ te = p+1
2598
2368
 
2599
2369
  end
2600
2370
  end
2601
- when 49 then
2602
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2603
- begin
2604
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
2605
- # line 142 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2606
- begin
2607
- self.group_depth = group_depth + 1; in_group = true end
2608
- when 11 then
2609
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2371
+ when 7 then
2372
+ # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2610
2373
  begin
2611
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
2612
- # line 483 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2374
+ self.group_depth = group_depth - 1 end
2375
+ # line 447 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2613
2376
  begin
2614
2377
  te = p+1
2615
2378
  begin
2616
2379
  emit(:group, :comment, *text(data, ts, te))
2617
2380
  end
2618
2381
  end
2619
- when 41 then
2620
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2382
+ when 37 then
2383
+ # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2621
2384
  begin
2622
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
2623
- # line 552 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2385
+ self.group_depth = group_depth - 1 end
2386
+ # line 516 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2624
2387
  begin
2625
2388
  te = p+1
2626
2389
  begin
2627
- if in_conditional and conditional_stack.last and
2628
- conditional_stack.last[1] == (group_depth + 1)
2629
-
2630
- emit(:conditional, :close, *text(data, ts, te))
2390
+ if conditional_stack.last == group_depth + 1
2631
2391
  conditional_stack.pop
2632
-
2633
- if conditional_stack.length == 0
2634
- in_conditional = false
2635
- end
2392
+ emit(:conditional, :close, *text(data, ts, te))
2636
2393
  else
2637
- if spacing_stack.length > 1 and
2638
- spacing_stack.last[:depth] == (group_depth + 1)
2394
+ if spacing_stack.length > 1 &&
2395
+ spacing_stack.last[:depth] == group_depth + 1
2639
2396
  spacing_stack.pop
2640
-
2641
2397
  self.free_spacing = spacing_stack.last[:free_spacing]
2642
2398
  end
2643
2399
 
@@ -2645,20 +2401,136 @@ te = p+1
2645
2401
  end
2646
2402
  end
2647
2403
  end
2648
- when 40 then
2404
+ when 39 then
2405
+ # line 145 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2406
+ begin
2407
+ self.set_depth = set_depth + 1 end
2408
+ # line 422 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2409
+ begin
2410
+ te = p+1
2411
+ begin
2412
+ emit(:set, :open, *text(data, ts, te))
2413
+ begin
2414
+ stack[top] = cs
2415
+ top+= 1
2416
+ cs = 129
2417
+ _goto_level = _again
2418
+ next
2419
+ end
2420
+
2421
+ end
2422
+ end
2423
+ when 65 then
2424
+ # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2425
+ begin
2426
+ self.set_depth = set_depth - 1 end
2427
+ # line 152 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2428
+ begin
2429
+ te = p+1
2430
+ begin
2431
+ emit(:set, :close, *text(data, ts, te))
2432
+ if in_set?
2433
+ begin
2434
+ top -= 1
2435
+ cs = stack[top]
2436
+ _goto_level = _again
2437
+ next
2438
+ end
2439
+
2440
+ else
2441
+ begin
2442
+ cs = 110
2443
+ _goto_level = _again
2444
+ next
2445
+ end
2446
+
2447
+ end
2448
+ end
2449
+ end
2450
+ when 70 then
2451
+ # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2452
+ begin
2453
+ self.set_depth = set_depth - 1 end
2454
+ # line 161 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2455
+ begin
2456
+ te = p+1
2457
+ begin # special case, emits two tokens
2458
+ emit(:literal, :literal, copy(data, ts..te-2), ts, te - 1)
2459
+ emit(:set, :close, copy(data, ts+1..te-1), ts + 1, te)
2460
+ if in_set?
2461
+ begin
2462
+ top -= 1
2463
+ cs = stack[top]
2464
+ _goto_level = _again
2465
+ next
2466
+ end
2467
+
2468
+ else
2469
+ begin
2470
+ cs = 110
2471
+ _goto_level = _again
2472
+ next
2473
+ end
2474
+
2475
+ end
2476
+ end
2477
+ end
2478
+ when 22 then
2479
+ # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2480
+ begin
2481
+ self.set_depth = set_depth - 1 end
2482
+ # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2483
+ begin
2484
+ te = p+1
2485
+ begin
2486
+ text = text(data, ts, te).first
2487
+
2488
+ type = :posixclass
2489
+ class_name = text[2..-3]
2490
+ if class_name[0].chr == '^'
2491
+ class_name = class_name[1..-1]
2492
+ type = :nonposixclass
2493
+ end
2494
+
2495
+ emit(type, class_name.to_sym, text, ts, te)
2496
+ end
2497
+ end
2498
+ when 21 then
2499
+ # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2500
+ begin
2501
+ self.set_depth = set_depth - 1 end
2502
+ # line 223 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2503
+ begin
2504
+ te = p+1
2505
+ begin
2506
+ emit(:set, :collation, *text(data, ts, te))
2507
+ end
2508
+ end
2509
+ when 23 then
2510
+ # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2511
+ begin
2512
+ self.set_depth = set_depth - 1 end
2513
+ # line 227 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2514
+ begin
2515
+ te = p+1
2516
+ begin
2517
+ emit(:set, :equivalent, *text(data, ts, te))
2518
+ end
2519
+ end
2520
+ when 63 then
2649
2521
  # line 1 "NONE"
2650
2522
  begin
2651
2523
  te = p+1
2652
2524
  end
2653
- # line 142 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2525
+ # line 145 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2654
2526
  begin
2655
- self.group_depth = group_depth + 1; in_group = true end
2527
+ self.set_depth = set_depth + 1 end
2656
2528
  when 78 then
2657
2529
  # line 1 "NONE"
2658
2530
  begin
2659
2531
  te = p+1
2660
2532
  end
2661
- # line 272 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2533
+ # line 265 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2662
2534
  begin
2663
2535
  act = 18; end
2664
2536
  when 77 then
@@ -2666,7 +2538,7 @@ act = 18; end
2666
2538
  begin
2667
2539
  te = p+1
2668
2540
  end
2669
- # line 278 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2541
+ # line 271 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2670
2542
  begin
2671
2543
  act = 19; end
2672
2544
  when 2 then
@@ -2674,20 +2546,31 @@ act = 19; end
2674
2546
  begin
2675
2547
  te = p+1
2676
2548
  end
2677
- # line 705 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2549
+ # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2678
2550
  begin
2679
2551
  act = 54; end
2680
- # line 2680 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2552
+ when 45 then
2553
+ # line 1 "NONE"
2554
+ begin
2555
+ te = p+1
2556
+ end
2557
+ # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2558
+ begin
2559
+ self.group_depth = group_depth - 1 end
2560
+ # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2561
+ begin
2562
+ self.group_depth = group_depth + 1 end
2563
+ # line 2563 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2681
2564
  end
2682
2565
  end
2683
2566
  end
2684
2567
  if _goto_level <= _again
2685
2568
  case _re_scanner_to_state_actions[cs]
2686
- when 61 then
2569
+ when 60 then
2687
2570
  # line 1 "NONE"
2688
2571
  begin
2689
2572
  ts = nil; end
2690
- when 37 then
2573
+ when 32 then
2691
2574
  # line 1 "NONE"
2692
2575
  begin
2693
2576
  ts = nil; end
@@ -2695,7 +2578,7 @@ ts = nil; end
2695
2578
  begin
2696
2579
  act = 0
2697
2580
  end
2698
- # line 2698 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2581
+ # line 2581 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2699
2582
  end
2700
2583
 
2701
2584
  if cs == 0
@@ -2716,20 +2599,20 @@ act = 0
2716
2599
  next;
2717
2600
  end
2718
2601
  case _re_scanner_eof_actions[cs]
2719
- when 15 then
2602
+ when 13 then
2720
2603
  # line 8 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
2721
2604
  begin
2722
2605
 
2723
2606
  raise PrematureEndError.new('unicode property')
2724
2607
  end
2725
- when 14 then
2726
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2608
+ when 12 then
2609
+ # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2727
2610
  begin
2728
2611
 
2729
2612
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2730
2613
  raise PrematureEndError.new( text )
2731
2614
  end
2732
- # line 2732 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2615
+ # line 2615 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2733
2616
  end
2734
2617
  end
2735
2618
 
@@ -2740,7 +2623,7 @@ act = 0
2740
2623
  end
2741
2624
  end
2742
2625
 
2743
- # line 810 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2626
+ # line 755 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2744
2627
 
2745
2628
  # to avoid "warning: assigned but unused variable - testEof"
2746
2629
  testEof = testEof
@@ -2751,9 +2634,9 @@ end
2751
2634
  end
2752
2635
 
2753
2636
  raise PrematureEndError.new("(missing group closing paranthesis) "+
2754
- "[#{in_group}:#{group_depth}]") if in_group
2637
+ "[#{group_depth}]") if in_group?
2755
2638
  raise PrematureEndError.new("(missing set closing bracket) "+
2756
- "[#{in_set}:#{set_depth}]") if in_set
2639
+ "[#{set_depth}]") if in_set?
2757
2640
 
2758
2641
  # when the entire expression is a literal run
2759
2642
  emit_literal if literal
@@ -2788,62 +2671,15 @@ end
2788
2671
 
2789
2672
  private
2790
2673
 
2791
- attr_accessor :tokens, :literal, :block,
2792
- :in_group, :group_depth,
2793
- :free_spacing, :spacing_stack
2794
-
2795
- # Ragel's regex-based scan of the group options introduced a lot of
2796
- # ambiguity, so we just ask it to find the beginning of what looks
2797
- # like an options run and handle the rest in here.
2798
- def scan_options(p, data, ts, te)
2799
- text = text(data, ts, te).first
2800
-
2801
- options_char, options_length = true, 0
2674
+ attr_accessor :tokens, :literal, :block, :free_spacing, :spacing_stack,
2675
+ :group_depth, :set_depth, :conditional_stack
2802
2676
 
2803
- # Copy while we have option characters. There is no maximum length,
2804
- # as ruby allows things like '(?xxxxxxxxx-xxxxxxxxxxxxx:abc)'.
2805
- negative_options = false
2806
- while options_char
2807
- if data[te + options_length]
2808
- c = data[te + options_length].chr
2809
-
2810
- if c =~ /[-mixdau]/
2811
- negative_options = true if c == '-'
2812
-
2813
- raise InvalidGroupOption.new(c, text) if negative_options and
2814
- c =~ /[dau]/
2815
-
2816
- text << c ; p += 1 ; options_length += 1
2817
- else
2818
- options_char = false
2819
- end
2820
- else
2821
- raise PrematureEndError.new("expression options `#{text}'")
2822
- end
2823
- end
2824
-
2825
- if data[te + options_length]
2826
- c = data[te + options_length].chr
2827
-
2828
- if c == ':'
2829
- # Include the ':' in the options text
2830
- text << c ; p += 1 ; options_length += 1
2831
- emit_options(text, ts, te + options_length)
2832
-
2833
- elsif c == ')'
2834
- # Don't include the closing ')', let group_close handle it.
2835
- emit_options(text, ts, te + options_length)
2836
-
2837
- else
2838
- # Plain Regexp reports this as 'undefined group option'
2839
- raise ScannerError.new(
2840
- "Unexpected `#{c}' in options sequence, ':' or ')' expected")
2841
- end
2842
- else
2843
- raise PrematureEndError.new("expression options `#{text}'")
2844
- end
2677
+ def in_group?
2678
+ group_depth > 0
2679
+ end
2845
2680
 
2846
- p # return the new value of the data pointer
2681
+ def in_set?
2682
+ set_depth > 0
2847
2683
  end
2848
2684
 
2849
2685
  # Copy from ts to te from data as text
@@ -2879,32 +2715,39 @@ end
2879
2715
  def emit_options(text, ts, te)
2880
2716
  token = nil
2881
2717
 
2882
- if text =~ /\(\?([mixdau]*)-?([mix]*)(:)?/
2883
- positive, negative, group_local = $1, $2, $3
2718
+ # Ruby allows things like '(?-xxxx)' or '(?xx-xx--xx-:abc)'.
2719
+ text =~ /\(\?([mixdau]*)(-(?:[mix]*))*(:)?/
2720
+ positive, negative, group_local = $1, $2, $3
2884
2721
 
2885
- if positive.include?('x')
2886
- self.free_spacing = true
2887
- end
2722
+ if positive.include?('x')
2723
+ self.free_spacing = true
2724
+ end
2888
2725
 
2889
- # If the x appears in both, treat it like ruby does, the second cancels
2890
- # the first.
2891
- if negative.include?('x')
2892
- self.free_spacing = false
2893
- end
2726
+ # If the x appears in both, treat it like ruby does, the second cancels
2727
+ # the first.
2728
+ if negative && negative.include?('x')
2729
+ self.free_spacing = false
2730
+ end
2894
2731
 
2895
- if group_local
2896
- spacing_stack << {:free_spacing => free_spacing, :depth => group_depth}
2897
- token = :options
2898
- else
2899
- # switch for parent group level
2900
- spacing_stack.last[:free_spacing] = free_spacing
2901
- token = :options_switch
2902
- end
2732
+ if group_local
2733
+ spacing_stack << {:free_spacing => free_spacing, :depth => group_depth}
2734
+ token = :options
2735
+ else
2736
+ # switch for parent group level
2737
+ spacing_stack.last[:free_spacing] = free_spacing
2738
+ token = :options_switch
2903
2739
  end
2904
2740
 
2905
2741
  emit(:group, token, text, ts, te)
2906
2742
  end
2907
2743
 
2744
+ def emit_meta_control_sequence(data, ts, te, token)
2745
+ if data.last < 0x00 || data.last > 0x7F
2746
+ validation_error(:sequence, 'escape', token.to_s)
2747
+ end
2748
+ emit(:escape, token, *text(data, ts, te, 1))
2749
+ end
2750
+
2908
2751
  # Centralizes and unifies the handling of validation related
2909
2752
  # errors.
2910
2753
  def validation_error(type, what, reason)
@@ -2915,21 +2758,8 @@ end
2915
2758
  error = InvalidBackrefError.new(what, reason)
2916
2759
  when :sequence
2917
2760
  error = InvalidSequenceError.new(what, reason)
2918
- else
2919
- error = ValidationError.new('expression')
2920
2761
  end
2921
2762
 
2922
2763
  raise error # unless @@config.validation_ignore
2923
2764
  end
2924
-
2925
- # Used for references with an empty name or number
2926
- def empty_backref_error(type, what)
2927
- validation_error(:backref, what, 'ref ID is empty')
2928
- end
2929
-
2930
- # Used for named expressions with an empty name
2931
- def empty_name_error(type, what)
2932
- validation_error(type, what, 'name is empty')
2933
- end
2934
-
2935
2765
  end # module Regexp::Scanner