rubyang 0.1.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,1083 @@
1
+ class Rubyang::Xpath::Parser
2
+
3
+ rule
4
+ statement : "LocationPath"
5
+ {
6
+ if Rubyang::Xpath::Parser::DEBUG
7
+ puts 'statement : LocationPath'
8
+ puts "val: #{val.inspect}"
9
+ end
10
+ result = val[0]
11
+ }
12
+
13
+ "LocationPath" : "RelativeLocationPath"
14
+ {
15
+ if Rubyang::Xpath::Parser::DEBUG
16
+ puts '"LocationPath" : "RelativeLocationPath"'
17
+ puts "val: #{val.inspect}"
18
+ end
19
+ result = val[0]
20
+ }
21
+ | "AbsoluteLocationPath"
22
+ {
23
+ if Rubyang::Xpath::Parser::DEBUG
24
+ puts '"LocationPath" : "AbsoluteLocationPath"'
25
+ puts "val: #{val.inspect}"
26
+ end
27
+ result = val[0]
28
+ }
29
+
30
+ "AbsoluteLocationPath" : "/"
31
+ {
32
+ if Rubyang::Xpath::Parser::DEBUG
33
+ puts '"AbsoluteLocationPath" : "/"'
34
+ puts "val: #{val.inspect}"
35
+ end
36
+ axis = Rubyang::Xpath::Axis.new Rubyang::Xpath::Axis::SELF
37
+ node_test = Rubyang::Xpath::NodeTest.new Rubyang::Xpath::NodeTest::NodeTestType::NAME_TEST, '/'
38
+ predicates = Rubyang::Xpath::Predicates.new
39
+ location_step = Rubyang::Xpath::LocationStep.new axis, node_test, predicates
40
+ result = Rubyang::Xpath::LocationSteps.new location_step
41
+ }
42
+ | "/" "RelativeLocationPath"
43
+ {
44
+ if Rubyang::Xpath::Parser::DEBUG
45
+ puts '"AbsoluteLocationPath" : "/" "RelativeLocationPath"'
46
+ puts "val: #{val.inspect}"
47
+ end
48
+ axis = Rubyang::Xpath::Axis.new Rubyang::Xpath::Axis::SELF
49
+ node_test = Rubyang::Xpath::NodeTest.new Rubyang::Xpath::NodeTest::NodeTestType::NAME_TEST, '/'
50
+ predicates = Rubyang::Xpath::Predicates.new
51
+ location_step = Rubyang::Xpath::LocationStep.new axis, node_test, predicates
52
+ location_steps = Array.new
53
+ location_steps.push location_step
54
+ location_steps.push *val[1]
55
+ result = Rubyang::Xpath::LocationSteps.new *location_steps
56
+ }
57
+ | "AbbreviatedAbsoluteLocationPath"
58
+ {
59
+ if Rubyang::Xpath::Parser::DEBUG
60
+ puts '"AbsoluteLocationPath" : "AbbreviatedAbsoluteLocationPath"'
61
+ puts "val: #{val.inspect}"
62
+ end
63
+ result = val[0]
64
+ }
65
+
66
+ "RelativeLocationPath" : "Step"
67
+ {
68
+ if Rubyang::Xpath::Parser::DEBUG
69
+ puts '"RelativeLocationPath" : "Step"'
70
+ puts "val: #{val.inspect}"
71
+ end
72
+ result = Rubyang::Xpath::LocationSteps.new val[0]
73
+ }
74
+ | "RelativeLocationPath" "/" "Step"
75
+ {
76
+ if Rubyang::Xpath::Parser::DEBUG
77
+ puts '"RelativeLocationPath" : "RelativeLocationPath" "/" "Step"'
78
+ puts "val: #{val.inspect}"
79
+ end
80
+ result = val[0].push val[2]
81
+ }
82
+ | "AbbreviatedRelativeLocationPath"
83
+ {
84
+ if Rubyang::Xpath::Parser::DEBUG
85
+ puts '"RelativeLocationPath" : "AbbreviatedRelativeLocationPath"'
86
+ puts "val: #{val.inspect}"
87
+ end
88
+ result = val[0]
89
+ }
90
+
91
+ "Step" : "AxisSpecifier" "NodeTest" "Predicates"
92
+ {
93
+ if Rubyang::Xpath::Parser::DEBUG
94
+ puts '"Step" : "AxisSpecifier" "NodeTest" "Predicates"'
95
+ puts "val: #{val.inspect}"
96
+ end
97
+ result = Rubyang::Xpath::LocationStep.new val[0], val[1], val[2]
98
+ }
99
+ | "AbbreviatedStep"
100
+ {
101
+ if Rubyang::Xpath::Parser::DEBUG
102
+ puts '"Step" : "AbbreviatedStep"'
103
+ puts "val: #{val.inspect}"
104
+ end
105
+ result = val[0]
106
+ }
107
+
108
+ "AxisSpecifier" : "AxisName" "::"
109
+ {
110
+ if Rubyang::Xpath::Parser::DEBUG
111
+ puts '"AxisSpecifier" : "AxisName" "::"'
112
+ puts "val: #{val.inspect}"
113
+ end
114
+ result = Rubyang::Xpath::Axis.new val[0]
115
+ }
116
+ | "AbbreviatedAxisSpecifier"
117
+ {
118
+ if Rubyang::Xpath::Parser::DEBUG
119
+ puts '"AxisSpecifier" : "AbbreviatedAxisSpecifier"'
120
+ puts "val: #{val.inspect}"
121
+ end
122
+ result = Rubyang::Xpath::Axis.new val[0]
123
+ }
124
+
125
+ "Predicates" :
126
+ {
127
+ result = Rubyang::Xpath::Predicates.new
128
+ }
129
+ | "Predicates" "Predicate"
130
+ {
131
+ if Rubyang::Xpath::Parser::DEBUG
132
+ puts '"Predicates" : "Predicates" "'
133
+ puts "val: #{val.inspect}"
134
+ end
135
+ result = val[0].push val[1]
136
+ }
137
+
138
+ "AxisName" : "ancestor"
139
+ {
140
+ if Rubyang::Xpath::Parser::DEBUG
141
+ puts '"AxisName" : "ancestor"'
142
+ puts "val: #{val.inspect}"
143
+ end
144
+ result = Rubyang::Xpath::Axis::ANCESTOR
145
+ }
146
+ | "ancestor-or-self"
147
+ {
148
+ if Rubyang::Xpath::Parser::DEBUG
149
+ puts '"AxisName" : "ancestor-or-self"'
150
+ puts "val: #{val.inspect}"
151
+ end
152
+ result = Rubyang::Xpath::Axis::ANCESTOR_OR_SELF
153
+ }
154
+ | "attribute"
155
+ {
156
+ if Rubyang::Xpath::Parser::DEBUG
157
+ puts '"AxisName" : "attribute"'
158
+ puts "val: #{val.inspect}"
159
+ end
160
+ result = Rubyang::Xpath::Axis::ATTRIBUTE
161
+ }
162
+ | "child"
163
+ {
164
+ if Rubyang::Xpath::Parser::DEBUG
165
+ puts '"AxisName" : "child"'
166
+ puts "val: #{val.inspect}"
167
+ end
168
+ result = Rubyang::Xpath::Axis::CHILD
169
+ }
170
+ | "descendant"
171
+ {
172
+ if Rubyang::Xpath::Parser::DEBUG
173
+ puts '"AxisName" : "descendant"'
174
+ puts "val: #{val.inspect}"
175
+ end
176
+ result = Rubyang::Xpath::Axis::DESCENDANT
177
+ }
178
+ | "descendant-or-self"
179
+ {
180
+ if Rubyang::Xpath::Parser::DEBUG
181
+ puts '"AxisName" : "descendant-or-self"'
182
+ puts "val: #{val.inspect}"
183
+ end
184
+ result = Rubyang::Xpath::Axis::DESCENDANT_OR_SELF
185
+ }
186
+ | "following"
187
+ {
188
+ if Rubyang::Xpath::Parser::DEBUG
189
+ puts '"AxisName" : "following"'
190
+ puts "val: #{val.inspect}"
191
+ end
192
+ result = Rubyang::Xpath::Axis::FOLLOWING
193
+ }
194
+ | "following-sibling"
195
+ {
196
+ if Rubyang::Xpath::Parser::DEBUG
197
+ puts '"AxisName" : "following-sibling"'
198
+ puts "val: #{val.inspect}"
199
+ end
200
+ result = Rubyang::Xpath::Axis::FOLLOWING_SIBLING
201
+ }
202
+ | "namespace"
203
+ {
204
+ if Rubyang::Xpath::Parser::DEBUG
205
+ puts '"AxisName" : "namespace"'
206
+ puts "val: #{val.inspect}"
207
+ end
208
+ result = Rubyang::Xpath::Axis::NAMESPACE
209
+ }
210
+ | "parent"
211
+ {
212
+ if Rubyang::Xpath::Parser::DEBUG
213
+ puts '"AxisName" : "parent"'
214
+ puts "val: #{val.inspect}"
215
+ end
216
+ result = Rubyang::Xpath::Axis::PARENT
217
+ }
218
+ | "preceding"
219
+ {
220
+ if Rubyang::Xpath::Parser::DEBUG
221
+ puts '"AxisName" : "preceding"'
222
+ puts "val: #{val.inspect}"
223
+ end
224
+ result = Rubyang::Xpath::Axis::PRECEDING
225
+ }
226
+ | "preceding-sibling"
227
+ {
228
+ if Rubyang::Xpath::Parser::DEBUG
229
+ puts '"AxisName" : "preceding-sibling"'
230
+ puts "val: #{val.inspect}"
231
+ end
232
+ result = Rubyang::Xpath::Axis::PRECEDING_SIBLING
233
+ }
234
+ | "self"
235
+ {
236
+ if Rubyang::Xpath::Parser::DEBUG
237
+ puts '"AxisName" : "self"'
238
+ puts "val: #{val.inspect}"
239
+ end
240
+ result = Rubyang::Xpath::Axis::SELF
241
+ }
242
+
243
+ "NodeTest" : "NameTest"
244
+ {
245
+ if Rubyang::Xpath::Parser::DEBUG
246
+ puts '"NodeTest" : "NameTest"'
247
+ puts "val: #{val.inspect}"
248
+ end
249
+ name_test_type = Rubyang::Xpath::NodeTest::NodeTestType::NAME_TEST
250
+ result = Rubyang::Xpath::NodeTest.new name_test_type, val[0]
251
+ }
252
+ | "NodeType" "(" ")"
253
+ {
254
+ if Rubyang::Xpath::Parser::DEBUG
255
+ puts '"NodeTest" : "NodeType" "(" ")"'
256
+ puts "val: #{val.inspect}"
257
+ end
258
+ name_test_type = Rubyang::Xpath::NodeTest::NodeTestType::NODE_TYPE
259
+ result = Rubyang::Xpath::NodeTest.new name_test_type, val[0]
260
+ }
261
+ | "processing-instruction" "(" "Literal" ")"
262
+ {
263
+ if Rubyang::Xpath::Parser::DEBUG
264
+ puts '"NodeTest" : "processing-instruction" "(" "Literal" ")"'
265
+ puts "val: #{val.inspect}"
266
+ end
267
+ name_test_type = Rubyang::Xpath::NodeTest::NodeTestType::PROCESSING_INSTRUCTION
268
+ result = Rubyang::Xpath::NodeTest.new name_test_type, val[0]
269
+ }
270
+
271
+ "Predicate" : "[" "PredicateExpr" "]"
272
+ {
273
+ if Rubyang::Xpath::Parser::DEBUG
274
+ puts '"Predicate" : "[" "PredicateExpr" "]"'
275
+ puts "val: #{val.inspect}"
276
+ end
277
+ result = val[1]
278
+ }
279
+
280
+ "PredicateExpr" : "Expr"
281
+ {
282
+ if Rubyang::Xpath::Parser::DEBUG
283
+ puts '"PredicateExpr" : "Expr"'
284
+ puts "val: #{val.inspect}"
285
+ end
286
+ result = Rubyang::Xpath::Predicate.new val[0]
287
+ }
288
+
289
+ "AbbreviatedAbsoluteLocationPath" : "//" "RelativeLocationPath"
290
+ {
291
+ if Rubyang::Xpath::Parser::DEBUG
292
+ puts '"AbbreviatedAbsoluteLocationPath" : "//" "RelativeLocationPath"'
293
+ puts "val: #{val.inspect}"
294
+ end
295
+ raise "AbbreviatedAbsoluteLocationPath is not implemented"
296
+ result = val[0]
297
+ }
298
+
299
+ "AbbreviatedRelativeLocationPath" : "RelativeLocationPath" "//" "Step"
300
+ {
301
+ if Rubyang::Xpath::Parser::DEBUG
302
+ puts '"AbbreviatedRelativeLocationPath" : "RelativeLocationPath" "//" "Step"'
303
+ puts "val: #{val.inspect}"
304
+ end
305
+ raise "AbbreviatedRelativeLocationPath is not implemented"
306
+ result = val[0]
307
+ }
308
+
309
+ "AbbreviatedStep" : "."
310
+ {
311
+ if Rubyang::Xpath::Parser::DEBUG
312
+ puts '"AbbreviatedStep" : "."'
313
+ puts "val: #{val.inspect}"
314
+ end
315
+ axis = Rubyang::Xpath::Axis.new Rubyang::Xpath::Axis::SELF
316
+ node_test = Rubyang::Xpath::NodeTest.new Rubyang::Xpath::NodeTest::NodeTestType::NAME_TEST, '*'
317
+ predicates = Rubyang::Xpath::Predicates.new
318
+ result = Rubyang::Xpath::LocationStep.new axis, node_test, predicates
319
+ }
320
+ | ".."
321
+ {
322
+ if Rubyang::Xpath::Parser::DEBUG
323
+ puts '"AbbreviatedStep" : ".."'
324
+ puts "val: #{val.inspect}"
325
+ end
326
+ axis = Rubyang::Xpath::Axis.new Rubyang::Xpath::Axis::PARENT
327
+ node_test = Rubyang::Xpath::NodeTest.new Rubyang::Xpath::NodeTest::NodeTestType::NODE_TYPE, Rubyang::Xpath::NodeTest::NodeType::NODE
328
+ predicates = Rubyang::Xpath::Predicates.new
329
+ result = Rubyang::Xpath::LocationStep.new axis, node_test, predicates
330
+ }
331
+
332
+ "AbbreviatedAxisSpecifier" : /* */
333
+ {
334
+ if Rubyang::Xpath::Parser::DEBUG
335
+ puts '"AbbreviatedAxisSpecifier" : '
336
+ puts "val: #{val.inspect}"
337
+ end
338
+ result = Rubyang::Xpath::Axis::CHILD
339
+ }
340
+ | "@"
341
+ {
342
+ if Rubyang::Xpath::Parser::DEBUG
343
+ puts '"AbbreviatedAxisSpecifier" : "@"'
344
+ puts "val: #{val.inspect}"
345
+ end
346
+ result = Rubyang::Xpath::Axis::ATTRIBUTE
347
+ }
348
+
349
+ "Expr" : "OrExpr"
350
+ {
351
+ if Rubyang::Xpath::Parser::DEBUG
352
+ puts '"Expr" : "OrExpr"'
353
+ puts "val: #{val.inspect}"
354
+ end
355
+ result = val[0]
356
+ }
357
+
358
+ "PrimaryExpr" : "VariableReference"
359
+ {
360
+ if Rubyang::Xpath::Parser::DEBUG
361
+ puts '"PrimaryExpr" : "VariableReference"'
362
+ puts "val: #{val.inspect}"
363
+ end
364
+ result = val[0]
365
+ raise "VariableReference is not implemented"
366
+ }
367
+ | "(" "Expr" ")"
368
+ {
369
+ if Rubyang::Xpath::Parser::DEBUG
370
+ puts '"PrimaryExpr" : "(" "Expr" ")"'
371
+ puts "val: #{val.inspect}"
372
+ end
373
+ result = val[1]
374
+ raise "'(' Expr ')' is not implemented"
375
+ }
376
+ | "Literal"
377
+ {
378
+ if Rubyang::Xpath::Parser::DEBUG
379
+ puts '"PrimaryExpr" : "Literal"'
380
+ puts "val: #{val.inspect}"
381
+ end
382
+ literal = Rubyang::Xpath::Predicate::Literal.new val[0]
383
+ result = Rubyang::Xpath::Predicate::PrimaryExpr.new literal
384
+ }
385
+ | "Number"
386
+ {
387
+ if Rubyang::Xpath::Parser::DEBUG
388
+ puts '"PrimaryExpr" : "Number"'
389
+ puts "val: #{val.inspect}"
390
+ end
391
+ number = Rubyang::Xpath::Predicate::Number.new val[0]
392
+ result = Rubyang::Xpath::Predicate::PrimaryExpr.new number
393
+ }
394
+ | "FunctionCall"
395
+ {
396
+ if Rubyang::Xpath::Parser::DEBUG
397
+ puts '"PrimaryExpr" : "FunctionCall"'
398
+ puts "val: #{val.inspect}"
399
+ end
400
+ result = Rubyang::Xpath::Predicate::PrimaryExpr.new val[0]
401
+ }
402
+
403
+ "FunctionCall" : "FunctionName(" ")"
404
+ {
405
+ if Rubyang::Xpath::Parser::DEBUG
406
+ puts '"FunctionCall" : "FunctionName(" ")"'
407
+ puts "val: #{val.inspect}"
408
+ end
409
+ result = Rubyang::Xpath::Predicate::FunctionCall.new val[0]
410
+ }
411
+ | "FunctionName(" "Arguments" ")"
412
+ {
413
+ if Rubyang::Xpath::Parser::DEBUG
414
+ puts '"FunctionCall" : "FunctionName(" "Arguments" ")"'
415
+ puts "val: #{val.inspect}"
416
+ end
417
+ result = Rubyang::Xpath::Predicate::FunctionCall.new val[0], val[1]
418
+ }
419
+
420
+ "Arguments" : "Argument"
421
+ {
422
+ if Rubyang::Xpath::Parser::DEBUG
423
+ puts '"Arguments" : "Argument"'
424
+ puts "val: #{val.inspect}"
425
+ end
426
+ result = [val[0]]
427
+ }
428
+ | "Arguments" "," "Argument"
429
+ {
430
+ if Rubyang::Xpath::Parser::DEBUG
431
+ puts '"Arguments" : "Arguments" "," "Argument"'
432
+ puts "val: #{val.inspect}"
433
+ end
434
+ result = val[0] + [val[1]]
435
+ }
436
+
437
+ "Argument" : "Exp"
438
+ {
439
+ if Rubyang::Xpath::Parser::DEBUG
440
+ puts '"Argument" : "Exp"'
441
+ puts "val: #{val.inspect}"
442
+ end
443
+ result = val[0]
444
+ }
445
+
446
+ "UnionExpr" : "PathExpr"
447
+ {
448
+ if Rubyang::Xpath::Parser::DEBUG
449
+ puts '"UnionExpr" : "PathExpr"'
450
+ puts "val: #{val.inspect}"
451
+ end
452
+ result = Rubyang::Xpath::Predicate::UnionExpr.new val[0]
453
+ }
454
+ | "UnionExpr" "|" "PathExpr"
455
+ {
456
+ if Rubyang::Xpath::Parser::DEBUG
457
+ puts '"UnionExpr" : "UnionExpr" "|" "PathExpr"'
458
+ puts "val: #{val.inspect}"
459
+ end
460
+ result = Rubyang::Xpath::Predicate::UnionExpr.new val[0], val[1], val[2]
461
+ }
462
+
463
+ "PathExpr" : "LocationPath"
464
+ {
465
+ if Rubyang::Xpath::Parser::DEBUG
466
+ puts '"PathExpr" : "LocationPath"'
467
+ puts "val: #{val.inspect}"
468
+ end
469
+ result = Rubyang::Xpath::Predicate::PathExpr.new val[0]
470
+ }
471
+ | "FilterExpr"
472
+ {
473
+ if Rubyang::Xpath::Parser::DEBUG
474
+ puts '"PathExpr" : "FilterExpr"'
475
+ puts "val: #{val.inspect}"
476
+ end
477
+ result = Rubyang::Xpath::Predicate::PathExpr.new val[0]
478
+ }
479
+ | "FilterExpr" "/" "RelativeLocationPath"
480
+ {
481
+ if Rubyang::Xpath::Parser::DEBUG
482
+ puts '"PathExpr" : "FilterExpr" "/" "RelativeLocationPath"'
483
+ puts "val: #{val.inspect}"
484
+ end
485
+ result = Rubyang::Xpath::Predicate::PathExpr.new val[0], val[1], val[2]
486
+ }
487
+ | "FilterExpr" "//" "RelativeLocationPath"
488
+ {
489
+ if Rubyang::Xpath::Parser::DEBUG
490
+ puts '"PathExpr" : "FilterExpr" "//" "RelativeLocationPath"'
491
+ puts "val: #{val.inspect}"
492
+ end
493
+ result = Rubyang::Xpath::Predicate::PathExpr.new val[0], val[1], val[2]
494
+ }
495
+
496
+ "FilterExpr" : "PrimaryExpr"
497
+ {
498
+ if Rubyang::Xpath::Parser::DEBUG
499
+ puts '"FilterExpr" : "PrimaryExpr"'
500
+ puts "val: #{val.inspect}"
501
+ end
502
+ result = Rubyang::Xpath::Predicate::FilterExpr.new val[0]
503
+ }
504
+ | "FilterExpr Predicat"
505
+ {
506
+ if Rubyang::Xpath::Parser::DEBUG
507
+ puts '"FilterExpr" : "FilterExpr Predicat"'
508
+ puts "val: #{val.inspect}"
509
+ end
510
+ result = Rubyang::Xpath::Predicate::FilterExpr.new val[0], val[1]
511
+ }
512
+
513
+ "OrExpr" : "AndExpr"
514
+ {
515
+ if Rubyang::Xpath::Parser::DEBUG
516
+ puts '"OrExpr" : "AndExpr"'
517
+ puts "val: #{val.inspect}"
518
+ end
519
+ result = Rubyang::Xpath::Predicate::OrExpr.new val[0]
520
+ }
521
+ | "OrExpr" "or" "AndExpr"
522
+ {
523
+ if Rubyang::Xpath::Parser::DEBUG
524
+ puts '"OrExpr" : "OrExpr" "or" "AndExpr"'
525
+ puts "val: #{val.inspect}"
526
+ end
527
+ result = Rubyang::Xpath::Predicate::OrExpr.new val[0], val[2]
528
+ }
529
+
530
+ "AndExpr" : "EqualityExpr"
531
+ {
532
+ if Rubyang::Xpath::Parser::DEBUG
533
+ puts '"AndExpr" : "EqualityExpr"'
534
+ puts "val: #{val.inspect}"
535
+ end
536
+ result = Rubyang::Xpath::Predicate::AndExpr.new val[0]
537
+ }
538
+ | "AndExpr" "and" "EqualityExpr"
539
+ {
540
+ if Rubyang::Xpath::Parser::DEBUG
541
+ puts '"AndExpr" : "AndExpr" "and" "EqualityExpr"'
542
+ puts "val: #{val.inspect}"
543
+ end
544
+ result = Rubyang::Xpath::Predicate::AndExpr.new val[0], val[2]
545
+ }
546
+
547
+ "EqualityExpr" : "RelationalExpr"
548
+ {
549
+ if Rubyang::Xpath::Parser::DEBUG
550
+ puts '"EqualityExpr" : "RelationalExpr"'
551
+ puts "val: #{val.inspect}"
552
+ end
553
+ result = Rubyang::Xpath::Predicate::EqualityExpr.new val[0]
554
+ }
555
+ | "EqualityExpr" "=" "RelationalExpr"
556
+ {
557
+ if Rubyang::Xpath::Parser::DEBUG
558
+ puts '"EqualityExpr" : "EqualityExpr" "=" "RelationalExpr"'
559
+ puts "val: #{val.inspect}"
560
+ end
561
+ result = Rubyang::Xpath::Predicate::EqualityExpr.new val[0], val[1], val[2]
562
+ }
563
+ | "EqualityExpr" "!=" "RelationalExpr"
564
+ {
565
+ if Rubyang::Xpath::Parser::DEBUG
566
+ puts '"EqualityExpr" : "EqualityExpr" "!=" "RelationalExpr"'
567
+ puts "val: #{val.inspect}"
568
+ end
569
+ result = Rubyang::Xpath::Predicate::EqualityExpr.new val[0], val[1], val[2]
570
+ }
571
+
572
+ "RelationalExpr" : "AdditiveExpr"
573
+ {
574
+ if Rubyang::Xpath::Parser::DEBUG
575
+ puts '"RelationalExpr" : "AdditiveExpr"'
576
+ puts "val: #{val.inspect}"
577
+ end
578
+ result = Rubyang::Xpath::Predicate::RelationalExpr.new val[0]
579
+ }
580
+ | "RelationalExpr" "<" "AdditiveExpr"
581
+ {
582
+ if Rubyang::Xpath::Parser::DEBUG
583
+ puts '"RelationalExpr" : "RelationalExpr" "<" "AdditiveExpr"'
584
+ puts "val: #{val.inspect}"
585
+ end
586
+ result = Rubyang::Xpath::Predicate::RelationalExpr.new val[0], val[1], val[2]
587
+ }
588
+ | "RelationalExpr" ">" "AdditiveExpr"
589
+ {
590
+ if Rubyang::Xpath::Parser::DEBUG
591
+ puts '"RelationalExpr" : "RelationalExpr" ">" "AdditiveExpr"'
592
+ puts "val: #{val.inspect}"
593
+ end
594
+ result = Rubyang::Xpath::Predicate::RelationalExpr.new val[0], val[1], val[2]
595
+ }
596
+ | "RelationalExpr" "<=" "AdditiveExpr"
597
+ {
598
+ if Rubyang::Xpath::Parser::DEBUG
599
+ puts '"RelationalExpr" : "RelationalExpr" "<=" "AdditiveExpr"'
600
+ puts "val: #{val.inspect}"
601
+ end
602
+ result = Rubyang::Xpath::Predicate::RelationalExpr.new val[0], val[1], val[2]
603
+ }
604
+ | "RelationalExpr" ">=" "AdditiveExpr"
605
+ {
606
+ if Rubyang::Xpath::Parser::DEBUG
607
+ puts '"RelationalExpr" : "RelationalExpr" ">=" "AdditiveExpr"'
608
+ puts "val: #{val.inspect}"
609
+ end
610
+ result = Rubyang::Xpath::Predicate::RelationalExpr.new val[0], val[1], val[2]
611
+ }
612
+
613
+ "AdditiveExpr" : "MultiplicativeExpr"
614
+ {
615
+ if Rubyang::Xpath::Parser::DEBUG
616
+ puts '"AdditiveExpr" : "MultiplicativeExpr"'
617
+ puts "val: #{val.inspect}"
618
+ end
619
+ result = Rubyang::Xpath::Predicate::AdditiveExpr.new val[0]
620
+ }
621
+ | "AdditiveExpr" "+" "MultiplicativeExpr"
622
+ {
623
+ if Rubyang::Xpath::Parser::DEBUG
624
+ puts '"AdditiveExpr" : "AdditiveExpr" "+" "MultiplicativeExpr"'
625
+ puts "val: #{val.inspect}"
626
+ end
627
+ result = Rubyang::Xpath::Predicate::AdditiveExpr.new val[0], val[1], val[2]
628
+ }
629
+ | "AdditiveExpr" "-" "MultiplicativeExpr"
630
+ {
631
+ if Rubyang::Xpath::Parser::DEBUG
632
+ puts '"AdditiveExpr" : "AdditiveExpr" "-" "MultiplicativeExpr"'
633
+ puts "val: #{val.inspect}"
634
+ end
635
+ result = Rubyang::Xpath::Predicate::AdditiveExpr.new val[0], val[1], val[2]
636
+ }
637
+
638
+ "MultiplicativeExpr" : "UnaryExpr"
639
+ {
640
+ if Rubyang::Xpath::Parser::DEBUG
641
+ puts '"MultiplicativeExpr" : "UnaryExpr"'
642
+ puts "val: #{val.inspect}"
643
+ end
644
+ result = Rubyang::Xpath::Predicate::MultiplicativeExpr.new val[0]
645
+ }
646
+ | "MultiplicativeExpr" "*" "UnaryExpr"
647
+ {
648
+ if Rubyang::Xpath::Parser::DEBUG
649
+ puts '"MultiplicativeExpr" : "MultiplicativeExpr" "*" "UnaryExpr"'
650
+ puts "val: #{val.inspect}"
651
+ end
652
+ result = Rubyang::Xpath::Predicate::MultiplicativeExpr.new val[0], val[1], val[2]
653
+ }
654
+ | "MultiplicativeExpr" "div" "UnaryExpr"
655
+ {
656
+ if Rubyang::Xpath::Parser::DEBUG
657
+ puts '"MultiplicativeExpr" : "MultiplicativeExpr" "div" "UnaryExpr"'
658
+ puts "val: #{val.inspect}"
659
+ end
660
+ result = Rubyang::Xpath::Predicate::MultiplicativeExpr.new val[0], val[1], val[2]
661
+ }
662
+ | "MultiplicativeExpr" "mod" "UnaryExpr"
663
+ {
664
+ if Rubyang::Xpath::Parser::DEBUG
665
+ puts '"MultiplicativeExpr" : "MultiplicativeExpr" "mod" "UnaryExpr"'
666
+ puts "val: #{val.inspect}"
667
+ end
668
+ result = Rubyang::Xpath::Predicate::MultiplicativeExpr.new val[0], val[1], val[2]
669
+ }
670
+
671
+ "UnaryExpr" : "UnionExpr"
672
+ {
673
+ if Rubyang::Xpath::Parser::DEBUG
674
+ puts '"UnaryExp" : "UnionExpr"'
675
+ puts "val: #{val.inspect}"
676
+ end
677
+ result = Rubyang::Xpath::Predicate::UnaryExpr.new val[0]
678
+ }
679
+ | "-" "UnaryExp"
680
+ {
681
+ if Rubyang::Xpath::Parser::DEBUG
682
+ puts '"UnaryExp" : "-" "UnaryExp"'
683
+ puts "val: #{val.inspect}"
684
+ end
685
+ result = Rubyang::Xpath::Predicate::UnaryExpr.new val[1], val[0]
686
+ }
687
+
688
+ "Number" : "Digits"
689
+ {
690
+ if Rubyang::Xpath::Parser::DEBUG
691
+ puts '"Number" : "Digits"'
692
+ puts "val: #{val.inspect}"
693
+ end
694
+ result = val[0]
695
+ }
696
+ | "Digits" "."
697
+ {
698
+ if Rubyang::Xpath::Parser::DEBUG
699
+ puts '"Number" : "Digits" "."'
700
+ puts "val: #{val.inspect}"
701
+ end
702
+ result = val[0]
703
+ }
704
+ | "Digits" "." "Digits"
705
+ {
706
+ if Rubyang::Xpath::Parser::DEBUG
707
+ puts '"Number" : "Digits" "." "Digits"'
708
+ puts "val: #{val.inspect}"
709
+ end
710
+ result = val[0] + val[1] + val[2]
711
+ }
712
+ | "." "Digits"
713
+ {
714
+ if Rubyang::Xpath::Parser::DEBUG
715
+ puts '"Number" : "." "Digits"'
716
+ puts "val: #{val.inspect}"
717
+ end
718
+ result = "0" + val[1] + val[2]
719
+ }
720
+
721
+ "FunctionName(" : "last("
722
+ {
723
+ if Rubyang::Xpath::Parser::DEBUG
724
+ puts '"FunctionName(" : "last("'
725
+ puts "val: #{val.inspect}"
726
+ end
727
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
728
+ }
729
+ | "position("
730
+ {
731
+ if Rubyang::Xpath::Parser::DEBUG
732
+ puts '"FunctionName(" : "position("'
733
+ puts "val: #{val.inspect}"
734
+ end
735
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
736
+ result = val[0]
737
+ }
738
+ | "count("
739
+ {
740
+ if Rubyang::Xpath::Parser::DEBUG
741
+ puts '"FunctionName(" : "count("'
742
+ puts "val: #{val.inspect}"
743
+ end
744
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
745
+ result = val[0]
746
+ }
747
+ | "id("
748
+ {
749
+ if Rubyang::Xpath::Parser::DEBUG
750
+ puts '"FunctionName(" : "id("'
751
+ puts "val: #{val.inspect}"
752
+ end
753
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
754
+ result = val[0]
755
+ }
756
+ | "local-name("
757
+ {
758
+ if Rubyang::Xpath::Parser::DEBUG
759
+ puts '"FunctionName(" : "local-name("'
760
+ puts "val: #{val.inspect}"
761
+ end
762
+ result = val[0]
763
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
764
+ }
765
+ | "namespace-uri("
766
+ {
767
+ if Rubyang::Xpath::Parser::DEBUG
768
+ puts '"FunctionName(" : "namespace-uri("'
769
+ puts "val: #{val.inspect}"
770
+ end
771
+ result = val[0]
772
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
773
+ }
774
+ | "name("
775
+ {
776
+ if Rubyang::Xpath::Parser::DEBUG
777
+ puts '"FunctionName(" : "name("'
778
+ puts "val: #{val.inspect}"
779
+ end
780
+ result = val[0]
781
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
782
+ }
783
+ | "string("
784
+ {
785
+ if Rubyang::Xpath::Parser::DEBUG
786
+ puts '"FunctionName(" : "string("'
787
+ puts "val: #{val.inspect}"
788
+ end
789
+ result = val[0]
790
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
791
+ }
792
+ | "concat("
793
+ {
794
+ if Rubyang::Xpath::Parser::DEBUG
795
+ puts '"FunctionName(" : "concat("'
796
+ puts "val: #{val.inspect}"
797
+ end
798
+ result = val[0]
799
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
800
+ }
801
+ | "starts-with("
802
+ {
803
+ if Rubyang::Xpath::Parser::DEBUG
804
+ puts '"FunctionName(" : "starts-with("'
805
+ puts "val: #{val.inspect}"
806
+ end
807
+ result = val[0]
808
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
809
+ }
810
+ | "contains("
811
+ {
812
+ if Rubyang::Xpath::Parser::DEBUG
813
+ puts '"FunctionName(" : "contains("'
814
+ puts "val: #{val.inspect}"
815
+ end
816
+ result = val[0]
817
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
818
+ }
819
+ | "substring-before("
820
+ {
821
+ if Rubyang::Xpath::Parser::DEBUG
822
+ puts '"FunctionName(" : "substring-before("'
823
+ puts "val: #{val.inspect}"
824
+ end
825
+ result = val[0]
826
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
827
+ }
828
+ | "substring-after("
829
+ {
830
+ if Rubyang::Xpath::Parser::DEBUG
831
+ puts '"FunctionName(" : "substring-after("'
832
+ puts "val: #{val.inspect}"
833
+ end
834
+ result = val[0]
835
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
836
+ }
837
+ | "substring("
838
+ {
839
+ if Rubyang::Xpath::Parser::DEBUG
840
+ puts '"FunctionName(" : "substring("'
841
+ puts "val: #{val.inspect}"
842
+ end
843
+ result = val[0]
844
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
845
+ }
846
+ | "string-length("
847
+ {
848
+ if Rubyang::Xpath::Parser::DEBUG
849
+ puts '"FunctionName(" : "string-length("'
850
+ puts "val: #{val.inspect}"
851
+ end
852
+ result = val[0]
853
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
854
+ }
855
+ | "normalize-space("
856
+ {
857
+ if Rubyang::Xpath::Parser::DEBUG
858
+ puts '"FunctionName(" : "normalize-space("'
859
+ puts "val: #{val.inspect}"
860
+ end
861
+ result = val[0]
862
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
863
+ }
864
+ | "translate("
865
+ {
866
+ if Rubyang::Xpath::Parser::DEBUG
867
+ puts '"FunctionName(" : "translate("'
868
+ puts "val: #{val.inspect}"
869
+ end
870
+ result = val[0]
871
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
872
+ }
873
+ | "boolean("
874
+ {
875
+ if Rubyang::Xpath::Parser::DEBUG
876
+ puts '"FunctionName(" : "boolean("'
877
+ puts "val: #{val.inspect}"
878
+ end
879
+ result = val[0]
880
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
881
+ }
882
+ | "not("
883
+ {
884
+ if Rubyang::Xpath::Parser::DEBUG
885
+ puts '"FunctionName(" : "not("'
886
+ puts "val: #{val.inspect}"
887
+ end
888
+ result = val[0]
889
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
890
+ }
891
+ | "true("
892
+ {
893
+ if Rubyang::Xpath::Parser::DEBUG
894
+ puts '"FunctionName(" : "true("'
895
+ puts "val: #{val.inspect}"
896
+ end
897
+ result = val[0]
898
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
899
+ }
900
+ | "false("
901
+ {
902
+ if Rubyang::Xpath::Parser::DEBUG
903
+ puts '"FunctionName(" : "false("'
904
+ puts "val: #{val.inspect}"
905
+ end
906
+ result = val[0]
907
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
908
+ }
909
+ | "lang("
910
+ {
911
+ if Rubyang::Xpath::Parser::DEBUG
912
+ puts '"FunctionName(" : "lang("'
913
+ puts "val: #{val.inspect}"
914
+ end
915
+ result = val[0]
916
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
917
+ }
918
+ | "number("
919
+ {
920
+ if Rubyang::Xpath::Parser::DEBUG
921
+ puts '"FunctionName(" : "number("'
922
+ puts "val: #{val.inspect}"
923
+ end
924
+ result = val[0]
925
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
926
+ }
927
+ | "sum("
928
+ {
929
+ if Rubyang::Xpath::Parser::DEBUG
930
+ puts '"FunctionName(" : "sum("'
931
+ puts "val: #{val.inspect}"
932
+ end
933
+ result = val[0]
934
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
935
+ }
936
+ | "floor("
937
+ {
938
+ if Rubyang::Xpath::Parser::DEBUG
939
+ puts '"FunctionName(" : "floor("'
940
+ puts "val: #{val.inspect}"
941
+ end
942
+ result = val[0]
943
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
944
+ }
945
+ | "ceiling("
946
+ {
947
+ if Rubyang::Xpath::Parser::DEBUG
948
+ puts '"FunctionName(" : "ceiling("'
949
+ puts "val: #{val.inspect}"
950
+ end
951
+ result = val[0]
952
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
953
+ }
954
+ | "round("
955
+ {
956
+ if Rubyang::Xpath::Parser::DEBUG
957
+ puts '"FunctionName(" : "round("'
958
+ puts "val: #{val.inspect}"
959
+ end
960
+ result = val[0]
961
+ result = Rubyang::Xpath::Predicate::FunctionCall::LAST
962
+ }
963
+ | "current("
964
+ {
965
+ if Rubyang::Xpath::Parser::DEBUG
966
+ puts '"FunctionName(" : "current("'
967
+ puts "val: #{val.inspect}"
968
+ end
969
+ result = Rubyang::Xpath::Predicate::FunctionCall::CURRENT
970
+ }
971
+
972
+ "VariableReference" : "$" "QName"
973
+ {
974
+ if Rubyang::Xpath::Parser::DEBUG
975
+ puts '"VariableReference" : "$" "QName"'
976
+ puts "val: #{val.inspect}"
977
+ end
978
+ result = val[0]
979
+ }
980
+
981
+ "NameTest" : "*"
982
+ {
983
+ if Rubyang::Xpath::Parser::DEBUG
984
+ puts '"NameTest" : "*"'
985
+ puts "val: #{val.inspect}"
986
+ end
987
+ Rubyang::Xpath::NodeTest::NameTest.new '*'
988
+ }
989
+ | "NCName" ":" "*"
990
+ {
991
+ if Rubyang::Xpath::Parser::DEBUG
992
+ puts '"NameTest" : "NCName" ":" "*"'
993
+ puts "val: #{val.inspect}"
994
+ end
995
+ Rubyang::Xpath::NodeTest::NameTest.new "#{val[0]}:*"
996
+ }
997
+ | "QName"
998
+ {
999
+ if Rubyang::Xpath::Parser::DEBUG
1000
+ puts '"NameTest" : "QName"'
1001
+ puts "val: #{val.inspect}"
1002
+ end
1003
+ Rubyang::Xpath::NodeTest::NameTest.new val[0]
1004
+ }
1005
+
1006
+ "NodeType" : "comment"
1007
+ {
1008
+ if Rubyang::Xpath::Parser::DEBUG
1009
+ puts '"NodeType" : "comment"'
1010
+ puts "val: #{val.inspect}"
1011
+ end
1012
+ Rubyang::Xpath::NodeTest::NodeType::COMMENT
1013
+ }
1014
+ | "text"
1015
+ {
1016
+ if Rubyang::Xpath::Parser::DEBUG
1017
+ puts '"NodeType" : "text"'
1018
+ puts "val: #{val.inspect}"
1019
+ end
1020
+ Rubyang::Xpath::NodeTest::NodeType::TEXT
1021
+ }
1022
+ | "node"
1023
+ {
1024
+ if Rubyang::Xpath::Parser::DEBUG
1025
+ puts '"NodeType" : "node"'
1026
+ puts "val: #{val.inspect}"
1027
+ end
1028
+ Rubyang::Xpath::NodeTest::NodeType::NODE
1029
+ }
1030
+
1031
+ "QName" : "PrefixedName"
1032
+ {
1033
+ if Rubyang::Xpath::Parser::DEBUG
1034
+ puts '"QName" : "PrefixedName"'
1035
+ puts "val: #{val.inspect}"
1036
+ end
1037
+ result = val[0]
1038
+ }
1039
+ | "UnprefixedName"
1040
+ {
1041
+ if Rubyang::Xpath::Parser::DEBUG
1042
+ puts '"QName" : "UnprefixedName"'
1043
+ puts "val: #{val.inspect}"
1044
+ end
1045
+ result = val[0]
1046
+ }
1047
+
1048
+ "PrefixedName" : "Prefix" ":" "LocalPart"
1049
+ {
1050
+ if Rubyang::Xpath::Parser::DEBUG
1051
+ puts '"PrefixedName" : "Prefix" ":" "LocalPart"'
1052
+ puts "val: #{val.inspect}"
1053
+ end
1054
+ result = val[0] + val[1] + val[2]
1055
+ }
1056
+
1057
+ "UnprefixedName" : "LocalPart"
1058
+ {
1059
+ if Rubyang::Xpath::Parser::DEBUG
1060
+ puts '"UnprefixedName" : "LocalPart"'
1061
+ puts "val: #{val.inspect}"
1062
+ end
1063
+ result = val[0]
1064
+ }
1065
+
1066
+ "Prefix" : "NCName"
1067
+ {
1068
+ if Rubyang::Xpath::Parser::DEBUG
1069
+ puts '"Prefix" : "NCName"'
1070
+ puts "val: #{val.inspect}"
1071
+ end
1072
+ result = val[0]
1073
+ }
1074
+
1075
+ "LocalPart" : "NCName"
1076
+ {
1077
+ if Rubyang::Xpath::Parser::DEBUG
1078
+ puts '"LocalPart" : "NCName"'
1079
+ puts "val: #{val.inspect}"
1080
+ end
1081
+ result = val[0]
1082
+ }
1083
+ end