%{ # START TokenBlock my $IT_BASE = "BASE"; my $IT_PREFIX = "PREFIX"; my $IT_SELECT = "SELECT"; my $IT_DISTINCT = "DISTINCT"; my $IT_REDUCED = "REDUCED"; my $GT_TIMES = "\\*"; my $IT_CONSTRUCT = "CONSTRUCT"; my $IT_DESCRIBE = "DESCRIBE"; my $IT_ASK = "ASK"; my $IT_FROM = "FROM"; my $IT_NAMED = "NAMED"; my $IT_WHERE = "WHERE"; my $IT_ORDER = "ORDER"; my $IT_BY = "BY"; my $IT_ASC = "ASC"; my $IT_DESC = "DESC"; my $IT_LIMIT = "LIMIT"; my $IT_OFFSET = "OFFSET"; my $GT_LCURLEY = "\\{"; my $GT_RCURLEY = "\\}"; my $GT_DOT = "\\."; my $IT_OPTIONAL = "OPTIONAL"; my $IT_GRAPH = "GRAPH"; my $IT_UNION = "UNION"; my $IT_FILTER = "FILTER"; my $GT_COMMA = ","; my $GT_LPAREN = "\\("; my $GT_RPAREN = "\\)"; my $GT_SEMI = ";"; my $IT_a = "a"; my $GT_LBRACKET = "\\["; my $GT_RBRACKET = "\\]"; my $GT_OR = "\\|\\|"; my $GT_AND = "&&"; my $GT_EQUAL = "="; my $GT_NEQUAL = "!="; my $GT_LT = "<"; my $GT_GT = ">"; my $GT_LE = "<="; my $GT_GE = ">="; my $GT_PLUS = "\\+"; my $GT_MINUS = "-"; my $GT_DIVIDE = "\\/"; my $GT_NOT = "!"; my $IT_STR = "STR"; my $IT_LANG = "LANG"; my $IT_LANGMATCHES = "LANGMATCHES"; my $IT_DATATYPE = "DATATYPE"; my $IT_BOUND = "BOUND"; my $IT_sameTerm = "sameTerm"; my $IT_isIRI = "isIRI"; my $IT_isURI = "isURI"; my $IT_isBLANK = "isBLANK"; my $IT_isLITERAL = "isLITERAL"; my $IT_REGEX = "REGEX"; my $GT_DTYPE = "\\^\\^"; my $IT_true = "true"; my $IT_false = "false"; my $IRI_REF = "<(?:(?:[#-;=\\?-\\[\\]_a-z~-\x{10FFFD}]))*>"; my $LANGTAG = "\@(?:[A-Za-z])+(?:(?:-(?:[0-9A-Za-z])+))*"; my $INTEGER = "(?:[0-9])+"; my $DECIMAL = "(?:(?:[0-9])+\\.(?:[0-9])*)|(?:\\.(?:[0-9])+)"; my $INTEGER_POSITIVE = "\\+(?:${INTEGER})"; my $DECIMAL_POSITIVE = "\\+(?:${DECIMAL})"; my $INTEGER_NEGATIVE = "-(?:${INTEGER})"; my $DECIMAL_NEGATIVE = "-(?:${DECIMAL})"; my $EXPONENT = "[Ee](?:[\\+-])?(?:[0-9])+"; my $DOUBLE = "(?:(?:[0-9])+\\.(?:[0-9])*(?:${EXPONENT}))|(?:(?:\\.(?:(?:[0-9]))+(?:${EXPONENT}))|(?:(?:(?:[0-9]))+(?:${EXPONENT})))"; my $DOUBLE_NEGATIVE = "-(?:${DOUBLE})"; my $DOUBLE_POSITIVE = "\\+(?:${DOUBLE})"; my $ECHAR = "\\\\[\\\"\\'\\\\bfnrt]"; my $STRING_LITERAL_LONG2 = "\\\"\\\"\\\"(?:(?:(?:(?:(?:\\\")|(?:\\\"\\\")))?(?:(?:[\x{0000}-!#-\\[\\]-\x{10FFFD}])|(?:(?:${ECHAR})))))*\\\"\\\"\\\""; my $STRING_LITERAL_LONG1 = "\\'\\'\\'(?:(?:(?:(?:(?:\\')|(?:\\'\\')))?(?:(?:[\x{0000}-&\\(-\\[\\]-\x{10FFFD}])|(?:(?:${ECHAR})))))*\\'\\'\\'"; my $STRING_LITERAL2 = "\\\"(?:(?:(?:(?:[\x{0000}-\\t\x{000B}-\x{000C}\x{000E}-!#-\\[\\]-\x{10FFFD}]))|(?:(?:${ECHAR}))))*\\\""; my $STRING_LITERAL1 = "\\'(?:(?:(?:(?:[\x{0000}-\\t\x{000B}-\x{000C}\x{000E}-&\\(-\\[\\]-\x{10FFFD}]))|(?:(?:${ECHAR}))))*\\'"; my $WS = "(?: )|(?:(?:\\t)|(?:(?:\\r)|(?:\\n)))"; my $NIL = "\\((?:(?:${WS}))*\\)"; my $ANON = "\\[(?:(?:${WS}))*\\]"; my $PN_CHARS_BASE = "(?:[A-Z])|(?:(?:[a-z])|(?:(?:[\x{00C0}-\x{00D6}])|(?:(?:[\x{00D8}-\x{00F6}])|(?:(?:[\x{00F8}-\x{02FF}])|(?:(?:[\x{0370}-\x{037D}])|(?:(?:[\x{037F}-\x{1FFF}])|(?:(?:[\x{200C}-\x{200D}])|(?:(?:[\x{2070}-\x{218F}])|(?:(?:[\x{2C00}-\x{2FEF}])|(?:(?:[\x{3001}-\x{D7FF}])|(?:(?:[\x{F900}-\x{FDCF}])|(?:(?:[\x{FDF0}-\x{FFFD}])|(?:[\x{10000}-\x{EFFFF}])))))))))))))"; my $PN_CHARS_U = "(?:(?:${PN_CHARS_BASE}))|(?:_)"; my $VARNAME = "(?:(?:(?:${PN_CHARS_U}))|(?:[0-9]))(?:(?:(?:(?:${PN_CHARS_U}))|(?:(?:[0-9])|(?:(?:\x{00B7})|(?:(?:[\x{0300}-\x{036F}])|(?:[\x{203F}-\x{2040}]))))))*"; my $VAR2 = "\\\$(?:${VARNAME})"; my $VAR1 = "\\?(?:${VARNAME})"; my $PN_CHARS = "(?:(?:${PN_CHARS_U}))|(?:(?:-)|(?:(?:[0-9])|(?:(?:\x{00B7})|(?:(?:[\x{0300}-\x{036F}])|(?:[\x{203F}-\x{2040}])))))"; my $PN_PREFIX = "(?:${PN_CHARS_BASE})(?:(?:(?:(?:(?:(?:${PN_CHARS}))|(?:\\.)))*(?:${PN_CHARS})))?"; my $PNAME_NS = "(?:(?:${PN_PREFIX}))?:"; my $PN_LOCAL = "(?:(?:(?:${PN_CHARS_U}))|(?:[0-9]))(?:(?:(?:(?:(?:(?:${PN_CHARS}))|(?:\\.)))*(?:${PN_CHARS})))?"; my $BLANK_NODE_LABEL = "_:(?:${PN_LOCAL})"; my $PNAME_LN = "(?:${PNAME_NS})(?:${PN_LOCAL})"; my $PASSED_TOKENS = "(?:(?:[\\t\\n\\r ])+)|(?:#(?:[\x{0000}-\\t\x{000B}-\x{000C}\x{000E}-\x{10FFFD}])*)"; my $Tokens = [[0, qr/$PASSED_TOKENS/, undef], [0, qr/$IT_BASE/i, 'IT_BASE'], [0, qr/$IT_PREFIX/i, 'IT_PREFIX'], [0, qr/$IT_SELECT/i, 'IT_SELECT'], [0, qr/$IT_DISTINCT/i, 'IT_DISTINCT'], [0, qr/$IT_REDUCED/i, 'IT_REDUCED'], [0, qr/$GT_TIMES/i, 'GT_TIMES'], [0, qr/$IT_CONSTRUCT/i, 'IT_CONSTRUCT'], [0, qr/$IT_DESCRIBE/i, 'IT_DESCRIBE'], [0, qr/$IT_ASK/i, 'IT_ASK'], [0, qr/$IT_FROM/i, 'IT_FROM'], [0, qr/$IT_NAMED/i, 'IT_NAMED'], [0, qr/$IT_WHERE/i, 'IT_WHERE'], [0, qr/$IT_ORDER/i, 'IT_ORDER'], [0, qr/$IT_BY/i, 'IT_BY'], [0, qr/$IT_ASC/i, 'IT_ASC'], [0, qr/$IT_DESC/i, 'IT_DESC'], [0, qr/$IT_LIMIT/i, 'IT_LIMIT'], [0, qr/$IT_OFFSET/i, 'IT_OFFSET'], [0, qr/$GT_LCURLEY/i, 'GT_LCURLEY'], [0, qr/$GT_RCURLEY/i, 'GT_RCURLEY'], [0, qr/$GT_DOT/i, 'GT_DOT'], [0, qr/$IT_OPTIONAL/i, 'IT_OPTIONAL'], [0, qr/$IT_GRAPH/i, 'IT_GRAPH'], [0, qr/$IT_UNION/i, 'IT_UNION'], [0, qr/$IT_FILTER/i, 'IT_FILTER'], [0, qr/$GT_COMMA/i, 'GT_COMMA'], [0, qr/$GT_LPAREN/i, 'GT_LPAREN'], [0, qr/$GT_RPAREN/i, 'GT_RPAREN'], [0, qr/$GT_SEMI/i, 'GT_SEMI'], [0, qr/$IT_a/i, 'IT_a'], [0, qr/$GT_LBRACKET/i, 'GT_LBRACKET'], [0, qr/$GT_RBRACKET/i, 'GT_RBRACKET'], [0, qr/$GT_OR/i, 'GT_OR'], [0, qr/$GT_AND/i, 'GT_AND'], [0, qr/$GT_EQUAL/i, 'GT_EQUAL'], [0, qr/$GT_NEQUAL/i, 'GT_NEQUAL'], [0, qr/$GT_LT/i, 'GT_LT'], [0, qr/$GT_GT/i, 'GT_GT'], [0, qr/$GT_LE/i, 'GT_LE'], [0, qr/$GT_GE/i, 'GT_GE'], [0, qr/$GT_PLUS/i, 'GT_PLUS'], [0, qr/$GT_MINUS/i, 'GT_MINUS'], [0, qr/$GT_DIVIDE/i, 'GT_DIVIDE'], [0, qr/$GT_NOT/i, 'GT_NOT'], [0, qr/$IT_STR/i, 'IT_STR'], [0, qr/$IT_LANG/i, 'IT_LANG'], [0, qr/$IT_LANGMATCHES/i, 'IT_LANGMATCHES'], [0, qr/$IT_DATATYPE/i, 'IT_DATATYPE'], [0, qr/$IT_BOUND/i, 'IT_BOUND'], [0, qr/$IT_sameTerm/i, 'IT_sameTerm'], [0, qr/$IT_isIRI/i, 'IT_isIRI'], [0, qr/$IT_isURI/i, 'IT_isURI'], [0, qr/$IT_isBLANK/i, 'IT_isBLANK'], [0, qr/$IT_isLITERAL/i, 'IT_isLITERAL'], [0, qr/$IT_REGEX/i, 'IT_REGEX'], [0, qr/$GT_DTYPE/i, 'GT_DTYPE'], [0, qr/$IT_true/i, 'IT_true'], [0, qr/$IT_false/i, 'IT_false'], [0, qr/$IRI_REF/, 'IRI_REF'], [0, qr/$PNAME_NS/, 'PNAME_NS'], [0, qr/$PNAME_LN/, 'PNAME_LN'], [0, qr/$BLANK_NODE_LABEL/, 'BLANK_NODE_LABEL'], [0, qr/$VAR1/, 'VAR1'], [0, qr/$VAR2/, 'VAR2'], [0, qr/$LANGTAG/, 'LANGTAG'], [0, qr/$INTEGER/, 'INTEGER'], [0, qr/$DECIMAL/, 'DECIMAL'], [0, qr/$DOUBLE/, 'DOUBLE'], [0, qr/$INTEGER_POSITIVE/, 'INTEGER_POSITIVE'], [0, qr/$DECIMAL_POSITIVE/, 'DECIMAL_POSITIVE'], [0, qr/$DOUBLE_POSITIVE/, 'DOUBLE_POSITIVE'], [0, qr/$INTEGER_NEGATIVE/, 'INTEGER_NEGATIVE'], [0, qr/$DECIMAL_NEGATIVE/, 'DECIMAL_NEGATIVE'], [0, qr/$DOUBLE_NEGATIVE/, 'DOUBLE_NEGATIVE'], [0, qr/$STRING_LITERAL1/, 'STRING_LITERAL1'], [0, qr/$STRING_LITERAL2/, 'STRING_LITERAL2'], [0, qr/$STRING_LITERAL_LONG1/, 'STRING_LITERAL_LONG1'], [0, qr/$STRING_LITERAL_LONG2/, 'STRING_LITERAL_LONG2'], [0, qr/$NIL/, 'NIL'], [0, qr/$ANON/, 'ANON']]; # END TokenBlock # START ClassBlock @Query::ISA = qw(_Production); @_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C::ISA = qw(_GenProduction); @Prologue::ISA = qw(_Production); @_QBaseDecl_E_Opt::ISA = qw(_GenProduction); @_QPrefixDecl_E_Star::ISA = qw(_GenProduction); @BaseDecl::ISA = qw(_Production); @PrefixDecl::ISA = qw(_Production); @SelectQuery::ISA = qw(_Production); @_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C::ISA = qw(_GenProduction); @_Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt::ISA = qw(_GenProduction); @_QVar_E_Plus::ISA = qw(_GenProduction); @_O_QVar_E_Plus_Or_QGT_TIMES_E_C::ISA = qw(_GenProduction); @_QDatasetClause_E_Star::ISA = qw(_GenProduction); @ConstructQuery::ISA = qw(_Production); @DescribeQuery::ISA = qw(_Production); @_QVarOrIRIref_E_Plus::ISA = qw(_GenProduction); @_O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C::ISA = qw(_GenProduction); @_QWhereClause_E_Opt::ISA = qw(_GenProduction); @AskQuery::ISA = qw(_Production); @DatasetClause::ISA = qw(_Production); @_O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C::ISA = qw(_GenProduction); @DefaultGraphClause::ISA = qw(_Production); @NamedGraphClause::ISA = qw(_Production); @SourceSelector::ISA = qw(_Production); @WhereClause::ISA = qw(_Production); @_QIT_WHERE_E_Opt::ISA = qw(_GenProduction); @SolutionModifier::ISA = qw(_Production); @_QOrderClause_E_Opt::ISA = qw(_GenProduction); @_QLimitOffsetClauses_E_Opt::ISA = qw(_GenProduction); @LimitOffsetClauses::ISA = qw(_Production); @_QOffsetClause_E_Opt::ISA = qw(_GenProduction); @_QLimitClause_E_Opt::ISA = qw(_GenProduction); @_O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C::ISA = qw(_GenProduction); @OrderClause::ISA = qw(_Production); @_QOrderCondition_E_Plus::ISA = qw(_GenProduction); @OrderCondition::ISA = qw(_Production); @_O_QIT_ASC_E_Or_QIT_DESC_E_C::ISA = qw(_GenProduction); @_O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C::ISA = qw(_GenProduction); @_O_QConstraint_E_Or_QVar_E_C::ISA = qw(_GenProduction); @LimitClause::ISA = qw(_Production); @OffsetClause::ISA = qw(_Production); @GroupGraphPattern::ISA = qw(_Production); @_QTriplesBlock_E_Opt::ISA = qw(_GenProduction); @_O_QGraphPatternNotTriples_E_Or_QFilter_E_C::ISA = qw(_GenProduction); @_QGT_DOT_E_Opt::ISA = qw(_GenProduction); @_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C::ISA = qw(_GenProduction); @_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star::ISA = qw(_GenProduction); @TriplesBlock::ISA = qw(_Production); @_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C::ISA = qw(_GenProduction); @_Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt::ISA = qw(_GenProduction); @GraphPatternNotTriples::ISA = qw(_Production); @OptionalGraphPattern::ISA = qw(_Production); @GraphGraphPattern::ISA = qw(_Production); @GroupOrUnionGraphPattern::ISA = qw(_Production); @_O_QIT_UNION_E_S_QGroupGraphPattern_E_C::ISA = qw(_GenProduction); @_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star::ISA = qw(_GenProduction); @Filter::ISA = qw(_Production); @Constraint::ISA = qw(_Production); @FunctionCall::ISA = qw(_Production); @ArgList::ISA = qw(_Production); @_O_QGT_COMMA_E_S_QExpression_E_C::ISA = qw(_GenProduction); @_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star::ISA = qw(_GenProduction); @_O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C::ISA = qw(_GenProduction); @ConstructTemplate::ISA = qw(_Production); @_QConstructTriples_E_Opt::ISA = qw(_GenProduction); @ConstructTriples::ISA = qw(_Production); @_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C::ISA = qw(_GenProduction); @_Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt::ISA = qw(_GenProduction); @TriplesSameSubject::ISA = qw(_Production); @PropertyListNotEmpty::ISA = qw(_Production); @_O_QVerb_E_S_QObjectList_E_C::ISA = qw(_GenProduction); @_Q_O_QVerb_E_S_QObjectList_E_C_E_Opt::ISA = qw(_GenProduction); @_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C::ISA = qw(_GenProduction); @_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star::ISA = qw(_GenProduction); @PropertyList::ISA = qw(_Production); @_QPropertyListNotEmpty_E_Opt::ISA = qw(_GenProduction); @ObjectList::ISA = qw(_Production); @_O_QGT_COMMA_E_S_QObject_E_C::ISA = qw(_GenProduction); @_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star::ISA = qw(_GenProduction); @Object::ISA = qw(_Production); @Verb::ISA = qw(_Production); @TriplesNode::ISA = qw(_Production); @BlankNodePropertyList::ISA = qw(_Production); @Collection::ISA = qw(_Production); @_QGraphNode_E_Plus::ISA = qw(_GenProduction); @GraphNode::ISA = qw(_Production); @VarOrTerm::ISA = qw(_Production); @VarOrIRIref::ISA = qw(_Production); @Var::ISA = qw(_Production); @GraphTerm::ISA = qw(_Production); @Expression::ISA = qw(_Production); @ConditionalOrExpression::ISA = qw(_Production); @_O_QGT_OR_E_S_QConditionalAndExpression_E_C::ISA = qw(_GenProduction); @_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star::ISA = qw(_GenProduction); @ConditionalAndExpression::ISA = qw(_Production); @_O_QGT_AND_E_S_QValueLogical_E_C::ISA = qw(_GenProduction); @_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star::ISA = qw(_GenProduction); @ValueLogical::ISA = qw(_Production); @RelationalExpression::ISA = qw(_Production); @_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C::ISA = qw(_GenProduction); @_Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt::ISA = qw(_GenProduction); @NumericExpression::ISA = qw(_Production); @AdditiveExpression::ISA = qw(_Production); @_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C::ISA = qw(_GenProduction); @_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star::ISA = qw(_GenProduction); @MultiplicativeExpression::ISA = qw(_Production); @_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C::ISA = qw(_GenProduction); @_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star::ISA = qw(_GenProduction); @UnaryExpression::ISA = qw(_Production); @PrimaryExpression::ISA = qw(_Production); @BrackettedExpression::ISA = qw(_Production); @BuiltInCall::ISA = qw(_Production); @RegexExpression::ISA = qw(_Production); @_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt::ISA = qw(_GenProduction); @IRIrefOrFunction::ISA = qw(_Production); @_QArgList_E_Opt::ISA = qw(_GenProduction); @RDFLiteral::ISA = qw(_Production); @_O_QGT_DTYPE_E_S_QIRIref_E_C::ISA = qw(_GenProduction); @_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C::ISA = qw(_GenProduction); @_Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt::ISA = qw(_GenProduction); @NumericLiteral::ISA = qw(_Production); @NumericLiteralUnsigned::ISA = qw(_Production); @NumericLiteralPositive::ISA = qw(_Production); @NumericLiteralNegative::ISA = qw(_Production); @BooleanLiteral::ISA = qw(_Production); @String::ISA = qw(_Production); @IRIref::ISA = qw(_Production); @PrefixedName::ISA = qw(_Production); @BlankNode::ISA = qw(_Production); @IT_BASE::ISA = qw(_Constant); @IT_PREFIX::ISA = qw(_Constant); @IT_SELECT::ISA = qw(_Constant); @IT_DISTINCT::ISA = qw(_Constant); @IT_REDUCED::ISA = qw(_Constant); @GT_TIMES::ISA = qw(_Constant); @IT_CONSTRUCT::ISA = qw(_Constant); @IT_DESCRIBE::ISA = qw(_Constant); @IT_ASK::ISA = qw(_Constant); @IT_FROM::ISA = qw(_Constant); @IT_NAMED::ISA = qw(_Constant); @IT_WHERE::ISA = qw(_Constant); @IT_ORDER::ISA = qw(_Constant); @IT_BY::ISA = qw(_Constant); @IT_ASC::ISA = qw(_Constant); @IT_DESC::ISA = qw(_Constant); @IT_LIMIT::ISA = qw(_Constant); @IT_OFFSET::ISA = qw(_Constant); @GT_LCURLEY::ISA = qw(_Constant); @GT_RCURLEY::ISA = qw(_Constant); @GT_DOT::ISA = qw(_Constant); @IT_OPTIONAL::ISA = qw(_Constant); @IT_GRAPH::ISA = qw(_Constant); @IT_UNION::ISA = qw(_Constant); @IT_FILTER::ISA = qw(_Constant); @GT_COMMA::ISA = qw(_Constant); @GT_LPAREN::ISA = qw(_Constant); @GT_RPAREN::ISA = qw(_Constant); @GT_SEMI::ISA = qw(_Constant); @IT_a::ISA = qw(_Constant); @GT_LBRACKET::ISA = qw(_Constant); @GT_RBRACKET::ISA = qw(_Constant); @GT_OR::ISA = qw(_Constant); @GT_AND::ISA = qw(_Constant); @GT_EQUAL::ISA = qw(_Constant); @GT_NEQUAL::ISA = qw(_Constant); @GT_LT::ISA = qw(_Constant); @GT_GT::ISA = qw(_Constant); @GT_LE::ISA = qw(_Constant); @GT_GE::ISA = qw(_Constant); @GT_PLUS::ISA = qw(_Constant); @GT_MINUS::ISA = qw(_Constant); @GT_DIVIDE::ISA = qw(_Constant); @GT_NOT::ISA = qw(_Constant); @IT_STR::ISA = qw(_Constant); @IT_LANG::ISA = qw(_Constant); @IT_LANGMATCHES::ISA = qw(_Constant); @IT_DATATYPE::ISA = qw(_Constant); @IT_BOUND::ISA = qw(_Constant); @IT_sameTerm::ISA = qw(_Constant); @IT_isIRI::ISA = qw(_Constant); @IT_isURI::ISA = qw(_Constant); @IT_isBLANK::ISA = qw(_Constant); @IT_isLITERAL::ISA = qw(_Constant); @IT_REGEX::ISA = qw(_Constant); @GT_DTYPE::ISA = qw(_Constant); @IT_true::ISA = qw(_Constant); @IT_false::ISA = qw(_Constant); @IRI_REF::ISA = qw(_Terminal); @PNAME_NS::ISA = qw(_Terminal); @PNAME_LN::ISA = qw(_Terminal); @BLANK_NODE_LABEL::ISA = qw(_Terminal); @VAR1::ISA = qw(_Terminal); @VAR2::ISA = qw(_Terminal); @LANGTAG::ISA = qw(_Terminal); @INTEGER::ISA = qw(_Terminal); @DECIMAL::ISA = qw(_Terminal); @DOUBLE::ISA = qw(_Terminal); @INTEGER_POSITIVE::ISA = qw(_Terminal); @DECIMAL_POSITIVE::ISA = qw(_Terminal); @DOUBLE_POSITIVE::ISA = qw(_Terminal); @INTEGER_NEGATIVE::ISA = qw(_Terminal); @DECIMAL_NEGATIVE::ISA = qw(_Terminal); @DOUBLE_NEGATIVE::ISA = qw(_Terminal); @STRING_LITERAL1::ISA = qw(_Terminal); @STRING_LITERAL2::ISA = qw(_Terminal); @STRING_LITERAL_LONG1::ISA = qw(_Terminal); @STRING_LITERAL_LONG2::ISA = qw(_Terminal); @NIL::ISA = qw(_Terminal); @ANON::ISA = qw(_Terminal); # END ClassBlock %} %% Query: Prologue _O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C { my ($self, $Prologue, $_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C) = @_; my $ret = new Query($Prologue, $_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C); $self->traceProduction('Query', 'Prologue', $Prologue, '_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C', $_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C); return $ret; }; _O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C: SelectQuery { my ($self, $SelectQuery) = @_; my $ret = new _O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C($SelectQuery); $self->traceProduction('_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C', 'SelectQuery', $SelectQuery); return $ret; } | ConstructQuery { my ($self, $ConstructQuery) = @_; my $ret = new _O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C($ConstructQuery); $self->traceProduction('_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C', 'ConstructQuery', $ConstructQuery); return $ret; } | DescribeQuery { my ($self, $DescribeQuery) = @_; my $ret = new _O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C($DescribeQuery); $self->traceProduction('_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C', 'DescribeQuery', $DescribeQuery); return $ret; } | AskQuery { my ($self, $AskQuery) = @_; my $ret = new _O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C($AskQuery); $self->traceProduction('_O_QSelectQuery_E_Or_QConstructQuery_E_Or_QDescribeQuery_E_Or_QAskQuery_E_C', 'AskQuery', $AskQuery); return $ret; }; Prologue: _QBaseDecl_E_Opt _QPrefixDecl_E_Star { my ($self, $_QBaseDecl_E_Opt, $_QPrefixDecl_E_Star) = @_; my $ret = new Prologue($_QBaseDecl_E_Opt, $_QPrefixDecl_E_Star); $self->traceProduction('Prologue', '_QBaseDecl_E_Opt', $_QBaseDecl_E_Opt, '_QPrefixDecl_E_Star', $_QPrefixDecl_E_Star); return $ret; }; _QBaseDecl_E_Opt: { my ($self, ) = @_; my $ret = new _QBaseDecl_E_Opt(); $self->traceProduction('_QBaseDecl_E_Opt'); return $ret; } | BaseDecl { my ($self, $BaseDecl) = @_; my $ret = new _QBaseDecl_E_Opt($BaseDecl); $self->traceProduction('_QBaseDecl_E_Opt', 'BaseDecl', $BaseDecl); return $ret; }; _QPrefixDecl_E_Star: { my ($self, ) = @_; my $ret = new _QPrefixDecl_E_Star(); $self->traceProduction('_QPrefixDecl_E_Star'); return $ret; } | _QPrefixDecl_E_Star PrefixDecl { my ($self, $_QPrefixDecl_E_Star, $PrefixDecl) = @_; my $ret = new _QPrefixDecl_E_Star($_QPrefixDecl_E_Star, $PrefixDecl); $self->traceProduction('_QPrefixDecl_E_Star', '_QPrefixDecl_E_Star', $_QPrefixDecl_E_Star, 'PrefixDecl', $PrefixDecl); return $ret; }; BaseDecl: IT_BASE IRI_REF { my ($self, $IT_BASE, $IRI_REF) = @_; my $ret = new BaseDecl($IT_BASE, $IRI_REF); $self->traceProduction('BaseDecl', 'IT_BASE', $IT_BASE, 'IRI_REF', $IRI_REF); return $ret; }; PrefixDecl: IT_PREFIX PNAME_NS IRI_REF { my ($self, $IT_PREFIX, $PNAME_NS, $IRI_REF) = @_; my $ret = new PrefixDecl($IT_PREFIX, $PNAME_NS, $IRI_REF); $self->traceProduction('PrefixDecl', 'IT_PREFIX', $IT_PREFIX, 'PNAME_NS', $PNAME_NS, 'IRI_REF', $IRI_REF); return $ret; }; SelectQuery: IT_SELECT _Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt _O_QVar_E_Plus_Or_QGT_TIMES_E_C _QDatasetClause_E_Star WhereClause SolutionModifier { my ($self, $IT_SELECT, $_Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt, $_O_QVar_E_Plus_Or_QGT_TIMES_E_C, $_QDatasetClause_E_Star, $WhereClause, $SolutionModifier) = @_; my $ret = new SelectQuery($IT_SELECT, $_Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt, $_O_QVar_E_Plus_Or_QGT_TIMES_E_C, $_QDatasetClause_E_Star, $WhereClause, $SolutionModifier); $self->traceProduction('SelectQuery', 'IT_SELECT', $IT_SELECT, '_Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt', $_Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt, '_O_QVar_E_Plus_Or_QGT_TIMES_E_C', $_O_QVar_E_Plus_Or_QGT_TIMES_E_C, '_QDatasetClause_E_Star', $_QDatasetClause_E_Star, 'WhereClause', $WhereClause, 'SolutionModifier', $SolutionModifier); return $ret; }; _O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C: IT_DISTINCT { my ($self, $IT_DISTINCT) = @_; my $ret = new _O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C($IT_DISTINCT); $self->traceProduction('_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C', 'IT_DISTINCT', $IT_DISTINCT); return $ret; } | IT_REDUCED { my ($self, $IT_REDUCED) = @_; my $ret = new _O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C($IT_REDUCED); $self->traceProduction('_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C', 'IT_REDUCED', $IT_REDUCED); return $ret; }; _Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt: { my ($self, ) = @_; my $ret = new _Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt(); $self->traceProduction('_Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt'); return $ret; } | _O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C { my ($self, $_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C) = @_; my $ret = new _Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt($_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C); $self->traceProduction('_Q_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C_E_Opt', '_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C', $_O_QIT_DISTINCT_E_Or_QIT_REDUCED_E_C); return $ret; }; _QVar_E_Plus: Var { my ($self, $Var) = @_; my $ret = new _QVar_E_Plus($Var); $self->traceProduction('_QVar_E_Plus', 'Var', $Var); return $ret; } | _QVar_E_Plus Var { my ($self, $_QVar_E_Plus, $Var) = @_; my $ret = new _QVar_E_Plus($_QVar_E_Plus, $Var); $self->traceProduction('_QVar_E_Plus', '_QVar_E_Plus', $_QVar_E_Plus, 'Var', $Var); return $ret; }; _O_QVar_E_Plus_Or_QGT_TIMES_E_C: _QVar_E_Plus { my ($self, $_QVar_E_Plus) = @_; my $ret = new _O_QVar_E_Plus_Or_QGT_TIMES_E_C($_QVar_E_Plus); $self->traceProduction('_O_QVar_E_Plus_Or_QGT_TIMES_E_C', '_QVar_E_Plus', $_QVar_E_Plus); return $ret; } | GT_TIMES { my ($self, $GT_TIMES) = @_; my $ret = new _O_QVar_E_Plus_Or_QGT_TIMES_E_C($GT_TIMES); $self->traceProduction('_O_QVar_E_Plus_Or_QGT_TIMES_E_C', 'GT_TIMES', $GT_TIMES); return $ret; }; _QDatasetClause_E_Star: { my ($self, ) = @_; my $ret = new _QDatasetClause_E_Star(); $self->traceProduction('_QDatasetClause_E_Star'); return $ret; } | _QDatasetClause_E_Star DatasetClause { my ($self, $_QDatasetClause_E_Star, $DatasetClause) = @_; my $ret = new _QDatasetClause_E_Star($_QDatasetClause_E_Star, $DatasetClause); $self->traceProduction('_QDatasetClause_E_Star', '_QDatasetClause_E_Star', $_QDatasetClause_E_Star, 'DatasetClause', $DatasetClause); return $ret; }; ConstructQuery: IT_CONSTRUCT ConstructTemplate _QDatasetClause_E_Star WhereClause SolutionModifier { my ($self, $IT_CONSTRUCT, $ConstructTemplate, $_QDatasetClause_E_Star, $WhereClause, $SolutionModifier) = @_; my $ret = new ConstructQuery($IT_CONSTRUCT, $ConstructTemplate, $_QDatasetClause_E_Star, $WhereClause, $SolutionModifier); $self->traceProduction('ConstructQuery', 'IT_CONSTRUCT', $IT_CONSTRUCT, 'ConstructTemplate', $ConstructTemplate, '_QDatasetClause_E_Star', $_QDatasetClause_E_Star, 'WhereClause', $WhereClause, 'SolutionModifier', $SolutionModifier); return $ret; }; DescribeQuery: IT_DESCRIBE _O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C _QDatasetClause_E_Star _QWhereClause_E_Opt SolutionModifier { my ($self, $IT_DESCRIBE, $_O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C, $_QDatasetClause_E_Star, $_QWhereClause_E_Opt, $SolutionModifier) = @_; my $ret = new DescribeQuery($IT_DESCRIBE, $_O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C, $_QDatasetClause_E_Star, $_QWhereClause_E_Opt, $SolutionModifier); $self->traceProduction('DescribeQuery', 'IT_DESCRIBE', $IT_DESCRIBE, '_O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C', $_O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C, '_QDatasetClause_E_Star', $_QDatasetClause_E_Star, '_QWhereClause_E_Opt', $_QWhereClause_E_Opt, 'SolutionModifier', $SolutionModifier); return $ret; }; _QVarOrIRIref_E_Plus: VarOrIRIref { my ($self, $VarOrIRIref) = @_; my $ret = new _QVarOrIRIref_E_Plus($VarOrIRIref); $self->traceProduction('_QVarOrIRIref_E_Plus', 'VarOrIRIref', $VarOrIRIref); return $ret; } | _QVarOrIRIref_E_Plus VarOrIRIref { my ($self, $_QVarOrIRIref_E_Plus, $VarOrIRIref) = @_; my $ret = new _QVarOrIRIref_E_Plus($_QVarOrIRIref_E_Plus, $VarOrIRIref); $self->traceProduction('_QVarOrIRIref_E_Plus', '_QVarOrIRIref_E_Plus', $_QVarOrIRIref_E_Plus, 'VarOrIRIref', $VarOrIRIref); return $ret; }; _O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C: _QVarOrIRIref_E_Plus { my ($self, $_QVarOrIRIref_E_Plus) = @_; my $ret = new _O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C($_QVarOrIRIref_E_Plus); $self->traceProduction('_O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C', '_QVarOrIRIref_E_Plus', $_QVarOrIRIref_E_Plus); return $ret; } | GT_TIMES { my ($self, $GT_TIMES) = @_; my $ret = new _O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C($GT_TIMES); $self->traceProduction('_O_QVarOrIRIref_E_Plus_Or_QGT_TIMES_E_C', 'GT_TIMES', $GT_TIMES); return $ret; }; _QWhereClause_E_Opt: { my ($self, ) = @_; my $ret = new _QWhereClause_E_Opt(); $self->traceProduction('_QWhereClause_E_Opt'); return $ret; } | WhereClause { my ($self, $WhereClause) = @_; my $ret = new _QWhereClause_E_Opt($WhereClause); $self->traceProduction('_QWhereClause_E_Opt', 'WhereClause', $WhereClause); return $ret; }; AskQuery: IT_ASK _QDatasetClause_E_Star WhereClause { my ($self, $IT_ASK, $_QDatasetClause_E_Star, $WhereClause) = @_; my $ret = new AskQuery($IT_ASK, $_QDatasetClause_E_Star, $WhereClause); $self->traceProduction('AskQuery', 'IT_ASK', $IT_ASK, '_QDatasetClause_E_Star', $_QDatasetClause_E_Star, 'WhereClause', $WhereClause); return $ret; }; DatasetClause: IT_FROM _O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C { my ($self, $IT_FROM, $_O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C) = @_; my $ret = new DatasetClause($IT_FROM, $_O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C); $self->traceProduction('DatasetClause', 'IT_FROM', $IT_FROM, '_O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C', $_O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C); return $ret; }; _O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C: DefaultGraphClause { my ($self, $DefaultGraphClause) = @_; my $ret = new _O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C($DefaultGraphClause); $self->traceProduction('_O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C', 'DefaultGraphClause', $DefaultGraphClause); return $ret; } | NamedGraphClause { my ($self, $NamedGraphClause) = @_; my $ret = new _O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C($NamedGraphClause); $self->traceProduction('_O_QDefaultGraphClause_E_Or_QNamedGraphClause_E_C', 'NamedGraphClause', $NamedGraphClause); return $ret; }; DefaultGraphClause: SourceSelector { my ($self, $SourceSelector) = @_; my $ret = new DefaultGraphClause($SourceSelector); $self->traceProduction('DefaultGraphClause', 'SourceSelector', $SourceSelector); return $ret; }; NamedGraphClause: IT_NAMED SourceSelector { my ($self, $IT_NAMED, $SourceSelector) = @_; my $ret = new NamedGraphClause($IT_NAMED, $SourceSelector); $self->traceProduction('NamedGraphClause', 'IT_NAMED', $IT_NAMED, 'SourceSelector', $SourceSelector); return $ret; }; SourceSelector: IRIref { my ($self, $IRIref) = @_; my $ret = new SourceSelector($IRIref); $self->traceProduction('SourceSelector', 'IRIref', $IRIref); return $ret; }; WhereClause: _QIT_WHERE_E_Opt GroupGraphPattern { my ($self, $_QIT_WHERE_E_Opt, $GroupGraphPattern) = @_; my $ret = new WhereClause($_QIT_WHERE_E_Opt, $GroupGraphPattern); $self->traceProduction('WhereClause', '_QIT_WHERE_E_Opt', $_QIT_WHERE_E_Opt, 'GroupGraphPattern', $GroupGraphPattern); return $ret; }; _QIT_WHERE_E_Opt: { my ($self, ) = @_; my $ret = new _QIT_WHERE_E_Opt(); $self->traceProduction('_QIT_WHERE_E_Opt'); return $ret; } | IT_WHERE { my ($self, $IT_WHERE) = @_; my $ret = new _QIT_WHERE_E_Opt($IT_WHERE); $self->traceProduction('_QIT_WHERE_E_Opt', 'IT_WHERE', $IT_WHERE); return $ret; }; SolutionModifier: _QOrderClause_E_Opt _QLimitOffsetClauses_E_Opt { my ($self, $_QOrderClause_E_Opt, $_QLimitOffsetClauses_E_Opt) = @_; my $ret = new SolutionModifier($_QOrderClause_E_Opt, $_QLimitOffsetClauses_E_Opt); $self->traceProduction('SolutionModifier', '_QOrderClause_E_Opt', $_QOrderClause_E_Opt, '_QLimitOffsetClauses_E_Opt', $_QLimitOffsetClauses_E_Opt); return $ret; }; _QOrderClause_E_Opt: { my ($self, ) = @_; my $ret = new _QOrderClause_E_Opt(); $self->traceProduction('_QOrderClause_E_Opt'); return $ret; } | OrderClause { my ($self, $OrderClause) = @_; my $ret = new _QOrderClause_E_Opt($OrderClause); $self->traceProduction('_QOrderClause_E_Opt', 'OrderClause', $OrderClause); return $ret; }; _QLimitOffsetClauses_E_Opt: { my ($self, ) = @_; my $ret = new _QLimitOffsetClauses_E_Opt(); $self->traceProduction('_QLimitOffsetClauses_E_Opt'); return $ret; } | LimitOffsetClauses { my ($self, $LimitOffsetClauses) = @_; my $ret = new _QLimitOffsetClauses_E_Opt($LimitOffsetClauses); $self->traceProduction('_QLimitOffsetClauses_E_Opt', 'LimitOffsetClauses', $LimitOffsetClauses); return $ret; }; LimitOffsetClauses: _O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C { my ($self, $_O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C) = @_; my $ret = new LimitOffsetClauses($_O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C); $self->traceProduction('LimitOffsetClauses', '_O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C', $_O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C); return $ret; }; _QOffsetClause_E_Opt: { my ($self, ) = @_; my $ret = new _QOffsetClause_E_Opt(); $self->traceProduction('_QOffsetClause_E_Opt'); return $ret; } | OffsetClause { my ($self, $OffsetClause) = @_; my $ret = new _QOffsetClause_E_Opt($OffsetClause); $self->traceProduction('_QOffsetClause_E_Opt', 'OffsetClause', $OffsetClause); return $ret; }; _QLimitClause_E_Opt: { my ($self, ) = @_; my $ret = new _QLimitClause_E_Opt(); $self->traceProduction('_QLimitClause_E_Opt'); return $ret; } | LimitClause { my ($self, $LimitClause) = @_; my $ret = new _QLimitClause_E_Opt($LimitClause); $self->traceProduction('_QLimitClause_E_Opt', 'LimitClause', $LimitClause); return $ret; }; _O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C: LimitClause _QOffsetClause_E_Opt { my ($self, $LimitClause, $_QOffsetClause_E_Opt) = @_; my $ret = new _O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C($LimitClause, $_QOffsetClause_E_Opt); $self->traceProduction('_O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C', 'LimitClause', $LimitClause, '_QOffsetClause_E_Opt', $_QOffsetClause_E_Opt); return $ret; } | OffsetClause _QLimitClause_E_Opt { my ($self, $OffsetClause, $_QLimitClause_E_Opt) = @_; my $ret = new _O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C($OffsetClause, $_QLimitClause_E_Opt); $self->traceProduction('_O_QLimitClause_E_S_QOffsetClause_E_Opt_Or_QOffsetClause_E_S_QLimitClause_E_Opt_C', 'OffsetClause', $OffsetClause, '_QLimitClause_E_Opt', $_QLimitClause_E_Opt); return $ret; }; OrderClause: IT_ORDER IT_BY _QOrderCondition_E_Plus { my ($self, $IT_ORDER, $IT_BY, $_QOrderCondition_E_Plus) = @_; my $ret = new OrderClause($IT_ORDER, $IT_BY, $_QOrderCondition_E_Plus); $self->traceProduction('OrderClause', 'IT_ORDER', $IT_ORDER, 'IT_BY', $IT_BY, '_QOrderCondition_E_Plus', $_QOrderCondition_E_Plus); return $ret; }; _QOrderCondition_E_Plus: OrderCondition { my ($self, $OrderCondition) = @_; my $ret = new _QOrderCondition_E_Plus($OrderCondition); $self->traceProduction('_QOrderCondition_E_Plus', 'OrderCondition', $OrderCondition); return $ret; } | _QOrderCondition_E_Plus OrderCondition { my ($self, $_QOrderCondition_E_Plus, $OrderCondition) = @_; my $ret = new _QOrderCondition_E_Plus($_QOrderCondition_E_Plus, $OrderCondition); $self->traceProduction('_QOrderCondition_E_Plus', '_QOrderCondition_E_Plus', $_QOrderCondition_E_Plus, 'OrderCondition', $OrderCondition); return $ret; }; OrderCondition: _O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C { my ($self, $_O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C) = @_; my $ret = new OrderCondition($_O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C); $self->traceProduction('OrderCondition', '_O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C', $_O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C); return $ret; } | _O_QConstraint_E_Or_QVar_E_C { my ($self, $_O_QConstraint_E_Or_QVar_E_C) = @_; my $ret = new OrderCondition($_O_QConstraint_E_Or_QVar_E_C); $self->traceProduction('OrderCondition', '_O_QConstraint_E_Or_QVar_E_C', $_O_QConstraint_E_Or_QVar_E_C); return $ret; }; _O_QIT_ASC_E_Or_QIT_DESC_E_C: IT_ASC { my ($self, $IT_ASC) = @_; my $ret = new _O_QIT_ASC_E_Or_QIT_DESC_E_C($IT_ASC); $self->traceProduction('_O_QIT_ASC_E_Or_QIT_DESC_E_C', 'IT_ASC', $IT_ASC); return $ret; } | IT_DESC { my ($self, $IT_DESC) = @_; my $ret = new _O_QIT_ASC_E_Or_QIT_DESC_E_C($IT_DESC); $self->traceProduction('_O_QIT_ASC_E_Or_QIT_DESC_E_C', 'IT_DESC', $IT_DESC); return $ret; }; _O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C: _O_QIT_ASC_E_Or_QIT_DESC_E_C BrackettedExpression { my ($self, $_O_QIT_ASC_E_Or_QIT_DESC_E_C, $BrackettedExpression) = @_; my $ret = new _O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C($_O_QIT_ASC_E_Or_QIT_DESC_E_C, $BrackettedExpression); $self->traceProduction('_O_QIT_ASC_E_Or_QIT_DESC_E_S_QBrackettedExpression_E_C', '_O_QIT_ASC_E_Or_QIT_DESC_E_C', $_O_QIT_ASC_E_Or_QIT_DESC_E_C, 'BrackettedExpression', $BrackettedExpression); return $ret; }; _O_QConstraint_E_Or_QVar_E_C: Constraint { my ($self, $Constraint) = @_; my $ret = new _O_QConstraint_E_Or_QVar_E_C($Constraint); $self->traceProduction('_O_QConstraint_E_Or_QVar_E_C', 'Constraint', $Constraint); return $ret; } | Var { my ($self, $Var) = @_; my $ret = new _O_QConstraint_E_Or_QVar_E_C($Var); $self->traceProduction('_O_QConstraint_E_Or_QVar_E_C', 'Var', $Var); return $ret; }; LimitClause: IT_LIMIT INTEGER { my ($self, $IT_LIMIT, $INTEGER) = @_; my $ret = new LimitClause($IT_LIMIT, $INTEGER); $self->traceProduction('LimitClause', 'IT_LIMIT', $IT_LIMIT, 'INTEGER', $INTEGER); return $ret; }; OffsetClause: IT_OFFSET INTEGER { my ($self, $IT_OFFSET, $INTEGER) = @_; my $ret = new OffsetClause($IT_OFFSET, $INTEGER); $self->traceProduction('OffsetClause', 'IT_OFFSET', $IT_OFFSET, 'INTEGER', $INTEGER); return $ret; }; GroupGraphPattern: GT_LCURLEY _QTriplesBlock_E_Opt _Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star GT_RCURLEY { my ($self, $GT_LCURLEY, $_QTriplesBlock_E_Opt, $_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star, $GT_RCURLEY) = @_; my $ret = new GroupGraphPattern($GT_LCURLEY, $_QTriplesBlock_E_Opt, $_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star, $GT_RCURLEY); $self->traceProduction('GroupGraphPattern', 'GT_LCURLEY', $GT_LCURLEY, '_QTriplesBlock_E_Opt', $_QTriplesBlock_E_Opt, '_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star', $_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star, 'GT_RCURLEY', $GT_RCURLEY); return $ret; }; _QTriplesBlock_E_Opt: { my ($self, ) = @_; my $ret = new _QTriplesBlock_E_Opt(); $self->traceProduction('_QTriplesBlock_E_Opt'); return $ret; } | TriplesBlock { my ($self, $TriplesBlock) = @_; my $ret = new _QTriplesBlock_E_Opt($TriplesBlock); $self->traceProduction('_QTriplesBlock_E_Opt', 'TriplesBlock', $TriplesBlock); return $ret; }; _O_QGraphPatternNotTriples_E_Or_QFilter_E_C: GraphPatternNotTriples { my ($self, $GraphPatternNotTriples) = @_; my $ret = new _O_QGraphPatternNotTriples_E_Or_QFilter_E_C($GraphPatternNotTriples); $self->traceProduction('_O_QGraphPatternNotTriples_E_Or_QFilter_E_C', 'GraphPatternNotTriples', $GraphPatternNotTriples); return $ret; } | Filter { my ($self, $Filter) = @_; my $ret = new _O_QGraphPatternNotTriples_E_Or_QFilter_E_C($Filter); $self->traceProduction('_O_QGraphPatternNotTriples_E_Or_QFilter_E_C', 'Filter', $Filter); return $ret; }; _QGT_DOT_E_Opt: { my ($self, ) = @_; my $ret = new _QGT_DOT_E_Opt(); $self->traceProduction('_QGT_DOT_E_Opt'); return $ret; } | GT_DOT { my ($self, $GT_DOT) = @_; my $ret = new _QGT_DOT_E_Opt($GT_DOT); $self->traceProduction('_QGT_DOT_E_Opt', 'GT_DOT', $GT_DOT); return $ret; }; _O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C: _O_QGraphPatternNotTriples_E_Or_QFilter_E_C _QGT_DOT_E_Opt _QTriplesBlock_E_Opt { my ($self, $_O_QGraphPatternNotTriples_E_Or_QFilter_E_C, $_QGT_DOT_E_Opt, $_QTriplesBlock_E_Opt) = @_; my $ret = new _O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C($_O_QGraphPatternNotTriples_E_Or_QFilter_E_C, $_QGT_DOT_E_Opt, $_QTriplesBlock_E_Opt); $self->traceProduction('_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C', '_O_QGraphPatternNotTriples_E_Or_QFilter_E_C', $_O_QGraphPatternNotTriples_E_Or_QFilter_E_C, '_QGT_DOT_E_Opt', $_QGT_DOT_E_Opt, '_QTriplesBlock_E_Opt', $_QTriplesBlock_E_Opt); return $ret; }; _Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star(); $self->traceProduction('_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star'); return $ret; } | _Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star _O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C { my ($self, $_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star, $_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C) = @_; my $ret = new _Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star($_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star, $_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C); $self->traceProduction('_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star', '_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star', $_Q_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C_E_Star, '_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C', $_O_QGraphPatternNotTriples_E_Or_QFilter_E_S_QGT_DOT_E_Opt_S_QTriplesBlock_E_Opt_C); return $ret; }; TriplesBlock: TriplesSameSubject _Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt { my ($self, $TriplesSameSubject, $_Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt) = @_; my $ret = new TriplesBlock($TriplesSameSubject, $_Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt); $self->traceProduction('TriplesBlock', 'TriplesSameSubject', $TriplesSameSubject, '_Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt', $_Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt); return $ret; }; _O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C: GT_DOT _QTriplesBlock_E_Opt { my ($self, $GT_DOT, $_QTriplesBlock_E_Opt) = @_; my $ret = new _O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C($GT_DOT, $_QTriplesBlock_E_Opt); $self->traceProduction('_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C', 'GT_DOT', $GT_DOT, '_QTriplesBlock_E_Opt', $_QTriplesBlock_E_Opt); return $ret; }; _Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt: { my ($self, ) = @_; my $ret = new _Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt(); $self->traceProduction('_Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt'); return $ret; } | _O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C { my ($self, $_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C) = @_; my $ret = new _Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt($_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C); $self->traceProduction('_Q_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C_E_Opt', '_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C', $_O_QGT_DOT_E_S_QTriplesBlock_E_Opt_C); return $ret; }; GraphPatternNotTriples: OptionalGraphPattern { my ($self, $OptionalGraphPattern) = @_; my $ret = new GraphPatternNotTriples($OptionalGraphPattern); $self->traceProduction('GraphPatternNotTriples', 'OptionalGraphPattern', $OptionalGraphPattern); return $ret; } | GroupOrUnionGraphPattern { my ($self, $GroupOrUnionGraphPattern) = @_; my $ret = new GraphPatternNotTriples($GroupOrUnionGraphPattern); $self->traceProduction('GraphPatternNotTriples', 'GroupOrUnionGraphPattern', $GroupOrUnionGraphPattern); return $ret; } | GraphGraphPattern { my ($self, $GraphGraphPattern) = @_; my $ret = new GraphPatternNotTriples($GraphGraphPattern); $self->traceProduction('GraphPatternNotTriples', 'GraphGraphPattern', $GraphGraphPattern); return $ret; }; OptionalGraphPattern: IT_OPTIONAL GroupGraphPattern { my ($self, $IT_OPTIONAL, $GroupGraphPattern) = @_; my $ret = new OptionalGraphPattern($IT_OPTIONAL, $GroupGraphPattern); $self->traceProduction('OptionalGraphPattern', 'IT_OPTIONAL', $IT_OPTIONAL, 'GroupGraphPattern', $GroupGraphPattern); return $ret; }; GraphGraphPattern: IT_GRAPH VarOrIRIref GroupGraphPattern { my ($self, $IT_GRAPH, $VarOrIRIref, $GroupGraphPattern) = @_; my $ret = new GraphGraphPattern($IT_GRAPH, $VarOrIRIref, $GroupGraphPattern); $self->traceProduction('GraphGraphPattern', 'IT_GRAPH', $IT_GRAPH, 'VarOrIRIref', $VarOrIRIref, 'GroupGraphPattern', $GroupGraphPattern); return $ret; }; GroupOrUnionGraphPattern: GroupGraphPattern _Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star { my ($self, $GroupGraphPattern, $_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star) = @_; my $ret = new GroupOrUnionGraphPattern($GroupGraphPattern, $_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star); $self->traceProduction('GroupOrUnionGraphPattern', 'GroupGraphPattern', $GroupGraphPattern, '_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star', $_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star); return $ret; }; _O_QIT_UNION_E_S_QGroupGraphPattern_E_C: IT_UNION GroupGraphPattern { my ($self, $IT_UNION, $GroupGraphPattern) = @_; my $ret = new _O_QIT_UNION_E_S_QGroupGraphPattern_E_C($IT_UNION, $GroupGraphPattern); $self->traceProduction('_O_QIT_UNION_E_S_QGroupGraphPattern_E_C', 'IT_UNION', $IT_UNION, 'GroupGraphPattern', $GroupGraphPattern); return $ret; }; _Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star(); $self->traceProduction('_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star'); return $ret; } | _Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star _O_QIT_UNION_E_S_QGroupGraphPattern_E_C { my ($self, $_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star, $_O_QIT_UNION_E_S_QGroupGraphPattern_E_C) = @_; my $ret = new _Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star($_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star, $_O_QIT_UNION_E_S_QGroupGraphPattern_E_C); $self->traceProduction('_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star', '_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star', $_Q_O_QIT_UNION_E_S_QGroupGraphPattern_E_C_E_Star, '_O_QIT_UNION_E_S_QGroupGraphPattern_E_C', $_O_QIT_UNION_E_S_QGroupGraphPattern_E_C); return $ret; }; Filter: IT_FILTER Constraint { my ($self, $IT_FILTER, $Constraint) = @_; my $ret = new Filter($IT_FILTER, $Constraint); $self->traceProduction('Filter', 'IT_FILTER', $IT_FILTER, 'Constraint', $Constraint); return $ret; }; Constraint: BrackettedExpression { my ($self, $BrackettedExpression) = @_; my $ret = new Constraint($BrackettedExpression); $self->traceProduction('Constraint', 'BrackettedExpression', $BrackettedExpression); return $ret; } | BuiltInCall { my ($self, $BuiltInCall) = @_; my $ret = new Constraint($BuiltInCall); $self->traceProduction('Constraint', 'BuiltInCall', $BuiltInCall); return $ret; } | FunctionCall { my ($self, $FunctionCall) = @_; my $ret = new Constraint($FunctionCall); $self->traceProduction('Constraint', 'FunctionCall', $FunctionCall); return $ret; }; FunctionCall: IRIref ArgList { my ($self, $IRIref, $ArgList) = @_; my $ret = new FunctionCall($IRIref, $ArgList); $self->traceProduction('FunctionCall', 'IRIref', $IRIref, 'ArgList', $ArgList); return $ret; }; ArgList: _O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C { my ($self, $_O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C) = @_; my $ret = new ArgList($_O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C); $self->traceProduction('ArgList', '_O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C', $_O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C); return $ret; }; _O_QGT_COMMA_E_S_QExpression_E_C: GT_COMMA Expression { my ($self, $GT_COMMA, $Expression) = @_; my $ret = new _O_QGT_COMMA_E_S_QExpression_E_C($GT_COMMA, $Expression); $self->traceProduction('_O_QGT_COMMA_E_S_QExpression_E_C', 'GT_COMMA', $GT_COMMA, 'Expression', $Expression); return $ret; }; _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star(); $self->traceProduction('_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star'); return $ret; } | _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star _O_QGT_COMMA_E_S_QExpression_E_C { my ($self, $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star, $_O_QGT_COMMA_E_S_QExpression_E_C) = @_; my $ret = new _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star($_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star, $_O_QGT_COMMA_E_S_QExpression_E_C); $self->traceProduction('_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star', '_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star', $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star, '_O_QGT_COMMA_E_S_QExpression_E_C', $_O_QGT_COMMA_E_S_QExpression_E_C); return $ret; }; _O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C: NIL { my ($self, $NIL) = @_; my $ret = new _O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C($NIL); $self->traceProduction('_O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C', 'NIL', $NIL); return $ret; } | GT_LPAREN Expression _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star GT_RPAREN { my ($self, $GT_LPAREN, $Expression, $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star, $GT_RPAREN) = @_; my $ret = new _O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C($GT_LPAREN, $Expression, $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star, $GT_RPAREN); $self->traceProduction('_O_QNIL_E_Or_QGT_LPAREN_E_S_QExpression_E_S_QGT_COMMA_E_S_QExpression_E_Star_S_QGT_RPAREN_E_C', 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, '_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star', $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Star, 'GT_RPAREN', $GT_RPAREN); return $ret; }; ConstructTemplate: GT_LCURLEY _QConstructTriples_E_Opt GT_RCURLEY { my ($self, $GT_LCURLEY, $_QConstructTriples_E_Opt, $GT_RCURLEY) = @_; my $ret = new ConstructTemplate($GT_LCURLEY, $_QConstructTriples_E_Opt, $GT_RCURLEY); $self->traceProduction('ConstructTemplate', 'GT_LCURLEY', $GT_LCURLEY, '_QConstructTriples_E_Opt', $_QConstructTriples_E_Opt, 'GT_RCURLEY', $GT_RCURLEY); return $ret; }; _QConstructTriples_E_Opt: { my ($self, ) = @_; my $ret = new _QConstructTriples_E_Opt(); $self->traceProduction('_QConstructTriples_E_Opt'); return $ret; } | ConstructTriples { my ($self, $ConstructTriples) = @_; my $ret = new _QConstructTriples_E_Opt($ConstructTriples); $self->traceProduction('_QConstructTriples_E_Opt', 'ConstructTriples', $ConstructTriples); return $ret; }; ConstructTriples: TriplesSameSubject _Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt { my ($self, $TriplesSameSubject, $_Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt) = @_; my $ret = new ConstructTriples($TriplesSameSubject, $_Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt); $self->traceProduction('ConstructTriples', 'TriplesSameSubject', $TriplesSameSubject, '_Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt', $_Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt); return $ret; }; _O_QGT_DOT_E_S_QConstructTriples_E_Opt_C: GT_DOT _QConstructTriples_E_Opt { my ($self, $GT_DOT, $_QConstructTriples_E_Opt) = @_; my $ret = new _O_QGT_DOT_E_S_QConstructTriples_E_Opt_C($GT_DOT, $_QConstructTriples_E_Opt); $self->traceProduction('_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C', 'GT_DOT', $GT_DOT, '_QConstructTriples_E_Opt', $_QConstructTriples_E_Opt); return $ret; }; _Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt: { my ($self, ) = @_; my $ret = new _Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt(); $self->traceProduction('_Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt'); return $ret; } | _O_QGT_DOT_E_S_QConstructTriples_E_Opt_C { my ($self, $_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C) = @_; my $ret = new _Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt($_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C); $self->traceProduction('_Q_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C_E_Opt', '_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C', $_O_QGT_DOT_E_S_QConstructTriples_E_Opt_C); return $ret; }; TriplesSameSubject: VarOrTerm PropertyListNotEmpty { my ($self, $VarOrTerm, $PropertyListNotEmpty) = @_; my $ret = new TriplesSameSubject($VarOrTerm, $PropertyListNotEmpty); $self->traceProduction('TriplesSameSubject', 'VarOrTerm', $VarOrTerm, 'PropertyListNotEmpty', $PropertyListNotEmpty); return $ret; } | TriplesNode PropertyList { my ($self, $TriplesNode, $PropertyList) = @_; my $ret = new TriplesSameSubject($TriplesNode, $PropertyList); $self->traceProduction('TriplesSameSubject', 'TriplesNode', $TriplesNode, 'PropertyList', $PropertyList); return $ret; }; PropertyListNotEmpty: Verb ObjectList _Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star { my ($self, $Verb, $ObjectList, $_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star) = @_; my $ret = new PropertyListNotEmpty($Verb, $ObjectList, $_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star); $self->traceProduction('PropertyListNotEmpty', 'Verb', $Verb, 'ObjectList', $ObjectList, '_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star', $_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star); return $ret; }; _O_QVerb_E_S_QObjectList_E_C: Verb ObjectList { my ($self, $Verb, $ObjectList) = @_; my $ret = new _O_QVerb_E_S_QObjectList_E_C($Verb, $ObjectList); $self->traceProduction('_O_QVerb_E_S_QObjectList_E_C', 'Verb', $Verb, 'ObjectList', $ObjectList); return $ret; }; _Q_O_QVerb_E_S_QObjectList_E_C_E_Opt: { my ($self, ) = @_; my $ret = new _Q_O_QVerb_E_S_QObjectList_E_C_E_Opt(); $self->traceProduction('_Q_O_QVerb_E_S_QObjectList_E_C_E_Opt'); return $ret; } | _O_QVerb_E_S_QObjectList_E_C { my ($self, $_O_QVerb_E_S_QObjectList_E_C) = @_; my $ret = new _Q_O_QVerb_E_S_QObjectList_E_C_E_Opt($_O_QVerb_E_S_QObjectList_E_C); $self->traceProduction('_Q_O_QVerb_E_S_QObjectList_E_C_E_Opt', '_O_QVerb_E_S_QObjectList_E_C', $_O_QVerb_E_S_QObjectList_E_C); return $ret; }; _O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C: GT_SEMI _Q_O_QVerb_E_S_QObjectList_E_C_E_Opt { my ($self, $GT_SEMI, $_Q_O_QVerb_E_S_QObjectList_E_C_E_Opt) = @_; my $ret = new _O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C($GT_SEMI, $_Q_O_QVerb_E_S_QObjectList_E_C_E_Opt); $self->traceProduction('_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C', 'GT_SEMI', $GT_SEMI, '_Q_O_QVerb_E_S_QObjectList_E_C_E_Opt', $_Q_O_QVerb_E_S_QObjectList_E_C_E_Opt); return $ret; }; _Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star(); $self->traceProduction('_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star'); return $ret; } | _Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star _O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C { my ($self, $_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star, $_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C) = @_; my $ret = new _Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star($_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star, $_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C); $self->traceProduction('_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star', '_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star', $_Q_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C_E_Star, '_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C', $_O_QGT_SEMI_E_S_QVerb_E_S_QObjectList_E_Opt_C); return $ret; }; PropertyList: _QPropertyListNotEmpty_E_Opt { my ($self, $_QPropertyListNotEmpty_E_Opt) = @_; my $ret = new PropertyList($_QPropertyListNotEmpty_E_Opt); $self->traceProduction('PropertyList', '_QPropertyListNotEmpty_E_Opt', $_QPropertyListNotEmpty_E_Opt); return $ret; }; _QPropertyListNotEmpty_E_Opt: { my ($self, ) = @_; my $ret = new _QPropertyListNotEmpty_E_Opt(); $self->traceProduction('_QPropertyListNotEmpty_E_Opt'); return $ret; } | PropertyListNotEmpty { my ($self, $PropertyListNotEmpty) = @_; my $ret = new _QPropertyListNotEmpty_E_Opt($PropertyListNotEmpty); $self->traceProduction('_QPropertyListNotEmpty_E_Opt', 'PropertyListNotEmpty', $PropertyListNotEmpty); return $ret; }; ObjectList: Object _Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star { my ($self, $Object, $_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star) = @_; my $ret = new ObjectList($Object, $_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star); $self->traceProduction('ObjectList', 'Object', $Object, '_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star', $_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star); return $ret; }; _O_QGT_COMMA_E_S_QObject_E_C: GT_COMMA Object { my ($self, $GT_COMMA, $Object) = @_; my $ret = new _O_QGT_COMMA_E_S_QObject_E_C($GT_COMMA, $Object); $self->traceProduction('_O_QGT_COMMA_E_S_QObject_E_C', 'GT_COMMA', $GT_COMMA, 'Object', $Object); return $ret; }; _Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star(); $self->traceProduction('_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star'); return $ret; } | _Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star _O_QGT_COMMA_E_S_QObject_E_C { my ($self, $_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star, $_O_QGT_COMMA_E_S_QObject_E_C) = @_; my $ret = new _Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star($_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star, $_O_QGT_COMMA_E_S_QObject_E_C); $self->traceProduction('_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star', '_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star', $_Q_O_QGT_COMMA_E_S_QObject_E_C_E_Star, '_O_QGT_COMMA_E_S_QObject_E_C', $_O_QGT_COMMA_E_S_QObject_E_C); return $ret; }; Object: GraphNode { my ($self, $GraphNode) = @_; my $ret = new Object($GraphNode); $self->traceProduction('Object', 'GraphNode', $GraphNode); return $ret; }; Verb: VarOrIRIref { my ($self, $VarOrIRIref) = @_; my $ret = new Verb($VarOrIRIref); $self->traceProduction('Verb', 'VarOrIRIref', $VarOrIRIref); return $ret; } | IT_a { my ($self, $IT_a) = @_; my $ret = new Verb($IT_a); $self->traceProduction('Verb', 'IT_a', $IT_a); return $ret; }; TriplesNode: Collection { my ($self, $Collection) = @_; my $ret = new TriplesNode($Collection); $self->traceProduction('TriplesNode', 'Collection', $Collection); return $ret; } | BlankNodePropertyList { my ($self, $BlankNodePropertyList) = @_; my $ret = new TriplesNode($BlankNodePropertyList); $self->traceProduction('TriplesNode', 'BlankNodePropertyList', $BlankNodePropertyList); return $ret; }; BlankNodePropertyList: GT_LBRACKET PropertyListNotEmpty GT_RBRACKET { my ($self, $GT_LBRACKET, $PropertyListNotEmpty, $GT_RBRACKET) = @_; my $ret = new BlankNodePropertyList($GT_LBRACKET, $PropertyListNotEmpty, $GT_RBRACKET); $self->traceProduction('BlankNodePropertyList', 'GT_LBRACKET', $GT_LBRACKET, 'PropertyListNotEmpty', $PropertyListNotEmpty, 'GT_RBRACKET', $GT_RBRACKET); return $ret; }; Collection: GT_LPAREN _QGraphNode_E_Plus GT_RPAREN { my ($self, $GT_LPAREN, $_QGraphNode_E_Plus, $GT_RPAREN) = @_; my $ret = new Collection($GT_LPAREN, $_QGraphNode_E_Plus, $GT_RPAREN); $self->traceProduction('Collection', 'GT_LPAREN', $GT_LPAREN, '_QGraphNode_E_Plus', $_QGraphNode_E_Plus, 'GT_RPAREN', $GT_RPAREN); return $ret; }; _QGraphNode_E_Plus: GraphNode { my ($self, $GraphNode) = @_; my $ret = new _QGraphNode_E_Plus($GraphNode); $self->traceProduction('_QGraphNode_E_Plus', 'GraphNode', $GraphNode); return $ret; } | _QGraphNode_E_Plus GraphNode { my ($self, $_QGraphNode_E_Plus, $GraphNode) = @_; my $ret = new _QGraphNode_E_Plus($_QGraphNode_E_Plus, $GraphNode); $self->traceProduction('_QGraphNode_E_Plus', '_QGraphNode_E_Plus', $_QGraphNode_E_Plus, 'GraphNode', $GraphNode); return $ret; }; GraphNode: VarOrTerm { my ($self, $VarOrTerm) = @_; my $ret = new GraphNode($VarOrTerm); $self->traceProduction('GraphNode', 'VarOrTerm', $VarOrTerm); return $ret; } | TriplesNode { my ($self, $TriplesNode) = @_; my $ret = new GraphNode($TriplesNode); $self->traceProduction('GraphNode', 'TriplesNode', $TriplesNode); return $ret; }; VarOrTerm: Var { my ($self, $Var) = @_; my $ret = new VarOrTerm($Var); $self->traceProduction('VarOrTerm', 'Var', $Var); return $ret; } | GraphTerm { my ($self, $GraphTerm) = @_; my $ret = new VarOrTerm($GraphTerm); $self->traceProduction('VarOrTerm', 'GraphTerm', $GraphTerm); return $ret; }; VarOrIRIref: Var { my ($self, $Var) = @_; my $ret = new VarOrIRIref($Var); $self->traceProduction('VarOrIRIref', 'Var', $Var); return $ret; } | IRIref { my ($self, $IRIref) = @_; my $ret = new VarOrIRIref($IRIref); $self->traceProduction('VarOrIRIref', 'IRIref', $IRIref); return $ret; }; Var: VAR1 { my ($self, $VAR1) = @_; my $ret = new Var($VAR1); $self->traceProduction('Var', 'VAR1', $VAR1); return $ret; } | VAR2 { my ($self, $VAR2) = @_; my $ret = new Var($VAR2); $self->traceProduction('Var', 'VAR2', $VAR2); return $ret; }; GraphTerm: IRIref { my ($self, $IRIref) = @_; my $ret = new GraphTerm($IRIref); $self->traceProduction('GraphTerm', 'IRIref', $IRIref); return $ret; } | RDFLiteral { my ($self, $RDFLiteral) = @_; my $ret = new GraphTerm($RDFLiteral); $self->traceProduction('GraphTerm', 'RDFLiteral', $RDFLiteral); return $ret; } | NumericLiteral { my ($self, $NumericLiteral) = @_; my $ret = new GraphTerm($NumericLiteral); $self->traceProduction('GraphTerm', 'NumericLiteral', $NumericLiteral); return $ret; } | BooleanLiteral { my ($self, $BooleanLiteral) = @_; my $ret = new GraphTerm($BooleanLiteral); $self->traceProduction('GraphTerm', 'BooleanLiteral', $BooleanLiteral); return $ret; } | BlankNode { my ($self, $BlankNode) = @_; my $ret = new GraphTerm($BlankNode); $self->traceProduction('GraphTerm', 'BlankNode', $BlankNode); return $ret; } | NIL { my ($self, $NIL) = @_; my $ret = new GraphTerm($NIL); $self->traceProduction('GraphTerm', 'NIL', $NIL); return $ret; }; Expression: ConditionalOrExpression { my ($self, $ConditionalOrExpression) = @_; my $ret = new Expression($ConditionalOrExpression); $self->traceProduction('Expression', 'ConditionalOrExpression', $ConditionalOrExpression); return $ret; }; ConditionalOrExpression: ConditionalAndExpression _Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star { my ($self, $ConditionalAndExpression, $_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star) = @_; my $ret = new ConditionalOrExpression($ConditionalAndExpression, $_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star); $self->traceProduction('ConditionalOrExpression', 'ConditionalAndExpression', $ConditionalAndExpression, '_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star', $_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star); return $ret; }; _O_QGT_OR_E_S_QConditionalAndExpression_E_C: GT_OR ConditionalAndExpression { my ($self, $GT_OR, $ConditionalAndExpression) = @_; my $ret = new _O_QGT_OR_E_S_QConditionalAndExpression_E_C($GT_OR, $ConditionalAndExpression); $self->traceProduction('_O_QGT_OR_E_S_QConditionalAndExpression_E_C', 'GT_OR', $GT_OR, 'ConditionalAndExpression', $ConditionalAndExpression); return $ret; }; _Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star(); $self->traceProduction('_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star'); return $ret; } | _Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star _O_QGT_OR_E_S_QConditionalAndExpression_E_C { my ($self, $_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star, $_O_QGT_OR_E_S_QConditionalAndExpression_E_C) = @_; my $ret = new _Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star($_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star, $_O_QGT_OR_E_S_QConditionalAndExpression_E_C); $self->traceProduction('_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star', '_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star', $_Q_O_QGT_OR_E_S_QConditionalAndExpression_E_C_E_Star, '_O_QGT_OR_E_S_QConditionalAndExpression_E_C', $_O_QGT_OR_E_S_QConditionalAndExpression_E_C); return $ret; }; ConditionalAndExpression: ValueLogical _Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star { my ($self, $ValueLogical, $_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star) = @_; my $ret = new ConditionalAndExpression($ValueLogical, $_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star); $self->traceProduction('ConditionalAndExpression', 'ValueLogical', $ValueLogical, '_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star', $_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star); return $ret; }; _O_QGT_AND_E_S_QValueLogical_E_C: GT_AND ValueLogical { my ($self, $GT_AND, $ValueLogical) = @_; my $ret = new _O_QGT_AND_E_S_QValueLogical_E_C($GT_AND, $ValueLogical); $self->traceProduction('_O_QGT_AND_E_S_QValueLogical_E_C', 'GT_AND', $GT_AND, 'ValueLogical', $ValueLogical); return $ret; }; _Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star(); $self->traceProduction('_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star'); return $ret; } | _Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star _O_QGT_AND_E_S_QValueLogical_E_C { my ($self, $_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star, $_O_QGT_AND_E_S_QValueLogical_E_C) = @_; my $ret = new _Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star($_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star, $_O_QGT_AND_E_S_QValueLogical_E_C); $self->traceProduction('_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star', '_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star', $_Q_O_QGT_AND_E_S_QValueLogical_E_C_E_Star, '_O_QGT_AND_E_S_QValueLogical_E_C', $_O_QGT_AND_E_S_QValueLogical_E_C); return $ret; }; ValueLogical: RelationalExpression { my ($self, $RelationalExpression) = @_; my $ret = new ValueLogical($RelationalExpression); $self->traceProduction('ValueLogical', 'RelationalExpression', $RelationalExpression); return $ret; }; RelationalExpression: NumericExpression _Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt { my ($self, $NumericExpression, $_Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt) = @_; my $ret = new RelationalExpression($NumericExpression, $_Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt); $self->traceProduction('RelationalExpression', 'NumericExpression', $NumericExpression, '_Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt', $_Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt); return $ret; }; _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C: GT_EQUAL NumericExpression { my ($self, $GT_EQUAL, $NumericExpression) = @_; my $ret = new _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C($GT_EQUAL, $NumericExpression); $self->traceProduction('_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C', 'GT_EQUAL', $GT_EQUAL, 'NumericExpression', $NumericExpression); return $ret; } | GT_NEQUAL NumericExpression { my ($self, $GT_NEQUAL, $NumericExpression) = @_; my $ret = new _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C($GT_NEQUAL, $NumericExpression); $self->traceProduction('_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C', 'GT_NEQUAL', $GT_NEQUAL, 'NumericExpression', $NumericExpression); return $ret; } | GT_LT NumericExpression { my ($self, $GT_LT, $NumericExpression) = @_; my $ret = new _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C($GT_LT, $NumericExpression); $self->traceProduction('_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C', 'GT_LT', $GT_LT, 'NumericExpression', $NumericExpression); return $ret; } | GT_GT NumericExpression { my ($self, $GT_GT, $NumericExpression) = @_; my $ret = new _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C($GT_GT, $NumericExpression); $self->traceProduction('_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C', 'GT_GT', $GT_GT, 'NumericExpression', $NumericExpression); return $ret; } | GT_LE NumericExpression { my ($self, $GT_LE, $NumericExpression) = @_; my $ret = new _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C($GT_LE, $NumericExpression); $self->traceProduction('_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C', 'GT_LE', $GT_LE, 'NumericExpression', $NumericExpression); return $ret; } | GT_GE NumericExpression { my ($self, $GT_GE, $NumericExpression) = @_; my $ret = new _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C($GT_GE, $NumericExpression); $self->traceProduction('_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C', 'GT_GE', $GT_GE, 'NumericExpression', $NumericExpression); return $ret; }; _Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt: { my ($self, ) = @_; my $ret = new _Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt(); $self->traceProduction('_Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt'); return $ret; } | _O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C { my ($self, $_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C) = @_; my $ret = new _Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt($_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C); $self->traceProduction('_Q_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C_E_Opt', '_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C', $_O_QGT_EQUAL_E_S_QNumericExpression_E_Or_QGT_NEQUAL_E_S_QNumericExpression_E_Or_QGT_LT_E_S_QNumericExpression_E_Or_QGT_GT_E_S_QNumericExpression_E_Or_QGT_LE_E_S_QNumericExpression_E_Or_QGT_GE_E_S_QNumericExpression_E_C); return $ret; }; NumericExpression: AdditiveExpression { my ($self, $AdditiveExpression) = @_; my $ret = new NumericExpression($AdditiveExpression); $self->traceProduction('NumericExpression', 'AdditiveExpression', $AdditiveExpression); return $ret; }; AdditiveExpression: MultiplicativeExpression _Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star { my ($self, $MultiplicativeExpression, $_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star) = @_; my $ret = new AdditiveExpression($MultiplicativeExpression, $_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star); $self->traceProduction('AdditiveExpression', 'MultiplicativeExpression', $MultiplicativeExpression, '_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star', $_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star); return $ret; }; _O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C: GT_PLUS MultiplicativeExpression { my ($self, $GT_PLUS, $MultiplicativeExpression) = @_; my $ret = new _O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C($GT_PLUS, $MultiplicativeExpression); $self->traceProduction('_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C', 'GT_PLUS', $GT_PLUS, 'MultiplicativeExpression', $MultiplicativeExpression); return $ret; } | GT_MINUS MultiplicativeExpression { my ($self, $GT_MINUS, $MultiplicativeExpression) = @_; my $ret = new _O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C($GT_MINUS, $MultiplicativeExpression); $self->traceProduction('_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C', 'GT_MINUS', $GT_MINUS, 'MultiplicativeExpression', $MultiplicativeExpression); return $ret; } | NumericLiteralPositive { my ($self, $NumericLiteralPositive) = @_; my $ret = new _O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C($NumericLiteralPositive); $self->traceProduction('_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C', 'NumericLiteralPositive', $NumericLiteralPositive); return $ret; } | NumericLiteralNegative { my ($self, $NumericLiteralNegative) = @_; my $ret = new _O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C($NumericLiteralNegative); $self->traceProduction('_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C', 'NumericLiteralNegative', $NumericLiteralNegative); return $ret; }; _Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star(); $self->traceProduction('_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star'); return $ret; } | _Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star _O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C { my ($self, $_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star, $_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C) = @_; my $ret = new _Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star($_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star, $_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C); $self->traceProduction('_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star', '_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star', $_Q_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C_E_Star, '_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C', $_O_QGT_PLUS_E_S_QMultiplicativeExpression_E_Or_QGT_MINUS_E_S_QMultiplicativeExpression_E_Or_QNumericLiteralPositive_E_Or_QNumericLiteralNegative_E_C); return $ret; }; MultiplicativeExpression: UnaryExpression _Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star { my ($self, $UnaryExpression, $_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star) = @_; my $ret = new MultiplicativeExpression($UnaryExpression, $_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star); $self->traceProduction('MultiplicativeExpression', 'UnaryExpression', $UnaryExpression, '_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star', $_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star); return $ret; }; _O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C: GT_TIMES UnaryExpression { my ($self, $GT_TIMES, $UnaryExpression) = @_; my $ret = new _O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C($GT_TIMES, $UnaryExpression); $self->traceProduction('_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C', 'GT_TIMES', $GT_TIMES, 'UnaryExpression', $UnaryExpression); return $ret; } | GT_DIVIDE UnaryExpression { my ($self, $GT_DIVIDE, $UnaryExpression) = @_; my $ret = new _O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C($GT_DIVIDE, $UnaryExpression); $self->traceProduction('_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C', 'GT_DIVIDE', $GT_DIVIDE, 'UnaryExpression', $UnaryExpression); return $ret; }; _Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star: { my ($self, ) = @_; my $ret = new _Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star(); $self->traceProduction('_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star'); return $ret; } | _Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star _O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C { my ($self, $_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star, $_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C) = @_; my $ret = new _Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star($_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star, $_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C); $self->traceProduction('_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star', '_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star', $_Q_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C_E_Star, '_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C', $_O_QGT_TIMES_E_S_QUnaryExpression_E_Or_QGT_DIVIDE_E_S_QUnaryExpression_E_C); return $ret; }; UnaryExpression: GT_NOT PrimaryExpression { my ($self, $GT_NOT, $PrimaryExpression) = @_; my $ret = new UnaryExpression($GT_NOT, $PrimaryExpression); $self->traceProduction('UnaryExpression', 'GT_NOT', $GT_NOT, 'PrimaryExpression', $PrimaryExpression); return $ret; } | GT_PLUS PrimaryExpression { my ($self, $GT_PLUS, $PrimaryExpression) = @_; my $ret = new UnaryExpression($GT_PLUS, $PrimaryExpression); $self->traceProduction('UnaryExpression', 'GT_PLUS', $GT_PLUS, 'PrimaryExpression', $PrimaryExpression); return $ret; } | GT_MINUS PrimaryExpression { my ($self, $GT_MINUS, $PrimaryExpression) = @_; my $ret = new UnaryExpression($GT_MINUS, $PrimaryExpression); $self->traceProduction('UnaryExpression', 'GT_MINUS', $GT_MINUS, 'PrimaryExpression', $PrimaryExpression); return $ret; } | PrimaryExpression { my ($self, $PrimaryExpression) = @_; my $ret = new UnaryExpression($PrimaryExpression); $self->traceProduction('UnaryExpression', 'PrimaryExpression', $PrimaryExpression); return $ret; }; PrimaryExpression: BrackettedExpression { my ($self, $BrackettedExpression) = @_; my $ret = new PrimaryExpression($BrackettedExpression); $self->traceProduction('PrimaryExpression', 'BrackettedExpression', $BrackettedExpression); return $ret; } | BuiltInCall { my ($self, $BuiltInCall) = @_; my $ret = new PrimaryExpression($BuiltInCall); $self->traceProduction('PrimaryExpression', 'BuiltInCall', $BuiltInCall); return $ret; } | IRIrefOrFunction { my ($self, $IRIrefOrFunction) = @_; my $ret = new PrimaryExpression($IRIrefOrFunction); $self->traceProduction('PrimaryExpression', 'IRIrefOrFunction', $IRIrefOrFunction); return $ret; } | RDFLiteral { my ($self, $RDFLiteral) = @_; my $ret = new PrimaryExpression($RDFLiteral); $self->traceProduction('PrimaryExpression', 'RDFLiteral', $RDFLiteral); return $ret; } | NumericLiteral { my ($self, $NumericLiteral) = @_; my $ret = new PrimaryExpression($NumericLiteral); $self->traceProduction('PrimaryExpression', 'NumericLiteral', $NumericLiteral); return $ret; } | BooleanLiteral { my ($self, $BooleanLiteral) = @_; my $ret = new PrimaryExpression($BooleanLiteral); $self->traceProduction('PrimaryExpression', 'BooleanLiteral', $BooleanLiteral); return $ret; } | Var { my ($self, $Var) = @_; my $ret = new PrimaryExpression($Var); $self->traceProduction('PrimaryExpression', 'Var', $Var); return $ret; }; BrackettedExpression: GT_LPAREN Expression GT_RPAREN { my ($self, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BrackettedExpression($GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BrackettedExpression', 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; }; BuiltInCall: IT_STR GT_LPAREN Expression GT_RPAREN { my ($self, $IT_STR, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_STR, $GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_STR', $IT_STR, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_LANG GT_LPAREN Expression GT_RPAREN { my ($self, $IT_LANG, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_LANG, $GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_LANG', $IT_LANG, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_LANGMATCHES GT_LPAREN Expression GT_COMMA Expression GT_RPAREN { my ($self, $IT_LANGMATCHES, $GT_LPAREN, $Expression, $GT_COMMA, $Expression_, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_LANGMATCHES, $GT_LPAREN, $Expression, $GT_COMMA, $Expression_, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_LANGMATCHES', $IT_LANGMATCHES, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_COMMA', $GT_COMMA, 'Expression_', $Expression_, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_DATATYPE GT_LPAREN Expression GT_RPAREN { my ($self, $IT_DATATYPE, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_DATATYPE, $GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_DATATYPE', $IT_DATATYPE, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_BOUND GT_LPAREN Var GT_RPAREN { my ($self, $IT_BOUND, $GT_LPAREN, $Var, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_BOUND, $GT_LPAREN, $Var, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_BOUND', $IT_BOUND, 'GT_LPAREN', $GT_LPAREN, 'Var', $Var, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_sameTerm GT_LPAREN Expression GT_COMMA Expression GT_RPAREN { my ($self, $IT_sameTerm, $GT_LPAREN, $Expression, $GT_COMMA, $Expression_, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_sameTerm, $GT_LPAREN, $Expression, $GT_COMMA, $Expression_, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_sameTerm', $IT_sameTerm, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_COMMA', $GT_COMMA, 'Expression_', $Expression_, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_isIRI GT_LPAREN Expression GT_RPAREN { my ($self, $IT_isIRI, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_isIRI, $GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_isIRI', $IT_isIRI, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_isURI GT_LPAREN Expression GT_RPAREN { my ($self, $IT_isURI, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_isURI, $GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_isURI', $IT_isURI, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_isBLANK GT_LPAREN Expression GT_RPAREN { my ($self, $IT_isBLANK, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_isBLANK, $GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_isBLANK', $IT_isBLANK, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; } | IT_isLITERAL GT_LPAREN Expression GT_RPAREN { my ($self, $IT_isLITERAL, $GT_LPAREN, $Expression, $GT_RPAREN) = @_; my $ret = new BuiltInCall($IT_isLITERAL, $GT_LPAREN, $Expression, $GT_RPAREN); $self->traceProduction('BuiltInCall', 'IT_isLITERAL', $IT_isLITERAL, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_RPAREN', $GT_RPAREN); return $ret; } | RegexExpression { my ($self, $RegexExpression) = @_; my $ret = new BuiltInCall($RegexExpression); $self->traceProduction('BuiltInCall', 'RegexExpression', $RegexExpression); return $ret; }; RegexExpression: IT_REGEX GT_LPAREN Expression GT_COMMA Expression _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt GT_RPAREN { my ($self, $IT_REGEX, $GT_LPAREN, $Expression, $GT_COMMA, $Expression_, $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt, $GT_RPAREN) = @_; my $ret = new RegexExpression($IT_REGEX, $GT_LPAREN, $Expression, $GT_COMMA, $Expression_, $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt, $GT_RPAREN); $self->traceProduction('RegexExpression', 'IT_REGEX', $IT_REGEX, 'GT_LPAREN', $GT_LPAREN, 'Expression', $Expression, 'GT_COMMA', $GT_COMMA, 'Expression_', $Expression_, '_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt', $_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt, 'GT_RPAREN', $GT_RPAREN); return $ret; }; _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt: { my ($self, ) = @_; my $ret = new _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt(); $self->traceProduction('_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt'); return $ret; } | _O_QGT_COMMA_E_S_QExpression_E_C { my ($self, $_O_QGT_COMMA_E_S_QExpression_E_C) = @_; my $ret = new _Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt($_O_QGT_COMMA_E_S_QExpression_E_C); $self->traceProduction('_Q_O_QGT_COMMA_E_S_QExpression_E_C_E_Opt', '_O_QGT_COMMA_E_S_QExpression_E_C', $_O_QGT_COMMA_E_S_QExpression_E_C); return $ret; }; IRIrefOrFunction: IRIref _QArgList_E_Opt { my ($self, $IRIref, $_QArgList_E_Opt) = @_; my $ret = new IRIrefOrFunction($IRIref, $_QArgList_E_Opt); $self->traceProduction('IRIrefOrFunction', 'IRIref', $IRIref, '_QArgList_E_Opt', $_QArgList_E_Opt); return $ret; }; _QArgList_E_Opt: { my ($self, ) = @_; my $ret = new _QArgList_E_Opt(); $self->traceProduction('_QArgList_E_Opt'); return $ret; } | ArgList { my ($self, $ArgList) = @_; my $ret = new _QArgList_E_Opt($ArgList); $self->traceProduction('_QArgList_E_Opt', 'ArgList', $ArgList); return $ret; }; RDFLiteral: String _Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt { my ($self, $String, $_Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt) = @_; my $ret = new RDFLiteral($String, $_Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt); $self->traceProduction('RDFLiteral', 'String', $String, '_Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt', $_Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt); return $ret; }; _O_QGT_DTYPE_E_S_QIRIref_E_C: GT_DTYPE IRIref { my ($self, $GT_DTYPE, $IRIref) = @_; my $ret = new _O_QGT_DTYPE_E_S_QIRIref_E_C($GT_DTYPE, $IRIref); $self->traceProduction('_O_QGT_DTYPE_E_S_QIRIref_E_C', 'GT_DTYPE', $GT_DTYPE, 'IRIref', $IRIref); return $ret; }; _O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C: LANGTAG { my ($self, $LANGTAG) = @_; my $ret = new _O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C($LANGTAG); $self->traceProduction('_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C', 'LANGTAG', $LANGTAG); return $ret; } | _O_QGT_DTYPE_E_S_QIRIref_E_C { my ($self, $_O_QGT_DTYPE_E_S_QIRIref_E_C) = @_; my $ret = new _O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C($_O_QGT_DTYPE_E_S_QIRIref_E_C); $self->traceProduction('_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C', '_O_QGT_DTYPE_E_S_QIRIref_E_C', $_O_QGT_DTYPE_E_S_QIRIref_E_C); return $ret; }; _Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt: { my ($self, ) = @_; my $ret = new _Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt(); $self->traceProduction('_Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt'); return $ret; } | _O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C { my ($self, $_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C) = @_; my $ret = new _Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt($_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C); $self->traceProduction('_Q_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C_E_Opt', '_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C', $_O_QLANGTAG_E_Or_QGT_DTYPE_E_S_QIRIref_E_C); return $ret; }; NumericLiteral: NumericLiteralUnsigned { my ($self, $NumericLiteralUnsigned) = @_; my $ret = new NumericLiteral($NumericLiteralUnsigned); $self->traceProduction('NumericLiteral', 'NumericLiteralUnsigned', $NumericLiteralUnsigned); return $ret; } | NumericLiteralPositive { my ($self, $NumericLiteralPositive) = @_; my $ret = new NumericLiteral($NumericLiteralPositive); $self->traceProduction('NumericLiteral', 'NumericLiteralPositive', $NumericLiteralPositive); return $ret; } | NumericLiteralNegative { my ($self, $NumericLiteralNegative) = @_; my $ret = new NumericLiteral($NumericLiteralNegative); $self->traceProduction('NumericLiteral', 'NumericLiteralNegative', $NumericLiteralNegative); return $ret; }; NumericLiteralUnsigned: INTEGER { my ($self, $INTEGER) = @_; my $ret = new NumericLiteralUnsigned($INTEGER); $self->traceProduction('NumericLiteralUnsigned', 'INTEGER', $INTEGER); return $ret; } | DECIMAL { my ($self, $DECIMAL) = @_; my $ret = new NumericLiteralUnsigned($DECIMAL); $self->traceProduction('NumericLiteralUnsigned', 'DECIMAL', $DECIMAL); return $ret; } | DOUBLE { my ($self, $DOUBLE) = @_; my $ret = new NumericLiteralUnsigned($DOUBLE); $self->traceProduction('NumericLiteralUnsigned', 'DOUBLE', $DOUBLE); return $ret; }; NumericLiteralPositive: INTEGER_POSITIVE { my ($self, $INTEGER_POSITIVE) = @_; my $ret = new NumericLiteralPositive($INTEGER_POSITIVE); $self->traceProduction('NumericLiteralPositive', 'INTEGER_POSITIVE', $INTEGER_POSITIVE); return $ret; } | DECIMAL_POSITIVE { my ($self, $DECIMAL_POSITIVE) = @_; my $ret = new NumericLiteralPositive($DECIMAL_POSITIVE); $self->traceProduction('NumericLiteralPositive', 'DECIMAL_POSITIVE', $DECIMAL_POSITIVE); return $ret; } | DOUBLE_POSITIVE { my ($self, $DOUBLE_POSITIVE) = @_; my $ret = new NumericLiteralPositive($DOUBLE_POSITIVE); $self->traceProduction('NumericLiteralPositive', 'DOUBLE_POSITIVE', $DOUBLE_POSITIVE); return $ret; }; NumericLiteralNegative: INTEGER_NEGATIVE { my ($self, $INTEGER_NEGATIVE) = @_; my $ret = new NumericLiteralNegative($INTEGER_NEGATIVE); $self->traceProduction('NumericLiteralNegative', 'INTEGER_NEGATIVE', $INTEGER_NEGATIVE); return $ret; } | DECIMAL_NEGATIVE { my ($self, $DECIMAL_NEGATIVE) = @_; my $ret = new NumericLiteralNegative($DECIMAL_NEGATIVE); $self->traceProduction('NumericLiteralNegative', 'DECIMAL_NEGATIVE', $DECIMAL_NEGATIVE); return $ret; } | DOUBLE_NEGATIVE { my ($self, $DOUBLE_NEGATIVE) = @_; my $ret = new NumericLiteralNegative($DOUBLE_NEGATIVE); $self->traceProduction('NumericLiteralNegative', 'DOUBLE_NEGATIVE', $DOUBLE_NEGATIVE); return $ret; }; BooleanLiteral: IT_true { my ($self, $IT_true) = @_; my $ret = new BooleanLiteral($IT_true); $self->traceProduction('BooleanLiteral', 'IT_true', $IT_true); return $ret; } | IT_false { my ($self, $IT_false) = @_; my $ret = new BooleanLiteral($IT_false); $self->traceProduction('BooleanLiteral', 'IT_false', $IT_false); return $ret; }; String: STRING_LITERAL1 { my ($self, $STRING_LITERAL1) = @_; my $ret = new String($STRING_LITERAL1); $self->traceProduction('String', 'STRING_LITERAL1', $STRING_LITERAL1); return $ret; } | STRING_LITERAL2 { my ($self, $STRING_LITERAL2) = @_; my $ret = new String($STRING_LITERAL2); $self->traceProduction('String', 'STRING_LITERAL2', $STRING_LITERAL2); return $ret; } | STRING_LITERAL_LONG1 { my ($self, $STRING_LITERAL_LONG1) = @_; my $ret = new String($STRING_LITERAL_LONG1); $self->traceProduction('String', 'STRING_LITERAL_LONG1', $STRING_LITERAL_LONG1); return $ret; } | STRING_LITERAL_LONG2 { my ($self, $STRING_LITERAL_LONG2) = @_; my $ret = new String($STRING_LITERAL_LONG2); $self->traceProduction('String', 'STRING_LITERAL_LONG2', $STRING_LITERAL_LONG2); return $ret; }; IRIref: IRI_REF { my ($self, $IRI_REF) = @_; my $ret = new IRIref($IRI_REF); $self->traceProduction('IRIref', 'IRI_REF', $IRI_REF); return $ret; } | PrefixedName { my ($self, $PrefixedName) = @_; my $ret = new IRIref($PrefixedName); $self->traceProduction('IRIref', 'PrefixedName', $PrefixedName); return $ret; }; PrefixedName: PNAME_LN { my ($self, $PNAME_LN) = @_; my $ret = new PrefixedName($PNAME_LN); $self->traceProduction('PrefixedName', 'PNAME_LN', $PNAME_LN); return $ret; } | PNAME_NS { my ($self, $PNAME_NS) = @_; my $ret = new PrefixedName($PNAME_NS); $self->traceProduction('PrefixedName', 'PNAME_NS', $PNAME_NS); return $ret; }; BlankNode: BLANK_NODE_LABEL { my ($self, $BLANK_NODE_LABEL) = @_; my $ret = new BlankNode($BLANK_NODE_LABEL); $self->traceProduction('BlankNode', 'BLANK_NODE_LABEL', $BLANK_NODE_LABEL); return $ret; } | ANON { my ($self, $ANON) = @_; my $ret = new BlankNode($ANON); $self->traceProduction('BlankNode', 'ANON', $ANON); return $ret; }; %% my $LanguageName = 'SPARQL'; # -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*- # START LexerBlock # # YappTemplate: used by yacker to create yapp input files. # # Use: yacker -l perl -s -n .txt # # to generate a yapp input module called Sparql.yp. #line 11 "YappTemplate" # $Id: YappTemplate,v 1.30 2007/12/01 19:11:19 eric Exp $ sub _Base::new { my ($proto, @args) = @_; my $class = ref($proto) || $proto; my $self = []; foreach my $arg (@args) { if (UNIVERSAL::isa($arg, $class)) { # Collapse nested left-recursive *, +, ? and () productions. push (@$self, @$arg); } else { # Construct simple parse tree of production parameters. push (@$self, $arg); } } bless ($self, $class); return $self; } sub _Base::toString { my ($self) = @_; my @ret = map {$_->toString} @$self; return wantarray ? @ret : join(' ', @ret); } sub _Base::toXML { my ($self, $prefix, $decls) = @_; my $class = ref $self; my $declsStr = join('', map {my $p = $_ ? ":$_" : ''; "\n xmlns$p=\"$decls->{$_}\""} keys %$decls); my @ret = ("$prefix<$class$declsStr>", map {ref $_ ? $_->toXML("$prefix ", {}) : $_} @$self, "$prefix"); return wantarray ? @ret : join("\n", @ret); } @_Production::ISA = qw(_Base); @_GenProduction::ISA = qw(_Production); sub _GenProduction::toXML { my ($self, $prefix) = @_; return join("\n", map {$_->toXML($prefix)} @$self); } @_Terminal::ISA = qw(_Base); sub _Terminal::toString { my ($self) = @_; my $encodedValue = $self->[0]; $encodedValue =~ s/\r/\\r/g; $encodedValue =~ s/\n/\\n/g; $encodedValue =~ s/\t/\\t/g; return $encodedValue; } sub _Terminal::toXML { my ($self, $prefix) = @_; my $class = ref $self; my $encodedValue = $self->[0]; $encodedValue =~ s/&/&/g; $encodedValue =~ s//>/g; return "$prefix<$class>$encodedValue"; } @_Constant::ISA = qw(_Base); sub _Constant::toString { my ($self) = @_; return ($self->[0]); } sub _Constant::toXML { my ($self, $prefix) = @_; my $class = ref $self; $class =~ s/^[IG]T_//; return "$prefix$class"; } sub _Error { my ($self) = @_; exists $self->YYData->{ERRMSG} and do { print $self->YYData->{ERRMSG}; delete $self->YYData->{ERRMSG}; return; }; my $pos = pos $self->YYData->{INPUT}; my $lastPos = $self->YYData->{my_LASTPOS}; my $excerpt = substr($self->YYData->{INPUT}, $lastPos, $pos - $lastPos); my $expect = @{$self->{STACK}} ? join (' | ', sort {(!(lc $a cmp lc $b)) ? $b cmp $a : lc $a cmp lc $b} map {&_terminalString($_)} $self->YYExpect()) : 'INVALID INITIALIZER'; if (ref $expect) { # Flag unexpected (by the author at this point) refs with '?ref'. if (ref $expect eq 'HASH') { if (exists $expect->{NEXT}) { $expect = $ {$expect->{NEXT}}; } else { $expect = "?ref {%$expect}"; } } elsif (ref $expect eq 'ARRAY') { $expect = "?ref [@$expect]"; } elsif (ref $expect eq 'SCALAR') { $expect = "?ref $$expect"; } elsif (ref $expect eq 'GLOB') { $expect = "?ref \**$expect"; } else { $expect = "?ref ??? $expect"; } } my $token = &_terminalString($self->YYData->{my_LASTTOKEN}); my $value = $self->YYData->{my_LASTVALUE}; die "expected \"$expect\", got ($token, $value) from \"$excerpt\" at offset $lastPos.\n"; } sub _terminalString { # static my ($token) = @_; if ($token =~ m{^I_T_(.+)$}) { $token = "'$1'"; } elsif ($token =~ m{^T_(.+)$}) { if (my $base = $ARGV[0]) { $token = "<$1>"; } else { $token = "<$1>"; } } return $token; } my $AtStart; sub _Lexer { my($self)=shift; my ($token, $value) = ('', undef); top: if (defined $self->YYData->{INPUT} && pos $self->YYData->{INPUT} < length ($self->YYData->{INPUT})) { # still some chars left. } else { return ('', undef); } $self->YYData->{my_LASTPOS} = pos $self->YYData->{INPUT}; my $startPos = pos $self->YYData->{INPUT}; my ($mText, $mLen, $mI, $mLookAhead) = ('', 0, undef, undef); for (my $i = 0; $i < @$Tokens; $i++) { my $rule = $Tokens->[$i]; my ($start, $regexp, $action) = @$rule; if ($start && !$AtStart) { next; } eval { if ($self->YYData->{INPUT} =~ m/\G($regexp)/gc) { my $lookAhead = defined $2 ? length $2 : 0; my $len = (pos $self->YYData->{INPUT}) - $startPos + $lookAhead; if ($len > $mLen) { $mText = substr($self->YYData->{INPUT}, $startPos, $len - $lookAhead); $mLen = $len; $mI = $i; $mLookAhead = $lookAhead } pos $self->YYData->{INPUT} = $startPos; } }; if ($@) { die "error processing $action: $@"; } } if ($mLen) { my ($start, $regexp, $action) = @{$Tokens->[$mI]}; pos $self->YYData->{INPUT} += $mLen - $mLookAhead; $AtStart = $mText =~ m/\z/gc; ($token, $value) = ($action, $mText); } else { my $excerpt = substr($self->YYData->{INPUT}, pos $self->YYData->{INPUT}, 40); die "lexer couldn't parse at \"$excerpt\"\n"; } if (!defined $token) { # We just parsed whitespace or comment. goto top; } # my $pos = pos $self->YYData->{INPUT}; # print "\n$pos,$token,$value\n"; $self->YYData->{my_LASTTOKEN} = $token; $self->YYData->{my_LASTVALUE} = $value; my $ret = $token->new($value); my $str = $ret->toString; $self->trace("shift ($token, $str)"); return ($token, $ret); } # END LexerBlock sub parse { my ($self, $sample) = @_; $self->YYData->{INPUT} = $sample; pos $self->YYData->{INPUT} = 0; return $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error, yydebug => $ENV{YYDEBUG} ); } sub openTraceFd { my ($self, $fd) = @_; open $self->YYData->{Trace}, '>&', $fd; } sub closeTrace { my ($self, $fd) = @_; close $self->YYData->{Trace}; } sub trace { my($self, $str) = @_; if ($self->YYData->{Trace}) { &utf8::encode($str); print {$self->YYData->{Trace}} "$str\n"; } } sub traceProduction { my($self, $prod, @parms) = @_; if ($self->YYData->{Trace}) { my $str = " $prod:"; my @lines; while (@parms) { my ($parmName, $parmVal) = (shift @parms, shift @parms); if (UNIVERSAL::isa($parmVal, '_GenProduction')) { # Enumerate elements of *, +, ? and () productions. $str .= sprintf(" %s(%d)", $parmName, scalar @$parmVal); for (my $i = 0; $i < @$parmVal; $i++) { push (@lines, sprintf(" %s(%d): %s", $parmName, $i, join(' ', $parmVal->[$i]->toString))); } } else { # Display singleton properties via their toString form. $str .= sprintf(" %s(%d)", $parmName, 1); push (@lines, sprintf(" %s(%d): %s", $parmName, 0, join(' ', $parmVal->toString))); } } $str = join("\n", $str, @lines); &utf8::encode($str); print {$self->YYData->{Trace}} "$str\n"; } } require Exporter; use vars qw ( @EXPORT ); push (@ISA, qw ( Exporter )); @EXPORT = qw(&test); sub test { if (@ARGV < 1) { local $/ = undef; &testFile(, $ENV{TRACE_FD}); } else { foreach my $file (@ARGV) { open(F, $file) || die "unable to open input $file: $!\n"; local $/ = undef; &testFile(, $ENV{TRACE_FD}); close (F); } } } sub testFile { my ($sample, $traceFd) = @_; my $parser = SPARQL->new(); &utf8::decode($sample); if ($ENV{TRACE_FD}) { $parser->openTraceFd($ENV{TRACE_FD}); } eval { my $root = $parser->parse($sample); my $text = $root->toXML('', { '' => 'http://www.w3.org/2005/01/yacker/uploads/SPARQL/', 'yacker' => 'http://www.w3.org/2005/01/yacker/'}); # @@@ you may need to comment this for command line processing. &utf8::encode($text); print "$text\n"; }; my $lastError = $@; if ($ENV{TRACE_FD}) { $parser->closeTrace(); } if ($lastError) { die $lastError; } } 1; __END__ =head1 SPARQL SPARQL - parse some language. =head1 SYNOPSIS my ($sample) = $ARGV[0]; &utf8::decode($sample); my $parser = new SPARQL(); my $root = $parser->parser($sample); my $text = $root->toXML('', { '' => 'http://www.w3.org/2005/01/yacker/uploads/SPARQL/', 'yacker' => 'http://www.w3.org/2005/01/yacker/'}); &utf8::encode($text); print "$text\n"; =head1 DESCRIPTION Yacker needs to encode rule patterns in [a-zA-Z_]+ so it reserves symbols starting with '_'. This parser reverses the process. This module was generated by W3C::Grammar::bin::yacker. =head1 API This function supplies a single parsing function. The methods of the returned object are described below. =head2 parse($sample) Returns an array of objects parsed into the language given to yacker. =head2 returned object The returned objects are blessed subclasses of _Production. They have the following functions: =head3 toString Return a ' '-separated "normalization" of the parsed $sample. =head3 toXML Return an XML parse tree of the parsed $sample. =head1 TESTING/DEBUGGING TRACE_FD=3 perl -MSPARQL -e test < sample.in 3> sample.trace or TRACE_FD=3 perl -MSPARQL -e test sample 3> sample.trace which should return a parse tree for the given language. Setting the trace file descriptor to 1 will send the trace output to stdout. TRACE_FD=1 Leaving it unset will suppress the trace output. =head1 BUGS The web interface to yacker requires the results to be encoded: &utf8::encode($text) Many shells do not expect this so you may need to comment it out. You may search for the "@@@" above to find the line in sub test. =head1 AUTHOR SPARQL author: unknown yacker author: Eric Prud'hommeaux =head1 SEE ALSO W3C::Grammar::bin::yacker(1) =cut