eric-keyword_search 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,36 @@
1
+ = HEAD
2
+
3
+ * codahale: Added support for ()-based grouping: name:(frank "mr. buttons" jim) #=> ["frank", "mr. buttons", "jim"]
4
+
5
+ = 1.3.1 / 2007-10-09
6
+
7
+ * Tests/README update for case sensitivity change
8
+
9
+ = 1.3.0 / 2007-10-09
10
+
11
+ * Conversion to Ragel-based parser (faster, less resource-intensive)
12
+ * Better support for other character sets, allow apostrophes in unquoted words
13
+ * Test suite now uses test/spec
14
+ * API is almost backwards compatible (though keywords/values are now case sensitive; downcase the input manually if you want the old behavior)
15
+
16
+ = 1.2.0 / 2007-05-09
17
+
18
+ * Raises KeywordSearch::ParseError instead of returning an empty Hash if an error occurs during parsing
19
+
20
+ = 1.1.0 / 2007-03-21
21
+
22
+ * Updated to use Dhaka 2.1.0
23
+
24
+ = 1.0.5 / 2007-01-29
25
+
26
+ * Added single quoting support and nested quotes (apostrophes, etc)
27
+ * Added a few more punctuation marks as valid input
28
+
29
+ = 1.0.4 / 2007-01-15
30
+
31
+ * Updated Dhaka dependency to lock to version 0.0.6 due to breakage of backwards compatibility in 1.0.0.
32
+ Will update to allow 1.0.0+ once changes to Dhaka API stabilize (thanks to Dhaka author Mushfeq Khan for the tip)
33
+
34
+ == 1.0.0 / 2007-01-08
35
+
36
+ * Initial release
@@ -0,0 +1,8 @@
1
+ History.txt
2
+ lib/keyword_search/definition.rb
3
+ lib/keyword_search.rb
4
+ lib/keyword_search.rl
5
+ Manifest
6
+ Rakefile
7
+ README.rdoc
8
+ test/test_keyword_search.rb
@@ -0,0 +1,100 @@
1
+ keyword_search
2
+ http://codefluency.rubyforge.org/keyword_search
3
+ by Bruce Williams
4
+ Eric Lindvall (negation of terms)
5
+
6
+ == DESCRIPTION:
7
+
8
+ Generic library to parse GMail-style search strings for keyword/value pairs; supports definition of valid keywords and handling of quoted values.
9
+
10
+ == FEATURES:
11
+
12
+ The library features a very simple, easy-to-use API.
13
+ * New in 1.4! Allow negation of terms
14
+ * Define handlers for supported keywords with blocks
15
+ * Define the default keyword (values not part of a keyword/value pair)
16
+
17
+ Development Roadmap:
18
+ 2.0:: Add grouping (will break API backwards compatibility)
19
+
20
+ Note:: As of 1.4, negative terms (terms starting with '-') will be ignored by with.keyword statements that only take one argument. To accept negative terms, provide a second argument to the block |values, positive| to the with.keyword handler.
21
+
22
+ Note:: As of 1.3.0, input to KeywordSearch.search is no longer automatically downcased, allowing for case sensitive keyword and value pairs. If you want case insensitivity, downcase the input before you invoke the method.
23
+
24
+
25
+ == SYNOPSIS:
26
+
27
+ Here's an example of usage from Rails (though the library is generic, and could presumably be used for any Ruby project)
28
+
29
+ # Some variables to build up
30
+ clauses = []
31
+ arguments = []
32
+
33
+ # Search a string, defining the supported keywords and building up
34
+ # the variables in the associated closures
35
+
36
+ KeywordSearch.search('account has:attachment since:2006-12-03 -description:crazy') do |with|
37
+
38
+ with.default_keyword :title
39
+
40
+ with.keyword :title do |values|
41
+ clauses << "title like ?"
42
+ arguments << "%#{values.join(' ')}%"
43
+ end
44
+
45
+ with.keyword :has do |values|
46
+ clauses << 'has_attachment = true' if values.include?('attachment')
47
+ end
48
+
49
+ with.keyword :since do |values|
50
+ date = Date.parse(values.first) # only support one
51
+ clauses << 'created_on >= ?'
52
+ arguments << date.to_s
53
+ end
54
+
55
+ with.keyword :description do |values, positive|
56
+ clauses << "description #{'not' unless positive} like ?"
57
+ arguments << "%#{values.join(' ')}%"
58
+ end
59
+ end
60
+
61
+ # Do our search with <tt>clauses</tt> and <tt>arguments</tt>
62
+ conditions = [clauses.map{|c| "(#{c})"}.join(' AND ')), *arguments] # simplistic example
63
+ results = Message.find(:all, :conditions => conditions)
64
+
65
+ == REQUIREMENTS:
66
+
67
+ None (echoe if you're running keyword_search tests or building the gem)
68
+
69
+ == INSTALL:
70
+
71
+ sudo gem install keyword_search
72
+
73
+ == LICENSE:
74
+
75
+ (The MIT License)
76
+
77
+ Copyright (c) 2007 Bruce Williams
78
+
79
+ Permission is hereby granted, free of charge, to any person obtaining
80
+ a copy of this software and associated documentation files (the
81
+ 'Software'), to deal in the Software without restriction, including
82
+ without limitation the rights to use, copy, modify, merge, publish,
83
+ distribute, sublicense, and/or sell copies of the Software, and to
84
+ permit persons to whom the Software is furnished to do so, subject to
85
+ the following conditions:
86
+
87
+ The above copyright notice and this permission notice shall be
88
+ included in all copies or substantial portions of the Software.
89
+
90
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
91
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
93
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
94
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
95
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
96
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
97
+
98
+ == LEGAL NOTES
99
+
100
+ GMail is copyright Google, Inc.
@@ -0,0 +1,22 @@
1
+ # -*- ruby -*-
2
+
3
+ begin
4
+ require 'rubygems'
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gemspec|
7
+ gemspec.name = "keyword_search"
8
+ gemspec.summary = "Generic library to parse GMail-style search strings for keyword/value pairs; supports definition of valid keywords and handling of quoted values."
9
+ gemspec.homepage = "http://github.com/bruce/keyword_search"
10
+ gemspec.email = [ 'bruce@codefluency.com', 'eric@sevenscale.com' ]
11
+ gemspec.authors = [ "Bruce Williams", "Eric Lindvall" ]
12
+ gemspec.rubyforge_project = 'codefluency'
13
+ end
14
+ rescue LoadError
15
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
16
+ end
17
+
18
+ rule '.rb' => '.rl' do |t|
19
+ sh "ragel -R #{t.source}"
20
+ end
21
+
22
+ task :ragel => 'lib/keyword_search.rb'
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.4.0
@@ -0,0 +1,45 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{keyword_search}
5
+ s.version = "1.4.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Bruce Williams", "Eric Lindvall"]
9
+ s.date = %q{2009-08-03}
10
+ s.email = ["bruce@codefluency.com", "eric@sevenscale.com"]
11
+ s.extra_rdoc_files = [
12
+ "README.rdoc"
13
+ ]
14
+ s.files = [
15
+ "History.txt",
16
+ "Manifest",
17
+ "README.rdoc",
18
+ "Rakefile",
19
+ "VERSION",
20
+ "keyword_search.gemspec",
21
+ "lib/keyword_search.rb",
22
+ "lib/keyword_search.rl",
23
+ "lib/keyword_search/definition.rb",
24
+ "test/test_keyword_search.rb"
25
+ ]
26
+ s.homepage = %q{http://github.com/bruce/keyword_search}
27
+ s.rdoc_options = ["--charset=UTF-8"]
28
+ s.require_paths = ["lib"]
29
+ s.rubyforge_project = %q{codefluency}
30
+ s.rubygems_version = %q{1.3.5}
31
+ s.summary = %q{Generic library to parse GMail-style search strings for keyword/value pairs; supports definition of valid keywords and handling of quoted values.}
32
+ s.test_files = [
33
+ "test/test_keyword_search.rb"
34
+ ]
35
+
36
+ if s.respond_to? :specification_version then
37
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
38
+ s.specification_version = 3
39
+
40
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
41
+ else
42
+ end
43
+ else
44
+ end
45
+ end
@@ -0,0 +1,1315 @@
1
+ # line 1 "lib/keyword_search.rl"
2
+ require File.dirname(__FILE__) << '/keyword_search/definition.rb'
3
+
4
+ module KeywordSearch
5
+
6
+ class ParseError < ::SyntaxError; end
7
+
8
+ class << self
9
+
10
+ # line 73 "lib/keyword_search.rl"
11
+
12
+
13
+ def search(input_string, definition=nil, &block)
14
+ definition ||= Definition.new(&block)
15
+ results = parse(input_string)
16
+ results.each do |key, terms|
17
+ definition.handle(key, terms)
18
+ end
19
+ results
20
+ end
21
+
22
+ #######
23
+ private
24
+ #######
25
+
26
+ def parse(input) #:nodoc:
27
+ data = input + ' '
28
+
29
+ # line 30 "lib/keyword_search.rb"
30
+ class << self
31
+ attr_accessor :_parser_actions
32
+ private :_parser_actions, :_parser_actions=
33
+ end
34
+ self._parser_actions = [
35
+ 0, 1, 0, 1, 4, 1, 7, 1,
36
+ 9, 2, 3, 1, 2, 3, 4, 2,
37
+ 3, 8, 2, 4, 8, 3, 0, 3,
38
+ 4, 3, 0, 3, 8, 3, 3, 4,
39
+ 0, 3, 3, 4, 8, 3, 3, 8,
40
+ 0, 3, 5, 0, 2, 3, 5, 2,
41
+ 7, 3, 6, 0, 2, 3, 6, 2,
42
+ 7
43
+ ]
44
+
45
+ class << self
46
+ attr_accessor :_parser_key_offsets
47
+ private :_parser_key_offsets, :_parser_key_offsets=
48
+ end
49
+ self._parser_key_offsets = [
50
+ 0, 0, 8, 13, 21, 26, 31, 36,
51
+ 37, 38, 40, 41, 42, 47, 53, 60,
52
+ 66, 68, 76, 77, 78, 82, 87, 88,
53
+ 89, 96, 103, 110, 112, 114, 119, 124,
54
+ 129, 136, 142, 150, 157, 164, 171, 179,
55
+ 186, 194, 202, 204, 209, 217, 224, 232,
56
+ 240, 246, 254, 261, 268, 276, 283, 290,
57
+ 297, 304, 312, 314, 316, 321, 326, 331,
58
+ 338, 344, 352, 359, 366, 373, 381, 388,
59
+ 396, 398, 403, 411, 418, 426, 433, 441,
60
+ 449, 457, 464, 469, 475, 482, 488, 496,
61
+ 497, 498, 502, 507, 508, 509, 516, 523,
62
+ 530, 532, 534, 539, 544, 549, 556, 562,
63
+ 570, 577, 584, 591, 599, 606, 614, 616,
64
+ 621, 629, 636, 644, 652, 658, 666, 673,
65
+ 680, 688, 695, 702, 709, 716, 724, 726,
66
+ 728, 733, 738, 743, 750, 756, 764, 771,
67
+ 778, 785, 793, 800, 808, 810, 815, 823,
68
+ 830, 838, 845, 853, 861, 869, 876, 881,
69
+ 886, 891, 896, 902, 909, 915, 923, 924,
70
+ 925, 929, 934, 935, 936, 943, 950, 957,
71
+ 959, 961, 966, 971, 976, 983, 989, 997,
72
+ 1004, 1011, 1018, 1026, 1033, 1041, 1049, 1051,
73
+ 1056, 1064, 1071, 1079, 1087, 1093, 1101, 1108,
74
+ 1116, 1123, 1130, 1137, 1139, 1141, 1146, 1151,
75
+ 1156, 1163, 1169, 1177, 1184, 1191, 1198, 1203,
76
+ 1210, 1216, 1224, 1231, 1238, 1245, 1247, 1252,
77
+ 1259, 1266, 1272, 1280, 1287, 1294, 1301, 1303,
78
+ 1305, 1310, 1315, 1320, 1327, 1333, 1341, 1348,
79
+ 1355, 1362, 1370, 1377, 1385, 1393, 1395, 1400,
80
+ 1408, 1415, 1423, 1431, 1433, 1438, 1446, 1453,
81
+ 1461, 1463, 1468, 1476, 1483, 1491, 1499, 1501,
82
+ 1506, 1514, 1521, 1529, 1536, 1543, 1550, 1557,
83
+ 1565, 1572, 1574, 1576, 1581, 1586, 1591, 1598,
84
+ 1604, 1612, 1619, 1626, 1633, 1641, 1648, 1656,
85
+ 1664, 1666, 1671, 1679, 1687, 1694, 1701, 1709,
86
+ 1716, 1724, 1731, 1739, 1747, 1755, 1762, 1767,
87
+ 1773, 1781, 1788, 1795, 1803, 1810, 1818, 1826,
88
+ 1834, 1841, 1846, 1851, 1856, 1861, 1866
89
+ ]
90
+
91
+ class << self
92
+ attr_accessor :_parser_trans_keys
93
+ private :_parser_trans_keys, :_parser_trans_keys=
94
+ end
95
+ self._parser_trans_keys = [
96
+ 0, 32, 34, 39, 40, 43, 45, 58,
97
+ 0, 32, 34, 41, 58, 0, 32, 34,
98
+ 39, 40, 43, 45, 58, 0, 32, 34,
99
+ 41, 58, 32, 34, 39, 40, 58, 0,
100
+ 32, 34, 41, 58, 34, 34, 0, 32,
101
+ 39, 39, 32, 34, 39, 40, 58, 32,
102
+ 34, 41, 44, 58, 124, 32, 34, 39,
103
+ 40, 44, 58, 124, 32, 34, 41, 44,
104
+ 58, 124, 0, 32, 32, 34, 39, 40,
105
+ 41, 44, 58, 124, 34, 34, 32, 41,
106
+ 44, 124, 32, 34, 39, 40, 58, 39,
107
+ 39, 32, 34, 39, 41, 44, 58, 124,
108
+ 32, 34, 39, 41, 44, 58, 124, 32,
109
+ 34, 39, 40, 44, 58, 124, 34, 39,
110
+ 34, 39, 32, 39, 41, 44, 124, 32,
111
+ 34, 39, 40, 58, 32, 34, 41, 44,
112
+ 124, 32, 34, 39, 40, 44, 58, 124,
113
+ 32, 34, 41, 44, 58, 124, 32, 34,
114
+ 39, 40, 41, 44, 58, 124, 32, 34,
115
+ 39, 41, 44, 58, 124, 32, 34, 39,
116
+ 41, 44, 58, 124, 32, 34, 39, 40,
117
+ 44, 58, 124, 32, 34, 39, 40, 41,
118
+ 44, 58, 124, 32, 34, 39, 40, 44,
119
+ 58, 124, 32, 34, 39, 40, 41, 44,
120
+ 58, 124, 32, 34, 39, 40, 41, 44,
121
+ 58, 124, 34, 39, 32, 34, 39, 40,
122
+ 58, 32, 34, 39, 40, 41, 44, 58,
123
+ 124, 32, 34, 39, 40, 44, 58, 124,
124
+ 32, 34, 39, 40, 41, 44, 58, 124,
125
+ 32, 34, 39, 40, 41, 44, 58, 124,
126
+ 32, 34, 41, 44, 58, 124, 32, 34,
127
+ 39, 40, 41, 44, 58, 124, 32, 34,
128
+ 39, 41, 44, 58, 124, 32, 34, 39,
129
+ 41, 44, 58, 124, 32, 34, 39, 40,
130
+ 41, 44, 58, 124, 32, 34, 39, 41,
131
+ 44, 58, 124, 32, 34, 39, 41, 44,
132
+ 58, 124, 32, 34, 39, 40, 44, 58,
133
+ 124, 32, 34, 39, 41, 44, 58, 124,
134
+ 32, 34, 39, 40, 41, 44, 58, 124,
135
+ 34, 39, 34, 39, 32, 39, 41, 44,
136
+ 124, 32, 34, 39, 40, 58, 32, 34,
137
+ 41, 44, 124, 32, 34, 39, 40, 44,
138
+ 58, 124, 32, 34, 41, 44, 58, 124,
139
+ 32, 34, 39, 40, 41, 44, 58, 124,
140
+ 32, 34, 39, 41, 44, 58, 124, 32,
141
+ 34, 39, 41, 44, 58, 124, 32, 34,
142
+ 39, 40, 44, 58, 124, 32, 34, 39,
143
+ 40, 41, 44, 58, 124, 32, 34, 39,
144
+ 40, 44, 58, 124, 32, 34, 39, 40,
145
+ 41, 44, 58, 124, 34, 39, 32, 34,
146
+ 39, 40, 58, 32, 34, 39, 40, 41,
147
+ 44, 58, 124, 32, 34, 39, 41, 44,
148
+ 58, 124, 32, 34, 39, 40, 41, 44,
149
+ 58, 124, 32, 34, 39, 40, 44, 58,
150
+ 124, 32, 34, 39, 40, 41, 44, 58,
151
+ 124, 32, 34, 39, 40, 41, 44, 58,
152
+ 124, 32, 34, 39, 40, 41, 44, 58,
153
+ 124, 32, 34, 39, 41, 44, 58, 124,
154
+ 32, 34, 39, 40, 58, 32, 34, 41,
155
+ 44, 58, 124, 32, 34, 39, 40, 44,
156
+ 58, 124, 32, 34, 41, 44, 58, 124,
157
+ 32, 34, 39, 40, 41, 44, 58, 124,
158
+ 34, 34, 32, 41, 44, 124, 32, 34,
159
+ 39, 40, 58, 39, 39, 32, 34, 39,
160
+ 41, 44, 58, 124, 32, 34, 39, 41,
161
+ 44, 58, 124, 32, 34, 39, 40, 44,
162
+ 58, 124, 34, 39, 34, 39, 32, 39,
163
+ 41, 44, 124, 32, 34, 39, 40, 58,
164
+ 32, 34, 41, 44, 124, 32, 34, 39,
165
+ 40, 44, 58, 124, 32, 34, 41, 44,
166
+ 58, 124, 32, 34, 39, 40, 41, 44,
167
+ 58, 124, 32, 34, 39, 41, 44, 58,
168
+ 124, 32, 34, 39, 41, 44, 58, 124,
169
+ 32, 34, 39, 40, 44, 58, 124, 32,
170
+ 34, 39, 40, 41, 44, 58, 124, 32,
171
+ 34, 39, 40, 44, 58, 124, 32, 34,
172
+ 39, 40, 41, 44, 58, 124, 34, 39,
173
+ 32, 34, 39, 40, 58, 32, 34, 39,
174
+ 40, 41, 44, 58, 124, 32, 34, 39,
175
+ 40, 44, 58, 124, 32, 34, 39, 40,
176
+ 41, 44, 58, 124, 32, 34, 39, 40,
177
+ 41, 44, 58, 124, 32, 34, 41, 44,
178
+ 58, 124, 32, 34, 39, 40, 41, 44,
179
+ 58, 124, 32, 34, 39, 41, 44, 58,
180
+ 124, 32, 34, 39, 41, 44, 58, 124,
181
+ 32, 34, 39, 40, 41, 44, 58, 124,
182
+ 32, 34, 39, 41, 44, 58, 124, 32,
183
+ 34, 39, 41, 44, 58, 124, 32, 34,
184
+ 39, 40, 44, 58, 124, 32, 34, 39,
185
+ 41, 44, 58, 124, 32, 34, 39, 40,
186
+ 41, 44, 58, 124, 34, 39, 34, 39,
187
+ 32, 39, 41, 44, 124, 32, 34, 39,
188
+ 40, 58, 32, 34, 41, 44, 124, 32,
189
+ 34, 39, 40, 44, 58, 124, 32, 34,
190
+ 41, 44, 58, 124, 32, 34, 39, 40,
191
+ 41, 44, 58, 124, 32, 34, 39, 41,
192
+ 44, 58, 124, 32, 34, 39, 41, 44,
193
+ 58, 124, 32, 34, 39, 40, 44, 58,
194
+ 124, 32, 34, 39, 40, 41, 44, 58,
195
+ 124, 32, 34, 39, 40, 44, 58, 124,
196
+ 32, 34, 39, 40, 41, 44, 58, 124,
197
+ 34, 39, 32, 34, 39, 40, 58, 32,
198
+ 34, 39, 40, 41, 44, 58, 124, 32,
199
+ 34, 39, 41, 44, 58, 124, 32, 34,
200
+ 39, 40, 41, 44, 58, 124, 32, 34,
201
+ 39, 40, 44, 58, 124, 32, 34, 39,
202
+ 40, 41, 44, 58, 124, 32, 34, 39,
203
+ 40, 41, 44, 58, 124, 32, 34, 39,
204
+ 40, 41, 44, 58, 124, 32, 34, 39,
205
+ 41, 44, 58, 124, 32, 34, 39, 40,
206
+ 58, 32, 34, 39, 40, 58, 32, 34,
207
+ 39, 40, 58, 32, 34, 39, 40, 58,
208
+ 32, 34, 41, 44, 58, 124, 32, 34,
209
+ 39, 40, 44, 58, 124, 32, 34, 41,
210
+ 44, 58, 124, 32, 34, 39, 40, 41,
211
+ 44, 58, 124, 34, 34, 32, 41, 44,
212
+ 124, 32, 34, 39, 40, 58, 39, 39,
213
+ 32, 34, 39, 41, 44, 58, 124, 32,
214
+ 34, 39, 41, 44, 58, 124, 32, 34,
215
+ 39, 40, 44, 58, 124, 34, 39, 34,
216
+ 39, 32, 39, 41, 44, 124, 32, 34,
217
+ 39, 40, 58, 32, 34, 41, 44, 124,
218
+ 32, 34, 39, 40, 44, 58, 124, 32,
219
+ 34, 41, 44, 58, 124, 32, 34, 39,
220
+ 40, 41, 44, 58, 124, 32, 34, 39,
221
+ 41, 44, 58, 124, 32, 34, 39, 41,
222
+ 44, 58, 124, 32, 34, 39, 40, 44,
223
+ 58, 124, 32, 34, 39, 40, 41, 44,
224
+ 58, 124, 32, 34, 39, 40, 44, 58,
225
+ 124, 32, 34, 39, 40, 41, 44, 58,
226
+ 124, 32, 34, 39, 40, 41, 44, 58,
227
+ 124, 34, 39, 32, 34, 39, 40, 58,
228
+ 32, 34, 39, 40, 41, 44, 58, 124,
229
+ 32, 34, 39, 40, 44, 58, 124, 32,
230
+ 34, 39, 40, 41, 44, 58, 124, 32,
231
+ 34, 39, 40, 41, 44, 58, 124, 32,
232
+ 34, 41, 44, 58, 124, 32, 34, 39,
233
+ 40, 41, 44, 58, 124, 32, 34, 39,
234
+ 40, 44, 58, 124, 32, 34, 39, 40,
235
+ 41, 44, 58, 124, 32, 34, 39, 41,
236
+ 44, 58, 124, 32, 34, 39, 41, 44,
237
+ 58, 124, 32, 34, 39, 40, 44, 58,
238
+ 124, 34, 39, 34, 39, 32, 39, 41,
239
+ 44, 124, 32, 34, 39, 40, 58, 32,
240
+ 34, 41, 44, 124, 32, 34, 39, 40,
241
+ 44, 58, 124, 32, 34, 41, 44, 58,
242
+ 124, 32, 34, 39, 40, 41, 44, 58,
243
+ 124, 32, 34, 39, 41, 44, 58, 124,
244
+ 32, 34, 39, 41, 44, 58, 124, 32,
245
+ 34, 39, 40, 44, 58, 124, 32, 34,
246
+ 41, 44, 124, 32, 34, 39, 40, 44,
247
+ 58, 124, 32, 34, 41, 44, 58, 124,
248
+ 32, 34, 39, 40, 41, 44, 58, 124,
249
+ 32, 34, 39, 41, 44, 58, 124, 32,
250
+ 34, 39, 41, 44, 58, 124, 32, 34,
251
+ 39, 40, 44, 58, 124, 34, 39, 32,
252
+ 39, 41, 44, 124, 32, 34, 39, 40,
253
+ 44, 58, 124, 32, 34, 39, 41, 44,
254
+ 58, 124, 32, 34, 41, 44, 58, 124,
255
+ 32, 34, 39, 40, 41, 44, 58, 124,
256
+ 32, 34, 39, 41, 44, 58, 124, 32,
257
+ 34, 39, 41, 44, 58, 124, 32, 34,
258
+ 39, 40, 44, 58, 124, 34, 39, 34,
259
+ 39, 32, 39, 41, 44, 124, 32, 34,
260
+ 39, 40, 58, 32, 34, 41, 44, 124,
261
+ 32, 34, 39, 40, 44, 58, 124, 32,
262
+ 34, 41, 44, 58, 124, 32, 34, 39,
263
+ 40, 41, 44, 58, 124, 32, 34, 39,
264
+ 41, 44, 58, 124, 32, 34, 39, 41,
265
+ 44, 58, 124, 32, 34, 39, 40, 44,
266
+ 58, 124, 32, 34, 39, 40, 41, 44,
267
+ 58, 124, 32, 34, 39, 40, 44, 58,
268
+ 124, 32, 34, 39, 40, 41, 44, 58,
269
+ 124, 32, 34, 39, 40, 41, 44, 58,
270
+ 124, 34, 39, 32, 34, 39, 40, 58,
271
+ 32, 34, 39, 40, 41, 44, 58, 124,
272
+ 32, 34, 39, 40, 44, 58, 124, 32,
273
+ 34, 39, 40, 41, 44, 58, 124, 32,
274
+ 34, 39, 40, 41, 44, 58, 124, 34,
275
+ 39, 32, 34, 39, 40, 58, 32, 34,
276
+ 39, 40, 41, 44, 58, 124, 32, 34,
277
+ 39, 40, 44, 58, 124, 32, 34, 39,
278
+ 40, 41, 44, 58, 124, 34, 39, 32,
279
+ 34, 39, 40, 58, 32, 34, 39, 40,
280
+ 41, 44, 58, 124, 32, 34, 39, 40,
281
+ 44, 58, 124, 32, 34, 39, 40, 41,
282
+ 44, 58, 124, 32, 34, 39, 40, 41,
283
+ 44, 58, 124, 34, 39, 32, 34, 39,
284
+ 40, 58, 32, 34, 39, 40, 41, 44,
285
+ 58, 124, 32, 34, 39, 40, 44, 58,
286
+ 124, 32, 34, 39, 40, 41, 44, 58,
287
+ 124, 32, 34, 39, 41, 44, 58, 124,
288
+ 32, 34, 39, 41, 44, 58, 124, 32,
289
+ 34, 39, 40, 44, 58, 124, 32, 34,
290
+ 39, 41, 44, 58, 124, 32, 34, 39,
291
+ 40, 41, 44, 58, 124, 32, 34, 39,
292
+ 40, 44, 58, 124, 34, 39, 34, 39,
293
+ 32, 39, 41, 44, 124, 32, 34, 39,
294
+ 40, 58, 32, 34, 41, 44, 124, 32,
295
+ 34, 39, 40, 44, 58, 124, 32, 34,
296
+ 41, 44, 58, 124, 32, 34, 39, 40,
297
+ 41, 44, 58, 124, 32, 34, 39, 41,
298
+ 44, 58, 124, 32, 34, 39, 41, 44,
299
+ 58, 124, 32, 34, 39, 40, 44, 58,
300
+ 124, 32, 34, 39, 40, 41, 44, 58,
301
+ 124, 32, 34, 39, 40, 44, 58, 124,
302
+ 32, 34, 39, 40, 41, 44, 58, 124,
303
+ 32, 34, 39, 40, 41, 44, 58, 124,
304
+ 34, 39, 32, 34, 39, 40, 58, 32,
305
+ 34, 39, 40, 41, 44, 58, 124, 32,
306
+ 34, 39, 40, 41, 44, 58, 124, 32,
307
+ 34, 39, 41, 44, 58, 124, 32, 34,
308
+ 39, 41, 44, 58, 124, 32, 34, 39,
309
+ 40, 41, 44, 58, 124, 32, 34, 39,
310
+ 41, 44, 58, 124, 32, 34, 39, 40,
311
+ 41, 44, 58, 124, 32, 34, 39, 40,
312
+ 44, 58, 124, 32, 34, 39, 40, 41,
313
+ 44, 58, 124, 32, 34, 39, 40, 41,
314
+ 44, 58, 124, 32, 34, 39, 40, 41,
315
+ 44, 58, 124, 32, 34, 39, 41, 44,
316
+ 58, 124, 32, 34, 39, 40, 58, 32,
317
+ 34, 41, 44, 58, 124, 32, 34, 39,
318
+ 40, 41, 44, 58, 124, 32, 34, 39,
319
+ 41, 44, 58, 124, 32, 34, 39, 41,
320
+ 44, 58, 124, 32, 34, 39, 40, 41,
321
+ 44, 58, 124, 32, 34, 39, 41, 44,
322
+ 58, 124, 32, 34, 39, 40, 41, 44,
323
+ 58, 124, 32, 34, 39, 40, 41, 44,
324
+ 58, 124, 32, 34, 39, 40, 41, 44,
325
+ 58, 124, 32, 34, 39, 41, 44, 58,
326
+ 124, 32, 34, 39, 40, 58, 32, 34,
327
+ 39, 40, 58, 0, 32, 34, 41, 58,
328
+ 0, 32, 34, 41, 58, 0, 32, 34,
329
+ 41, 58, 0
330
+ ]
331
+
332
+ class << self
333
+ attr_accessor :_parser_single_lengths
334
+ private :_parser_single_lengths, :_parser_single_lengths=
335
+ end
336
+ self._parser_single_lengths = [
337
+ 0, 8, 5, 8, 5, 5, 5, 1,
338
+ 1, 2, 1, 1, 5, 6, 7, 6,
339
+ 2, 8, 1, 1, 4, 5, 1, 1,
340
+ 7, 7, 7, 2, 2, 5, 5, 5,
341
+ 7, 6, 8, 7, 7, 7, 8, 7,
342
+ 8, 8, 2, 5, 8, 7, 8, 8,
343
+ 6, 8, 7, 7, 8, 7, 7, 7,
344
+ 7, 8, 2, 2, 5, 5, 5, 7,
345
+ 6, 8, 7, 7, 7, 8, 7, 8,
346
+ 2, 5, 8, 7, 8, 7, 8, 8,
347
+ 8, 7, 5, 6, 7, 6, 8, 1,
348
+ 1, 4, 5, 1, 1, 7, 7, 7,
349
+ 2, 2, 5, 5, 5, 7, 6, 8,
350
+ 7, 7, 7, 8, 7, 8, 2, 5,
351
+ 8, 7, 8, 8, 6, 8, 7, 7,
352
+ 8, 7, 7, 7, 7, 8, 2, 2,
353
+ 5, 5, 5, 7, 6, 8, 7, 7,
354
+ 7, 8, 7, 8, 2, 5, 8, 7,
355
+ 8, 7, 8, 8, 8, 7, 5, 5,
356
+ 5, 5, 6, 7, 6, 8, 1, 1,
357
+ 4, 5, 1, 1, 7, 7, 7, 2,
358
+ 2, 5, 5, 5, 7, 6, 8, 7,
359
+ 7, 7, 8, 7, 8, 8, 2, 5,
360
+ 8, 7, 8, 8, 6, 8, 7, 8,
361
+ 7, 7, 7, 2, 2, 5, 5, 5,
362
+ 7, 6, 8, 7, 7, 7, 5, 7,
363
+ 6, 8, 7, 7, 7, 2, 5, 7,
364
+ 7, 6, 8, 7, 7, 7, 2, 2,
365
+ 5, 5, 5, 7, 6, 8, 7, 7,
366
+ 7, 8, 7, 8, 8, 2, 5, 8,
367
+ 7, 8, 8, 2, 5, 8, 7, 8,
368
+ 2, 5, 8, 7, 8, 8, 2, 5,
369
+ 8, 7, 8, 7, 7, 7, 7, 8,
370
+ 7, 2, 2, 5, 5, 5, 7, 6,
371
+ 8, 7, 7, 7, 8, 7, 8, 8,
372
+ 2, 5, 8, 8, 7, 7, 8, 7,
373
+ 8, 7, 8, 8, 8, 7, 5, 6,
374
+ 8, 7, 7, 8, 7, 8, 8, 8,
375
+ 7, 5, 5, 5, 5, 5, 0
376
+ ]
377
+
378
+ class << self
379
+ attr_accessor :_parser_range_lengths
380
+ private :_parser_range_lengths, :_parser_range_lengths=
381
+ end
382
+ self._parser_range_lengths = [
383
+ 0, 0, 0, 0, 0, 0, 0, 0,
384
+ 0, 0, 0, 0, 0, 0, 0, 0,
385
+ 0, 0, 0, 0, 0, 0, 0, 0,
386
+ 0, 0, 0, 0, 0, 0, 0, 0,
387
+ 0, 0, 0, 0, 0, 0, 0, 0,
388
+ 0, 0, 0, 0, 0, 0, 0, 0,
389
+ 0, 0, 0, 0, 0, 0, 0, 0,
390
+ 0, 0, 0, 0, 0, 0, 0, 0,
391
+ 0, 0, 0, 0, 0, 0, 0, 0,
392
+ 0, 0, 0, 0, 0, 0, 0, 0,
393
+ 0, 0, 0, 0, 0, 0, 0, 0,
394
+ 0, 0, 0, 0, 0, 0, 0, 0,
395
+ 0, 0, 0, 0, 0, 0, 0, 0,
396
+ 0, 0, 0, 0, 0, 0, 0, 0,
397
+ 0, 0, 0, 0, 0, 0, 0, 0,
398
+ 0, 0, 0, 0, 0, 0, 0, 0,
399
+ 0, 0, 0, 0, 0, 0, 0, 0,
400
+ 0, 0, 0, 0, 0, 0, 0, 0,
401
+ 0, 0, 0, 0, 0, 0, 0, 0,
402
+ 0, 0, 0, 0, 0, 0, 0, 0,
403
+ 0, 0, 0, 0, 0, 0, 0, 0,
404
+ 0, 0, 0, 0, 0, 0, 0, 0,
405
+ 0, 0, 0, 0, 0, 0, 0, 0,
406
+ 0, 0, 0, 0, 0, 0, 0, 0,
407
+ 0, 0, 0, 0, 0, 0, 0, 0,
408
+ 0, 0, 0, 0, 0, 0, 0, 0,
409
+ 0, 0, 0, 0, 0, 0, 0, 0,
410
+ 0, 0, 0, 0, 0, 0, 0, 0,
411
+ 0, 0, 0, 0, 0, 0, 0, 0,
412
+ 0, 0, 0, 0, 0, 0, 0, 0,
413
+ 0, 0, 0, 0, 0, 0, 0, 0,
414
+ 0, 0, 0, 0, 0, 0, 0, 0,
415
+ 0, 0, 0, 0, 0, 0, 0, 0,
416
+ 0, 0, 0, 0, 0, 0, 0, 0,
417
+ 0, 0, 0, 0, 0, 0, 0, 0,
418
+ 0, 0, 0, 0, 0, 0, 0, 0,
419
+ 0, 0, 0, 0, 0, 0, 0, 0,
420
+ 0, 0, 0, 0, 0, 0, 0, 0,
421
+ 0, 0, 0, 0, 0, 0, 0
422
+ ]
423
+
424
+ class << self
425
+ attr_accessor :_parser_index_offsets
426
+ private :_parser_index_offsets, :_parser_index_offsets=
427
+ end
428
+ self._parser_index_offsets = [
429
+ 0, 0, 9, 15, 24, 30, 36, 42,
430
+ 44, 46, 49, 51, 53, 59, 66, 74,
431
+ 81, 84, 93, 95, 97, 102, 108, 110,
432
+ 112, 120, 128, 136, 139, 142, 148, 154,
433
+ 160, 168, 175, 184, 192, 200, 208, 217,
434
+ 225, 234, 243, 246, 252, 261, 269, 278,
435
+ 287, 294, 303, 311, 319, 328, 336, 344,
436
+ 352, 360, 369, 372, 375, 381, 387, 393,
437
+ 401, 408, 417, 425, 433, 441, 450, 458,
438
+ 467, 470, 476, 485, 493, 502, 510, 519,
439
+ 528, 537, 545, 551, 558, 566, 573, 582,
440
+ 584, 586, 591, 597, 599, 601, 609, 617,
441
+ 625, 628, 631, 637, 643, 649, 657, 664,
442
+ 673, 681, 689, 697, 706, 714, 723, 726,
443
+ 732, 741, 749, 758, 767, 774, 783, 791,
444
+ 799, 808, 816, 824, 832, 840, 849, 852,
445
+ 855, 861, 867, 873, 881, 888, 897, 905,
446
+ 913, 921, 930, 938, 947, 950, 956, 965,
447
+ 973, 982, 990, 999, 1008, 1017, 1025, 1031,
448
+ 1037, 1043, 1049, 1056, 1064, 1071, 1080, 1082,
449
+ 1084, 1089, 1095, 1097, 1099, 1107, 1115, 1123,
450
+ 1126, 1129, 1135, 1141, 1147, 1155, 1162, 1171,
451
+ 1179, 1187, 1195, 1204, 1212, 1221, 1230, 1233,
452
+ 1239, 1248, 1256, 1265, 1274, 1281, 1290, 1298,
453
+ 1307, 1315, 1323, 1331, 1334, 1337, 1343, 1349,
454
+ 1355, 1363, 1370, 1379, 1387, 1395, 1403, 1409,
455
+ 1417, 1424, 1433, 1441, 1449, 1457, 1460, 1466,
456
+ 1474, 1482, 1489, 1498, 1506, 1514, 1522, 1525,
457
+ 1528, 1534, 1540, 1546, 1554, 1561, 1570, 1578,
458
+ 1586, 1594, 1603, 1611, 1620, 1629, 1632, 1638,
459
+ 1647, 1655, 1664, 1673, 1676, 1682, 1691, 1699,
460
+ 1708, 1711, 1717, 1726, 1734, 1743, 1752, 1755,
461
+ 1761, 1770, 1778, 1787, 1795, 1803, 1811, 1819,
462
+ 1828, 1836, 1839, 1842, 1848, 1854, 1860, 1868,
463
+ 1875, 1884, 1892, 1900, 1908, 1917, 1925, 1934,
464
+ 1943, 1946, 1952, 1961, 1970, 1978, 1986, 1995,
465
+ 2003, 2012, 2020, 2029, 2038, 2047, 2055, 2061,
466
+ 2068, 2077, 2085, 2093, 2102, 2110, 2119, 2128,
467
+ 2137, 2145, 2151, 2157, 2163, 2169, 2175
468
+ ]
469
+
470
+ class << self
471
+ attr_accessor :_parser_trans_targs
472
+ private :_parser_trans_targs, :_parser_trans_targs=
473
+ end
474
+ self._parser_trans_targs = [
475
+ 307, 1, 7, 10, 294, 305, 306, 0,
476
+ 2, 307, 3, 0, 0, 152, 2, 308,
477
+ 3, 7, 10, 82, 150, 151, 0, 4,
478
+ 308, 3, 0, 0, 5, 4, 0, 7,
479
+ 10, 12, 0, 6, 309, 3, 0, 0,
480
+ 0, 6, 9, 8, 9, 8, 310, 3,
481
+ 0, 9, 11, 9, 11, 0, 18, 22,
482
+ 0, 0, 13, 14, 0, 16, 47, 0,
483
+ 47, 13, 14, 18, 22, 0, 17, 0,
484
+ 17, 15, 14, 0, 16, 17, 0, 17,
485
+ 15, 310, 3, 0, 14, 18, 24, 15,
486
+ 16, 17, 0, 17, 15, 20, 19, 20,
487
+ 19, 14, 16, 21, 21, 0, 21, 18,
488
+ 22, 0, 0, 15, 20, 23, 20, 23,
489
+ 26, 23, 15, 16, 46, 23, 46, 25,
490
+ 26, 23, 15, 16, 46, 23, 46, 25,
491
+ 26, 27, 20, 23, 44, 23, 44, 25,
492
+ 29, 31, 28, 29, 31, 28, 26, 20,
493
+ 16, 30, 30, 23, 30, 27, 20, 23,
494
+ 23, 25, 32, 20, 16, 43, 43, 19,
495
+ 32, 20, 42, 19, 34, 19, 34, 33,
496
+ 32, 20, 16, 34, 19, 34, 33, 32,
497
+ 20, 35, 33, 16, 34, 19, 34, 33,
498
+ 37, 29, 33, 16, 41, 28, 41, 36,
499
+ 37, 29, 33, 16, 41, 28, 41, 36,
500
+ 37, 29, 31, 28, 38, 28, 38, 36,
501
+ 39, 20, 31, 36, 16, 41, 28, 41,
502
+ 36, 39, 29, 31, 28, 40, 28, 40,
503
+ 36, 39, 20, 33, 36, 16, 41, 28,
504
+ 41, 36, 39, 29, 33, 36, 16, 41,
505
+ 28, 41, 36, 29, 31, 28, 43, 20,
506
+ 42, 19, 19, 33, 45, 27, 20, 25,
507
+ 16, 46, 23, 46, 25, 45, 27, 20,
508
+ 23, 46, 23, 46, 25, 45, 27, 15,
509
+ 25, 16, 46, 23, 46, 25, 14, 18,
510
+ 53, 13, 16, 80, 0, 80, 48, 14,
511
+ 0, 16, 49, 0, 49, 48, 14, 18,
512
+ 50, 48, 16, 49, 0, 49, 48, 26,
513
+ 23, 48, 16, 52, 23, 52, 51, 26,
514
+ 23, 48, 16, 52, 23, 52, 51, 45,
515
+ 27, 48, 51, 16, 52, 23, 52, 51,
516
+ 55, 23, 13, 16, 74, 23, 74, 54,
517
+ 55, 23, 13, 16, 74, 23, 74, 54,
518
+ 55, 58, 20, 23, 57, 23, 57, 56,
519
+ 55, 23, 15, 16, 57, 23, 57, 56,
520
+ 55, 58, 20, 56, 16, 57, 23, 57,
521
+ 56, 60, 62, 59, 60, 62, 59, 55,
522
+ 20, 16, 61, 61, 23, 61, 58, 20,
523
+ 23, 23, 56, 63, 20, 16, 73, 73,
524
+ 19, 63, 20, 72, 19, 65, 19, 65,
525
+ 64, 63, 20, 16, 65, 19, 65, 64,
526
+ 63, 20, 66, 64, 16, 65, 19, 65,
527
+ 64, 68, 60, 64, 16, 71, 59, 71,
528
+ 67, 68, 60, 64, 16, 71, 59, 71,
529
+ 67, 68, 20, 62, 59, 69, 59, 69,
530
+ 67, 70, 20, 62, 67, 16, 71, 59,
531
+ 71, 67, 70, 20, 62, 59, 71, 59,
532
+ 71, 67, 70, 20, 64, 67, 16, 71,
533
+ 59, 71, 67, 60, 62, 59, 73, 20,
534
+ 72, 19, 19, 64, 77, 58, 13, 54,
535
+ 16, 79, 23, 79, 75, 55, 23, 48,
536
+ 16, 76, 23, 76, 75, 55, 58, 13,
537
+ 75, 16, 76, 23, 76, 75, 77, 58,
538
+ 20, 23, 78, 23, 78, 56, 55, 58,
539
+ 15, 56, 16, 57, 23, 57, 56, 77,
540
+ 58, 48, 75, 16, 76, 23, 76, 75,
541
+ 14, 18, 81, 48, 16, 49, 0, 49,
542
+ 48, 55, 23, 48, 16, 76, 23, 76,
543
+ 75, 0, 87, 91, 0, 0, 83, 84,
544
+ 0, 16, 115, 0, 115, 83, 84, 87,
545
+ 91, 0, 86, 0, 86, 85, 84, 0,
546
+ 16, 86, 0, 86, 85, 84, 87, 93,
547
+ 85, 16, 86, 0, 86, 85, 89, 88,
548
+ 89, 88, 84, 16, 90, 90, 0, 90,
549
+ 87, 91, 0, 0, 85, 89, 92, 89,
550
+ 92, 95, 92, 85, 16, 114, 92, 114,
551
+ 94, 95, 92, 85, 16, 114, 92, 114,
552
+ 94, 95, 96, 89, 92, 112, 92, 112,
553
+ 94, 98, 100, 97, 98, 100, 97, 95,
554
+ 89, 16, 99, 99, 92, 99, 96, 89,
555
+ 92, 92, 94, 101, 89, 16, 111, 111,
556
+ 88, 101, 89, 110, 88, 103, 88, 103,
557
+ 102, 101, 89, 16, 103, 88, 103, 102,
558
+ 101, 89, 104, 102, 16, 103, 88, 103,
559
+ 102, 106, 98, 102, 16, 109, 97, 109,
560
+ 105, 106, 98, 102, 16, 109, 97, 109,
561
+ 105, 106, 98, 100, 97, 107, 97, 107,
562
+ 105, 108, 98, 100, 105, 16, 109, 97,
563
+ 109, 105, 108, 98, 100, 97, 109, 97,
564
+ 109, 105, 108, 98, 102, 105, 16, 109,
565
+ 97, 109, 105, 98, 100, 97, 111, 89,
566
+ 110, 88, 88, 102, 113, 96, 89, 94,
567
+ 16, 114, 92, 114, 94, 113, 96, 89,
568
+ 92, 114, 92, 114, 94, 113, 96, 85,
569
+ 94, 16, 114, 92, 114, 94, 84, 87,
570
+ 121, 83, 16, 148, 0, 148, 116, 84,
571
+ 0, 16, 117, 0, 117, 116, 84, 87,
572
+ 118, 116, 16, 117, 0, 117, 116, 95,
573
+ 92, 116, 16, 120, 92, 120, 119, 95,
574
+ 92, 116, 16, 120, 92, 120, 119, 113,
575
+ 96, 116, 119, 16, 120, 92, 120, 119,
576
+ 123, 92, 83, 16, 142, 92, 142, 122,
577
+ 123, 92, 83, 16, 142, 92, 142, 122,
578
+ 123, 126, 89, 92, 125, 92, 125, 124,
579
+ 123, 92, 85, 16, 125, 92, 125, 124,
580
+ 123, 126, 89, 124, 16, 125, 92, 125,
581
+ 124, 128, 130, 127, 128, 130, 127, 123,
582
+ 89, 16, 129, 129, 92, 129, 126, 89,
583
+ 92, 92, 124, 131, 89, 16, 141, 141,
584
+ 88, 131, 89, 140, 88, 133, 88, 133,
585
+ 132, 131, 89, 16, 133, 88, 133, 132,
586
+ 131, 89, 134, 132, 16, 133, 88, 133,
587
+ 132, 136, 128, 132, 16, 139, 127, 139,
588
+ 135, 136, 128, 132, 16, 139, 127, 139,
589
+ 135, 136, 89, 130, 127, 137, 127, 137,
590
+ 135, 138, 89, 130, 135, 16, 139, 127,
591
+ 139, 135, 138, 89, 130, 127, 139, 127,
592
+ 139, 135, 138, 89, 132, 135, 16, 139,
593
+ 127, 139, 135, 128, 130, 127, 141, 89,
594
+ 140, 88, 88, 132, 145, 126, 83, 122,
595
+ 16, 147, 92, 147, 143, 123, 92, 116,
596
+ 16, 144, 92, 144, 143, 123, 126, 83,
597
+ 143, 16, 144, 92, 144, 143, 145, 126,
598
+ 89, 92, 146, 92, 146, 124, 123, 126,
599
+ 85, 124, 16, 125, 92, 125, 124, 145,
600
+ 126, 116, 143, 16, 144, 92, 144, 143,
601
+ 84, 87, 149, 116, 16, 117, 0, 117,
602
+ 116, 123, 92, 116, 16, 144, 92, 144,
603
+ 143, 0, 7, 10, 82, 0, 4, 0,
604
+ 7, 10, 82, 0, 4, 0, 7, 10,
605
+ 153, 0, 6, 0, 158, 162, 0, 0,
606
+ 154, 155, 0, 16, 187, 0, 187, 154,
607
+ 155, 158, 162, 0, 157, 0, 157, 156,
608
+ 155, 0, 16, 157, 0, 157, 156, 155,
609
+ 158, 164, 156, 16, 157, 0, 157, 156,
610
+ 160, 159, 160, 159, 155, 16, 161, 161,
611
+ 0, 161, 158, 162, 0, 0, 156, 160,
612
+ 163, 160, 163, 166, 163, 156, 16, 186,
613
+ 163, 186, 165, 166, 163, 156, 16, 186,
614
+ 163, 186, 165, 166, 167, 160, 163, 184,
615
+ 163, 184, 165, 169, 171, 168, 169, 171,
616
+ 168, 166, 160, 16, 170, 170, 163, 170,
617
+ 167, 160, 163, 163, 165, 172, 160, 16,
618
+ 183, 183, 159, 172, 160, 182, 159, 174,
619
+ 159, 174, 173, 172, 160, 16, 174, 159,
620
+ 174, 173, 172, 160, 175, 173, 16, 174,
621
+ 159, 174, 173, 177, 169, 173, 16, 181,
622
+ 168, 181, 176, 177, 169, 173, 16, 181,
623
+ 168, 181, 176, 177, 169, 160, 168, 178,
624
+ 168, 178, 176, 179, 169, 171, 176, 16,
625
+ 181, 168, 181, 176, 179, 169, 160, 168,
626
+ 180, 168, 180, 176, 179, 169, 173, 176,
627
+ 16, 181, 168, 181, 176, 179, 169, 156,
628
+ 176, 16, 181, 168, 181, 176, 169, 171,
629
+ 168, 183, 160, 182, 159, 159, 173, 185,
630
+ 167, 160, 165, 16, 186, 163, 186, 165,
631
+ 185, 167, 160, 163, 186, 163, 186, 165,
632
+ 185, 167, 156, 165, 16, 186, 163, 186,
633
+ 165, 190, 158, 284, 154, 16, 292, 0,
634
+ 292, 188, 155, 0, 16, 189, 0, 189,
635
+ 188, 190, 158, 259, 188, 16, 189, 0,
636
+ 189, 188, 190, 158, 162, 0, 191, 0,
637
+ 191, 156, 155, 158, 192, 156, 16, 157,
638
+ 0, 157, 156, 194, 163, 156, 16, 258,
639
+ 163, 258, 193, 194, 163, 156, 16, 258,
640
+ 163, 258, 193, 194, 195, 160, 163, 256,
641
+ 163, 256, 193, 197, 199, 196, 197, 199,
642
+ 196, 194, 160, 16, 198, 198, 163, 198,
643
+ 195, 160, 163, 163, 193, 200, 160, 16,
644
+ 255, 255, 159, 200, 160, 254, 159, 202,
645
+ 159, 202, 201, 200, 160, 16, 202, 159,
646
+ 202, 201, 200, 160, 203, 201, 16, 202,
647
+ 159, 202, 201, 205, 197, 201, 16, 253,
648
+ 196, 253, 204, 205, 197, 201, 16, 253,
649
+ 196, 253, 204, 205, 197, 206, 196, 250,
650
+ 196, 250, 204, 207, 160, 16, 249, 249,
651
+ 159, 207, 160, 248, 159, 209, 159, 209,
652
+ 208, 207, 160, 16, 209, 159, 209, 208,
653
+ 207, 160, 210, 208, 16, 209, 159, 209,
654
+ 208, 212, 214, 208, 16, 247, 213, 247,
655
+ 211, 212, 214, 208, 16, 247, 213, 247,
656
+ 211, 212, 160, 206, 213, 245, 213, 245,
657
+ 211, 214, 206, 213, 215, 160, 16, 244,
658
+ 244, 163, 215, 243, 160, 163, 242, 163,
659
+ 242, 216, 215, 163, 217, 16, 242, 163,
660
+ 242, 216, 155, 0, 16, 218, 0, 218,
661
+ 156, 190, 158, 219, 156, 16, 191, 0,
662
+ 191, 156, 221, 163, 217, 16, 241, 163,
663
+ 241, 220, 221, 163, 217, 16, 241, 163,
664
+ 241, 220, 221, 222, 160, 163, 239, 163,
665
+ 239, 220, 224, 226, 223, 224, 226, 223,
666
+ 221, 160, 16, 225, 225, 163, 225, 222,
667
+ 160, 163, 163, 220, 227, 160, 16, 238,
668
+ 238, 159, 227, 160, 237, 159, 229, 159,
669
+ 229, 228, 227, 160, 16, 229, 159, 229,
670
+ 228, 227, 160, 230, 228, 16, 229, 159,
671
+ 229, 228, 232, 224, 228, 16, 236, 223,
672
+ 236, 231, 232, 224, 228, 16, 236, 223,
673
+ 236, 231, 232, 169, 160, 223, 233, 223,
674
+ 233, 231, 234, 169, 226, 231, 16, 236,
675
+ 223, 236, 231, 234, 169, 160, 223, 235,
676
+ 223, 235, 231, 234, 169, 228, 231, 16,
677
+ 236, 223, 236, 231, 234, 169, 156, 231,
678
+ 16, 236, 223, 236, 231, 224, 226, 223,
679
+ 238, 160, 237, 159, 159, 228, 240, 222,
680
+ 160, 220, 16, 241, 163, 241, 220, 240,
681
+ 222, 160, 163, 241, 163, 241, 220, 240,
682
+ 222, 217, 220, 16, 241, 163, 241, 220,
683
+ 215, 243, 160, 216, 16, 242, 163, 242,
684
+ 216, 214, 206, 213, 244, 243, 160, 163,
685
+ 163, 216, 246, 160, 206, 211, 16, 247,
686
+ 213, 247, 211, 246, 160, 206, 213, 247,
687
+ 213, 247, 211, 246, 160, 208, 211, 16,
688
+ 247, 213, 247, 211, 214, 206, 213, 249,
689
+ 160, 248, 159, 159, 208, 251, 197, 199,
690
+ 204, 16, 253, 196, 253, 204, 251, 197,
691
+ 206, 196, 252, 196, 252, 204, 251, 197,
692
+ 201, 204, 16, 253, 196, 253, 204, 251,
693
+ 197, 208, 204, 16, 253, 196, 253, 204,
694
+ 197, 199, 196, 255, 160, 254, 159, 159,
695
+ 201, 257, 195, 160, 193, 16, 258, 163,
696
+ 258, 193, 257, 195, 160, 163, 258, 163,
697
+ 258, 193, 257, 195, 156, 193, 16, 258,
698
+ 163, 258, 193, 261, 163, 188, 16, 283,
699
+ 163, 283, 260, 261, 163, 188, 16, 283,
700
+ 163, 283, 260, 261, 265, 160, 163, 282,
701
+ 163, 282, 262, 261, 163, 217, 16, 263,
702
+ 163, 263, 262, 264, 265, 217, 262, 16,
703
+ 263, 163, 263, 262, 264, 265, 160, 163,
704
+ 263, 163, 263, 262, 267, 269, 266, 267,
705
+ 269, 266, 261, 160, 16, 268, 268, 163,
706
+ 268, 265, 160, 163, 163, 262, 270, 160,
707
+ 16, 281, 281, 159, 270, 160, 280, 159,
708
+ 272, 159, 272, 271, 270, 160, 16, 272,
709
+ 159, 272, 271, 270, 160, 273, 271, 16,
710
+ 272, 159, 272, 271, 275, 267, 271, 16,
711
+ 279, 266, 279, 274, 275, 267, 271, 16,
712
+ 279, 266, 279, 274, 275, 197, 206, 266,
713
+ 276, 266, 276, 274, 277, 197, 269, 274,
714
+ 16, 279, 266, 279, 274, 277, 197, 206,
715
+ 266, 278, 266, 278, 274, 277, 197, 271,
716
+ 274, 16, 279, 266, 279, 274, 277, 197,
717
+ 208, 274, 16, 279, 266, 279, 274, 267,
718
+ 269, 266, 281, 160, 280, 159, 159, 271,
719
+ 264, 265, 160, 262, 16, 263, 163, 263,
720
+ 262, 264, 265, 217, 260, 16, 283, 163,
721
+ 283, 260, 215, 163, 154, 16, 286, 163,
722
+ 286, 285, 215, 163, 154, 16, 286, 163,
723
+ 286, 285, 289, 243, 160, 285, 16, 291,
724
+ 163, 291, 287, 215, 163, 188, 16, 288,
725
+ 163, 288, 287, 289, 243, 160, 287, 16,
726
+ 291, 163, 291, 287, 289, 243, 160, 163,
727
+ 290, 163, 290, 216, 215, 243, 217, 216,
728
+ 16, 242, 163, 242, 216, 289, 243, 217,
729
+ 287, 16, 291, 163, 291, 287, 190, 158,
730
+ 293, 188, 16, 189, 0, 189, 188, 215,
731
+ 163, 188, 16, 288, 163, 288, 287, 0,
732
+ 87, 91, 0, 0, 295, 84, 0, 16,
733
+ 296, 0, 296, 295, 84, 87, 297, 295,
734
+ 16, 303, 0, 303, 116, 123, 92, 295,
735
+ 16, 299, 92, 299, 298, 123, 92, 295,
736
+ 16, 299, 92, 299, 298, 145, 126, 295,
737
+ 298, 16, 302, 92, 302, 300, 123, 92,
738
+ 116, 16, 301, 92, 301, 300, 123, 126,
739
+ 89, 300, 16, 301, 92, 301, 300, 145,
740
+ 126, 116, 300, 16, 301, 92, 301, 300,
741
+ 84, 87, 304, 116, 16, 117, 0, 117,
742
+ 116, 123, 92, 116, 16, 301, 92, 301,
743
+ 300, 0, 7, 10, 294, 0, 2, 0,
744
+ 7, 10, 294, 0, 2, 307, 3, 0,
745
+ 0, 152, 2, 308, 3, 0, 0, 5,
746
+ 4, 309, 3, 0, 0, 0, 6, 0,
747
+ 0
748
+ ]
749
+
750
+ class << self
751
+ attr_accessor :_parser_trans_actions
752
+ private :_parser_trans_actions, :_parser_trans_actions=
753
+ end
754
+ self._parser_trans_actions = [
755
+ 49, 0, 53, 53, 53, 0, 0, 7,
756
+ 49, 12, 12, 7, 7, 9, 0, 49,
757
+ 0, 53, 53, 53, 0, 0, 7, 49,
758
+ 12, 12, 7, 7, 9, 0, 0, 5,
759
+ 5, 5, 0, 1, 12, 12, 7, 7,
760
+ 7, 0, 25, 1, 15, 0, 3, 3,
761
+ 7, 25, 1, 15, 0, 0, 5, 5,
762
+ 0, 0, 1, 12, 0, 33, 12, 0,
763
+ 12, 0, 0, 5, 5, 0, 1, 0,
764
+ 1, 1, 12, 0, 33, 12, 0, 12,
765
+ 0, 0, 0, 7, 12, 5, 5, 0,
766
+ 33, 21, 0, 21, 1, 25, 1, 15,
767
+ 0, 3, 18, 3, 3, 0, 0, 5,
768
+ 5, 0, 0, 1, 25, 1, 15, 0,
769
+ 21, 1, 25, 33, 21, 1, 21, 1,
770
+ 12, 0, 15, 33, 12, 0, 12, 0,
771
+ 0, 5, 15, 0, 1, 0, 1, 1,
772
+ 25, 25, 1, 15, 15, 0, 3, 15,
773
+ 18, 3, 3, 0, 0, 5, 15, 0,
774
+ 0, 1, 3, 15, 18, 3, 3, 0,
775
+ 0, 15, 5, 0, 1, 0, 1, 1,
776
+ 12, 15, 33, 12, 0, 12, 0, 12,
777
+ 15, 5, 0, 33, 21, 0, 21, 1,
778
+ 21, 37, 25, 33, 21, 1, 21, 1,
779
+ 12, 15, 15, 33, 12, 0, 12, 0,
780
+ 0, 15, 15, 0, 1, 0, 1, 1,
781
+ 12, 15, 15, 0, 33, 21, 0, 21,
782
+ 1, 0, 15, 15, 0, 1, 0, 1,
783
+ 1, 12, 15, 15, 0, 33, 21, 0,
784
+ 21, 1, 12, 15, 15, 0, 33, 21,
785
+ 0, 21, 1, 37, 25, 1, 0, 15,
786
+ 5, 0, 0, 1, 12, 5, 15, 0,
787
+ 33, 21, 0, 21, 1, 0, 5, 15,
788
+ 0, 1, 0, 1, 1, 12, 5, 15,
789
+ 0, 33, 21, 0, 21, 1, 12, 5,
790
+ 5, 0, 33, 29, 0, 29, 1, 12,
791
+ 0, 33, 12, 0, 12, 0, 12, 5,
792
+ 5, 0, 33, 29, 0, 29, 1, 29,
793
+ 1, 25, 33, 29, 1, 29, 1, 12,
794
+ 0, 15, 33, 12, 0, 12, 0, 12,
795
+ 5, 15, 0, 33, 29, 0, 29, 1,
796
+ 29, 1, 25, 33, 29, 1, 29, 1,
797
+ 12, 0, 15, 33, 12, 0, 12, 0,
798
+ 0, 5, 15, 0, 1, 0, 1, 1,
799
+ 12, 0, 15, 33, 12, 0, 12, 0,
800
+ 12, 5, 15, 0, 33, 21, 0, 21,
801
+ 1, 25, 25, 1, 15, 15, 0, 3,
802
+ 15, 18, 3, 3, 0, 0, 5, 15,
803
+ 0, 0, 1, 3, 15, 18, 3, 3,
804
+ 0, 0, 15, 5, 0, 1, 0, 1,
805
+ 1, 12, 15, 33, 12, 0, 12, 0,
806
+ 12, 15, 5, 0, 33, 21, 0, 21,
807
+ 1, 21, 37, 25, 33, 21, 1, 21,
808
+ 1, 12, 15, 15, 33, 12, 0, 12,
809
+ 0, 0, 15, 15, 0, 1, 0, 1,
810
+ 1, 12, 15, 15, 0, 33, 21, 0,
811
+ 21, 1, 0, 15, 15, 0, 1, 0,
812
+ 1, 1, 12, 15, 15, 0, 33, 21,
813
+ 0, 21, 1, 37, 25, 1, 0, 15,
814
+ 5, 0, 0, 1, 12, 5, 15, 0,
815
+ 33, 29, 0, 29, 1, 12, 0, 15,
816
+ 33, 12, 0, 12, 0, 12, 5, 15,
817
+ 0, 33, 29, 0, 29, 1, 0, 5,
818
+ 15, 0, 1, 0, 1, 1, 12, 5,
819
+ 15, 0, 33, 21, 0, 21, 1, 12,
820
+ 5, 15, 0, 33, 29, 0, 29, 1,
821
+ 12, 5, 5, 0, 33, 29, 0, 29,
822
+ 1, 29, 1, 25, 33, 29, 1, 29,
823
+ 1, 0, 5, 5, 0, 0, 1, 12,
824
+ 0, 33, 12, 0, 12, 0, 0, 5,
825
+ 5, 0, 1, 0, 1, 1, 12, 0,
826
+ 33, 12, 0, 12, 0, 12, 5, 5,
827
+ 0, 33, 21, 0, 21, 1, 25, 1,
828
+ 15, 0, 3, 18, 3, 3, 0, 0,
829
+ 5, 5, 0, 0, 1, 25, 1, 15,
830
+ 0, 21, 1, 25, 33, 21, 1, 21,
831
+ 1, 12, 0, 15, 33, 12, 0, 12,
832
+ 0, 0, 5, 15, 0, 1, 0, 1,
833
+ 1, 25, 25, 1, 15, 15, 0, 3,
834
+ 15, 18, 3, 3, 0, 0, 5, 15,
835
+ 0, 0, 1, 3, 15, 18, 3, 3,
836
+ 0, 0, 15, 5, 0, 1, 0, 1,
837
+ 1, 12, 15, 33, 12, 0, 12, 0,
838
+ 12, 15, 5, 0, 33, 21, 0, 21,
839
+ 1, 21, 37, 25, 33, 21, 1, 21,
840
+ 1, 12, 15, 15, 33, 12, 0, 12,
841
+ 0, 0, 15, 15, 0, 1, 0, 1,
842
+ 1, 12, 15, 15, 0, 33, 21, 0,
843
+ 21, 1, 0, 15, 15, 0, 1, 0,
844
+ 1, 1, 12, 15, 15, 0, 33, 21,
845
+ 0, 21, 1, 37, 25, 1, 0, 15,
846
+ 5, 0, 0, 1, 12, 5, 15, 0,
847
+ 33, 21, 0, 21, 1, 0, 5, 15,
848
+ 0, 1, 0, 1, 1, 12, 5, 15,
849
+ 0, 33, 21, 0, 21, 1, 12, 5,
850
+ 5, 0, 33, 29, 0, 29, 1, 12,
851
+ 0, 33, 12, 0, 12, 0, 12, 5,
852
+ 5, 0, 33, 29, 0, 29, 1, 29,
853
+ 1, 25, 33, 29, 1, 29, 1, 12,
854
+ 0, 15, 33, 12, 0, 12, 0, 12,
855
+ 5, 15, 0, 33, 29, 0, 29, 1,
856
+ 29, 1, 25, 33, 29, 1, 29, 1,
857
+ 12, 0, 15, 33, 12, 0, 12, 0,
858
+ 0, 5, 15, 0, 1, 0, 1, 1,
859
+ 12, 0, 15, 33, 12, 0, 12, 0,
860
+ 12, 5, 15, 0, 33, 21, 0, 21,
861
+ 1, 25, 25, 1, 15, 15, 0, 3,
862
+ 15, 18, 3, 3, 0, 0, 5, 15,
863
+ 0, 0, 1, 3, 15, 18, 3, 3,
864
+ 0, 0, 15, 5, 0, 1, 0, 1,
865
+ 1, 12, 15, 33, 12, 0, 12, 0,
866
+ 12, 15, 5, 0, 33, 21, 0, 21,
867
+ 1, 21, 37, 25, 33, 21, 1, 21,
868
+ 1, 12, 15, 15, 33, 12, 0, 12,
869
+ 0, 0, 15, 15, 0, 1, 0, 1,
870
+ 1, 12, 15, 15, 0, 33, 21, 0,
871
+ 21, 1, 0, 15, 15, 0, 1, 0,
872
+ 1, 1, 12, 15, 15, 0, 33, 21,
873
+ 0, 21, 1, 37, 25, 1, 0, 15,
874
+ 5, 0, 0, 1, 12, 5, 15, 0,
875
+ 33, 29, 0, 29, 1, 12, 0, 15,
876
+ 33, 12, 0, 12, 0, 12, 5, 15,
877
+ 0, 33, 29, 0, 29, 1, 0, 5,
878
+ 15, 0, 1, 0, 1, 1, 12, 5,
879
+ 15, 0, 33, 21, 0, 21, 1, 12,
880
+ 5, 15, 0, 33, 29, 0, 29, 1,
881
+ 12, 5, 5, 0, 33, 29, 0, 29,
882
+ 1, 29, 1, 25, 33, 29, 1, 29,
883
+ 1, 0, 53, 53, 53, 0, 49, 0,
884
+ 45, 45, 45, 0, 41, 0, 5, 5,
885
+ 5, 0, 1, 0, 5, 5, 0, 0,
886
+ 1, 12, 0, 33, 12, 0, 12, 0,
887
+ 0, 5, 5, 0, 1, 0, 1, 1,
888
+ 12, 0, 33, 12, 0, 12, 0, 12,
889
+ 5, 5, 0, 33, 21, 0, 21, 1,
890
+ 25, 1, 15, 0, 3, 18, 3, 3,
891
+ 0, 0, 5, 5, 0, 0, 1, 25,
892
+ 1, 15, 0, 21, 1, 25, 33, 21,
893
+ 1, 21, 1, 12, 0, 15, 33, 12,
894
+ 0, 12, 0, 0, 5, 15, 0, 1,
895
+ 0, 1, 1, 25, 25, 1, 15, 15,
896
+ 0, 3, 15, 18, 3, 3, 0, 0,
897
+ 5, 15, 0, 0, 1, 3, 15, 18,
898
+ 3, 3, 0, 0, 15, 5, 0, 1,
899
+ 0, 1, 1, 12, 15, 33, 12, 0,
900
+ 12, 0, 12, 15, 5, 0, 33, 21,
901
+ 0, 21, 1, 21, 37, 25, 33, 21,
902
+ 1, 21, 1, 12, 15, 15, 33, 12,
903
+ 0, 12, 0, 0, 15, 15, 0, 1,
904
+ 0, 1, 1, 12, 15, 15, 0, 33,
905
+ 21, 0, 21, 1, 0, 15, 15, 0,
906
+ 1, 0, 1, 1, 12, 15, 15, 0,
907
+ 33, 21, 0, 21, 1, 12, 15, 15,
908
+ 0, 33, 21, 0, 21, 1, 37, 25,
909
+ 1, 0, 15, 5, 0, 0, 1, 12,
910
+ 5, 15, 0, 33, 21, 0, 21, 1,
911
+ 0, 5, 15, 0, 1, 0, 1, 1,
912
+ 12, 5, 15, 0, 33, 21, 0, 21,
913
+ 1, 12, 5, 5, 0, 33, 29, 0,
914
+ 29, 1, 12, 0, 33, 12, 0, 12,
915
+ 0, 12, 5, 5, 0, 33, 29, 0,
916
+ 29, 1, 0, 5, 5, 0, 1, 0,
917
+ 1, 1, 12, 5, 5, 0, 33, 21,
918
+ 0, 21, 1, 21, 1, 25, 33, 21,
919
+ 1, 21, 1, 12, 0, 15, 33, 12,
920
+ 0, 12, 0, 0, 5, 15, 0, 1,
921
+ 0, 1, 1, 25, 25, 1, 15, 15,
922
+ 0, 3, 15, 18, 3, 3, 0, 0,
923
+ 5, 15, 0, 0, 1, 3, 15, 18,
924
+ 3, 3, 0, 0, 15, 5, 0, 1,
925
+ 0, 1, 1, 12, 15, 33, 12, 0,
926
+ 12, 0, 12, 15, 5, 0, 33, 21,
927
+ 0, 21, 1, 21, 37, 25, 33, 21,
928
+ 1, 21, 1, 12, 15, 15, 33, 12,
929
+ 0, 12, 0, 0, 15, 15, 0, 1,
930
+ 0, 1, 1, 3, 15, 18, 3, 3,
931
+ 0, 0, 15, 5, 0, 1, 0, 1,
932
+ 1, 12, 15, 33, 12, 0, 12, 0,
933
+ 12, 15, 5, 0, 33, 21, 0, 21,
934
+ 1, 21, 37, 25, 33, 21, 1, 21,
935
+ 1, 12, 15, 15, 33, 12, 0, 12,
936
+ 0, 0, 15, 15, 0, 1, 0, 1,
937
+ 1, 15, 15, 0, 3, 15, 18, 3,
938
+ 3, 0, 0, 5, 15, 0, 1, 0,
939
+ 1, 1, 12, 0, 15, 33, 12, 0,
940
+ 12, 0, 12, 0, 33, 12, 0, 12,
941
+ 0, 12, 5, 5, 0, 33, 21, 0,
942
+ 21, 1, 21, 1, 25, 33, 21, 1,
943
+ 21, 1, 12, 0, 15, 33, 12, 0,
944
+ 12, 0, 0, 5, 15, 0, 1, 0,
945
+ 1, 1, 25, 25, 1, 15, 15, 0,
946
+ 3, 15, 18, 3, 3, 0, 0, 5,
947
+ 15, 0, 0, 1, 3, 15, 18, 3,
948
+ 3, 0, 0, 15, 5, 0, 1, 0,
949
+ 1, 1, 12, 15, 33, 12, 0, 12,
950
+ 0, 12, 15, 5, 0, 33, 21, 0,
951
+ 21, 1, 21, 37, 25, 33, 21, 1,
952
+ 21, 1, 12, 15, 15, 33, 12, 0,
953
+ 12, 0, 0, 15, 15, 0, 1, 0,
954
+ 1, 1, 12, 15, 15, 0, 33, 21,
955
+ 0, 21, 1, 0, 15, 15, 0, 1,
956
+ 0, 1, 1, 12, 15, 15, 0, 33,
957
+ 21, 0, 21, 1, 12, 15, 15, 0,
958
+ 33, 21, 0, 21, 1, 37, 25, 1,
959
+ 0, 15, 5, 0, 0, 1, 12, 5,
960
+ 15, 0, 33, 21, 0, 21, 1, 0,
961
+ 5, 15, 0, 1, 0, 1, 1, 12,
962
+ 5, 15, 0, 33, 21, 0, 21, 1,
963
+ 12, 5, 15, 0, 33, 21, 0, 21,
964
+ 1, 25, 25, 1, 0, 5, 15, 0,
965
+ 0, 1, 12, 15, 15, 0, 33, 21,
966
+ 0, 21, 1, 0, 15, 15, 0, 1,
967
+ 0, 1, 1, 12, 15, 15, 0, 33,
968
+ 21, 0, 21, 1, 37, 25, 1, 0,
969
+ 15, 5, 0, 0, 1, 12, 15, 15,
970
+ 0, 33, 21, 0, 21, 1, 0, 15,
971
+ 15, 0, 1, 0, 1, 1, 12, 15,
972
+ 15, 0, 33, 21, 0, 21, 1, 12,
973
+ 15, 15, 0, 33, 21, 0, 21, 1,
974
+ 37, 25, 1, 0, 15, 5, 0, 0,
975
+ 1, 12, 5, 15, 0, 33, 21, 0,
976
+ 21, 1, 0, 5, 15, 0, 1, 0,
977
+ 1, 1, 12, 5, 15, 0, 33, 21,
978
+ 0, 21, 1, 29, 1, 25, 33, 29,
979
+ 1, 29, 1, 12, 0, 15, 33, 12,
980
+ 0, 12, 0, 0, 5, 15, 0, 1,
981
+ 0, 1, 1, 12, 0, 15, 33, 12,
982
+ 0, 12, 0, 12, 5, 15, 0, 33,
983
+ 21, 0, 21, 1, 0, 5, 15, 0,
984
+ 1, 0, 1, 1, 25, 25, 1, 15,
985
+ 15, 0, 3, 15, 18, 3, 3, 0,
986
+ 0, 5, 15, 0, 0, 1, 3, 15,
987
+ 18, 3, 3, 0, 0, 15, 5, 0,
988
+ 1, 0, 1, 1, 12, 15, 33, 12,
989
+ 0, 12, 0, 12, 15, 5, 0, 33,
990
+ 21, 0, 21, 1, 21, 37, 25, 33,
991
+ 21, 1, 21, 1, 12, 15, 15, 33,
992
+ 12, 0, 12, 0, 0, 15, 15, 0,
993
+ 1, 0, 1, 1, 12, 15, 15, 0,
994
+ 33, 21, 0, 21, 1, 0, 15, 15,
995
+ 0, 1, 0, 1, 1, 12, 15, 15,
996
+ 0, 33, 21, 0, 21, 1, 12, 15,
997
+ 15, 0, 33, 21, 0, 21, 1, 37,
998
+ 25, 1, 0, 15, 5, 0, 0, 1,
999
+ 12, 5, 15, 0, 33, 21, 0, 21,
1000
+ 1, 12, 5, 15, 0, 33, 29, 0,
1001
+ 29, 1, 29, 1, 25, 33, 29, 1,
1002
+ 29, 1, 12, 0, 15, 33, 12, 0,
1003
+ 12, 0, 12, 5, 15, 0, 33, 29,
1004
+ 0, 29, 1, 12, 0, 15, 33, 12,
1005
+ 0, 12, 0, 12, 5, 15, 0, 33,
1006
+ 29, 0, 29, 1, 0, 5, 15, 0,
1007
+ 1, 0, 1, 1, 12, 5, 15, 0,
1008
+ 33, 21, 0, 21, 1, 12, 5, 15,
1009
+ 0, 33, 29, 0, 29, 1, 12, 5,
1010
+ 5, 0, 33, 29, 0, 29, 1, 29,
1011
+ 1, 25, 33, 29, 1, 29, 1, 0,
1012
+ 5, 5, 0, 0, 1, 12, 0, 33,
1013
+ 12, 0, 12, 0, 12, 5, 5, 0,
1014
+ 33, 29, 0, 29, 1, 29, 1, 25,
1015
+ 33, 29, 1, 29, 1, 12, 0, 15,
1016
+ 33, 12, 0, 12, 0, 12, 5, 15,
1017
+ 0, 33, 29, 0, 29, 1, 12, 0,
1018
+ 15, 33, 12, 0, 12, 0, 12, 5,
1019
+ 15, 0, 33, 29, 0, 29, 1, 12,
1020
+ 5, 15, 0, 33, 29, 0, 29, 1,
1021
+ 12, 5, 5, 0, 33, 29, 0, 29,
1022
+ 1, 29, 1, 25, 33, 29, 1, 29,
1023
+ 1, 0, 53, 53, 53, 0, 49, 0,
1024
+ 45, 45, 45, 0, 41, 12, 12, 7,
1025
+ 7, 9, 0, 12, 12, 7, 7, 9,
1026
+ 0, 12, 12, 7, 7, 7, 0, 0,
1027
+ 0
1028
+ ]
1029
+
1030
+ class << self
1031
+ attr_accessor :_parser_eof_actions
1032
+ private :_parser_eof_actions, :_parser_eof_actions=
1033
+ end
1034
+ self._parser_eof_actions = [
1035
+ 0, 7, 7, 7, 7, 0, 7, 0,
1036
+ 0, 7, 0, 0, 0, 0, 0, 0,
1037
+ 7, 0, 0, 0, 0, 0, 0, 0,
1038
+ 0, 0, 0, 0, 0, 0, 0, 0,
1039
+ 0, 0, 0, 0, 0, 0, 0, 0,
1040
+ 0, 0, 0, 0, 0, 0, 0, 0,
1041
+ 0, 0, 0, 0, 0, 0, 0, 0,
1042
+ 0, 0, 0, 0, 0, 0, 0, 0,
1043
+ 0, 0, 0, 0, 0, 0, 0, 0,
1044
+ 0, 0, 0, 0, 0, 0, 0, 0,
1045
+ 0, 0, 0, 0, 0, 0, 0, 0,
1046
+ 0, 0, 0, 0, 0, 0, 0, 0,
1047
+ 0, 0, 0, 0, 0, 0, 0, 0,
1048
+ 0, 0, 0, 0, 0, 0, 0, 0,
1049
+ 0, 0, 0, 0, 0, 0, 0, 0,
1050
+ 0, 0, 0, 0, 0, 0, 0, 0,
1051
+ 0, 0, 0, 0, 0, 0, 0, 0,
1052
+ 0, 0, 0, 0, 0, 0, 0, 0,
1053
+ 0, 0, 0, 0, 0, 0, 0, 0,
1054
+ 0, 0, 0, 0, 0, 0, 0, 0,
1055
+ 0, 0, 0, 0, 0, 0, 0, 0,
1056
+ 0, 0, 0, 0, 0, 0, 0, 0,
1057
+ 0, 0, 0, 0, 0, 0, 0, 0,
1058
+ 0, 0, 0, 0, 0, 0, 0, 0,
1059
+ 0, 0, 0, 0, 0, 0, 0, 0,
1060
+ 0, 0, 0, 0, 0, 0, 0, 0,
1061
+ 0, 0, 0, 0, 0, 0, 0, 0,
1062
+ 0, 0, 0, 0, 0, 0, 0, 0,
1063
+ 0, 0, 0, 0, 0, 0, 0, 0,
1064
+ 0, 0, 0, 0, 0, 0, 0, 0,
1065
+ 0, 0, 0, 0, 0, 0, 0, 0,
1066
+ 0, 0, 0, 0, 0, 0, 0, 0,
1067
+ 0, 0, 0, 0, 0, 0, 0, 0,
1068
+ 0, 0, 0, 0, 0, 0, 0, 0,
1069
+ 0, 0, 0, 0, 0, 0, 0, 0,
1070
+ 0, 0, 0, 0, 0, 0, 0, 0,
1071
+ 0, 0, 0, 0, 0, 0, 0, 0,
1072
+ 0, 0, 0, 0, 0, 0, 0, 0,
1073
+ 0, 0, 0, 0, 0, 0, 0
1074
+ ]
1075
+
1076
+ class << self
1077
+ attr_accessor :parser_start
1078
+ end
1079
+ self.parser_start = 1;
1080
+ class << self
1081
+ attr_accessor :parser_first_final
1082
+ end
1083
+ self.parser_first_final = 307;
1084
+ class << self
1085
+ attr_accessor :parser_error
1086
+ end
1087
+ self.parser_error = 0;
1088
+
1089
+ class << self
1090
+ attr_accessor :parser_en_main
1091
+ end
1092
+ self.parser_en_main = 1;
1093
+
1094
+ # line 91 "lib/keyword_search.rl"
1095
+ p = 0
1096
+ eof = nil
1097
+ word = nil
1098
+ pe = data.length
1099
+ key = nil
1100
+ positive_match = nil
1101
+ tokstart = nil
1102
+ results = {}
1103
+ quotes = 0
1104
+
1105
+ # line 1106 "lib/keyword_search.rb"
1106
+ begin
1107
+ p ||= 0
1108
+ pe ||= data.length
1109
+ cs = parser_start
1110
+ end
1111
+ # line 101 "lib/keyword_search.rl"
1112
+
1113
+ # line 1114 "lib/keyword_search.rb"
1114
+ begin
1115
+ _klen, _trans, _keys, _acts, _nacts = nil
1116
+ _goto_level = 0
1117
+ _resume = 10
1118
+ _eof_trans = 15
1119
+ _again = 20
1120
+ _test_eof = 30
1121
+ _out = 40
1122
+ while true
1123
+ _trigger_goto = false
1124
+ if _goto_level <= 0
1125
+ if p == pe
1126
+ _goto_level = _test_eof
1127
+ next
1128
+ end
1129
+ if cs == 0
1130
+ _goto_level = _out
1131
+ next
1132
+ end
1133
+ end
1134
+ if _goto_level <= _resume
1135
+ _keys = _parser_key_offsets[cs]
1136
+ _trans = _parser_index_offsets[cs]
1137
+ _klen = _parser_single_lengths[cs]
1138
+ _break_match = false
1139
+
1140
+ begin
1141
+ if _klen > 0
1142
+ _lower = _keys
1143
+ _upper = _keys + _klen - 1
1144
+
1145
+ loop do
1146
+ break if _upper < _lower
1147
+ _mid = _lower + ( (_upper - _lower) >> 1 )
1148
+
1149
+ if data[p] < _parser_trans_keys[_mid]
1150
+ _upper = _mid - 1
1151
+ elsif data[p] > _parser_trans_keys[_mid]
1152
+ _lower = _mid + 1
1153
+ else
1154
+ _trans += (_mid - _keys)
1155
+ _break_match = true
1156
+ break
1157
+ end
1158
+ end # loop
1159
+ break if _break_match
1160
+ _keys += _klen
1161
+ _trans += _klen
1162
+ end
1163
+ _klen = _parser_range_lengths[cs]
1164
+ if _klen > 0
1165
+ _lower = _keys
1166
+ _upper = _keys + (_klen << 1) - 2
1167
+ loop do
1168
+ break if _upper < _lower
1169
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1)
1170
+ if data[p] < _parser_trans_keys[_mid]
1171
+ _upper = _mid - 2
1172
+ elsif data[p] > _parser_trans_keys[_mid+1]
1173
+ _lower = _mid + 2
1174
+ else
1175
+ _trans += ((_mid - _keys) >> 1)
1176
+ _break_match = true
1177
+ break
1178
+ end
1179
+ end # loop
1180
+ break if _break_match
1181
+ _trans += _klen
1182
+ end
1183
+ end while false
1184
+ cs = _parser_trans_targs[_trans]
1185
+ if _parser_trans_actions[_trans] != 0
1186
+ _acts = _parser_trans_actions[_trans]
1187
+ _nacts = _parser_actions[_acts]
1188
+ _acts += 1
1189
+ while _nacts > 0
1190
+ _nacts -= 1
1191
+ _acts += 1
1192
+ case _parser_actions[_acts - 1]
1193
+ when 0 then
1194
+ # line 13 "lib/keyword_search.rl"
1195
+ begin
1196
+
1197
+ tokstart = p;
1198
+ end
1199
+ # line 13 "lib/keyword_search.rl"
1200
+ when 1 then
1201
+ # line 17 "lib/keyword_search.rl"
1202
+ begin
1203
+
1204
+ key = word
1205
+ results[key] ||= []
1206
+ end
1207
+ # line 17 "lib/keyword_search.rl"
1208
+ when 2 then
1209
+ # line 22 "lib/keyword_search.rl"
1210
+ begin
1211
+
1212
+ key = nil
1213
+ end
1214
+ # line 22 "lib/keyword_search.rl"
1215
+ when 3 then
1216
+ # line 26 "lib/keyword_search.rl"
1217
+ begin
1218
+
1219
+ word = data[tokstart..p-1]
1220
+ end
1221
+ # line 26 "lib/keyword_search.rl"
1222
+ when 4 then
1223
+ # line 30 "lib/keyword_search.rl"
1224
+ begin
1225
+
1226
+ (results[key || :default] ||= []) << [ word, positive_match ]
1227
+ end
1228
+ # line 30 "lib/keyword_search.rl"
1229
+ when 5 then
1230
+ # line 34 "lib/keyword_search.rl"
1231
+ begin
1232
+
1233
+ positive_match = false
1234
+ end
1235
+ # line 34 "lib/keyword_search.rl"
1236
+ when 6 then
1237
+ # line 38 "lib/keyword_search.rl"
1238
+ begin
1239
+
1240
+ positive_match = true
1241
+ end
1242
+ # line 38 "lib/keyword_search.rl"
1243
+ when 7 then
1244
+ # line 42 "lib/keyword_search.rl"
1245
+ begin
1246
+ quotes += 1 end
1247
+ # line 42 "lib/keyword_search.rl"
1248
+ when 8 then
1249
+ # line 44 "lib/keyword_search.rl"
1250
+ begin
1251
+ quotes -= 1 end
1252
+ # line 44 "lib/keyword_search.rl"
1253
+ when 9 then
1254
+ # line 71 "lib/keyword_search.rl"
1255
+ begin
1256
+ raise ParseError, "At offset #{p}, near: '#{data[p,10]}'" end
1257
+ # line 71 "lib/keyword_search.rl"
1258
+ # line 1259 "lib/keyword_search.rb"
1259
+ end # action switch
1260
+ end
1261
+ end
1262
+ if _trigger_goto
1263
+ next
1264
+ end
1265
+ end
1266
+ if _goto_level <= _again
1267
+ if cs == 0
1268
+ _goto_level = _out
1269
+ next
1270
+ end
1271
+ p += 1
1272
+ if p != pe
1273
+ _goto_level = _resume
1274
+ next
1275
+ end
1276
+ end
1277
+ if _goto_level <= _test_eof
1278
+ if p == eof
1279
+ __acts = _parser_eof_actions[cs]
1280
+ __nacts = _parser_actions[__acts]
1281
+ __acts += 1
1282
+ while __nacts > 0
1283
+ __nacts -= 1
1284
+ __acts += 1
1285
+ case _parser_actions[__acts - 1]
1286
+ when 9 then
1287
+ # line 71 "lib/keyword_search.rl"
1288
+ begin
1289
+ raise ParseError, "At offset #{p}, near: '#{data[p,10]}'" end
1290
+ # line 71 "lib/keyword_search.rl"
1291
+ # line 1292 "lib/keyword_search.rb"
1292
+ end # eof action switch
1293
+ end
1294
+ if _trigger_goto
1295
+ next
1296
+ end
1297
+ end
1298
+ end
1299
+ if _goto_level <= _out
1300
+ break
1301
+ end
1302
+ end
1303
+ end
1304
+ # line 102 "lib/keyword_search.rl"
1305
+ unless quotes.zero?
1306
+ raise ParseError, "Unclosed quotes"
1307
+ end
1308
+ results
1309
+ end
1310
+
1311
+ end
1312
+
1313
+ end
1314
+
1315
+