rubyang 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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