nokogiri 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- data/CHANGELOG.ja.rdoc +45 -0
- data/CHANGELOG.rdoc +53 -1
- data/Manifest.txt +3 -3
- data/README.ja.rdoc +1 -1
- data/README.rdoc +11 -5
- data/Rakefile +13 -79
- data/ext/nokogiri/extconf.rb +22 -74
- data/ext/nokogiri/html_document.c +17 -8
- data/ext/nokogiri/html_element_description.c +20 -16
- data/ext/nokogiri/html_entity_lookup.c +2 -2
- data/ext/nokogiri/html_sax_parser_context.c +10 -8
- data/ext/nokogiri/nokogiri.c +0 -1
- data/ext/nokogiri/nokogiri.h +33 -28
- data/ext/nokogiri/xml_attr.c +7 -5
- data/ext/nokogiri/xml_attribute_decl.c +5 -2
- data/ext/nokogiri/xml_cdata.c +4 -2
- data/ext/nokogiri/xml_comment.c +4 -2
- data/ext/nokogiri/xml_document.c +93 -15
- data/ext/nokogiri/xml_document.h +0 -1
- data/ext/nokogiri/xml_document_fragment.c +4 -2
- data/ext/nokogiri/xml_dtd.c +18 -8
- data/ext/nokogiri/xml_element_content.c +2 -2
- data/ext/nokogiri/xml_entity_decl.c +15 -2
- data/ext/nokogiri/xml_entity_reference.c +4 -2
- data/ext/nokogiri/xml_io.c +1 -1
- data/ext/nokogiri/xml_namespace.c +5 -3
- data/ext/nokogiri/xml_node.c +353 -114
- data/ext/nokogiri/xml_node_set.c +35 -22
- data/ext/nokogiri/xml_node_set.h +1 -1
- data/ext/nokogiri/xml_processing_instruction.c +4 -2
- data/ext/nokogiri/xml_reader.c +119 -47
- data/ext/nokogiri/xml_relax_ng.c +21 -12
- data/ext/nokogiri/xml_sax_parser.c +6 -3
- data/ext/nokogiri/xml_sax_parser.h +13 -17
- data/ext/nokogiri/xml_sax_parser_context.c +8 -6
- data/ext/nokogiri/xml_sax_push_parser.c +7 -6
- data/ext/nokogiri/xml_schema.c +62 -13
- data/ext/nokogiri/xml_syntax_error.c +18 -12
- data/ext/nokogiri/xml_syntax_error.h +1 -1
- data/ext/nokogiri/xml_text.c +4 -2
- data/ext/nokogiri/xml_xpath_context.c +60 -23
- data/ext/nokogiri/xslt_stylesheet.c +14 -3
- data/lib/nokogiri.rb +17 -0
- data/lib/nokogiri/css/generated_parser.rb +72 -62
- data/lib/nokogiri/css/generated_tokenizer.rb +23 -24
- data/lib/nokogiri/css/parser.y +3 -1
- data/lib/nokogiri/css/tokenizer.rex +3 -3
- data/lib/nokogiri/css/xpath_visitor.rb +8 -3
- data/lib/nokogiri/ffi/html/sax/parser_context.rb +3 -3
- data/lib/nokogiri/ffi/libxml.rb +16 -2
- data/lib/nokogiri/ffi/structs/common_node.rb +15 -3
- data/lib/nokogiri/ffi/structs/xml_document.rb +13 -4
- data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +3 -2
- data/lib/nokogiri/ffi/weak_bucket.rb +40 -0
- data/lib/nokogiri/ffi/xml/document.rb +27 -0
- data/lib/nokogiri/ffi/xml/entity_decl.rb +9 -0
- data/lib/nokogiri/ffi/xml/node.rb +142 -61
- data/lib/nokogiri/ffi/xml/node_set.rb +15 -12
- data/lib/nokogiri/ffi/xml/reader.rb +5 -0
- data/lib/nokogiri/ffi/xml/schema.rb +17 -0
- data/lib/nokogiri/ffi/xml/syntax_error.rb +4 -4
- data/lib/nokogiri/ffi/xml/xpath.rb +0 -10
- data/lib/nokogiri/ffi/xml/xpath_context.rb +22 -9
- data/lib/nokogiri/ffi/xslt/stylesheet.rb +3 -0
- data/lib/nokogiri/html/document.rb +5 -3
- data/lib/nokogiri/html/document_fragment.rb +28 -7
- data/lib/nokogiri/version.rb +6 -2
- data/lib/nokogiri/version_warning.rb +6 -3
- data/lib/nokogiri/xml.rb +1 -1
- data/lib/nokogiri/xml/builder.rb +35 -22
- data/lib/nokogiri/xml/document.rb +44 -12
- data/lib/nokogiri/xml/document_fragment.rb +16 -12
- data/lib/nokogiri/xml/entity_decl.rb +4 -0
- data/lib/nokogiri/xml/node.rb +152 -95
- data/lib/nokogiri/xml/node_set.rb +2 -1
- data/lib/nokogiri/xml/sax/push_parser.rb +1 -1
- data/lib/nokogiri/xml/schema.rb +1 -5
- data/lib/nokogiri/xml/syntax_error.rb +4 -0
- data/lib/nokogiri/xml/text.rb +9 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +3 -0
- data/tasks/cross_compile.rb +158 -0
- data/tasks/test.rb +0 -6
- data/test/css/test_xpath_visitor.rb +9 -0
- data/test/helper.rb +49 -11
- data/test/html/sax/test_parser.rb +11 -1
- data/test/html/test_document.rb +8 -0
- data/test/html/test_document_fragment.rb +14 -2
- data/test/html/test_element_description.rb +5 -1
- data/test/html/test_node.rb +5 -66
- data/test/test_reader.rb +28 -0
- data/test/test_xslt_transforms.rb +14 -0
- data/test/xml/test_builder.rb +43 -0
- data/test/xml/test_cdata.rb +12 -0
- data/test/xml/test_document.rb +74 -39
- data/test/xml/test_document_fragment.rb +36 -0
- data/test/xml/test_entity_decl.rb +37 -0
- data/test/xml/test_node.rb +192 -65
- data/test/xml/test_node_reparenting.rb +253 -236
- data/test/xml/test_node_set.rb +67 -0
- data/test/xml/test_text.rb +8 -0
- data/test/xml/test_xpath.rb +32 -0
- metadata +103 -48
- data.tar.gz.sig +0 -0
- data/ext/nokogiri/xml_xpath.c +0 -53
- data/ext/nokogiri/xml_xpath.h +0 -11
- data/lib/nokogiri/xml/fragment_handler.rb +0 -79
- metadata.gz.sig +0 -0
data/ext/nokogiri/xml_text.c
CHANGED
@@ -9,18 +9,20 @@
|
|
9
9
|
static VALUE new(int argc, VALUE *argv, VALUE klass)
|
10
10
|
{
|
11
11
|
xmlDocPtr doc;
|
12
|
+
xmlNodePtr node;
|
12
13
|
VALUE string;
|
13
14
|
VALUE document;
|
14
15
|
VALUE rest;
|
16
|
+
VALUE rb_node;
|
15
17
|
|
16
18
|
rb_scan_args(argc, argv, "2*", &string, &document, &rest);
|
17
19
|
|
18
20
|
Data_Get_Struct(document, xmlDoc, doc);
|
19
21
|
|
20
|
-
|
22
|
+
node = xmlNewText((xmlChar *)StringValuePtr(string));
|
21
23
|
node->doc = doc->doc;
|
22
24
|
|
23
|
-
|
25
|
+
rb_node = Nokogiri_wrap_xml_node(klass, node) ;
|
24
26
|
rb_obj_call_init(rb_node, argc, argv);
|
25
27
|
|
26
28
|
if(rb_block_given_p()) rb_yield(rb_node);
|
@@ -1,5 +1,7 @@
|
|
1
1
|
#include <xml_xpath_context.h>
|
2
2
|
|
3
|
+
int vasprintf (char **strp, const char *fmt, va_list ap);
|
4
|
+
|
3
5
|
static void deallocate(xmlXPathContextPtr ctx)
|
4
6
|
{
|
5
7
|
NOKOGIRI_DEBUG_START(ctx);
|
@@ -28,7 +30,13 @@ static VALUE register_ns(VALUE self, VALUE prefix, VALUE uri)
|
|
28
30
|
static void ruby_funcall(xmlXPathParserContextPtr ctx, int nargs)
|
29
31
|
{
|
30
32
|
VALUE xpath_handler = Qnil;
|
33
|
+
VALUE result;
|
34
|
+
VALUE *argv;
|
35
|
+
VALUE doc;
|
36
|
+
VALUE node_set = Qnil;
|
37
|
+
xmlNodeSetPtr xml_node_set = NULL;
|
31
38
|
xmlXPathObjectPtr obj;
|
39
|
+
int i;
|
32
40
|
|
33
41
|
assert(ctx);
|
34
42
|
assert(ctx->context);
|
@@ -38,10 +46,10 @@ static void ruby_funcall(xmlXPathParserContextPtr ctx, int nargs)
|
|
38
46
|
|
39
47
|
xpath_handler = (VALUE)(ctx->context->userData);
|
40
48
|
|
41
|
-
|
42
|
-
|
49
|
+
argv = (VALUE *)calloc((unsigned int)nargs, sizeof(VALUE));
|
50
|
+
doc = DOC_RUBY_OBJECT(ctx->context->doc);
|
43
51
|
|
44
|
-
|
52
|
+
i = nargs - 1;
|
45
53
|
do {
|
46
54
|
obj = valuePop(ctx);
|
47
55
|
switch(obj->type) {
|
@@ -55,7 +63,7 @@ static void ruby_funcall(xmlXPathParserContextPtr ctx, int nargs)
|
|
55
63
|
argv[i] = rb_float_new(obj->floatval);
|
56
64
|
break;
|
57
65
|
case XPATH_NODESET:
|
58
|
-
argv[i] = Nokogiri_wrap_xml_node_set(obj->nodesetval);
|
66
|
+
argv[i] = Nokogiri_wrap_xml_node_set(obj->nodesetval, doc);
|
59
67
|
break;
|
60
68
|
default:
|
61
69
|
argv[i] = NOKOGIRI_STR_NEW2(xmlXPathCastToString(obj));
|
@@ -63,7 +71,7 @@ static void ruby_funcall(xmlXPathParserContextPtr ctx, int nargs)
|
|
63
71
|
xmlXPathFreeNodeSetList(obj);
|
64
72
|
} while(i-- > 0);
|
65
73
|
|
66
|
-
|
74
|
+
result = rb_funcall2(
|
67
75
|
xpath_handler,
|
68
76
|
rb_intern((const char *)ctx->context->function),
|
69
77
|
nargs,
|
@@ -71,9 +79,6 @@ static void ruby_funcall(xmlXPathParserContextPtr ctx, int nargs)
|
|
71
79
|
);
|
72
80
|
free(argv);
|
73
81
|
|
74
|
-
VALUE node_set = Qnil;
|
75
|
-
xmlNodeSetPtr xml_node_set = NULL;
|
76
|
-
|
77
82
|
switch(TYPE(result)) {
|
78
83
|
case T_FLOAT:
|
79
84
|
case T_BIGNUM:
|
@@ -96,7 +101,9 @@ static void ruby_funcall(xmlXPathParserContextPtr ctx, int nargs)
|
|
96
101
|
break;
|
97
102
|
case T_ARRAY:
|
98
103
|
{
|
99
|
-
VALUE args[2]
|
104
|
+
VALUE args[2];
|
105
|
+
args[0] = doc;
|
106
|
+
args[1] = result;
|
100
107
|
node_set = rb_class_new_instance(2, args, cNokogiriXmlNodeSet);
|
101
108
|
Data_Get_Struct(node_set, xmlNodeSet, xml_node_set);
|
102
109
|
xmlXPathReturnNodeSet(ctx, xmlXPathNodeSetMerge(NULL, xml_node_set));
|
@@ -105,7 +112,7 @@ static void ruby_funcall(xmlXPathParserContextPtr ctx, int nargs)
|
|
105
112
|
case T_DATA:
|
106
113
|
if(rb_obj_is_kind_of(result, cNokogiriXmlNodeSet)) {
|
107
114
|
Data_Get_Struct(result, xmlNodeSet, xml_node_set);
|
108
|
-
|
115
|
+
/* Copy the node set, otherwise it will get GC'd. */
|
109
116
|
xmlXPathReturnNodeSet(ctx, xmlXPathNodeSetMerge(NULL, xml_node_set));
|
110
117
|
break;
|
111
118
|
}
|
@@ -125,6 +132,7 @@ static xmlXPathFunction lookup( void *ctx,
|
|
125
132
|
return NULL;
|
126
133
|
}
|
127
134
|
|
135
|
+
NORETURN(static void xpath_exception_handler(void * ctx, xmlErrorPtr error));
|
128
136
|
static void xpath_exception_handler(void * ctx, xmlErrorPtr error)
|
129
137
|
{
|
130
138
|
VALUE xpath = rb_const_get(mNokogiriXml, rb_intern("XPath"));
|
@@ -133,6 +141,7 @@ static void xpath_exception_handler(void * ctx, xmlErrorPtr error)
|
|
133
141
|
rb_exc_raise(Nokogiri_wrap_xml_syntax_error(klass, error));
|
134
142
|
}
|
135
143
|
|
144
|
+
NORETURN(static void xpath_generic_exception_handler(void * ctx, const char *msg, ...));
|
136
145
|
static void xpath_generic_exception_handler(void * ctx, const char *msg, ...)
|
137
146
|
{
|
138
147
|
char * message;
|
@@ -154,16 +163,20 @@ static void xpath_generic_exception_handler(void * ctx, const char *msg, ...)
|
|
154
163
|
static VALUE evaluate(int argc, VALUE *argv, VALUE self)
|
155
164
|
{
|
156
165
|
VALUE search_path, xpath_handler;
|
166
|
+
VALUE thing = Qnil;
|
157
167
|
xmlXPathContextPtr ctx;
|
168
|
+
xmlXPathObjectPtr xpath;
|
169
|
+
xmlChar *query;
|
170
|
+
|
158
171
|
Data_Get_Struct(self, xmlXPathContext, ctx);
|
159
172
|
|
160
173
|
if(rb_scan_args(argc, argv, "11", &search_path, &xpath_handler) == 1)
|
161
174
|
xpath_handler = Qnil;
|
162
175
|
|
163
|
-
|
176
|
+
query = (xmlChar *)StringValuePtr(search_path);
|
164
177
|
|
165
178
|
if(Qnil != xpath_handler) {
|
166
|
-
|
179
|
+
/* FIXME: not sure if this is the correct place to shove private data. */
|
167
180
|
ctx->userData = (void *)xpath_handler;
|
168
181
|
xmlXPathRegisterFuncLookup(ctx, lookup, (void *)xpath_handler);
|
169
182
|
}
|
@@ -171,11 +184,11 @@ static VALUE evaluate(int argc, VALUE *argv, VALUE self)
|
|
171
184
|
xmlResetLastError();
|
172
185
|
xmlSetStructuredErrorFunc(NULL, xpath_exception_handler);
|
173
186
|
|
174
|
-
|
175
|
-
|
187
|
+
/* For some reason, xmlXPathEvalExpression will blow up with a generic error */
|
188
|
+
/* when there is a non existent function. */
|
176
189
|
xmlSetGenericErrorFunc(NULL, xpath_generic_exception_handler);
|
177
190
|
|
178
|
-
|
191
|
+
xpath = xmlXPathEvalExpression(query, ctx);
|
179
192
|
xmlSetStructuredErrorFunc(NULL, NULL);
|
180
193
|
xmlSetGenericErrorFunc(NULL, NULL);
|
181
194
|
|
@@ -187,13 +200,34 @@ static VALUE evaluate(int argc, VALUE *argv, VALUE self)
|
|
187
200
|
rb_exc_raise(Nokogiri_wrap_xml_syntax_error(klass, error));
|
188
201
|
}
|
189
202
|
|
190
|
-
VALUE xpath_object = Nokogiri_wrap_xml_xpath(xpath);
|
191
|
-
|
192
203
|
assert(ctx->doc);
|
193
204
|
assert(DOC_RUBY_OBJECT_TEST(ctx->doc));
|
194
205
|
|
195
|
-
|
196
|
-
|
206
|
+
switch(xpath->type) {
|
207
|
+
case XPATH_STRING:
|
208
|
+
thing = NOKOGIRI_STR_NEW2(xpath->stringval);
|
209
|
+
break;
|
210
|
+
case XPATH_NODESET:
|
211
|
+
if(NULL == xpath->nodesetval) {
|
212
|
+
thing = Nokogiri_wrap_xml_node_set(xmlXPathNodeSetCreate(NULL),
|
213
|
+
DOC_RUBY_OBJECT(ctx->doc));
|
214
|
+
} else {
|
215
|
+
thing = Nokogiri_wrap_xml_node_set(xpath->nodesetval,
|
216
|
+
DOC_RUBY_OBJECT(ctx->doc));
|
217
|
+
}
|
218
|
+
break;
|
219
|
+
case XPATH_NUMBER:
|
220
|
+
thing = rb_float_new(xpath->floatval);
|
221
|
+
break;
|
222
|
+
case XPATH_BOOLEAN:
|
223
|
+
thing = xpath->boolval == 1 ? Qtrue : Qfalse;
|
224
|
+
break;
|
225
|
+
default:
|
226
|
+
thing = Nokogiri_wrap_xml_node_set(xmlXPathNodeSetCreate(NULL),
|
227
|
+
DOC_RUBY_OBJECT(ctx->doc));
|
228
|
+
}
|
229
|
+
|
230
|
+
return thing;
|
197
231
|
}
|
198
232
|
|
199
233
|
/*
|
@@ -204,15 +238,18 @@ static VALUE evaluate(int argc, VALUE *argv, VALUE self)
|
|
204
238
|
*/
|
205
239
|
static VALUE new(VALUE klass, VALUE nodeobj)
|
206
240
|
{
|
241
|
+
xmlNodePtr node;
|
242
|
+
xmlXPathContextPtr ctx;
|
243
|
+
VALUE self;
|
244
|
+
|
207
245
|
xmlXPathInit();
|
208
246
|
|
209
|
-
xmlNodePtr node ;
|
210
247
|
Data_Get_Struct(nodeobj, xmlNode, node);
|
211
248
|
|
212
|
-
|
249
|
+
ctx = xmlXPathNewContext(node->doc);
|
213
250
|
ctx->node = node;
|
214
|
-
|
215
|
-
|
251
|
+
self = Data_Wrap_Struct(klass, 0, deallocate, ctx);
|
252
|
+
/*rb_iv_set(self, "@xpath_handler", Qnil); */
|
216
253
|
return self;
|
217
254
|
}
|
218
255
|
|
@@ -5,13 +5,16 @@
|
|
5
5
|
#include <libxslt/transform.h>
|
6
6
|
#include <libexslt/exslt.h>
|
7
7
|
|
8
|
+
int vasprintf (char **strp, const char *fmt, va_list ap);
|
9
|
+
|
8
10
|
static void dealloc(xsltStylesheetPtr doc)
|
9
11
|
{
|
10
12
|
NOKOGIRI_DEBUG_START(doc);
|
11
|
-
xsltFreeStylesheet(doc);
|
13
|
+
xsltFreeStylesheet(doc); /* commented out for now. */
|
12
14
|
NOKOGIRI_DEBUG_END(doc);
|
13
15
|
}
|
14
16
|
|
17
|
+
NORETURN(static void xslt_generic_error_handler(void * ctx, const char *msg, ...));
|
15
18
|
static void xslt_generic_error_handler(void * ctx, const char *msg, ...)
|
16
19
|
{
|
17
20
|
char * message;
|
@@ -91,11 +94,19 @@ static VALUE transform(int argc, VALUE* argv, VALUE self)
|
|
91
94
|
xmlDocPtr result ;
|
92
95
|
xsltStylesheetPtr ss ;
|
93
96
|
const char** params ;
|
94
|
-
|
97
|
+
long param_len, j ;
|
95
98
|
|
96
99
|
rb_scan_args(argc, argv, "11", &xmldoc, ¶mobj);
|
97
100
|
if (NIL_P(paramobj)) { paramobj = rb_ary_new2(0) ; }
|
98
101
|
|
102
|
+
/* handle hashes as arguments. */
|
103
|
+
if(T_HASH == TYPE(paramobj)) {
|
104
|
+
paramobj = rb_funcall(paramobj, rb_intern("to_a"), 0);
|
105
|
+
paramobj = rb_funcall(paramobj, rb_intern("flatten"), 0);
|
106
|
+
}
|
107
|
+
|
108
|
+
Check_Type(paramobj, T_ARRAY);
|
109
|
+
|
99
110
|
Data_Get_Struct(xmldoc, xmlDoc, xml);
|
100
111
|
Data_Get_Struct(self, xsltStylesheet, ss);
|
101
112
|
|
@@ -124,7 +135,7 @@ void init_xslt_stylesheet()
|
|
124
135
|
VALUE klass = rb_define_class_under(xslt, "Stylesheet", rb_cObject);
|
125
136
|
|
126
137
|
cNokogiriXsltStylesheet = klass;
|
127
|
-
|
138
|
+
|
128
139
|
rb_define_singleton_method(klass, "parse_stylesheet_doc", parse_stylesheet_doc, 1);
|
129
140
|
rb_define_method(klass, "serialize", serialize, 1);
|
130
141
|
rb_define_method(klass, "transform", transform, -1);
|
data/lib/nokogiri.rb
CHANGED
@@ -13,6 +13,23 @@ else
|
|
13
13
|
require 'nokogiri/nokogiri'
|
14
14
|
end
|
15
15
|
|
16
|
+
warn(<<-eowarn) if '1.8.6' == RUBY_VERSION && $VERBOSE
|
17
|
+
!!! DEPRECATION WARNING !!!
|
18
|
+
Hey Champ! I see you're using Ruby 1.8.6! While I applaud you for sticking to
|
19
|
+
your guns and using The One True Ruby, I have to let you know that we're going
|
20
|
+
to stop supporting 1.8.6. I know, it's sad. But, we just don't have time to
|
21
|
+
support every version of Ruby out there. Whether we like it or not, time moves
|
22
|
+
forward and so does our software.
|
23
|
+
|
24
|
+
On August 1, 2010, we will no longer support Ruby 1.8.6. If nokogiri happens to
|
25
|
+
work on 1.8.6 after that date, then great! We will hownever, no longer test,
|
26
|
+
use, or endorse 1.8.6 as a supported platform.
|
27
|
+
|
28
|
+
Thanks,
|
29
|
+
|
30
|
+
Team Nokogiri
|
31
|
+
eowarn
|
32
|
+
|
16
33
|
require 'nokogiri/version'
|
17
34
|
require 'nokogiri/version_warning'
|
18
35
|
require 'nokogiri/syntax_error'
|
@@ -13,82 +13,86 @@ module Nokogiri
|
|
13
13
|
##### State transition tables begin ###
|
14
14
|
|
15
15
|
racc_action_table = [
|
16
|
-
3, 55, 26, 21, 12, 24, 56, 3,
|
17
|
-
|
18
|
-
|
16
|
+
3, 55, 26, 21, 12, 24, 56, 3, 81, 1,
|
17
|
+
41, 12, 41, 56, 3, 23, 1, 80, 12, 18,
|
18
|
+
92, 91, 4, 1, 9, 10, 18, 13, 16, 4,
|
19
19
|
12, 9, 10, 18, 13, 16, 4, 12, 9, 10,
|
20
|
-
3, 13, 16,
|
21
|
-
|
22
|
-
|
23
|
-
4,
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
3, 13, 16, 73, 12, 12, 60, 61, 4, 1,
|
21
|
+
57, 10, 12, 44, 16, 4, 61, 1, 10, 18,
|
22
|
+
41, 16, 4, 4, 9, 10, 10, 13, 16, 16,
|
23
|
+
4, 3, 58, 10, 3, 13, 16, 57, 12, 12,
|
24
|
+
27, 82, 28, 48, 26, 51, 12, 53, 26, 51,
|
25
|
+
18, 53, 83, 18, 4, 9, 4, 4, 9, 10,
|
26
|
+
10, 63, 16, 16, 4, 66, 68, 10, 26, 51,
|
27
|
+
16, 53, 86, 87, 66, 68, 67, 69, 70, 62,
|
28
|
+
72, 59, 90, 54, 64, 67, 69, 70, 93, 72,
|
29
|
+
32, 34, 36, 64, 26, 51, -22, 53, 95, 96,
|
30
|
+
31, nil, 33, 35 ]
|
30
31
|
|
31
32
|
racc_action_check = [
|
32
|
-
0, 20, 3, 3, 0, 3, 43,
|
33
|
-
|
34
|
-
71, 71, 0,
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
5, 5,
|
33
|
+
0, 20, 3, 3, 0, 3, 43, 30, 52, 0,
|
34
|
+
39, 30, 11, 20, 56, 3, 30, 43, 56, 0,
|
35
|
+
71, 71, 0, 56, 0, 0, 30, 0, 0, 30,
|
36
|
+
8, 30, 30, 56, 30, 30, 56, 6, 56, 56,
|
37
|
+
9, 56, 56, 28, 9, 7, 24, 24, 8, 9,
|
38
|
+
51, 8, 41, 10, 8, 6, 53, 41, 6, 9,
|
39
|
+
7, 6, 9, 7, 9, 9, 7, 9, 9, 7,
|
40
|
+
41, 4, 21, 41, 16, 41, 41, 21, 15, 17,
|
41
|
+
4, 54, 4, 16, 63, 63, 77, 63, 61, 61,
|
42
|
+
4, 61, 55, 16, 14, 4, 15, 17, 16, 15,
|
43
|
+
17, 26, 15, 17, 77, 29, 29, 77, 57, 57,
|
44
|
+
77, 57, 58, 60, 27, 27, 29, 29, 29, 25,
|
45
|
+
29, 22, 65, 19, 29, 27, 27, 27, 74, 27,
|
46
|
+
5, 5, 5, 27, 18, 18, 1, 18, 79, 87,
|
47
|
+
5, nil, 5, 5 ]
|
46
48
|
|
47
49
|
racc_action_pointer = [
|
48
|
-
-2,
|
49
|
-
42,
|
50
|
-
1,
|
51
|
-
|
52
|
-
nil,
|
53
|
-
nil, -
|
54
|
-
|
55
|
-
nil, 10, nil, nil,
|
56
|
-
nil, nil, nil, nil, nil, nil,
|
57
|
-
nil, nil, nil, nil, nil ]
|
50
|
+
-2, 108, nil, -8, 69, 123, 31, 39, 24, 38,
|
51
|
+
42, -9, nil, nil, 70, 72, 72, 73, 124, 95,
|
52
|
+
1, 65, 98, nil, 35, 96, 89, 111, 18, 102,
|
53
|
+
5, nil, nil, nil, nil, nil, nil, nil, nil, -11,
|
54
|
+
nil, 46, nil, -6, nil, nil, nil, nil, nil, nil,
|
55
|
+
nil, 38, -15, 44, 70, 92, 12, 98, 99, nil,
|
56
|
+
106, 78, nil, 74, nil, 97, nil, nil, nil, nil,
|
57
|
+
nil, 10, nil, nil, 103, nil, nil, 80, nil, 115,
|
58
|
+
nil, nil, nil, nil, nil, nil, nil, 126, nil, nil,
|
59
|
+
nil, nil, nil, nil, nil, nil, nil ]
|
58
60
|
|
59
61
|
racc_action_default = [
|
60
|
-
-23, -20, -2, -
|
61
|
-
-
|
62
|
-
-
|
62
|
+
-23, -20, -2, -68, -68, -17, -52, -44, -49, -23,
|
63
|
+
-68, -15, -53, -21, -12, -51, -68, -50, -68, -68,
|
64
|
+
-68, -37, -68, -27, -35, -68, -36, -56, -68, -56,
|
63
65
|
-23, -5, -3, -8, -4, -7, -6, -48, -9, -43,
|
64
|
-
-11, -
|
65
|
-
-46, -37, -
|
66
|
-
-40, -
|
67
|
-
-60, -
|
68
|
-
-30, -19,
|
69
|
-
-54, -55, -25, -64, -38 ]
|
66
|
+
-11, -23, -45, -68, -18, -14, -13, -47, -42, -41,
|
67
|
+
-46, -37, -68, -35, -68, -68, -23, -68, -68, -28,
|
68
|
+
-40, -68, -29, -68, -57, -68, -62, -58, -63, -59,
|
69
|
+
-60, -68, -61, -26, -68, -16, -10, -65, -67, -68,
|
70
|
+
-31, -30, -19, 97, -1, -34, -39, -68, -32, -33,
|
71
|
+
-24, -54, -55, -25, -66, -64, -38 ]
|
70
72
|
|
71
73
|
racc_goto_table = [
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
74
|
+
37, 39, 42, 22, 40, 75, 20, 29, 45, 47,
|
75
|
+
65, 50, 74, 38, 46, 43, 77, 30, 52, 49,
|
76
|
+
25, 79, nil, nil, nil, nil, nil, nil, nil, nil,
|
77
|
+
nil, 84, nil, nil, nil, 78, 76, nil, nil, nil,
|
76
78
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
77
|
-
nil, nil, nil, nil,
|
78
|
-
88
|
79
|
+
nil, nil, nil, nil, nil, nil, nil, 85, nil, nil,
|
80
|
+
nil, 88, nil, 89, nil, nil, nil, nil, nil, nil,
|
81
|
+
nil, 94 ]
|
79
82
|
|
80
83
|
racc_goto_check = [
|
81
|
-
|
82
|
-
|
83
|
-
19, nil, nil, nil, nil, nil, nil, nil, nil,
|
84
|
-
|
84
|
+
7, 7, 7, 14, 8, 2, 1, 9, 8, 7,
|
85
|
+
13, 7, 13, 6, 10, 1, 5, 3, 14, 9,
|
86
|
+
15, 19, nil, nil, nil, nil, nil, nil, nil, nil,
|
87
|
+
nil, 2, nil, nil, nil, 7, 8, nil, nil, nil,
|
85
88
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
86
|
-
nil, nil, nil, nil,
|
87
|
-
14
|
89
|
+
nil, nil, nil, nil, nil, nil, nil, 14, nil, nil,
|
90
|
+
nil, 14, nil, 14, nil, nil, nil, nil, nil, nil,
|
91
|
+
nil, 7 ]
|
88
92
|
|
89
93
|
racc_goto_pointer = [
|
90
|
-
nil,
|
91
|
-
|
94
|
+
nil, 6, -25, 12, nil, -25, 6, -6, -3, 3,
|
95
|
+
0, nil, nil, -17, 0, 17, nil, nil, nil, -20 ]
|
92
96
|
|
93
97
|
racc_goto_default = [
|
94
98
|
nil, nil, 2, nil, 5, 7, nil, 11, nil, 14,
|
@@ -160,11 +164,13 @@ racc_reduce_table = [
|
|
160
164
|
1, 49, :_reduce_62,
|
161
165
|
1, 49, :_reduce_63,
|
162
166
|
3, 39, :_reduce_64,
|
167
|
+
1, 50, :_reduce_none,
|
168
|
+
2, 50, :_reduce_none,
|
163
169
|
1, 50, :_reduce_none ]
|
164
170
|
|
165
|
-
racc_reduce_n =
|
171
|
+
racc_reduce_n = 68
|
166
172
|
|
167
|
-
racc_shift_n =
|
173
|
+
racc_shift_n = 97
|
168
174
|
|
169
175
|
racc_token_table = {
|
170
176
|
false => 0,
|
@@ -650,6 +656,10 @@ end
|
|
650
656
|
|
651
657
|
# reduce 65 omitted
|
652
658
|
|
659
|
+
# reduce 66 omitted
|
660
|
+
|
661
|
+
# reduce 67 omitted
|
662
|
+
|
653
663
|
def _reduce_none(val, _values, result)
|
654
664
|
val[0]
|
655
665
|
end
|