diff -r 8b87ea768cb8 -r 60053dab7e2a dummy_foundation/lib/XML/XQL/Parser.pm --- a/dummy_foundation/lib/XML/XQL/Parser.pm Wed Jun 03 18:33:51 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1438 +0,0 @@ -######################################################################### -# -# This file was generated using Parse::Yapp version 0.16. -# -# 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 => '0.16', - 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 { - [ Name => $_[1] ]; -} - ], - [#Rule 5 - 'WildQName', 3, -sub { - - [ NameSpace => $_[1], Name => $_[2]]; -} - ], - [#Rule 6 - 'Param', 1, undef - ], - [#Rule 7 - 'Param', 1, -sub { - new XML::XQL::Number ($_[1]); -} - ], - [#Rule 8 - 'Param', 1, -sub { - new XML::XQL::Number ($_[1]); -} - ], - [#Rule 9 - 'Param', 1, -sub { - new XML::XQL::Text ($_[1]); -} - ], - [#Rule 10 - 'ElementName', 1, -sub { - new XML::XQL::Element (@{$_[1]}); -} - ], - [#Rule 11 - 'AttributeName', 2, -sub { - new XML::XQL::Attribute (@{$_[2]}); -} - ], - [#Rule 12 - 'Invocation', 2, -sub { - - 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 { - [] -} - ], - [#Rule 14 - 'Invocation_2', 3, -sub { - unshift @{$_[2]}, $_[1]; $_[2]; -} - ], - [#Rule 15 - 'Invocation_3', 0, -sub { - [] -} - ], - [#Rule 16 - 'Invocation_3', 3, -sub { - unshift @{$_[3]}, $_[2]; $_[3]; -} - ], - [#Rule 17 - 'PathOp', 1, undef - ], - [#Rule 18 - 'PathOp', 1, undef - ], - [#Rule 19 - 'Sequence', 1, undef - ], - [#Rule 20 - 'Sequence', 3, -sub { - - new XML::XQL::Sequence (Left => $_[1], Oper => $_[2], - Right => $_[3]); -} - ], - [#Rule 21 - 'Disjunction', 1, undef - ], - [#Rule 22 - 'Disjunction', 3, -sub { - - new XML::XQL::Or (Left => $_[1], Right => $_[3]); -} - ], - [#Rule 23 - 'Conjunction', 1, undef - ], - [#Rule 24 - 'Conjunction', 3, -sub { - - new XML::XQL::And (Left => $_[1], Right => $_[3]); -} - ], - [#Rule 25 - 'Negation', 1, undef - ], - [#Rule 26 - 'Negation', 2, -sub { - new XML::XQL::Not (Left => $_[2]); -} - ], - [#Rule 27 - 'Union', 1, undef - ], - [#Rule 28 - 'Union', 3, -sub { - - new XML::XQL::Union (Left => $_[1], Right => $_[3]); -} - ], - [#Rule 29 - 'Intersection', 1, undef - ], - [#Rule 30 - 'Intersection', 3, -sub { - - new XML::XQL::Intersect ($_[1], $_[3]); -} - ], - [#Rule 31 - 'ComparisonOp', 1, -sub { - - [ $_[1], $_[0]->{Query}->findComparisonOperator ($_[1]) ]; -} - ], - [#Rule 32 - 'ComparisonOp', 1, -sub { - - [ $_[1], $_[0]->{Query}->findComparisonOperator ($_[1]) ]; -} - ], - [#Rule 33 - 'Comparison', 1, undef - ], - [#Rule 34 - 'Comparison', 3, -sub { - - new XML::XQL::Compare (All => 0, Left => $_[1], - Oper => $_[2]->[0], Func => $_[2]->[1], - Right => $_[3]); -} - ], - [#Rule 35 - 'Comparison', 4, -sub { - - new XML::XQL::Compare (All => 0, Left => $_[2], - Oper => $_[3]->[0], Func => $_[3]->[0], - Right => $_[4]); -} - ], - [#Rule 36 - 'Comparison', 4, -sub { - - new XML::XQL::Compare (All => 1, Left => $_[2], - Oper => $_[3]->[0], Func => $_[3]->[0], - Right => $_[4]); -} - ], - [#Rule 37 - 'LValue', 1, undef - ], - [#Rule 38 - 'RValue', 1, undef - ], - [#Rule 39 - 'RValue', 1, -sub { - new XML::XQL::Number ($_[1]); -} - ], - [#Rule 40 - 'RValue', 1, -sub { - new XML::XQL::Number ($_[1]); -} - ], - [#Rule 41 - 'RValue', 1, -sub { - new XML::XQL::Text ($_[1]); -} - ], - [#Rule 42 - 'Path', 1, undef - ], - [#Rule 43 - 'Path', 1, undef - ], - [#Rule 44 - 'AbsolutePath', 1, -sub { - new XML::Root; -} - ], - [#Rule 45 - 'AbsolutePath', 2, -sub { - - new XML::XQL::Path (PathOp => $_[1], Right => $_[2]); -} - ], - [#Rule 46 - 'RelativePath', 1, undef - ], - [#Rule 47 - 'RelativePath', 3, -sub { - - new XML::XQL::Path (Left => $_[1], PathOp => $_[2], - Right => $_[3]); -} - ], - [#Rule 48 - 'Bang', 1, undef - ], - [#Rule 49 - 'Bang', 3, -sub { - - 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 { - - defined($_[2]) ? - new XML::XQL::Subscript (Left => $_[1], - IndexList => $_[2]) : $_[1]; -} - ], - [#Rule 51 - 'Subscript_2', 0, undef - ], - [#Rule 52 - 'Subscript_2', 3, -sub { - $_[2]; -} - ], - [#Rule 53 - 'IndexList', 2, -sub { - push (@{$_[1]}, @{$_[2]}); $_[1]; -} - ], - [#Rule 54 - 'IndexList_2', 0, -sub { - [] -} - ], - [#Rule 55 - 'IndexList_2', 3, -sub { - push (@{$_[2]}, @{$_[3]}); $_[2]; -} - ], - [#Rule 56 - 'IndexArg', 1, -sub { - [ $_[1], $_[1] ]; -} - ], - [#Rule 57 - 'IndexArg', 1, undef - ], - [#Rule 58 - 'Range', 3, -sub { - - # 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 { - - new XML::XQL::Filter (Left => $_[1], Right => $_[3]); -} - ], - [#Rule 61 - 'Subquery', 1, undef - ], - [#Rule 62 - 'Grouping', 1, undef - ], - [#Rule 63 - 'Grouping', 3, -sub { - $_[2]; -} - ], - [#Rule 64 - 'RelativeTerm', 1, -sub { - new XML::XQL::Current; -} - ], - [#Rule 65 - 'RelativeTerm', 1, -sub { - new XML::XQL::Parent; -} - ], - [#Rule 66 - 'RelativeTerm', 1, undef - ], - [#Rule 67 - 'RelativeTerm', 1, undef - ], - [#Rule 68 - 'RelativeTerm', 1, undef - ] -], - @_); - bless($self,$class); -} - - - -1;