Module: SPARQL::Grammar::Meta

Included in:
Parser
Defined in:
lib/sparql/grammar/parser/meta.rb

Overview

This file is automatically generated by script/build_meta Branch and Regexp tables derived from /Users/gregg/Projects/sparql-grammar/etc/sparql-selectors.n3 Note, branch tables completed with conflicts, may need to be resolved manually:

Conflict: in :UnaryExpression:
   "+" is the condition for ["\"+\"", ":PrimaryExpression"].
   We are changing it to :PrimaryExpression.
Conflict: in :UnaryExpression:
   "-" is the condition for ["\"-\"", ":PrimaryExpression"].
   We are changing it to :PrimaryExpression.

Constant Summary

BRANCHES =
{
  :AdditiveExpression => {
    "!" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "(" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "+" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "-" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "BOUND" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "DATATYPE" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "LANG" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "LANGMATCHES" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "REGEX" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "STR" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :BooleanLiteral => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :DECIMAL => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :DOUBLE => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :INTEGER => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :IRI_REF => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :PNAME_LN => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :PNAME_NS => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :STRING_LITERAL1 => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :STRING_LITERAL2 => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :STRING_LITERAL_LONG1 => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :STRING_LITERAL_LONG2 => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :VAR1 => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    :VAR2 => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "ISBLANK" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "ISIRI" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "ISLITERAL" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "ISURI" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "SAMETERM" => [:MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
  },
  :ArgList => {
    "(" => ["(",
      :_Expression_COMMA_Expression_Star,
      ")"],
    :NIL => [:NIL],
  },
  :AskQuery => {
    "ASK" => ["ASK",
      :_DatasetClause_Star,
      :WhereClause],
  },
  :BaseDecl => {
    "BASE" => ["BASE",
      :IRI_REF],
  },
  :BlankNode => {
    :ANON => [:ANON],
    :BLANK_NODE_LABEL => [:BLANK_NODE_LABEL],
  },
  :BlankNodePropertyList => {
    "[" => ["[",
      :PropertyListNotEmpty,
      "]"],
  },
  :BrackettedExpression => {
    "(" => ["(",
      :Expression,
      ")"],
  },
  :BuiltInCall => {
    "BOUND" => ["BOUND",
      "(",
      :Var,
      ")"],
    "DATATYPE" => ["DATATYPE",
      "(",
      :Expression,
      ")"],
    "LANG" => ["LANG",
      "(",
      :Expression,
      ")"],
    "LANGMATCHES" => ["LANGMATCHES",
      "(",
      :Expression,
      ",",
      :Expression,
      ")"],
    "REGEX" => [:RegexExpression],
    "STR" => ["STR",
      "(",
      :Expression,
      ")"],
    "ISBLANK" => ["ISBLANK",
      "(",
      :Expression,
      ")"],
    "ISIRI" => ["ISIRI",
      "(",
      :Expression,
      ")"],
    "ISLITERAL" => ["ISLITERAL",
      "(",
      :Expression,
      ")"],
    "ISURI" => ["ISURI",
      "(",
      :Expression,
      ")"],
    "SAMETERM" => ["SAMETERM",
      "(",
      :Expression,
      ",",
      :Expression,
      ")"],
  },
  :Collection => {
    "(" => ["(",
      :_GraphNode_Plus,
      ")"],
  },
  :ConditionalAndExpression => {
    "!" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "(" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "+" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "-" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "BOUND" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "DATATYPE" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "LANG" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "LANGMATCHES" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "REGEX" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "STR" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :BooleanLiteral => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :DECIMAL => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :DOUBLE => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :INTEGER => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :IRI_REF => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :PNAME_LN => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :PNAME_NS => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :STRING_LITERAL1 => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :STRING_LITERAL2 => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :STRING_LITERAL_LONG1 => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :STRING_LITERAL_LONG2 => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :VAR1 => [:ValueLogical,
      :_AND_ValueLogical_Star],
    :VAR2 => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "ISBLANK" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "ISIRI" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "ISLITERAL" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "ISURI" => [:ValueLogical,
      :_AND_ValueLogical_Star],
    "SAMETERM" => [:ValueLogical,
      :_AND_ValueLogical_Star],
  },
  :ConditionalOrExpression => {
    "!" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "(" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "+" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "-" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "BOUND" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "DATATYPE" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "LANG" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "LANGMATCHES" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "REGEX" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "STR" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :BooleanLiteral => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :DECIMAL => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :DOUBLE => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :INTEGER => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :IRI_REF => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :PNAME_LN => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :PNAME_NS => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :STRING_LITERAL1 => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :STRING_LITERAL2 => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :STRING_LITERAL_LONG1 => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :STRING_LITERAL_LONG2 => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :VAR1 => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    :VAR2 => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "ISBLANK" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "ISIRI" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "ISLITERAL" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "ISURI" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
    "SAMETERM" => [:ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
  },
  :Constraint => {
    "(" => [:BrackettedExpression],
    "BOUND" => [:BuiltInCall],
    "DATATYPE" => [:BuiltInCall],
    "LANG" => [:BuiltInCall],
    "LANGMATCHES" => [:BuiltInCall],
    "REGEX" => [:BuiltInCall],
    "STR" => [:BuiltInCall],
    :IRI_REF => [:FunctionCall],
    :PNAME_LN => [:FunctionCall],
    :PNAME_NS => [:FunctionCall],
    "ISBLANK" => [:BuiltInCall],
    "ISIRI" => [:BuiltInCall],
    "ISLITERAL" => [:BuiltInCall],
    "ISURI" => [:BuiltInCall],
    "SAMETERM" => [:BuiltInCall],
  },
  :ConstructQuery => {
    "CONSTRUCT" => ["CONSTRUCT",
      :ConstructTemplate,
      :_DatasetClause_Star,
      :WhereClause,
      :SolutionModifier],
  },
  :ConstructTemplate => {
    "{" => ["{",
      :_ConstructTriples_Opt,
      "}"],
  },
  :ConstructTriples => {
    "(" => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    "+" => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    "-" => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    "[" => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :ANON => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :BLANK_NODE_LABEL => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :BooleanLiteral => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :DECIMAL => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :DOUBLE => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :INTEGER => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :IRI_REF => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :NIL => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :PNAME_LN => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :PNAME_NS => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :STRING_LITERAL1 => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :STRING_LITERAL2 => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :STRING_LITERAL_LONG1 => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :STRING_LITERAL_LONG2 => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :VAR1 => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
    :VAR2 => [:TriplesSameSubject,
      :_DOT_ConstructTriples_Opt_Opt],
  },
  :DatasetClause => {
    "FROM" => ["FROM",
      :_DefaultGraphClause_or_NamedGraphClause],
  },
  :DefaultGraphClause => {
    :IRI_REF => [:SourceSelector],
    :PNAME_LN => [:SourceSelector],
    :PNAME_NS => [:SourceSelector],
  },
  :DescribeQuery => {
    "DESCRIBE" => ["DESCRIBE",
      :_VarOrIRIref_Plus_or_Star,
      :_DatasetClause_Star,
      :_WhereClause_Opt,
      :SolutionModifier],
  },
  :Expression => {
    "!" => [:ConditionalOrExpression],
    "(" => [:ConditionalOrExpression],
    "+" => [:ConditionalOrExpression],
    "-" => [:ConditionalOrExpression],
    "BOUND" => [:ConditionalOrExpression],
    "DATATYPE" => [:ConditionalOrExpression],
    "LANG" => [:ConditionalOrExpression],
    "LANGMATCHES" => [:ConditionalOrExpression],
    "REGEX" => [:ConditionalOrExpression],
    "STR" => [:ConditionalOrExpression],
    :BooleanLiteral => [:ConditionalOrExpression],
    :DECIMAL => [:ConditionalOrExpression],
    :DOUBLE => [:ConditionalOrExpression],
    :INTEGER => [:ConditionalOrExpression],
    :IRI_REF => [:ConditionalOrExpression],
    :PNAME_LN => [:ConditionalOrExpression],
    :PNAME_NS => [:ConditionalOrExpression],
    :STRING_LITERAL1 => [:ConditionalOrExpression],
    :STRING_LITERAL2 => [:ConditionalOrExpression],
    :STRING_LITERAL_LONG1 => [:ConditionalOrExpression],
    :STRING_LITERAL_LONG2 => [:ConditionalOrExpression],
    :VAR1 => [:ConditionalOrExpression],
    :VAR2 => [:ConditionalOrExpression],
    "ISBLANK" => [:ConditionalOrExpression],
    "ISIRI" => [:ConditionalOrExpression],
    "ISLITERAL" => [:ConditionalOrExpression],
    "ISURI" => [:ConditionalOrExpression],
    "SAMETERM" => [:ConditionalOrExpression],
  },
  :Filter => {
    "FILTER" => ["FILTER",
      :Constraint],
  },
  :FunctionCall => {
    :IRI_REF => [:IRIref,
      :ArgList],
    :PNAME_LN => [:IRIref,
      :ArgList],
    :PNAME_NS => [:IRIref,
      :ArgList],
  },
  :GraphGraphPattern => {
    "GRAPH" => ["GRAPH",
      :VarOrIRIref,
      :GroupGraphPattern],
  },
  :GraphNode => {
    "(" => [:TriplesNode],
    "+" => [:VarOrTerm],
    "-" => [:VarOrTerm],
    "[" => [:TriplesNode],
    :ANON => [:VarOrTerm],
    :BLANK_NODE_LABEL => [:VarOrTerm],
    :BooleanLiteral => [:VarOrTerm],
    :DECIMAL => [:VarOrTerm],
    :DOUBLE => [:VarOrTerm],
    :INTEGER => [:VarOrTerm],
    :IRI_REF => [:VarOrTerm],
    :NIL => [:VarOrTerm],
    :PNAME_LN => [:VarOrTerm],
    :PNAME_NS => [:VarOrTerm],
    :STRING_LITERAL1 => [:VarOrTerm],
    :STRING_LITERAL2 => [:VarOrTerm],
    :STRING_LITERAL_LONG1 => [:VarOrTerm],
    :STRING_LITERAL_LONG2 => [:VarOrTerm],
    :VAR1 => [:VarOrTerm],
    :VAR2 => [:VarOrTerm],
  },
  :GraphPatternNotTriples => {
    "GRAPH" => [:GraphGraphPattern],
    "OPTIONAL" => [:OptionalGraphPattern],
    "{" => [:GroupOrUnionGraphPattern],
  },
  :GraphTerm => {
    "+" => [:NumericLiteral],
    "-" => [:NumericLiteral],
    :ANON => [:BlankNode],
    :BLANK_NODE_LABEL => [:BlankNode],
    :BooleanLiteral => [:BooleanLiteral],
    :DECIMAL => [:NumericLiteral],
    :DOUBLE => [:NumericLiteral],
    :INTEGER => [:NumericLiteral],
    :IRI_REF => [:IRIref],
    :NIL => [:NIL],
    :PNAME_LN => [:IRIref],
    :PNAME_NS => [:IRIref],
    :STRING_LITERAL1 => [:RDFLiteral],
    :STRING_LITERAL2 => [:RDFLiteral],
    :STRING_LITERAL_LONG1 => [:RDFLiteral],
    :STRING_LITERAL_LONG2 => [:RDFLiteral],
  },
  :GroupGraphPattern => {
    "{" => ["{",
      :_TriplesBlock_Opt,
      :_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt_Star,
      "}"],
  },
  :GroupOrUnionGraphPattern => {
    "{" => [:GroupGraphPattern,
      :_UNION_GroupGraphPattern_Star],
  },
  :IRIref => {
    :IRI_REF => [:IRI_REF],
    :PNAME_LN => [:PrefixedName],
    :PNAME_NS => [:PrefixedName],
  },
  :IRIrefOrFunction => {
    :IRI_REF => [:IRIref,
      :_ArgList_Opt],
    :PNAME_LN => [:IRIref,
      :_ArgList_Opt],
    :PNAME_NS => [:IRIref,
      :_ArgList_Opt],
  },
  :LimitClause => {
    "LIMIT" => ["LIMIT",
      :INTEGER],
  },
  :LimitOffsetClauses => {
    "LIMIT" => [:LimitClause,
      :_OffsetClause_Opt],
    "OFFSET" => [:OffsetClause,
      :_LimitClause_Opt],
  },
  :MultiplicativeExpression => {
    "!" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "(" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "+" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "-" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "BOUND" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "DATATYPE" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "LANG" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "LANGMATCHES" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "REGEX" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "STR" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :BooleanLiteral => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :DECIMAL => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :DOUBLE => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :INTEGER => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :IRI_REF => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :PNAME_LN => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :PNAME_NS => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :STRING_LITERAL1 => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :STRING_LITERAL2 => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :STRING_LITERAL_LONG1 => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :STRING_LITERAL_LONG2 => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :VAR1 => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    :VAR2 => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "ISBLANK" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "ISIRI" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "ISLITERAL" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "ISURI" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "SAMETERM" => [:UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
  },
  :NamedGraphClause => {
    "NAMED" => ["NAMED",
      :SourceSelector],
  },
  :NumericExpression => {
    "!" => [:AdditiveExpression],
    "(" => [:AdditiveExpression],
    "+" => [:AdditiveExpression],
    "-" => [:AdditiveExpression],
    "BOUND" => [:AdditiveExpression],
    "DATATYPE" => [:AdditiveExpression],
    "LANG" => [:AdditiveExpression],
    "LANGMATCHES" => [:AdditiveExpression],
    "REGEX" => [:AdditiveExpression],
    "STR" => [:AdditiveExpression],
    :BooleanLiteral => [:AdditiveExpression],
    :DECIMAL => [:AdditiveExpression],
    :DOUBLE => [:AdditiveExpression],
    :INTEGER => [:AdditiveExpression],
    :IRI_REF => [:AdditiveExpression],
    :PNAME_LN => [:AdditiveExpression],
    :PNAME_NS => [:AdditiveExpression],
    :STRING_LITERAL1 => [:AdditiveExpression],
    :STRING_LITERAL2 => [:AdditiveExpression],
    :STRING_LITERAL_LONG1 => [:AdditiveExpression],
    :STRING_LITERAL_LONG2 => [:AdditiveExpression],
    :VAR1 => [:AdditiveExpression],
    :VAR2 => [:AdditiveExpression],
    "ISBLANK" => [:AdditiveExpression],
    "ISIRI" => [:AdditiveExpression],
    "ISLITERAL" => [:AdditiveExpression],
    "ISURI" => [:AdditiveExpression],
    "SAMETERM" => [:AdditiveExpression],
  },
  :NumericLiteral => {
    "+" => [:NumericLiteralPositive],
    "-" => [:NumericLiteralNegative],
    :DECIMAL => [:NumericLiteralUnsigned],
    :DOUBLE => [:NumericLiteralUnsigned],
    :INTEGER => [:NumericLiteralUnsigned],
  },
  :NumericLiteralNegative => {
    "-" => ["-",
      :NumericLiteralUnsigned],
  },
  :NumericLiteralPositive => {
    "+" => ["+",
      :NumericLiteralUnsigned],
  },
  :NumericLiteralUnsigned => {
    :DECIMAL => [:DECIMAL],
    :DOUBLE => [:DOUBLE],
    :INTEGER => [:INTEGER],
  },
  :Object => {
    "(" => [:GraphNode],
    "+" => [:GraphNode],
    "-" => [:GraphNode],
    "[" => [:GraphNode],
    :ANON => [:GraphNode],
    :BLANK_NODE_LABEL => [:GraphNode],
    :BooleanLiteral => [:GraphNode],
    :DECIMAL => [:GraphNode],
    :DOUBLE => [:GraphNode],
    :INTEGER => [:GraphNode],
    :IRI_REF => [:GraphNode],
    :NIL => [:GraphNode],
    :PNAME_LN => [:GraphNode],
    :PNAME_NS => [:GraphNode],
    :STRING_LITERAL1 => [:GraphNode],
    :STRING_LITERAL2 => [:GraphNode],
    :STRING_LITERAL_LONG1 => [:GraphNode],
    :STRING_LITERAL_LONG2 => [:GraphNode],
    :VAR1 => [:GraphNode],
    :VAR2 => [:GraphNode],
  },
  :ObjectList => {
    "(" => [:Object,
      :_COMMA_Object_Star],
    "+" => [:Object,
      :_COMMA_Object_Star],
    "-" => [:Object,
      :_COMMA_Object_Star],
    "[" => [:Object,
      :_COMMA_Object_Star],
    :ANON => [:Object,
      :_COMMA_Object_Star],
    :BLANK_NODE_LABEL => [:Object,
      :_COMMA_Object_Star],
    :BooleanLiteral => [:Object,
      :_COMMA_Object_Star],
    :DECIMAL => [:Object,
      :_COMMA_Object_Star],
    :DOUBLE => [:Object,
      :_COMMA_Object_Star],
    :INTEGER => [:Object,
      :_COMMA_Object_Star],
    :IRI_REF => [:Object,
      :_COMMA_Object_Star],
    :NIL => [:Object,
      :_COMMA_Object_Star],
    :PNAME_LN => [:Object,
      :_COMMA_Object_Star],
    :PNAME_NS => [:Object,
      :_COMMA_Object_Star],
    :STRING_LITERAL1 => [:Object,
      :_COMMA_Object_Star],
    :STRING_LITERAL2 => [:Object,
      :_COMMA_Object_Star],
    :STRING_LITERAL_LONG1 => [:Object,
      :_COMMA_Object_Star],
    :STRING_LITERAL_LONG2 => [:Object,
      :_COMMA_Object_Star],
    :VAR1 => [:Object,
      :_COMMA_Object_Star],
    :VAR2 => [:Object,
      :_COMMA_Object_Star],
  },
  :OffsetClause => {
    "OFFSET" => ["OFFSET",
      :INTEGER],
  },
  :OptionalGraphPattern => {
    "OPTIONAL" => ["OPTIONAL",
      :GroupGraphPattern],
  },
  :OrderClause => {
    "ORDER" => ["ORDER",
      "BY",
      :OrderCondition,
      :_OrderCondition_Plus],
  },
  :OrderCondition => {
    "(" => [:_Constraint_or_Var],
    "ASC" => [:_ASC_Or_DESC_BrackettedExpression],
    "BOUND" => [:_Constraint_or_Var],
    "DATATYPE" => [:_Constraint_or_Var],
    "DESC" => [:_ASC_Or_DESC_BrackettedExpression],
    "LANG" => [:_Constraint_or_Var],
    "LANGMATCHES" => [:_Constraint_or_Var],
    "REGEX" => [:_Constraint_or_Var],
    "STR" => [:_Constraint_or_Var],
    :IRI_REF => [:_Constraint_or_Var],
    :PNAME_LN => [:_Constraint_or_Var],
    :PNAME_NS => [:_Constraint_or_Var],
    :VAR1 => [:_Constraint_or_Var],
    :VAR2 => [:_Constraint_or_Var],
    "ISBLANK" => [:_Constraint_or_Var],
    "ISIRI" => [:_Constraint_or_Var],
    "ISLITERAL" => [:_Constraint_or_Var],
    "ISURI" => [:_Constraint_or_Var],
    "SAMETERM" => [:_Constraint_or_Var],
  },
  :PrefixDecl => {
    "PREFIX" => ["PREFIX",
      :PNAME_NS,
      :IRI_REF],
  },
  :PrefixedName => {
    :PNAME_LN => [:PNAME_LN],
    :PNAME_NS => [:PNAME_NS],
  },
  :PrimaryExpression => {
    "(" => [:BrackettedExpression],
    "+" => [:NumericLiteral],
    "-" => [:NumericLiteral],
    "BOUND" => [:BuiltInCall],
    "DATATYPE" => [:BuiltInCall],
    "LANG" => [:BuiltInCall],
    "LANGMATCHES" => [:BuiltInCall],
    "REGEX" => [:BuiltInCall],
    "STR" => [:BuiltInCall],
    :BooleanLiteral => [:BooleanLiteral],
    :DECIMAL => [:NumericLiteral],
    :DOUBLE => [:NumericLiteral],
    :INTEGER => [:NumericLiteral],
    :IRI_REF => [:IRIrefOrFunction],
    :PNAME_LN => [:IRIrefOrFunction],
    :PNAME_NS => [:IRIrefOrFunction],
    :STRING_LITERAL1 => [:RDFLiteral],
    :STRING_LITERAL2 => [:RDFLiteral],
    :STRING_LITERAL_LONG1 => [:RDFLiteral],
    :STRING_LITERAL_LONG2 => [:RDFLiteral],
    :VAR1 => [:Var],
    :VAR2 => [:Var],
    "ISBLANK" => [:BuiltInCall],
    "ISIRI" => [:BuiltInCall],
    "ISLITERAL" => [:BuiltInCall],
    "ISURI" => [:BuiltInCall],
    "SAMETERM" => [:BuiltInCall],
  },
  :Prologue => {
    "ASK" => [:_BaseDecl_Opt,
      :_PrefixDecl_Star],
    "BASE" => [:_BaseDecl_Opt,
      :_PrefixDecl_Star],
    "CONSTRUCT" => [:_BaseDecl_Opt,
      :_PrefixDecl_Star],
    "DESCRIBE" => [:_BaseDecl_Opt,
      :_PrefixDecl_Star],
    "PREFIX" => [:_BaseDecl_Opt,
      :_PrefixDecl_Star],
    "SELECT" => [:_BaseDecl_Opt,
      :_PrefixDecl_Star],
  },
  :PropertyList => {
    "." => [],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "a" => [:PropertyListNotEmpty],
    :IRI_REF => [:PropertyListNotEmpty],
    :PNAME_LN => [:PropertyListNotEmpty],
    :PNAME_NS => [:PropertyListNotEmpty],
    :VAR1 => [:PropertyListNotEmpty],
    :VAR2 => [:PropertyListNotEmpty],
    "{" => [],
    "}" => [],
  },
  :PropertyListNotEmpty => {
    "a" => [:Verb,
      :ObjectList,
      :_SEMI_Verb_ObjectList_Opt_Star],
    :IRI_REF => [:Verb,
      :ObjectList,
      :_SEMI_Verb_ObjectList_Opt_Star],
    :PNAME_LN => [:Verb,
      :ObjectList,
      :_SEMI_Verb_ObjectList_Opt_Star],
    :PNAME_NS => [:Verb,
      :ObjectList,
      :_SEMI_Verb_ObjectList_Opt_Star],
    :VAR1 => [:Verb,
      :ObjectList,
      :_SEMI_Verb_ObjectList_Opt_Star],
    :VAR2 => [:Verb,
      :ObjectList,
      :_SEMI_Verb_ObjectList_Opt_Star],
  },
  :Query => {
    "ASK" => [:Prologue,
      :_SelectQuery_or_ConstructQuery_or_DescribeQuery_or_AskQuery,
      :eof],
    "BASE" => [:Prologue,
      :_SelectQuery_or_ConstructQuery_or_DescribeQuery_or_AskQuery,
      :eof],
    "CONSTRUCT" => [:Prologue,
      :_SelectQuery_or_ConstructQuery_or_DescribeQuery_or_AskQuery,
      :eof],
    "DESCRIBE" => [:Prologue,
      :_SelectQuery_or_ConstructQuery_or_DescribeQuery_or_AskQuery,
      :eof],
    "PREFIX" => [:Prologue,
      :_SelectQuery_or_ConstructQuery_or_DescribeQuery_or_AskQuery,
      :eof],
    "SELECT" => [:Prologue,
      :_SelectQuery_or_ConstructQuery_or_DescribeQuery_or_AskQuery,
      :eof],
  },
  :RDFLiteral => {
    :STRING_LITERAL1 => [:String,
      :_LANGTAG_IRIref_Opt],
    :STRING_LITERAL2 => [:String,
      :_LANGTAG_IRIref_Opt],
    :STRING_LITERAL_LONG1 => [:String,
      :_LANGTAG_IRIref_Opt],
    :STRING_LITERAL_LONG2 => [:String,
      :_LANGTAG_IRIref_Opt],
  },
  :RegexExpression => {
    "REGEX" => ["REGEX",
      "(",
      :Expression,
      ",",
      :Expression,
      :_COMMA_Expression_Opt,
      ")"],
  },
  :RelationalExpression => {
    "!" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "(" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "+" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "-" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "BOUND" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "DATATYPE" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "LANG" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "LANGMATCHES" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "REGEX" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "STR" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :BooleanLiteral => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :DECIMAL => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :DOUBLE => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :INTEGER => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :IRI_REF => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :PNAME_LN => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :PNAME_NS => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :STRING_LITERAL1 => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :STRING_LITERAL2 => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :STRING_LITERAL_LONG1 => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :STRING_LITERAL_LONG2 => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :VAR1 => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    :VAR2 => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "ISBLANK" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "ISIRI" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "ISLITERAL" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "ISURI" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
    "SAMETERM" => [:NumericExpression,
      :_Compare_NumericExpression_Opt],
  },
  :SelectQuery => {
    "SELECT" => ["SELECT",
      :_DISTINCT_OR_REDUCED_Opt,
      :_Var_Plus_or_Star,
      :_DatasetClause_Star,
      :WhereClause,
      :SolutionModifier],
  },
  :SolutionModifier => {
    "LIMIT" => [:_OrderClause_Opt,
      :_LimitOffsetClauses_Opt],
    "OFFSET" => [:_OrderClause_Opt,
      :_LimitOffsetClauses_Opt],
    "ORDER" => [:_OrderClause_Opt,
      :_LimitOffsetClauses_Opt],
    :eof => [:_OrderClause_Opt,
      :_LimitOffsetClauses_Opt],
  },
  :SourceSelector => {
    :IRI_REF => [:IRIref],
    :PNAME_LN => [:IRIref],
    :PNAME_NS => [:IRIref],
  },
  :String => {
    :STRING_LITERAL1 => [:STRING_LITERAL1],
    :STRING_LITERAL2 => [:STRING_LITERAL2],
    :STRING_LITERAL_LONG1 => [:STRING_LITERAL_LONG1],
    :STRING_LITERAL_LONG2 => [:STRING_LITERAL_LONG2],
  },
  :TriplesBlock => {
    "(" => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    "+" => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    "-" => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    "[" => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :ANON => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :BLANK_NODE_LABEL => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :BooleanLiteral => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :DECIMAL => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :DOUBLE => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :INTEGER => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :IRI_REF => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :NIL => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :PNAME_LN => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :PNAME_NS => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :STRING_LITERAL1 => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :STRING_LITERAL2 => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :STRING_LITERAL_LONG1 => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :STRING_LITERAL_LONG2 => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :VAR1 => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
    :VAR2 => [:TriplesSameSubject,
      :_Dot_TriplesBlock_Opt_Opt],
  },
  :TriplesNode => {
    "(" => [:Collection],
    "[" => [:BlankNodePropertyList],
  },
  :TriplesSameSubject => {
    "(" => [:TriplesNode,
      :PropertyList],
    "+" => [:VarOrTerm,
      :PropertyListNotEmpty],
    "-" => [:VarOrTerm,
      :PropertyListNotEmpty],
    "[" => [:TriplesNode,
      :PropertyList],
    :ANON => [:VarOrTerm,
      :PropertyListNotEmpty],
    :BLANK_NODE_LABEL => [:VarOrTerm,
      :PropertyListNotEmpty],
    :BooleanLiteral => [:VarOrTerm,
      :PropertyListNotEmpty],
    :DECIMAL => [:VarOrTerm,
      :PropertyListNotEmpty],
    :DOUBLE => [:VarOrTerm,
      :PropertyListNotEmpty],
    :INTEGER => [:VarOrTerm,
      :PropertyListNotEmpty],
    :IRI_REF => [:VarOrTerm,
      :PropertyListNotEmpty],
    :NIL => [:VarOrTerm,
      :PropertyListNotEmpty],
    :PNAME_LN => [:VarOrTerm,
      :PropertyListNotEmpty],
    :PNAME_NS => [:VarOrTerm,
      :PropertyListNotEmpty],
    :STRING_LITERAL1 => [:VarOrTerm,
      :PropertyListNotEmpty],
    :STRING_LITERAL2 => [:VarOrTerm,
      :PropertyListNotEmpty],
    :STRING_LITERAL_LONG1 => [:VarOrTerm,
      :PropertyListNotEmpty],
    :STRING_LITERAL_LONG2 => [:VarOrTerm,
      :PropertyListNotEmpty],
    :VAR1 => [:VarOrTerm,
      :PropertyListNotEmpty],
    :VAR2 => [:VarOrTerm,
      :PropertyListNotEmpty],
  },
  :UnaryExpression => {
    "!" => ["!",
      :PrimaryExpression],
    "(" => [:PrimaryExpression],
    "+" => ["+", :PrimaryExpression],   # GK: Added back due to conflict
    "-" => ["-", :PrimaryExpression],   # GK: Added back due to conflict
    "BOUND" => [:PrimaryExpression],
    "DATATYPE" => [:PrimaryExpression],
    "LANG" => [:PrimaryExpression],
    "LANGMATCHES" => [:PrimaryExpression],
    "REGEX" => [:PrimaryExpression],
    "STR" => [:PrimaryExpression],
    :BooleanLiteral => [:PrimaryExpression],
    :DECIMAL => [:PrimaryExpression],
    :DOUBLE => [:PrimaryExpression],
    :INTEGER => [:PrimaryExpression],
    :IRI_REF => [:PrimaryExpression],
    :PNAME_LN => [:PrimaryExpression],
    :PNAME_NS => [:PrimaryExpression],
    :STRING_LITERAL1 => [:PrimaryExpression],
    :STRING_LITERAL2 => [:PrimaryExpression],
    :STRING_LITERAL_LONG1 => [:PrimaryExpression],
    :STRING_LITERAL_LONG2 => [:PrimaryExpression],
    :VAR1 => [:PrimaryExpression],
    :VAR2 => [:PrimaryExpression],
    "ISBLANK" => [:PrimaryExpression],
    "ISIRI" => [:PrimaryExpression],
    "ISLITERAL" => [:PrimaryExpression],
    "ISURI" => [:PrimaryExpression],
    "SAMETERM" => [:PrimaryExpression],
  },
  :ValueLogical => {
    "!" => [:RelationalExpression],
    "(" => [:RelationalExpression],
    "+" => [:RelationalExpression],
    "-" => [:RelationalExpression],
    "BOUND" => [:RelationalExpression],
    "DATATYPE" => [:RelationalExpression],
    "LANG" => [:RelationalExpression],
    "LANGMATCHES" => [:RelationalExpression],
    "REGEX" => [:RelationalExpression],
    "STR" => [:RelationalExpression],
    :BooleanLiteral => [:RelationalExpression],
    :DECIMAL => [:RelationalExpression],
    :DOUBLE => [:RelationalExpression],
    :INTEGER => [:RelationalExpression],
    :IRI_REF => [:RelationalExpression],
    :PNAME_LN => [:RelationalExpression],
    :PNAME_NS => [:RelationalExpression],
    :STRING_LITERAL1 => [:RelationalExpression],
    :STRING_LITERAL2 => [:RelationalExpression],
    :STRING_LITERAL_LONG1 => [:RelationalExpression],
    :STRING_LITERAL_LONG2 => [:RelationalExpression],
    :VAR1 => [:RelationalExpression],
    :VAR2 => [:RelationalExpression],
    "ISBLANK" => [:RelationalExpression],
    "ISIRI" => [:RelationalExpression],
    "ISLITERAL" => [:RelationalExpression],
    "ISURI" => [:RelationalExpression],
    "SAMETERM" => [:RelationalExpression],
  },
  :Var => {
    :VAR1 => [:VAR1],
    :VAR2 => [:VAR2],
  },
  :VarOrIRIref => {
    :IRI_REF => [:IRIref],
    :PNAME_LN => [:IRIref],
    :PNAME_NS => [:IRIref],
    :VAR1 => [:Var],
    :VAR2 => [:Var],
  },
  :VarOrTerm => {
    "+" => [:GraphTerm],
    "-" => [:GraphTerm],
    :ANON => [:GraphTerm],
    :BLANK_NODE_LABEL => [:GraphTerm],
    :BooleanLiteral => [:GraphTerm],
    :DECIMAL => [:GraphTerm],
    :DOUBLE => [:GraphTerm],
    :INTEGER => [:GraphTerm],
    :IRI_REF => [:GraphTerm],
    :NIL => [:GraphTerm],
    :PNAME_LN => [:GraphTerm],
    :PNAME_NS => [:GraphTerm],
    :STRING_LITERAL1 => [:GraphTerm],
    :STRING_LITERAL2 => [:GraphTerm],
    :STRING_LITERAL_LONG1 => [:GraphTerm],
    :STRING_LITERAL_LONG2 => [:GraphTerm],
    :VAR1 => [:Var],
    :VAR2 => [:Var],
  },
  :Verb => {
    "a" => ["a"],
    :IRI_REF => [:VarOrIRIref],
    :PNAME_LN => [:VarOrIRIref],
    :PNAME_NS => [:VarOrIRIref],
    :VAR1 => [:VarOrIRIref],
    :VAR2 => [:VarOrIRIref],
  },
  :WhereClause => {
    "WHERE" => [:_WHERE_Opt,
      :GroupGraphPattern],
    "{" => [:_WHERE_Opt,
      :GroupGraphPattern],
  },
  :_AND_ValueLogical => {
    "&&" => ["&&",
      :ValueLogical],
  },
  :_AND_ValueLogical_Star => {
    "&&" => [:_AND_ValueLogical,
      :_AND_ValueLogical_Star],
    ")" => [],
    "," => [],
    "||" => [],
  },
  :_ASC_Or_DESC => {
    "ASC" => ["ASC"],
    "DESC" => ["DESC"],
  },
  :_ASC_Or_DESC_BrackettedExpression => {
    "ASC" => [:_ASC_Or_DESC,
      :BrackettedExpression],
    "DESC" => [:_ASC_Or_DESC,
      :BrackettedExpression],
  },
  :_Add_Sub_MultiplicativeExpression_Star => {
    "!=" => [],
    "&&" => [],
    ")" => [],
    "+" => ["+",
      :MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "," => [],
    "-" => ["-",
      :MultiplicativeExpression,
      :_Add_Sub_MultiplicativeExpression_Star],
    "<" => [],
    "<=" => [],
    "=" => [],
    ">=" => [],
    ">" => [],
    "||" => [],
  },
  :_ArgList_Opt => {
    "!=" => [],
    "&&" => [],
    "(" => [:ArgList],
    ")" => [],
    "*" => [],
    "+" => [],
    "," => [],
    "-" => [],
    "/" => [],
    "<" => [],
    "<=" => [],
    "=" => [],
    ">=" => [],
    ">" => [],
    :NIL => [:ArgList],
    "||" => [],
  },
  :_BaseDecl_Opt => {
    "ASK" => [],
    "BASE" => [:BaseDecl],
    "CONSTRUCT" => [],
    "DESCRIBE" => [],
    "PREFIX" => [],
    "SELECT" => [],
  },
  :_COMMA_Expression_Opt => {
    ")" => [],
    "," => [",",
      :Expression],
  },
  :_COMMA_Expression_Star => {
    ")" => [],
    "," => [",",
      :Expression],
  },
  :_COMMA_Object => {
    "," => [",",
      :Object],
  },
  :_COMMA_Object_Star => {
    "," => [:_COMMA_Object,
      :_COMMA_Object_Star],
    "." => [],
    ";" => [],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "]" => [],
    "{" => [],
    "}" => [],
  },
  :_Compare_NumericExpression_Opt => {
    "!=" => ["!=",
      :NumericExpression],
    "&&" => [],
    ")" => [],
    "," => [],
    "<" => ["<",
      :NumericExpression],
    "<=" => ["<=",
      :NumericExpression],
    "=" => ["=",
      :NumericExpression],
    ">=" => [">=",
      :NumericExpression],
    ">" => [">",
      :NumericExpression],
    "||" => [],
  },
  :_Constraint_or_Var => {
    "(" => [:Constraint],
    "BOUND" => [:Constraint],
    "DATATYPE" => [:Constraint],
    "LANG" => [:Constraint],
    "LANGMATCHES" => [:Constraint],
    "REGEX" => [:Constraint],
    "STR" => [:Constraint],
    :IRI_REF => [:Constraint],
    :PNAME_LN => [:Constraint],
    :PNAME_NS => [:Constraint],
    :VAR1 => [:Var],
    :VAR2 => [:Var],
    "ISBLANK" => [:Constraint],
    "ISIRI" => [:Constraint],
    "ISLITERAL" => [:Constraint],
    "ISURI" => [:Constraint],
    "SAMETERM" => [:Constraint],
  },
  :_ConstructTriples_Opt => {
    "(" => [:ConstructTriples],
    "+" => [:ConstructTriples],
    "-" => [:ConstructTriples],
    "[" => [:ConstructTriples],
    :ANON => [:ConstructTriples],
    :BLANK_NODE_LABEL => [:ConstructTriples],
    :BooleanLiteral => [:ConstructTriples],
    :DECIMAL => [:ConstructTriples],
    :DOUBLE => [:ConstructTriples],
    :INTEGER => [:ConstructTriples],
    :IRI_REF => [:ConstructTriples],
    :NIL => [:ConstructTriples],
    :PNAME_LN => [:ConstructTriples],
    :PNAME_NS => [:ConstructTriples],
    :STRING_LITERAL1 => [:ConstructTriples],
    :STRING_LITERAL2 => [:ConstructTriples],
    :STRING_LITERAL_LONG1 => [:ConstructTriples],
    :STRING_LITERAL_LONG2 => [:ConstructTriples],
    :VAR1 => [:ConstructTriples],
    :VAR2 => [:ConstructTriples],
    "}" => [],
  },
  :_DISTINCT_OR_REDUCED_Opt => {
    "*" => [],
    "DISTINCT" => ["DISTINCT"],
    "REDUCED" => ["REDUCED"],
    :VAR1 => [],
    :VAR2 => [],
  },
  :_DOT_ConstructTriples_Opt_Opt => {
    "." => [".",
      :_ConstructTriples_Opt],
    "}" => [],
  },
  :_DOT_Opt => {
    "(" => [],
    "+" => [],
    "-" => [],
    "." => ["."],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "[" => [],
    :ANON => [],
    :BLANK_NODE_LABEL => [],
    :BooleanLiteral => [],
    :DECIMAL => [],
    :DOUBLE => [],
    :INTEGER => [],
    :IRI_REF => [],
    :NIL => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    :VAR1 => [],
    :VAR2 => [],
    "{" => [],
    "}" => [],
  },
  :_DatasetClause_Star => {
    "FROM" => [:DatasetClause,
      :_DatasetClause_Star],
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [],
    "WHERE" => [],
    :eof => [],
    "{" => [],
  },
  :_DefaultGraphClause_or_NamedGraphClause => {
    "NAMED" => [:NamedGraphClause],
    :IRI_REF => [:DefaultGraphClause],
    :PNAME_LN => [:DefaultGraphClause],
    :PNAME_NS => [:DefaultGraphClause],
  },
  :_Dot_TriplesBlock_Opt_Opt => {
    "." => [".",
      :_TriplesBlock_Opt],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "{" => [],
    "}" => [],
  },
  :_Expression_COMMA_Expression_Star => {
    "!" => [:Expression,
      :_COMMA_Expression_Star],
    "(" => [:Expression,
      :_COMMA_Expression_Star],
    "+" => [:Expression,
      :_COMMA_Expression_Star],
    "-" => [:Expression,
      :_COMMA_Expression_Star],
    "BOUND" => [:Expression,
      :_COMMA_Expression_Star],
    "DATATYPE" => [:Expression,
      :_COMMA_Expression_Star],
    "LANG" => [:Expression,
      :_COMMA_Expression_Star],
    "LANGMATCHES" => [:Expression,
      :_COMMA_Expression_Star],
    "REGEX" => [:Expression,
      :_COMMA_Expression_Star],
    "STR" => [:Expression,
      :_COMMA_Expression_Star],
    :BooleanLiteral => [:Expression,
      :_COMMA_Expression_Star],
    :DECIMAL => [:Expression,
      :_COMMA_Expression_Star],
    :DOUBLE => [:Expression,
      :_COMMA_Expression_Star],
    :INTEGER => [:Expression,
      :_COMMA_Expression_Star],
    :IRI_REF => [:Expression,
      :_COMMA_Expression_Star],
    :PNAME_LN => [:Expression,
      :_COMMA_Expression_Star],
    :PNAME_NS => [:Expression,
      :_COMMA_Expression_Star],
    :STRING_LITERAL1 => [:Expression,
      :_COMMA_Expression_Star],
    :STRING_LITERAL2 => [:Expression,
      :_COMMA_Expression_Star],
    :STRING_LITERAL_LONG1 => [:Expression,
      :_COMMA_Expression_Star],
    :STRING_LITERAL_LONG2 => [:Expression,
      :_COMMA_Expression_Star],
    :VAR1 => [:Expression,
      :_COMMA_Expression_Star],
    :VAR2 => [:Expression,
      :_COMMA_Expression_Star],
    "ISBLANK" => [:Expression,
      :_COMMA_Expression_Star],
    "ISIRI" => [:Expression,
      :_COMMA_Expression_Star],
    "ISLITERAL" => [:Expression,
      :_COMMA_Expression_Star],
    "ISURI" => [:Expression,
      :_COMMA_Expression_Star],
    "SAMETERM" => [:Expression,
      :_COMMA_Expression_Star],
  },
  :_GraphNode_Opt => {
    "(" => [:GraphNode,
      :_GraphNode_Opt],
    ")" => [],
    "+" => [:GraphNode,
      :_GraphNode_Opt],
    "-" => [:GraphNode,
      :_GraphNode_Opt],
    "[" => [:GraphNode,
      :_GraphNode_Opt],
    :ANON => [:GraphNode,
      :_GraphNode_Opt],
    :BLANK_NODE_LABEL => [:GraphNode,
      :_GraphNode_Opt],
    :BooleanLiteral => [:GraphNode,
      :_GraphNode_Opt],
    :DECIMAL => [:GraphNode,
      :_GraphNode_Opt],
    :DOUBLE => [:GraphNode,
      :_GraphNode_Opt],
    :INTEGER => [:GraphNode,
      :_GraphNode_Opt],
    :IRI_REF => [:GraphNode,
      :_GraphNode_Opt],
    :NIL => [:GraphNode,
      :_GraphNode_Opt],
    :PNAME_LN => [:GraphNode,
      :_GraphNode_Opt],
    :PNAME_NS => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL1 => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL2 => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL_LONG1 => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL_LONG2 => [:GraphNode,
      :_GraphNode_Opt],
    :VAR1 => [:GraphNode,
      :_GraphNode_Opt],
    :VAR2 => [:GraphNode,
      :_GraphNode_Opt],
  },
  :_GraphNode_Plus => {
    "(" => [:GraphNode,
      :_GraphNode_Opt],
    "+" => [:GraphNode,
      :_GraphNode_Opt],
    "-" => [:GraphNode,
      :_GraphNode_Opt],
    "[" => [:GraphNode,
      :_GraphNode_Opt],
    :ANON => [:GraphNode,
      :_GraphNode_Opt],
    :BLANK_NODE_LABEL => [:GraphNode,
      :_GraphNode_Opt],
    :BooleanLiteral => [:GraphNode,
      :_GraphNode_Opt],
    :DECIMAL => [:GraphNode,
      :_GraphNode_Opt],
    :DOUBLE => [:GraphNode,
      :_GraphNode_Opt],
    :INTEGER => [:GraphNode,
      :_GraphNode_Opt],
    :IRI_REF => [:GraphNode,
      :_GraphNode_Opt],
    :NIL => [:GraphNode,
      :_GraphNode_Opt],
    :PNAME_LN => [:GraphNode,
      :_GraphNode_Opt],
    :PNAME_NS => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL1 => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL2 => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL_LONG1 => [:GraphNode,
      :_GraphNode_Opt],
    :STRING_LITERAL_LONG2 => [:GraphNode,
      :_GraphNode_Opt],
    :VAR1 => [:GraphNode,
      :_GraphNode_Opt],
    :VAR2 => [:GraphNode,
      :_GraphNode_Opt],
  },
  :_GraphPatternNotTriples_or_Filter => {
    "FILTER" => [:Filter],
    "GRAPH" => [:GraphPatternNotTriples],
    "OPTIONAL" => [:GraphPatternNotTriples],
    "{" => [:GraphPatternNotTriples],
  },
  :_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt => {
    "FILTER" => [:_GraphPatternNotTriples_or_Filter,
      :_DOT_Opt,
      :_TriplesBlock_Opt],
    "GRAPH" => [:_GraphPatternNotTriples_or_Filter,
      :_DOT_Opt,
      :_TriplesBlock_Opt],
    "OPTIONAL" => [:_GraphPatternNotTriples_or_Filter,
      :_DOT_Opt,
      :_TriplesBlock_Opt],
    "{" => [:_GraphPatternNotTriples_or_Filter,
      :_DOT_Opt,
      :_TriplesBlock_Opt],
  },
  :_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt_Star => {
    "FILTER" => [:_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt,
      :_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt_Star],
    "GRAPH" => [:_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt,
      :_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt_Star],
    "OPTIONAL" => [:_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt,
      :_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt_Star],
    "{" => [:_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt,
      :_GraphPatternNotTriples_or_Filter_Dot_Opt_TriplesBlock_Opt_Star],
    "}" => [],
  },
  :_LANGTAG_IRIref_Opt => {
    "!=" => [],
    "&&" => [],
    "(" => [],
    ")" => [],
    "*" => [],
    "+" => [],
    "," => [],
    "-" => [],
    "." => [],
    "/" => [],
    ";" => [],
    "<" => [],
    "<=" => [],
    "=" => [],
    ">=" => [],
    ">" => [],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "[" => [],
    "]" => [],
    "^^" => ["^^",
      :IRIref],
    "a" => [],
    :ANON => [],
    :BLANK_NODE_LABEL => [],
    :BooleanLiteral => [],
    :DECIMAL => [],
    :DOUBLE => [],
    :INTEGER => [],
    :IRI_REF => [],
    :LANGTAG => [:LANGTAG],
    :NIL => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    :VAR1 => [],
    :VAR2 => [],
    "{" => [],
    "||" => [],
    "}" => [],
  },
  :_LimitClause_Opt => {
    "LIMIT" => [:LimitClause],
    :eof => [],
  },
  :_LimitOffsetClauses_Opt => {
    "LIMIT" => [:LimitOffsetClauses],
    "OFFSET" => [:LimitOffsetClauses],
    :eof => [],
  },
  :_Mul_Div_UnaryExpression_Star => {
    "!=" => [],
    "&&" => [],
    ")" => [],
    "*" => ["*",
      :UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "+" => [],
    "," => [],
    "-" => [],
    "/" => ["/",
      :UnaryExpression,
      :_Mul_Div_UnaryExpression_Star],
    "<" => [],
    "<=" => [],
    "=" => [],
    ">=" => [],
    ">" => [],
    "||" => [],
  },
  :_OR_ConditionalAndExpression => {
    "||" => ["||",
      :ConditionalAndExpression],
  },
  :_OR_ConditionalAndExpression_Star => {
    ")" => [],
    "," => [],
    "||" => [:_OR_ConditionalAndExpression,
      :_OR_ConditionalAndExpression_Star],
  },
  :_OffsetClause_Opt => {
    "OFFSET" => [:OffsetClause],
    :eof => [],
  },
  :_OrderClause_Opt => {
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [:OrderClause],
    :eof => [],
  },
  :_OrderCondition_Plus => {
    "(" => [:OrderCondition,
      :_OrderCondition_Plus],
    "ASC" => [:OrderCondition,
      :_OrderCondition_Plus],
    "BOUND" => [:OrderCondition,
      :_OrderCondition_Plus],
    "DATATYPE" => [:OrderCondition,
      :_OrderCondition_Plus],
    "DESC" => [:OrderCondition,
      :_OrderCondition_Plus],
    "LANG" => [:OrderCondition,
      :_OrderCondition_Plus],
    "LANGMATCHES" => [:OrderCondition,
      :_OrderCondition_Plus],
    "LIMIT" => [],
    "OFFSET" => [],
    "REGEX" => [:OrderCondition,
      :_OrderCondition_Plus],
    "STR" => [:OrderCondition,
      :_OrderCondition_Plus],
    :eof => [],
    :IRI_REF => [:OrderCondition,
      :_OrderCondition_Plus],
    :PNAME_LN => [:OrderCondition,
      :_OrderCondition_Plus],
    :PNAME_NS => [:OrderCondition,
      :_OrderCondition_Plus],
    :VAR1 => [:OrderCondition,
      :_OrderCondition_Plus],
    :VAR2 => [:OrderCondition,
      :_OrderCondition_Plus],
    "ISBLANK" => [:OrderCondition,
      :_OrderCondition_Plus],
    "ISIRI" => [:OrderCondition,
      :_OrderCondition_Plus],
    "ISLITERAL" => [:OrderCondition,
      :_OrderCondition_Plus],
    "ISURI" => [:OrderCondition,
      :_OrderCondition_Plus],
    "SAMETERM" => [:OrderCondition,
      :_OrderCondition_Plus],
  },
  :_PrefixDecl_Star => {
    "ASK" => [],
    "CONSTRUCT" => [],
    "DESCRIBE" => [],
    "PREFIX" => [:PrefixDecl,
      :_PrefixDecl_Star],
    "SELECT" => [],
  },
  :_SEMI_Verb_ObjectList_Opt => {
    ";" => [";",
      :_Verb_ObjectList_Opt],
  },
  :_SEMI_Verb_ObjectList_Opt_Star => {
    "." => [],
    ";" => [:_SEMI_Verb_ObjectList_Opt,
      :_SEMI_Verb_ObjectList_Opt_Star],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "]" => [],
    "{" => [],
    "}" => [],
  },
  :_SelectQuery_or_ConstructQuery_or_DescribeQuery_or_AskQuery => {
    "ASK" => [:AskQuery],
    "CONSTRUCT" => [:ConstructQuery],
    "DESCRIBE" => [:DescribeQuery],
    "SELECT" => [:SelectQuery],
  },
  :_TriplesBlock_Opt => {
    "(" => [:TriplesBlock],
    "+" => [:TriplesBlock],
    "-" => [:TriplesBlock],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "[" => [:TriplesBlock],
    :ANON => [:TriplesBlock],
    :BLANK_NODE_LABEL => [:TriplesBlock],
    :BooleanLiteral => [:TriplesBlock],
    :DECIMAL => [:TriplesBlock],
    :DOUBLE => [:TriplesBlock],
    :INTEGER => [:TriplesBlock],
    :IRI_REF => [:TriplesBlock],
    :NIL => [:TriplesBlock],
    :PNAME_LN => [:TriplesBlock],
    :PNAME_NS => [:TriplesBlock],
    :STRING_LITERAL1 => [:TriplesBlock],
    :STRING_LITERAL2 => [:TriplesBlock],
    :STRING_LITERAL_LONG1 => [:TriplesBlock],
    :STRING_LITERAL_LONG2 => [:TriplesBlock],
    :VAR1 => [:TriplesBlock],
    :VAR2 => [:TriplesBlock],
    "{" => [],
    "}" => [],
  },
  :_UNION_GroupGraphPattern => {
    "UNION" => ["UNION",
      :GroupGraphPattern],
  },
  :_UNION_GroupGraphPattern_Star => {
    "(" => [],
    "+" => [],
    "-" => [],
    "." => [],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "UNION" => [:_UNION_GroupGraphPattern,
      :_UNION_GroupGraphPattern_Star],
    "[" => [],
    :ANON => [],
    :BLANK_NODE_LABEL => [],
    :BooleanLiteral => [],
    :DECIMAL => [],
    :DOUBLE => [],
    :INTEGER => [],
    :IRI_REF => [],
    :NIL => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    :VAR1 => [],
    :VAR2 => [],
    "{" => [],
    "}" => [],
  },
  :_VarOrIRIRef_Plus => {
    "FROM" => [],
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [],
    "WHERE" => [],
    :eof => [],
    :IRI_REF => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :PNAME_LN => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :PNAME_NS => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :VAR1 => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :VAR2 => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    "{" => [],
  },
  :_VarOrIRIref_Plus_or_Star => {
    "*" => ["*"],
    :IRI_REF => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :PNAME_LN => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :PNAME_NS => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :VAR1 => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
    :VAR2 => [:VarOrIRIref,
      :_VarOrIRIRef_Plus],
  },
  :_Var_Plus => {
    "FROM" => [],
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [],
    "WHERE" => [],
    :eof => [],
    :VAR1 => [:Var,
      :_Var_Plus],
    :VAR2 => [:Var,
      :_Var_Plus],
    "{" => [],
  },
  :_Var_Plus_or_Star => {
    "*" => ["*"],
    :VAR1 => [:Var,
      :_Var_Plus],
    :VAR2 => [:Var,
      :_Var_Plus],
  },
  :_Verb_ObjectList_Opt => {
    "." => [],
    ";" => [],
    "FILTER" => [],
    "GRAPH" => [],
    "OPTIONAL" => [],
    "]" => [],
    "a" => [:Verb,
      :ObjectList],
    :IRI_REF => [:Verb,
      :ObjectList],
    :PNAME_LN => [:Verb,
      :ObjectList],
    :PNAME_NS => [:Verb,
      :ObjectList],
    :VAR1 => [:Verb,
      :ObjectList],
    :VAR2 => [:Verb,
      :ObjectList],
    "{" => [],
    "}" => [],
  },
  :_WHERE_Opt => {
    "WHERE" => ["WHERE"],
    "{" => [],
  },
  :_WhereClause_Opt => {
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [],
    "WHERE" => [:WhereClause],
    :eof => [],
    "{" => [:WhereClause],
  },
}