#################################################################### # # This file was generated using Parse::Yapp version 1.03. # # Don't edit this file, use source file instead. # # ANY CHANGE MADE HERE WILL BE LOST ! # #################################################################### package XML::XQL::Parser; use vars qw ( @ISA ); use strict; @ISA= qw ( Parse::Yapp::Driver ); use Parse::Yapp::Driver; sub new { my($class)=shift; ref($class) and $class=ref($class); my($self)=$class->SUPER::new( yyversion => '1.03', yystates => [ {#State 0 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, "not" => 17 }, GOTOS => { 'WildQName' => 19, 'WildNCName' => 18, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 5, 'Disjunction' => 6, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Negation' => 26, 'Query' => 27, 'Intersection' => 15, 'Bang' => 30, 'Sequence' => 31, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 1 ACTIONS => { "[" => 36 }, DEFAULT => -51, GOTOS => { 'Subscript_2' => 37 } }, {#State 2 DEFAULT => -43 }, {#State 3 ACTIONS => { 'MATCH' => 40, 'COMPARE' => 39 }, GOTOS => { 'ComparisonOp' => 38 } }, {#State 4 DEFAULT => -65 }, {#State 5 ACTIONS => { "or" => 41 }, DEFAULT => -21 }, {#State 6 ACTIONS => { 'SeqOp' => 42 }, DEFAULT => -19 }, {#State 7 DEFAULT => -67 }, {#State 8 DEFAULT => -59 }, {#State 9 DEFAULT => -42 }, {#State 10 ACTIONS => { 'COMPARE' => -37, 'MATCH' => -37 }, DEFAULT => -33 }, {#State 11 ACTIONS => { "*" => 29, 'NCName' => 25 }, GOTOS => { 'WildQName' => 43, 'WildNCName' => 18 } }, {#State 12 DEFAULT => -62 }, {#State 13 DEFAULT => -68 }, {#State 14 ACTIONS => { 'NCName' => 25, "(" => 28, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Filter' => 1, 'Bang' => 30, 'RelativePath' => 2, 'LValue' => 44, 'Invocation' => 32, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 45, 'Subscript' => 35 } }, {#State 15 ACTIONS => { 'UnionOp' => 46 }, DEFAULT => -27 }, {#State 16 ACTIONS => { ".." => -17, 'XQLName_Paren' => -17, "\@" => -17, 'NCName' => -17, "(" => -17, "*" => -17, "." => -17 }, DEFAULT => -44 }, {#State 17 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, "not" => 17 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Negation' => 47, 'Intersection' => 15, 'Bang' => 30, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 18 ACTIONS => { ":" => 48 }, DEFAULT => -4 }, {#State 19 DEFAULT => -10 }, {#State 20 ACTIONS => { 'NCName' => 25, "(" => 28, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Filter' => 1, 'Bang' => 30, 'RelativePath' => 2, 'LValue' => 49, 'Invocation' => 32, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 45, 'Subscript' => 35 } }, {#State 21 DEFAULT => -25 }, {#State 22 ACTIONS => { 'NCName' => 25, 'TEXT' => 50, "(" => 28, "any" => 14, "all" => 20, ")" => 54, "*" => 29, 'NUMBER' => 51, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, 'INTEGER' => 53, "not" => 17 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 5, 'Disjunction' => 52, 'Invocation_2' => 55, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'Param' => 56, 'RelativeTerm' => 12, 'Negation' => 26, 'AttributeName' => 13, 'Intersection' => 15, 'Bang' => 30, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 23 DEFAULT => -18 }, {#State 24 ACTIONS => { "*" => 29, 'NCName' => 25, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "(" => 28, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Filter' => 1, 'Bang' => 30, 'RelativePath' => 57, 'Invocation' => 32, 'ElementName' => 7, 'Grouping' => 8, 'Subscript' => 35 } }, {#State 25 DEFAULT => -2 }, {#State 26 ACTIONS => { "and" => 58 }, DEFAULT => -23 }, {#State 27 ACTIONS => { '' => 59 } }, {#State 28 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, "not" => 17 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 5, 'Disjunction' => 6, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Negation' => 26, 'Query' => 60, 'Intersection' => 15, 'Bang' => 30, 'Sequence' => 31, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 29 DEFAULT => -3 }, {#State 30 ACTIONS => { "//" => 23, "/" => 61 }, DEFAULT => -46, GOTOS => { 'PathOp' => 62 } }, {#State 31 DEFAULT => -1 }, {#State 32 DEFAULT => -66 }, {#State 33 ACTIONS => { "intersect" => 63 }, DEFAULT => -29 }, {#State 34 DEFAULT => -64 }, {#State 35 ACTIONS => { "!" => 64 }, DEFAULT => -48 }, {#State 36 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, 'INTEGER' => 65, "\@" => 11, "not" => 17 }, GOTOS => { 'Subquery' => 67, 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 5, 'Disjunction' => 6, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Range' => 68, 'Path' => 10, 'IndexArg' => 69, 'RelativeTerm' => 12, 'IndexList' => 66, 'AttributeName' => 13, 'Negation' => 26, 'Query' => 70, 'Intersection' => 15, 'Bang' => 30, 'Sequence' => 31, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 37 DEFAULT => -50 }, {#State 38 ACTIONS => { 'NCName' => 25, 'TEXT' => 71, "(" => 28, "*" => 29, 'NUMBER' => 72, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, 'INTEGER' => 74, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Filter' => 1, 'Bang' => 30, 'RelativePath' => 2, 'Invocation' => 32, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 73, 'Subscript' => 35, 'RValue' => 75 } }, {#State 39 DEFAULT => -31 }, {#State 40 DEFAULT => -32 }, {#State 41 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, "not" => 17 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 5, 'Disjunction' => 76, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Negation' => 26, 'Intersection' => 15, 'Bang' => 30, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 42 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, "not" => 17 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 5, 'Disjunction' => 6, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Negation' => 26, 'Intersection' => 15, 'Bang' => 30, 'Sequence' => 77, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 43 DEFAULT => -11 }, {#State 44 ACTIONS => { 'MATCH' => 40, 'COMPARE' => 39 }, GOTOS => { 'ComparisonOp' => 78 } }, {#State 45 DEFAULT => -37 }, {#State 46 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 79, 'RelativePath' => 2, 'LValue' => 3, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Intersection' => 15, 'Bang' => 30, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 47 DEFAULT => -26 }, {#State 48 ACTIONS => { "*" => 29, 'NCName' => 25 }, GOTOS => { 'WildNCName' => 80 } }, {#State 49 ACTIONS => { 'MATCH' => 40, 'COMPARE' => 39 }, GOTOS => { 'ComparisonOp' => 81 } }, {#State 50 DEFAULT => -9 }, {#State 51 DEFAULT => -8 }, {#State 52 DEFAULT => -6 }, {#State 53 DEFAULT => -7 }, {#State 54 DEFAULT => -13 }, {#State 55 DEFAULT => -12 }, {#State 56 ACTIONS => { "," => 83 }, DEFAULT => -15, GOTOS => { 'Invocation_3' => 82 } }, {#State 57 DEFAULT => -45 }, {#State 58 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, "not" => 17 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 84, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Negation' => 26, 'Intersection' => 15, 'Bang' => 30, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 59 DEFAULT => -0 }, {#State 60 ACTIONS => { ")" => 85 } }, {#State 61 DEFAULT => -17 }, {#State 62 ACTIONS => { "*" => 29, 'NCName' => 25, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "(" => 28, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Filter' => 1, 'Bang' => 30, 'RelativePath' => 86, 'Invocation' => 32, 'ElementName' => 7, 'Grouping' => 8, 'Subscript' => 35 } }, {#State 63 ACTIONS => { 'NCName' => 25, "(" => 28, "any" => 14, "all" => 20, "*" => 29, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'RelativePath' => 2, 'LValue' => 3, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Intersection' => 87, 'Bang' => 30, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 64 ACTIONS => { 'XQLName_Paren' => 22 }, GOTOS => { 'Invocation' => 88 } }, {#State 65 ACTIONS => { "to" => 89 }, DEFAULT => -56 }, {#State 66 ACTIONS => { "]" => 90 } }, {#State 67 ACTIONS => { "]" => 91 } }, {#State 68 DEFAULT => -57 }, {#State 69 ACTIONS => { "," => 93 }, DEFAULT => -54, GOTOS => { 'IndexList_2' => 92 } }, {#State 70 DEFAULT => -61 }, {#State 71 DEFAULT => -41 }, {#State 72 DEFAULT => -40 }, {#State 73 DEFAULT => -38 }, {#State 74 DEFAULT => -39 }, {#State 75 DEFAULT => -34 }, {#State 76 DEFAULT => -22 }, {#State 77 DEFAULT => -20 }, {#State 78 ACTIONS => { 'NCName' => 25, 'TEXT' => 71, "(" => 28, "*" => 29, 'NUMBER' => 72, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, 'INTEGER' => 74, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Filter' => 1, 'Bang' => 30, 'RelativePath' => 2, 'Invocation' => 32, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 73, 'Subscript' => 35, 'RValue' => 94 } }, {#State 79 DEFAULT => -28 }, {#State 80 DEFAULT => -5 }, {#State 81 ACTIONS => { 'NCName' => 25, 'TEXT' => 71, "(" => 28, "*" => 29, 'NUMBER' => 72, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, 'INTEGER' => 74, "\@" => 11 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'RelativeTerm' => 12, 'AttributeName' => 13, 'Filter' => 1, 'Bang' => 30, 'RelativePath' => 2, 'Invocation' => 32, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 73, 'Subscript' => 35, 'RValue' => 95 } }, {#State 82 ACTIONS => { ")" => 96 } }, {#State 83 ACTIONS => { 'NCName' => 25, 'TEXT' => 50, "(" => 28, "any" => 14, "all" => 20, "*" => 29, 'NUMBER' => 51, ".." => 4, 'XQLName_Paren' => 22, "." => 34, "//" => 23, "/" => 16, "\@" => 11, 'INTEGER' => 53, "not" => 17 }, GOTOS => { 'WildNCName' => 18, 'WildQName' => 19, 'Filter' => 1, 'Union' => 21, 'RelativePath' => 2, 'LValue' => 3, 'Conjunction' => 5, 'Disjunction' => 52, 'ElementName' => 7, 'Grouping' => 8, 'PathOp' => 24, 'AbsolutePath' => 9, 'Path' => 10, 'Param' => 97, 'RelativeTerm' => 12, 'Negation' => 26, 'AttributeName' => 13, 'Intersection' => 15, 'Bang' => 30, 'Invocation' => 32, 'Comparison' => 33, 'Subscript' => 35 } }, {#State 84 DEFAULT => -24 }, {#State 85 DEFAULT => -63 }, {#State 86 DEFAULT => -47 }, {#State 87 DEFAULT => -30 }, {#State 88 DEFAULT => -49 }, {#State 89 ACTIONS => { 'INTEGER' => 98 } }, {#State 90 DEFAULT => -52 }, {#State 91 DEFAULT => -60 }, {#State 92 DEFAULT => -53 }, {#State 93 ACTIONS => { 'INTEGER' => 65 }, GOTOS => { 'IndexArg' => 99, 'Range' => 68 } }, {#State 94 DEFAULT => -35 }, {#State 95 DEFAULT => -36 }, {#State 96 DEFAULT => -14 }, {#State 97 ACTIONS => { "," => 83 }, DEFAULT => -15, GOTOS => { 'Invocation_3' => 100 } }, {#State 98 DEFAULT => -58 }, {#State 99 ACTIONS => { "," => 93 }, DEFAULT => -54, GOTOS => { 'IndexList_2' => 101 } }, {#State 100 DEFAULT => -16 }, {#State 101 DEFAULT => -55 } ], yyrules => [ [#Rule 0 '$start', 2, undef ], [#Rule 1 'Query', 1, undef ], [#Rule 2 'WildNCName', 1, undef ], [#Rule 3 'WildNCName', 1, undef ], [#Rule 4 'WildQName', 1, sub #line 24 "Parser.yp" { [ Name => $_[1] ]; } ], [#Rule 5 'WildQName', 3, sub #line 25 "Parser.yp" { [ NameSpace => $_[1], Name => $_[2]]; } ], [#Rule 6 'Param', 1, undef ], [#Rule 7 'Param', 1, sub #line 30 "Parser.yp" { new XML::XQL::Number ($_[1]); } ], [#Rule 8 'Param', 1, sub #line 31 "Parser.yp" { new XML::XQL::Number ($_[1]); } ], [#Rule 9 'Param', 1, sub #line 32 "Parser.yp" { new XML::XQL::Text ($_[1]); } ], [#Rule 10 'ElementName', 1, sub #line 35 "Parser.yp" { new XML::XQL::Element (@{$_[1]}); } ], [#Rule 11 'AttributeName', 2, sub #line 38 "Parser.yp" { new XML::XQL::Attribute (@{$_[2]}); } ], [#Rule 12 'Invocation', 2, sub #line 41 "Parser.yp" { my ($func, $type) = $_[0]->{Query}->findFunctionOrMethod ($_[1], $_[2]); new XML::XQL::Invocation (Name => $_[1], Args => $_[2], Func => $func, Type => $type); } ], [#Rule 13 'Invocation_2', 1, sub #line 50 "Parser.yp" { [] } ], [#Rule 14 'Invocation_2', 3, sub #line 51 "Parser.yp" { unshift @{$_[2]}, $_[1]; $_[2]; } ], [#Rule 15 'Invocation_3', 0, sub #line 54 "Parser.yp" { [] } ], [#Rule 16 'Invocation_3', 3, sub #line 55 "Parser.yp" { unshift @{$_[3]}, $_[2]; $_[3]; } ], [#Rule 17 'PathOp', 1, undef ], [#Rule 18 'PathOp', 1, undef ], [#Rule 19 'Sequence', 1, undef ], [#Rule 20 'Sequence', 3, sub #line 62 "Parser.yp" { new XML::XQL::Sequence (Left => $_[1], Oper => $_[2], Right => $_[3]); } ], [#Rule 21 'Disjunction', 1, undef ], [#Rule 22 'Disjunction', 3, sub #line 68 "Parser.yp" { new XML::XQL::Or (Left => $_[1], Right => $_[3]); } ], [#Rule 23 'Conjunction', 1, undef ], [#Rule 24 'Conjunction', 3, sub #line 73 "Parser.yp" { new XML::XQL::And (Left => $_[1], Right => $_[3]); } ], [#Rule 25 'Negation', 1, undef ], [#Rule 26 'Negation', 2, sub #line 78 "Parser.yp" { new XML::XQL::Not (Left => $_[2]); } ], [#Rule 27 'Union', 1, undef ], [#Rule 28 'Union', 3, sub #line 82 "Parser.yp" { new XML::XQL::Union (Left => $_[1], Right => $_[3]); } ], [#Rule 29 'Intersection', 1, undef ], [#Rule 30 'Intersection', 3, sub #line 87 "Parser.yp" { new XML::XQL::Intersect (Left => $_[1], Right => $_[3]); } ], [#Rule 31 'ComparisonOp', 1, sub #line 91 "Parser.yp" { [ $_[1], $_[0]->{Query}->findComparisonOperator ($_[1]) ]; } ], [#Rule 32 'ComparisonOp', 1, sub #line 93 "Parser.yp" { [ $_[1], $_[0]->{Query}->findComparisonOperator ($_[1]) ]; } ], [#Rule 33 'Comparison', 1, undef ], [#Rule 34 'Comparison', 3, sub #line 98 "Parser.yp" { new XML::XQL::Compare (All => 0, Left => $_[1], Oper => $_[2]->[0], Func => $_[2]->[1], Right => $_[3]); } ], [#Rule 35 'Comparison', 4, sub #line 102 "Parser.yp" { new XML::XQL::Compare (All => 0, Left => $_[2], Oper => $_[3]->[0], Func => $_[3]->[1], Right => $_[4]); } ], [#Rule 36 'Comparison', 4, sub #line 106 "Parser.yp" { new XML::XQL::Compare (All => 1, Left => $_[2], Oper => $_[3]->[0], Func => $_[3]->[1], Right => $_[4]); } ], [#Rule 37 'LValue', 1, undef ], [#Rule 38 'RValue', 1, undef ], [#Rule 39 'RValue', 1, sub #line 116 "Parser.yp" { new XML::XQL::Number ($_[1]); } ], [#Rule 40 'RValue', 1, sub #line 117 "Parser.yp" { new XML::XQL::Number ($_[1]); } ], [#Rule 41 'RValue', 1, sub #line 118 "Parser.yp" { new XML::XQL::Text ($_[1]); } ], [#Rule 42 'Path', 1, undef ], [#Rule 43 'Path', 1, undef ], [#Rule 44 'AbsolutePath', 1, sub #line 124 "Parser.yp" { new XML::Root; } ], [#Rule 45 'AbsolutePath', 2, sub #line 125 "Parser.yp" { new XML::XQL::Path (PathOp => $_[1], Right => $_[2]); } ], [#Rule 46 'RelativePath', 1, undef ], [#Rule 47 'RelativePath', 3, sub #line 130 "Parser.yp" { new XML::XQL::Path (Left => $_[1], PathOp => $_[2], Right => $_[3]); } ], [#Rule 48 'Bang', 1, undef ], [#Rule 49 'Bang', 3, sub #line 136 "Parser.yp" { XML::XQL::parseError ("only methods (not functions) can be used after the Bang (near '!" . $_[3]->{Name} . "'") unless $_[3]->isMethod; new XML::XQL::Bang (Left => $_[1], Right => $_[3]); } ], [#Rule 50 'Subscript', 2, sub #line 144 "Parser.yp" { defined($_[2]) ? new XML::XQL::Subscript (Left => $_[1], IndexList => $_[2]) : $_[1]; } ], [#Rule 51 'Subscript_2', 0, undef ], [#Rule 52 'Subscript_2', 3, sub #line 151 "Parser.yp" { $_[2]; } ], [#Rule 53 'IndexList', 2, sub #line 156 "Parser.yp" { push (@{$_[1]}, @{$_[2]}); $_[1]; } ], [#Rule 54 'IndexList_2', 0, sub #line 159 "Parser.yp" { [] } ], [#Rule 55 'IndexList_2', 3, sub #line 160 "Parser.yp" { push (@{$_[2]}, @{$_[3]}); $_[2]; } ], [#Rule 56 'IndexArg', 1, sub #line 163 "Parser.yp" { [ $_[1], $_[1] ]; } ], [#Rule 57 'IndexArg', 1, undef ], [#Rule 58 'Range', 3, sub #line 167 "Parser.yp" { # Syntactic Constraint 9: # If both integers are positive or if both integers are # negative, the first integer must be less than or # equal to the second integer. XML::XQL::parseError ( "$_[1] should be less than $_[3] in '$_[1] $_[2] $_[3]'") if ($_[1] > $_[3] && ($_[1] < 0) == ($_[3] < 0)); [ $_[1], $_[3] ]; } ], [#Rule 59 'Filter', 1, undef ], [#Rule 60 'Filter', 4, sub #line 180 "Parser.yp" { new XML::XQL::Filter (Left => $_[1], Right => $_[3]); } ], [#Rule 61 'Subquery', 1, undef ], [#Rule 62 'Grouping', 1, undef ], [#Rule 63 'Grouping', 3, sub #line 189 "Parser.yp" { $_[2]; } ], [#Rule 64 'RelativeTerm', 1, sub #line 192 "Parser.yp" { new XML::XQL::Current; } ], [#Rule 65 'RelativeTerm', 1, sub #line 193 "Parser.yp" { new XML::XQL::Parent; } ], [#Rule 66 'RelativeTerm', 1, undef ], [#Rule 67 'RelativeTerm', 1, undef ], [#Rule 68 'RelativeTerm', 1, undef ] ], @_); bless($self,$class); } #line 199 "Parser.yp" 1;