Module: SPARQL::Grammar::Meta

Included in:
Parser
Defined in:
vendor/bundler/ruby/2.5.0/bundler/gems/sparql-bb59900f675b/lib/sparql/grammar/meta.rb

Overview

This file is automatically generated by /Users/gregg/.rvm/gems/ruby-2.3.3/bundler/gems/ebnf-bb4bd2df879d/lib/ebnf/base.rb BRANCH derived from etc/sparql11.bnf

Constant Summary

START =
:QueryUnit
BRANCH =
{
  :Add => {
    "ADD" => ["ADD", :_Add_1, :GraphOrDefault, "TO", :GraphOrDefault],
  },
  :_Add_1 => {
    "DEFAULT" => [],
    "GRAPH" => [],
    :IRIREF => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "SILENT" => ["SILENT"],
  },
  :AdditiveExpression => {
    "!" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "(" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "+" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "-" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "ABS" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "AVG" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "BNODE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "BOUND" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "CEIL" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "COALESCE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "CONCAT" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "CONTAINS" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "COUNT" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "DATATYPE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "DAY" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :DECIMAL => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :DECIMAL_NEGATIVE => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :DECIMAL_POSITIVE => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :DOUBLE => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :DOUBLE_NEGATIVE => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :DOUBLE_POSITIVE => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "ENCODE_FOR_URI" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "EXISTS" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "FLOOR" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "GROUP_CONCAT" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "HOURS" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "IF" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :INTEGER => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :INTEGER_NEGATIVE => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :INTEGER_POSITIVE => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "IRI" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :IRIREF => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "LANG" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "LANGMATCHES" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "LCASE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "MAX" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "MD5" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "MIN" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "MINUTES" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "MONTH" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "NOT" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "NOW" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :PNAME_LN => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :PNAME_NS => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "RAND" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "REGEX" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "REPLACE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "ROUND" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SAMPLE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SECONDS" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SHA1" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SHA224" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SHA256" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SHA384" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SHA512" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STR" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRAFTER" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRBEFORE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRDT" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRENDS" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :STRING_LITERAL1 => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :STRING_LITERAL2 => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :STRING_LITERAL_LONG1 => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :STRING_LITERAL_LONG2 => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRLANG" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRLEN" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRSTARTS" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "STRUUID" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SUBSTR" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "SUM" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "TIMEZONE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "TZ" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "UCASE" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "URI" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "UUID" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :VAR1 => [:MultiplicativeExpression, :_AdditiveExpression_1],
    :VAR2 => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "YEAR" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "false" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "isBLANK" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "isIRI" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "isLITERAL" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "isNUMERIC" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "isURI" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "sameTerm" => [:MultiplicativeExpression, :_AdditiveExpression_1],
    "true" => [:MultiplicativeExpression, :_AdditiveExpression_1],
  },
  :_AdditiveExpression_1 => {
    "!=" => [],
    "&&" => [],
    ")" => [],
    "+" => [:_AdditiveExpression_3],
    "," => [],
    "-" => [:_AdditiveExpression_3],
    ";" => [],
    "<" => [],
    "<=" => [],
    "=" => [],
    ">" => [],
    ">=" => [],
    "AS" => [],
    :DECIMAL_NEGATIVE => [:_AdditiveExpression_3],
    :DECIMAL_POSITIVE => [:_AdditiveExpression_3],
    :DOUBLE_NEGATIVE => [:_AdditiveExpression_3],
    :DOUBLE_POSITIVE => [:_AdditiveExpression_3],
    "IN" => [],
    :INTEGER_NEGATIVE => [:_AdditiveExpression_3],
    :INTEGER_POSITIVE => [:_AdditiveExpression_3],
    "NOT" => [],
    "||" => [],
  },
  :_AdditiveExpression_10 => {
    "*" => ["*", :UnaryExpression],
  },
  :_AdditiveExpression_11 => {
    "/" => ["/", :UnaryExpression],
  },
  :_AdditiveExpression_2 => {
    "+" => [:_AdditiveExpression_4],
    "-" => [:_AdditiveExpression_5],
    :DECIMAL_NEGATIVE => [:_AdditiveExpression_6],
    :DECIMAL_POSITIVE => [:_AdditiveExpression_6],
    :DOUBLE_NEGATIVE => [:_AdditiveExpression_6],
    :DOUBLE_POSITIVE => [:_AdditiveExpression_6],
    :INTEGER_NEGATIVE => [:_AdditiveExpression_6],
    :INTEGER_POSITIVE => [:_AdditiveExpression_6],
  },
  :_AdditiveExpression_3 => {
    "+" => [:_AdditiveExpression_2, :_AdditiveExpression_1],
    "-" => [:_AdditiveExpression_2, :_AdditiveExpression_1],
    :DECIMAL_NEGATIVE => [:_AdditiveExpression_2, :_AdditiveExpression_1],
    :DECIMAL_POSITIVE => [:_AdditiveExpression_2, :_AdditiveExpression_1],
    :DOUBLE_NEGATIVE => [:_AdditiveExpression_2, :_AdditiveExpression_1],
    :DOUBLE_POSITIVE => [:_AdditiveExpression_2, :_AdditiveExpression_1],
    :INTEGER_NEGATIVE => [:_AdditiveExpression_2, :_AdditiveExpression_1],
    :INTEGER_POSITIVE => [:_AdditiveExpression_2, :_AdditiveExpression_1],
  },
  :_AdditiveExpression_4 => {
    "+" => ["+", :MultiplicativeExpression],
  },
  :_AdditiveExpression_5 => {
    "-" => ["-", :MultiplicativeExpression],
  },
  :_AdditiveExpression_6 => {
    :DECIMAL_NEGATIVE => [:_AdditiveExpression_7, :_AdditiveExpression_8],
    :DECIMAL_POSITIVE => [:_AdditiveExpression_7, :_AdditiveExpression_8],
    :DOUBLE_NEGATIVE => [:_AdditiveExpression_7, :_AdditiveExpression_8],
    :DOUBLE_POSITIVE => [:_AdditiveExpression_7, :_AdditiveExpression_8],
    :INTEGER_NEGATIVE => [:_AdditiveExpression_7, :_AdditiveExpression_8],
    :INTEGER_POSITIVE => [:_AdditiveExpression_7, :_AdditiveExpression_8],
  },
  :_AdditiveExpression_7 => {
    :DECIMAL_NEGATIVE => [:NumericLiteralNegative],
    :DECIMAL_POSITIVE => [:NumericLiteralPositive],
    :DOUBLE_NEGATIVE => [:NumericLiteralNegative],
    :DOUBLE_POSITIVE => [:NumericLiteralPositive],
    :INTEGER_NEGATIVE => [:NumericLiteralNegative],
    :INTEGER_POSITIVE => [:NumericLiteralPositive],
  },
  :_AdditiveExpression_8 => {
    "!=" => [],
    "&&" => [],
    ")" => [],
    "*" => [:_AdditiveExpression_9],
    "+" => [],
    "," => [],
    "-" => [],
    "/" => [:_AdditiveExpression_9],
    ";" => [],
    "<" => [],
    "<=" => [],
    "=" => [],
    ">" => [],
    ">=" => [],
    "AS" => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "IN" => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "NOT" => [],
    "||" => [],
  },
  :_AdditiveExpression_9 => {
    "*" => [:_AdditiveExpression_10],
    "/" => [:_AdditiveExpression_11],
  },
  :Aggregate => {
    "AVG" => [:_Aggregate_5],
    "COUNT" => [:_Aggregate_1],
    "GROUP_CONCAT" => [:_Aggregate_7],
    "MAX" => [:_Aggregate_4],
    "MIN" => [:_Aggregate_3],
    "SAMPLE" => [:_Aggregate_6],
    "SUM" => [:_Aggregate_2],
  },
  :_Aggregate_1 => {
    "COUNT" => ["COUNT", "(", :_Aggregate_8, :_Aggregate_9, ")"],
  },
  :_Aggregate_10 => {
    "!" => [],
    "(" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_Aggregate_11 => {
    "!" => [],
    "(" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_Aggregate_12 => {
    "!" => [],
    "(" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_Aggregate_13 => {
    "!" => [],
    "(" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_Aggregate_14 => {
    "!" => [],
    "(" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_Aggregate_15 => {
    "!" => [],
    "(" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_Aggregate_16 => {
    ")" => [],
    ";" => [:_Aggregate_17],
  },
  :_Aggregate_17 => {
    ";" => [";", "SEPARATOR", "=", :String],
  },
  :_Aggregate_2 => {
    "SUM" => ["SUM", "(", :_Aggregate_10, :Expression, ")"],
  },
  :_Aggregate_3 => {
    "MIN" => ["MIN", "(", :_Aggregate_11, :Expression, ")"],
  },
  :_Aggregate_4 => {
    "MAX" => ["MAX", "(", :_Aggregate_12, :Expression, ")"],
  },
  :_Aggregate_5 => {
    "AVG" => ["AVG", "(", :_Aggregate_13, :Expression, ")"],
  },
  :_Aggregate_6 => {
    "SAMPLE" => ["SAMPLE", "(", :_Aggregate_14, :Expression, ")"],
  },
  :_Aggregate_7 => {
    "GROUP_CONCAT" => ["GROUP_CONCAT", "(", :_Aggregate_15, :Expression, :_Aggregate_16, ")"],
  },
  :_Aggregate_8 => {
    "!" => [],
    "(" => [],
    "*" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_Aggregate_9 => {
    "!" => [:Expression],
    "(" => [:Expression],
    "*" => ["*"],
    "+" => [:Expression],
    "-" => [:Expression],
    "ABS" => [:Expression],
    "AVG" => [:Expression],
    "BNODE" => [:Expression],
    "BOUND" => [:Expression],
    "CEIL" => [:Expression],
    "COALESCE" => [:Expression],
    "CONCAT" => [:Expression],
    "CONTAINS" => [:Expression],
    "COUNT" => [:Expression],
    "DATATYPE" => [:Expression],
    "DAY" => [:Expression],
    :DECIMAL => [:Expression],
    :DECIMAL_NEGATIVE => [:Expression],
    :DECIMAL_POSITIVE => [:Expression],
    :DOUBLE => [:Expression],
    :DOUBLE_NEGATIVE => [:Expression],
    :DOUBLE_POSITIVE => [:Expression],
    "ENCODE_FOR_URI" => [:Expression],
    "EXISTS" => [:Expression],
    "FLOOR" => [:Expression],
    "GROUP_CONCAT" => [:Expression],
    "HOURS" => [:Expression],
    "IF" => [:Expression],
    :INTEGER => [:Expression],
    :INTEGER_NEGATIVE => [:Expression],
    :INTEGER_POSITIVE => [:Expression],
    "IRI" => [:Expression],
    :IRIREF => [:Expression],
    "LANG" => [:Expression],
    "LANGMATCHES" => [:Expression],
    "LCASE" => [:Expression],
    "MAX" => [:Expression],
    "MD5" => [:Expression],
    "MIN" => [:Expression],
    "MINUTES" => [:Expression],
    "MONTH" => [:Expression],
    "NOT" => [:Expression],
    "NOW" => [:Expression],
    :PNAME_LN => [:Expression],
    :PNAME_NS => [:Expression],
    "RAND" => [:Expression],
    "REGEX" => [:Expression],
    "REPLACE" => [:Expression],
    "ROUND" => [:Expression],
    "SAMPLE" => [:Expression],
    "SECONDS" => [:Expression],
    "SHA1" => [:Expression],
    "SHA224" => [:Expression],
    "SHA256" => [:Expression],
    "SHA384" => [:Expression],
    "SHA512" => [:Expression],
    "STR" => [:Expression],
    "STRAFTER" => [:Expression],
    "STRBEFORE" => [:Expression],
    "STRDT" => [:Expression],
    "STRENDS" => [:Expression],
    :STRING_LITERAL1 => [:Expression],
    :STRING_LITERAL2 => [:Expression],
    :STRING_LITERAL_LONG1 => [:Expression],
    :STRING_LITERAL_LONG2 => [:Expression],
    "STRLANG" => [:Expression],
    "STRLEN" => [:Expression],
    "STRSTARTS" => [:Expression],
    "STRUUID" => [:Expression],
    "SUBSTR" => [:Expression],
    "SUM" => [:Expression],
    "TIMEZONE" => [:Expression],
    "TZ" => [:Expression],
    "UCASE" => [:Expression],
    "URI" => [:Expression],
    "UUID" => [:Expression],
    :VAR1 => [:Expression],
    :VAR2 => [:Expression],
    "YEAR" => [:Expression],
    "false" => [:Expression],
    "isBLANK" => [:Expression],
    "isIRI" => [:Expression],
    "isLITERAL" => [:Expression],
    "isNUMERIC" => [:Expression],
    "isURI" => [:Expression],
    "sameTerm" => [:Expression],
    "true" => [:Expression],
  },
  :ArgList => {
    "(" => [:_ArgList_1],
    :NIL => [:NIL],
  },
  :_ArgList_1 => {
    "(" => ["(", :_ArgList_2, :Expression, :_ArgList_3, ")"],
  },
  :_ArgList_2 => {
    "!" => [],
    "(" => [],
    "+" => [],
    "-" => [],
    "ABS" => [],
    "AVG" => [],
    "BNODE" => [],
    "BOUND" => [],
    "CEIL" => [],
    "COALESCE" => [],
    "CONCAT" => [],
    "CONTAINS" => [],
    "COUNT" => [],
    "DATATYPE" => [],
    "DAY" => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    "DISTINCT" => ["DISTINCT"],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "ENCODE_FOR_URI" => [],
    "EXISTS" => [],
    "FLOOR" => [],
    "GROUP_CONCAT" => [],
    "HOURS" => [],
    "IF" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "IRI" => [],
    :IRIREF => [],
    "LANG" => [],
    "LANGMATCHES" => [],
    "LCASE" => [],
    "MAX" => [],
    "MD5" => [],
    "MIN" => [],
    "MINUTES" => [],
    "MONTH" => [],
    "NOT" => [],
    "NOW" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "RAND" => [],
    "REGEX" => [],
    "REPLACE" => [],
    "ROUND" => [],
    "SAMPLE" => [],
    "SECONDS" => [],
    "SHA1" => [],
    "SHA224" => [],
    "SHA256" => [],
    "SHA384" => [],
    "SHA512" => [],
    "STR" => [],
    "STRAFTER" => [],
    "STRBEFORE" => [],
    "STRDT" => [],
    "STRENDS" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "STRLANG" => [],
    "STRLEN" => [],
    "STRSTARTS" => [],
    "STRUUID" => [],
    "SUBSTR" => [],
    "SUM" => [],
    "TIMEZONE" => [],
    "TZ" => [],
    "UCASE" => [],
    "URI" => [],
    "UUID" => [],
    :VAR1 => [],
    :VAR2 => [],
    "YEAR" => [],
    "false" => [],
    "isBLANK" => [],
    "isIRI" => [],
    "isLITERAL" => [],
    "isNUMERIC" => [],
    "isURI" => [],
    "sameTerm" => [],
    "true" => [],
  },
  :_ArgList_3 => {
    ")" => [],
    "," => [:_ArgList_5],
  },
  :_ArgList_4 => {
    "," => [",", :Expression],
  },
  :_ArgList_5 => {
    "," => [:_ArgList_4, :_ArgList_3],
  },
  :AskQuery => {
    "ASK" => ["ASK", :_AskQuery_1, :WhereClause, :ValuesClause],
  },
  :_AskQuery_1 => {
    "FROM" => [:_AskQuery_2],
    "WHERE" => [],
    "{" => [],
  },
  :_AskQuery_2 => {
    "FROM" => [:DatasetClause, :_AskQuery_1],
  },
  :BaseDecl => {
    "BASE" => ["BASE", :IRIREF],
  },
  :Bind => {
    "BIND" => ["BIND", "(", :Expression, "AS", :Var, ")"],
  },
  :BlankNode => {
    :ANON => [:ANON],
    :BLANK_NODE_LABEL => [:BLANK_NODE_LABEL],
  },
  :BlankNodePropertyList => {
    "[" => ["[", :PropertyListNotEmpty, "]"],
  },
  :BlankNodePropertyListPath => {
    "[" => ["[", :PropertyListPathNotEmpty, "]"],
  },
  :BooleanLiteral => {
    "false" => ["false"],
    "true" => ["true"],
  },
  :BrackettedExpression => {
    "(" => ["(", :Expression, ")"],
  },
  :BuiltInCall => {
    "ABS" => [:_BuiltInCall_10],
    "AVG" => [:Aggregate],
    "BNODE" => [:_BuiltInCall_8],
    "BOUND" => [:_BuiltInCall_5],
    "CEIL" => [:_BuiltInCall_11],
    "COALESCE" => [:_BuiltInCall_41],
    "CONCAT" => [:_BuiltInCall_14],
    "CONTAINS" => [:_BuiltInCall_19],
    "COUNT" => [:Aggregate],
    "DATATYPE" => [:_BuiltInCall_4],
    "DAY" => [:_BuiltInCall_26],
    "ENCODE_FOR_URI" => [:_BuiltInCall_18],
    "EXISTS" => [:ExistsFunc],
    "FLOOR" => [:_BuiltInCall_12],
    "GROUP_CONCAT" => [:Aggregate],
    "HOURS" => [:_BuiltInCall_27],
    "IF" => [:_BuiltInCall_42],
    "IRI" => [:_BuiltInCall_6],
    "LANG" => [:_BuiltInCall_2],
    "LANGMATCHES" => [:_BuiltInCall_3],
    "LCASE" => [:_BuiltInCall_17],
    "MAX" => [:Aggregate],
    "MD5" => [:_BuiltInCall_35],
    "MIN" => [:Aggregate],
    "MINUTES" => [:_BuiltInCall_28],
    "MONTH" => [:_BuiltInCall_25],
    "NOT" => [:NotExistsFunc],
    "NOW" => [:_BuiltInCall_32],
    "RAND" => [:_BuiltInCall_9],
    "REGEX" => [:RegexExpression],
    "REPLACE" => [:StrReplaceExpression],
    "ROUND" => [:_BuiltInCall_13],
    "SAMPLE" => [:Aggregate],
    "SECONDS" => [:_BuiltInCall_29],
    "SHA1" => [:_BuiltInCall_36],
    "SHA224" => [:_BuiltInCall_37],
    "SHA256" => [:_BuiltInCall_38],
    "SHA384" => [:_BuiltInCall_39],
    "SHA512" => [:_BuiltInCall_40],
    "STR" => [:_BuiltInCall_1],
    "STRAFTER" => [:_BuiltInCall_23],
    "STRBEFORE" => [:_BuiltInCall_22],
    "STRDT" => [:_BuiltInCall_44],
    "STRENDS" => [:_BuiltInCall_21],
    "STRLANG" => [:_BuiltInCall_43],
    "STRLEN" => [:_BuiltInCall_15],
    "STRSTARTS" => [:_BuiltInCall_20],
    "STRUUID" => [:_BuiltInCall_34],
    "SUBSTR" => [:SubstringExpression],
    "SUM" => [:Aggregate],
    "TIMEZONE" => [:_BuiltInCall_30],
    "TZ" => [:_BuiltInCall_31],
    "UCASE" => [:_BuiltInCall_16],
    "URI" => [:_BuiltInCall_7],
    "UUID" => [:_BuiltInCall_33],
    "YEAR" => [:_BuiltInCall_24],
    "isBLANK" => [:_BuiltInCall_48],
    "isIRI" => [:_BuiltInCall_46],
    "isLITERAL" => [:_BuiltInCall_49],
    "isNUMERIC" => [:_BuiltInCall_50],
    "isURI" => [:_BuiltInCall_47],
    "sameTerm" => [:_BuiltInCall_45],
  },
  :_BuiltInCall_1 => {
    "STR" => ["STR", "(", :Expression, ")"],
  },
  :_BuiltInCall_10 => {
    "ABS" => ["ABS", "(", :Expression, ")"],
  },
  :_BuiltInCall_11 => {
    "CEIL" => ["CEIL", "(", :Expression, ")"],
  },
  :_BuiltInCall_12 => {
    "FLOOR" => ["FLOOR", "(", :Expression, ")"],
  },
  :_BuiltInCall_13 => {
    "ROUND" => ["ROUND", "(", :Expression, ")"],
  },
  :_BuiltInCall_14 => {
    "CONCAT" => ["CONCAT", :ExpressionList],
  },
  :_BuiltInCall_15 => {
    "STRLEN" => ["STRLEN", "(", :Expression, ")"],
  },
  :_BuiltInCall_16 => {
    "UCASE" => ["UCASE", "(", :Expression, ")"],
  },
  :_BuiltInCall_17 => {
    "LCASE" => ["LCASE", "(", :Expression, ")"],
  },
  :_BuiltInCall_18 => {
    "ENCODE_FOR_URI" => ["ENCODE_FOR_URI", "(", :Expression, ")"],
  },
  :_BuiltInCall_19 => {
    "CONTAINS" => ["CONTAINS", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_2 => {
    "LANG" => ["LANG", "(", :Expression, ")"],
  },
  :_BuiltInCall_20 => {
    "STRSTARTS" => ["STRSTARTS", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_21 => {
    "STRENDS" => ["STRENDS", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_22 => {
    "STRBEFORE" => ["STRBEFORE", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_23 => {
    "STRAFTER" => ["STRAFTER", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_24 => {
    "YEAR" => ["YEAR", "(", :Expression, ")"],
  },
  :_BuiltInCall_25 => {
    "MONTH" => ["MONTH", "(", :Expression, ")"],
  },
  :_BuiltInCall_26 => {
    "DAY" => ["DAY", "(", :Expression, ")"],
  },
  :_BuiltInCall_27 => {
    "HOURS" => ["HOURS", "(", :Expression, ")"],
  },
  :_BuiltInCall_28 => {
    "MINUTES" => ["MINUTES", "(", :Expression, ")"],
  },
  :_BuiltInCall_29 => {
    "SECONDS" => ["SECONDS", "(", :Expression, ")"],
  },
  :_BuiltInCall_3 => {
    "LANGMATCHES" => ["LANGMATCHES", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_30 => {
    "TIMEZONE" => ["TIMEZONE", "(", :Expression, ")"],
  },
  :_BuiltInCall_31 => {
    "TZ" => ["TZ", "(", :Expression, ")"],
  },
  :_BuiltInCall_32 => {
    "NOW" => ["NOW", :NIL],
  },
  :_BuiltInCall_33 => {
    "UUID" => ["UUID", :NIL],
  },
  :_BuiltInCall_34 => {
    "STRUUID" => ["STRUUID", :NIL],
  },
  :_BuiltInCall_35 => {
    "MD5" => ["MD5", "(", :Expression, ")"],
  },
  :_BuiltInCall_36 => {
    "SHA1" => ["SHA1", "(", :Expression, ")"],
  },
  :_BuiltInCall_37 => {
    "SHA224" => ["SHA224", "(", :Expression, ")"],
  },
  :_BuiltInCall_38 => {
    "SHA256" => ["SHA256", "(", :Expression, ")"],
  },
  :_BuiltInCall_39 => {
    "SHA384" => ["SHA384", "(", :Expression, ")"],
  },
  :_BuiltInCall_4 => {
    "DATATYPE" => ["DATATYPE", "(", :Expression, ")"],
  },
  :_BuiltInCall_40 => {
    "SHA512" => ["SHA512", "(", :Expression, ")"],
  },
  :_BuiltInCall_41 => {
    "COALESCE" => ["COALESCE", :ExpressionList],
  },
  :_BuiltInCall_42 => {
    "IF" => ["IF", "(", :Expression, ",", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_43 => {
    "STRLANG" => ["STRLANG", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_44 => {
    "STRDT" => ["STRDT", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_45 => {
    "sameTerm" => ["sameTerm", "(", :Expression, ",", :Expression, ")"],
  },
  :_BuiltInCall_46 => {
    "isIRI" => ["isIRI", "(", :Expression, ")"],
  },
  :_BuiltInCall_47 => {
    "isURI" => ["isURI", "(", :Expression, ")"],
  },
  :_BuiltInCall_48 => {
    "isBLANK" => ["isBLANK", "(", :Expression, ")"],
  },
  :_BuiltInCall_49 => {
    "isLITERAL" => ["isLITERAL", "(", :Expression, ")"],
  },
  :_BuiltInCall_5 => {
    "BOUND" => ["BOUND", "(", :Var, ")"],
  },
  :_BuiltInCall_50 => {
    "isNUMERIC" => ["isNUMERIC", "(", :Expression, ")"],
  },
  :_BuiltInCall_51 => {
    "(" => [:_BuiltInCall_52],
    :NIL => [:NIL],
  },
  :_BuiltInCall_52 => {
    "(" => ["(", :Expression, ")"],
  },
  :_BuiltInCall_6 => {
    "IRI" => ["IRI", "(", :Expression, ")"],
  },
  :_BuiltInCall_7 => {
    "URI" => ["URI", "(", :Expression, ")"],
  },
  :_BuiltInCall_8 => {
    "BNODE" => ["BNODE", :_BuiltInCall_51],
  },
  :_BuiltInCall_9 => {
    "RAND" => ["RAND", :NIL],
  },
  :Clear => {
    "CLEAR" => ["CLEAR", :_Clear_1, :GraphRefAll],
  },
  :_Clear_1 => {
    "ALL" => [],
    "DEFAULT" => [],
    "GRAPH" => [],
    "NAMED" => [],
    "SILENT" => ["SILENT"],
  },
  :Collection => {
    "(" => ["(", :_Collection_1, ")"],
  },
  :CollectionPath => {
    "(" => ["(", :_CollectionPath_1, ")"],
  },
  :_CollectionPath_1 => {
    "(" => [:GraphNodePath, :_CollectionPath_2],
    :ANON => [:GraphNodePath, :_CollectionPath_2],
    :BLANK_NODE_LABEL => [:GraphNodePath, :_CollectionPath_2],
    :DECIMAL => [:GraphNodePath, :_CollectionPath_2],
    :DECIMAL_NEGATIVE => [:GraphNodePath, :_CollectionPath_2],
    :DECIMAL_POSITIVE => [:GraphNodePath, :_CollectionPath_2],
    :DOUBLE => [:GraphNodePath, :_CollectionPath_2],
    :DOUBLE_NEGATIVE => [:GraphNodePath, :_CollectionPath_2],
    :DOUBLE_POSITIVE => [:GraphNodePath, :_CollectionPath_2],
    :INTEGER => [:GraphNodePath, :_CollectionPath_2],
    :INTEGER_NEGATIVE => [:GraphNodePath, :_CollectionPath_2],
    :INTEGER_POSITIVE => [:GraphNodePath, :_CollectionPath_2],
    :IRIREF => [:GraphNodePath, :_CollectionPath_2],
    :NIL => [:GraphNodePath, :_CollectionPath_2],
    :PNAME_LN => [:GraphNodePath, :_CollectionPath_2],
    :PNAME_NS => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL1 => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL2 => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL_LONG1 => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL_LONG2 => [:GraphNodePath, :_CollectionPath_2],
    :VAR1 => [:GraphNodePath, :_CollectionPath_2],
    :VAR2 => [:GraphNodePath, :_CollectionPath_2],
    "[" => [:GraphNodePath, :_CollectionPath_2],
    "false" => [:GraphNodePath, :_CollectionPath_2],
    "true" => [:GraphNodePath, :_CollectionPath_2],
  },
  :_CollectionPath_2 => {
    "(" => [:_CollectionPath_3],
    ")" => [],
    :ANON => [:_CollectionPath_3],
    :BLANK_NODE_LABEL => [:_CollectionPath_3],
    :DECIMAL => [:_CollectionPath_3],
    :DECIMAL_NEGATIVE => [:_CollectionPath_3],
    :DECIMAL_POSITIVE => [:_CollectionPath_3],
    :DOUBLE => [:_CollectionPath_3],
    :DOUBLE_NEGATIVE => [:_CollectionPath_3],
    :DOUBLE_POSITIVE => [:_CollectionPath_3],
    :INTEGER => [:_CollectionPath_3],
    :INTEGER_NEGATIVE => [:_CollectionPath_3],
    :INTEGER_POSITIVE => [:_CollectionPath_3],
    :IRIREF => [:_CollectionPath_3],
    :NIL => [:_CollectionPath_3],
    :PNAME_LN => [:_CollectionPath_3],
    :PNAME_NS => [:_CollectionPath_3],
    :STRING_LITERAL1 => [:_CollectionPath_3],
    :STRING_LITERAL2 => [:_CollectionPath_3],
    :STRING_LITERAL_LONG1 => [:_CollectionPath_3],
    :STRING_LITERAL_LONG2 => [:_CollectionPath_3],
    :VAR1 => [:_CollectionPath_3],
    :VAR2 => [:_CollectionPath_3],
    "[" => [:_CollectionPath_3],
    "false" => [:_CollectionPath_3],
    "true" => [:_CollectionPath_3],
  },
  :_CollectionPath_3 => {
    "(" => [:GraphNodePath, :_CollectionPath_2],
    :ANON => [:GraphNodePath, :_CollectionPath_2],
    :BLANK_NODE_LABEL => [:GraphNodePath, :_CollectionPath_2],
    :DECIMAL => [:GraphNodePath, :_CollectionPath_2],
    :DECIMAL_NEGATIVE => [:GraphNodePath, :_CollectionPath_2],
    :DECIMAL_POSITIVE => [:GraphNodePath, :_CollectionPath_2],
    :DOUBLE => [:GraphNodePath, :_CollectionPath_2],
    :DOUBLE_NEGATIVE => [:GraphNodePath, :_CollectionPath_2],
    :DOUBLE_POSITIVE => [:GraphNodePath, :_CollectionPath_2],
    :INTEGER => [:GraphNodePath, :_CollectionPath_2],
    :INTEGER_NEGATIVE => [:GraphNodePath, :_CollectionPath_2],
    :INTEGER_POSITIVE => [:GraphNodePath, :_CollectionPath_2],
    :IRIREF => [:GraphNodePath, :_CollectionPath_2],
    :NIL => [:GraphNodePath, :_CollectionPath_2],
    :PNAME_LN => [:GraphNodePath, :_CollectionPath_2],
    :PNAME_NS => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL1 => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL2 => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL_LONG1 => [:GraphNodePath, :_CollectionPath_2],
    :STRING_LITERAL_LONG2 => [:GraphNodePath, :_CollectionPath_2],
    :VAR1 => [:GraphNodePath, :_CollectionPath_2],
    :VAR2 => [:GraphNodePath, :_CollectionPath_2],
    "[" => [:GraphNodePath, :_CollectionPath_2],
    "false" => [:GraphNodePath, :_CollectionPath_2],
    "true" => [:GraphNodePath, :_CollectionPath_2],
  },
  :_Collection_1 => {
    "(" => [:GraphNode, :_Collection_2],
    :ANON => [:GraphNode, :_Collection_2],
    :BLANK_NODE_LABEL => [:GraphNode, :_Collection_2],
    :DECIMAL => [:GraphNode, :_Collection_2],
    :DECIMAL_NEGATIVE => [:GraphNode, :_Collection_2],
    :DECIMAL_POSITIVE => [:GraphNode, :_Collection_2],
    :DOUBLE => [:GraphNode, :_Collection_2],
    :DOUBLE_NEGATIVE => [:GraphNode, :_Collection_2],
    :DOUBLE_POSITIVE => [:GraphNode, :_Collection_2],
    :INTEGER => [:GraphNode, :_Collection_2],
    :INTEGER_NEGATIVE => [:GraphNode, :_Collection_2],
    :INTEGER_POSITIVE => [:GraphNode, :_Collection_2],
    :IRIREF => [:GraphNode, :_Collection_2],
    :NIL => [:GraphNode, :_Collection_2],
    :PNAME_LN => [:GraphNode, :_Collection_2],
    :PNAME_NS => [:GraphNode, :_Collection_2],
    :STRING_LITERAL1 => [:GraphNode, :_Collection_2],
    :STRING_LITERAL2 => [:GraphNode, :_Collection_2],
    :STRING_LITERAL_LONG1 => [:GraphNode, :_Collection_2],
    :STRING_LITERAL_LONG2 => [:GraphNode, :_Collection_2],
    :VAR1 => [:GraphNode, :_Collection_2],
    :VAR2 => [:GraphNode, :_Collection_2],
    "[" => [:GraphNode, :_Collection_2],
    "false" => [:GraphNode, :_Collection_2],
    "true" => [:GraphNode, :_Collection_2],
  },
  :_Collection_2 => {
    "(" => [:_Collection_3],
    ")" => [],
    :ANON => [:_Collection_3],
    :BLANK_NODE_LABEL => [:_Collection_3],
    :DECIMAL => [:_Collection_3],
    :DECIMAL_NEGATIVE => [:_Collection_3],
    :DECIMAL_POSITIVE => [:_Collection_3],
    :DOUBLE => [:_Collection_3],
    :DOUBLE_NEGATIVE => [:_Collection_3],
    :DOUBLE_POSITIVE => [:_Collection_3],
    :INTEGER => [:_Collection_3],
    :INTEGER_NEGATIVE => [:_Collection_3],
    :INTEGER_POSITIVE => [:_Collection_3],
    :IRIREF => [:_Collection_3],
    :NIL => [:_Collection_3],
    :PNAME_LN => [:_Collection_3],
    :PNAME_NS => [:_Collection_3],
    :STRING_LITERAL1 => [:_Collection_3],
    :STRING_LITERAL2 => [:_Collection_3],
    :STRING_LITERAL_LONG1 => [:_Collection_3],
    :STRING_LITERAL_LONG2 => [:_Collection_3],
    :VAR1 => [:_Collection_3],
    :VAR2 => [:_Collection_3],
    "[" => [:_Collection_3],
    "false" => [:_Collection_3],
    "true" => [:_Collection_3],
  },
  :_Collection_3 => {
    "(" => [:GraphNode, :_Collection_2],
    :ANON => [:GraphNode, :_Collection_2],
    :BLANK_NODE_LABEL => [:GraphNode, :_Collection_2],
    :DECIMAL => [:GraphNode, :_Collection_2],
    :DECIMAL_NEGATIVE => [:GraphNode, :_Collection_2],
    :DECIMAL_POSITIVE => [:GraphNode, :_Collection_2],
    :DOUBLE => [:GraphNode, :_Collection_2],
    :DOUBLE_NEGATIVE => [:GraphNode, :_Collection_2],
    :DOUBLE_POSITIVE => [:GraphNode, :_Collection_2],
    :INTEGER => [:GraphNode, :_Collection_2],
    :INTEGER_NEGATIVE => [:GraphNode, :_Collection_2],
    :INTEGER_POSITIVE => [:GraphNode, :_Collection_2],
    :IRIREF => [:GraphNode, :_Collection_2],
    :NIL => [:GraphNode, :_Collection_2],
    :PNAME_LN => [:GraphNode, :_Collection_2],
    :PNAME_NS => [:GraphNode, :_Collection_2],
    :STRING_LITERAL1 => [:GraphNode, :_Collection_2],
    :STRING_LITERAL2 => [:GraphNode, :_Collection_2],
    :STRING_LITERAL_LONG1 => [:GraphNode, :_Collection_2],
    :STRING_LITERAL_LONG2 => [:GraphNode, :_Collection_2],
    :VAR1 => [:GraphNode, :_Collection_2],
    :VAR2 => [:GraphNode, :_Collection_2],
    "[" => [:GraphNode, :_Collection_2],
    "false" => [:GraphNode, :_Collection_2],
    "true" => [:GraphNode, :_Collection_2],
  },
  :ConditionalAndExpression => {
    "!" => [:ValueLogical, :_ConditionalAndExpression_1],
    "(" => [:ValueLogical, :_ConditionalAndExpression_1],
    "+" => [:ValueLogical, :_ConditionalAndExpression_1],
    "-" => [:ValueLogical, :_ConditionalAndExpression_1],
    "ABS" => [:ValueLogical, :_ConditionalAndExpression_1],
    "AVG" => [:ValueLogical, :_ConditionalAndExpression_1],
    "BNODE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "BOUND" => [:ValueLogical, :_ConditionalAndExpression_1],
    "CEIL" => [:ValueLogical, :_ConditionalAndExpression_1],
    "COALESCE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "CONCAT" => [:ValueLogical, :_ConditionalAndExpression_1],
    "CONTAINS" => [:ValueLogical, :_ConditionalAndExpression_1],
    "COUNT" => [:ValueLogical, :_ConditionalAndExpression_1],
    "DATATYPE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "DAY" => [:ValueLogical, :_ConditionalAndExpression_1],
    :DECIMAL => [:ValueLogical, :_ConditionalAndExpression_1],
    :DECIMAL_NEGATIVE => [:ValueLogical, :_ConditionalAndExpression_1],
    :DECIMAL_POSITIVE => [:ValueLogical, :_ConditionalAndExpression_1],
    :DOUBLE => [:ValueLogical, :_ConditionalAndExpression_1],
    :DOUBLE_NEGATIVE => [:ValueLogical, :_ConditionalAndExpression_1],
    :DOUBLE_POSITIVE => [:ValueLogical, :_ConditionalAndExpression_1],
    "ENCODE_FOR_URI" => [:ValueLogical, :_ConditionalAndExpression_1],
    "EXISTS" => [:ValueLogical, :_ConditionalAndExpression_1],
    "FLOOR" => [:ValueLogical, :_ConditionalAndExpression_1],
    "GROUP_CONCAT" => [:ValueLogical, :_ConditionalAndExpression_1],
    "HOURS" => [:ValueLogical, :_ConditionalAndExpression_1],
    "IF" => [:ValueLogical, :_ConditionalAndExpression_1],
    :INTEGER => [:ValueLogical, :_ConditionalAndExpression_1],
    :INTEGER_NEGATIVE => [:ValueLogical, :_ConditionalAndExpression_1],
    :INTEGER_POSITIVE => [:ValueLogical, :_ConditionalAndExpression_1],
    "IRI" => [:ValueLogical, :_ConditionalAndExpression_1],
    :IRIREF => [:ValueLogical, :_ConditionalAndExpression_1],
    "LANG" => [:ValueLogical, :_ConditionalAndExpression_1],
    "LANGMATCHES" => [:ValueLogical, :_ConditionalAndExpression_1],
    "LCASE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "MAX" => [:ValueLogical, :_ConditionalAndExpression_1],
    "MD5" => [:ValueLogical, :_ConditionalAndExpression_1],
    "MIN" => [:ValueLogical, :_ConditionalAndExpression_1],
    "MINUTES" => [:ValueLogical, :_ConditionalAndExpression_1],
    "MONTH" => [:ValueLogical, :_ConditionalAndExpression_1],
    "NOT" => [:ValueLogical, :_ConditionalAndExpression_1],
    "NOW" => [:ValueLogical, :_ConditionalAndExpression_1],
    :PNAME_LN => [:ValueLogical, :_ConditionalAndExpression_1],
    :PNAME_NS => [:ValueLogical, :_ConditionalAndExpression_1],
    "RAND" => [:ValueLogical, :_ConditionalAndExpression_1],
    "REGEX" => [:ValueLogical, :_ConditionalAndExpression_1],
    "REPLACE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "ROUND" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SAMPLE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SECONDS" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SHA1" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SHA224" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SHA256" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SHA384" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SHA512" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STR" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRAFTER" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRBEFORE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRDT" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRENDS" => [:ValueLogical, :_ConditionalAndExpression_1],
    :STRING_LITERAL1 => [:ValueLogical, :_ConditionalAndExpression_1],
    :STRING_LITERAL2 => [:ValueLogical, :_ConditionalAndExpression_1],
    :STRING_LITERAL_LONG1 => [:ValueLogical, :_ConditionalAndExpression_1],
    :STRING_LITERAL_LONG2 => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRLANG" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRLEN" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRSTARTS" => [:ValueLogical, :_ConditionalAndExpression_1],
    "STRUUID" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SUBSTR" => [:ValueLogical, :_ConditionalAndExpression_1],
    "SUM" => [:ValueLogical, :_ConditionalAndExpression_1],
    "TIMEZONE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "TZ" => [:ValueLogical, :_ConditionalAndExpression_1],
    "UCASE" => [:ValueLogical, :_ConditionalAndExpression_1],
    "URI" => [:ValueLogical, :_ConditionalAndExpression_1],
    "UUID" => [:ValueLogical, :_ConditionalAndExpression_1],
    :VAR1 => [:ValueLogical, :_ConditionalAndExpression_1],
    :VAR2 => [:ValueLogical, :_ConditionalAndExpression_1],
    "YEAR" => [:ValueLogical, :_ConditionalAndExpression_1],
    "false" => [:ValueLogical, :_ConditionalAndExpression_1],
    "isBLANK" => [:ValueLogical, :_ConditionalAndExpression_1],
    "isIRI" => [:ValueLogical, :_ConditionalAndExpression_1],
    "isLITERAL" => [:ValueLogical, :_ConditionalAndExpression_1],
    "isNUMERIC" => [:ValueLogical, :_ConditionalAndExpression_1],
    "isURI" => [:ValueLogical, :_ConditionalAndExpression_1],
    "sameTerm" => [:ValueLogical, :_ConditionalAndExpression_1],
    "true" => [:ValueLogical, :_ConditionalAndExpression_1],
  },
  :_ConditionalAndExpression_1 => {
    "&&" => [:_ConditionalAndExpression_3],
    ")" => [],
    "," => [],
    ";" => [],
    "AS" => [],
    "||" => [],
  },
  :_ConditionalAndExpression_2 => {
    "&&" => ["&&", :ValueLogical],
  },
  :_ConditionalAndExpression_3 => {
    "&&" => [:_ConditionalAndExpression_2, :_ConditionalAndExpression_1],
  },
  :ConditionalOrExpression => {
    "!" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "(" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "+" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "-" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "ABS" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "AVG" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "BNODE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "BOUND" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "CEIL" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "COALESCE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "CONCAT" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "CONTAINS" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "COUNT" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "DATATYPE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "DAY" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :DECIMAL => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :DECIMAL_NEGATIVE => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :DECIMAL_POSITIVE => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :DOUBLE => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :DOUBLE_NEGATIVE => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :DOUBLE_POSITIVE => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "ENCODE_FOR_URI" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "EXISTS" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "FLOOR" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "GROUP_CONCAT" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "HOURS" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "IF" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :INTEGER => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :INTEGER_NEGATIVE => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :INTEGER_POSITIVE => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "IRI" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :IRIREF => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "LANG" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "LANGMATCHES" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "LCASE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "MAX" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "MD5" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "MIN" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "MINUTES" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "MONTH" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "NOT" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "NOW" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :PNAME_LN => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :PNAME_NS => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "RAND" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "REGEX" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "REPLACE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "ROUND" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SAMPLE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SECONDS" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SHA1" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SHA224" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SHA256" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SHA384" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SHA512" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STR" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRAFTER" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRBEFORE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRDT" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRENDS" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :STRING_LITERAL1 => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :STRING_LITERAL2 => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :STRING_LITERAL_LONG1 => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :STRING_LITERAL_LONG2 => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRLANG" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRLEN" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRSTARTS" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "STRUUID" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SUBSTR" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "SUM" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "TIMEZONE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "TZ" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "UCASE" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "URI" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "UUID" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :VAR1 => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    :VAR2 => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "YEAR" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "false" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "isBLANK" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "isIRI" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "isLITERAL" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "isNUMERIC" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "isURI" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "sameTerm" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
    "true" => [:ConditionalAndExpression, :_ConditionalOrExpression_1],
  },
  :_ConditionalOrExpression_1 => {
    ")" => [],
    "," => [],
    ";" => [],
    "AS" => [],
    "||" => [:_ConditionalOrExpression_3],
  },
  :_ConditionalOrExpression_2 => {
    "||" => ["||", :ConditionalAndExpression],
  },
  :_ConditionalOrExpression_3 => {
    "||" => [:_ConditionalOrExpression_2, :_ConditionalOrExpression_1],
  },
  :Constraint => {
    "(" => [:BrackettedExpression],
    "ABS" => [:BuiltInCall],
    "AVG" => [:BuiltInCall],
    "BNODE" => [:BuiltInCall],
    "BOUND" => [:BuiltInCall],
    "CEIL" => [:BuiltInCall],
    "COALESCE" => [:BuiltInCall],
    "CONCAT" => [:BuiltInCall],
    "CONTAINS" => [:BuiltInCall],
    "COUNT" => [:BuiltInCall],
    "DATATYPE" => [:BuiltInCall],
    "DAY" => [:BuiltInCall],
    "ENCODE_FOR_URI" => [:BuiltInCall],
    "EXISTS" => [:BuiltInCall],
    "FLOOR" => [:BuiltInCall],
    "GROUP_CONCAT" => [:BuiltInCall],
    "HOURS" => [:BuiltInCall],
    "IF" => [:BuiltInCall],
    "IRI" => [:BuiltInCall],
    :IRIREF => [:FunctionCall],
    "LANG" => [:BuiltInCall],
    "LANGMATCHES" => [:BuiltInCall],
    "LCASE" => [:BuiltInCall],
    "MAX" => [:BuiltInCall],
    "MD5" => [:BuiltInCall],
    "MIN" => [:BuiltInCall],
    "MINUTES" => [:BuiltInCall],
    "MONTH" => [:BuiltInCall],
    "NOT" => [:BuiltInCall],
    "NOW" => [:BuiltInCall],
    :PNAME_LN => [:FunctionCall],
    :PNAME_NS => [:FunctionCall],
    "RAND" => [:BuiltInCall],
    "REGEX" => [:BuiltInCall],
    "REPLACE" => [:BuiltInCall],
    "ROUND" => [:BuiltInCall],
    "SAMPLE" => [:BuiltInCall],
    "SECONDS" => [:BuiltInCall],
    "SHA1" => [:BuiltInCall],
    "SHA224" => [:BuiltInCall],
    "SHA256" => [:BuiltInCall],
    "SHA384" => [:BuiltInCall],
    "SHA512" => [:BuiltInCall],
    "STR" => [:BuiltInCall],
    "STRAFTER" => [:BuiltInCall],
    "STRBEFORE" => [:BuiltInCall],
    "STRDT" => [:BuiltInCall],
    "STRENDS" => [:BuiltInCall],
    "STRLANG" => [:BuiltInCall],
    "STRLEN" => [:BuiltInCall],
    "STRSTARTS" => [:BuiltInCall],
    "STRUUID" => [:BuiltInCall],
    "SUBSTR" => [:BuiltInCall],
    "SUM" => [:BuiltInCall],
    "TIMEZONE" => [:BuiltInCall],
    "TZ" => [:BuiltInCall],
    "UCASE" => [:BuiltInCall],
    "URI" => [:BuiltInCall],
    "UUID" => [:BuiltInCall],
    "YEAR" => [:BuiltInCall],
    "isBLANK" => [:BuiltInCall],
    "isIRI" => [:BuiltInCall],
    "isLITERAL" => [:BuiltInCall],
    "isNUMERIC" => [:BuiltInCall],
    "isURI" => [:BuiltInCall],
    "sameTerm" => [:BuiltInCall],
  },
  :ConstructQuery => {
    "CONSTRUCT" => ["CONSTRUCT", :_ConstructQuery_1, :ValuesClause],
  },
  :_ConstructQuery_1 => {
    "FROM" => [:_ConstructQuery_3],
    "WHERE" => [:_ConstructQuery_3],
    "{" => [:_ConstructQuery_2],
  },
  :_ConstructQuery_2 => {
    "{" => [:ConstructTemplate, :_ConstructQuery_4, :WhereClause, :SolutionModifier],
  },
  :_ConstructQuery_3 => {
    "FROM" => [:_ConstructQuery_6, "WHERE", "{", :_ConstructQuery_7, "}", :SolutionModifier],
    "WHERE" => [:_ConstructQuery_6, "WHERE", "{", :_ConstructQuery_7, "}", :SolutionModifier],
  },
  :_ConstructQuery_4 => {
    "FROM" => [:_ConstructQuery_5],
    "WHERE" => [],
    "{" => [],
  },
  :_ConstructQuery_5 => {
    "FROM" => [:DatasetClause, :_ConstructQuery_4],
  },
  :_ConstructQuery_6 => {
    "FROM" => [:_ConstructQuery_8],
    "WHERE" => [],
  },
  :_ConstructQuery_7 => {
    "(" => [:TriplesTemplate],
    :ANON => [:TriplesTemplate],
    :BLANK_NODE_LABEL => [:TriplesTemplate],
    :DECIMAL => [:TriplesTemplate],
    :DECIMAL_NEGATIVE => [:TriplesTemplate],
    :DECIMAL_POSITIVE => [:TriplesTemplate],
    :DOUBLE => [:TriplesTemplate],
    :DOUBLE_NEGATIVE => [:TriplesTemplate],
    :DOUBLE_POSITIVE => [:TriplesTemplate],
    :INTEGER => [:TriplesTemplate],
    :INTEGER_NEGATIVE => [:TriplesTemplate],
    :INTEGER_POSITIVE => [:TriplesTemplate],
    :IRIREF => [:TriplesTemplate],
    :NIL => [:TriplesTemplate],
    :PNAME_LN => [:TriplesTemplate],
    :PNAME_NS => [:TriplesTemplate],
    :STRING_LITERAL1 => [:TriplesTemplate],
    :STRING_LITERAL2 => [:TriplesTemplate],
    :STRING_LITERAL_LONG1 => [:TriplesTemplate],
    :STRING_LITERAL_LONG2 => [:TriplesTemplate],
    :VAR1 => [:TriplesTemplate],
    :VAR2 => [:TriplesTemplate],
    "[" => [:TriplesTemplate],
    "false" => [:TriplesTemplate],
    "true" => [:TriplesTemplate],
    "}" => [],
  },
  :_ConstructQuery_8 => {
    "FROM" => [:DatasetClause, :_ConstructQuery_6],
  },
  :ConstructTemplate => {
    "{" => ["{", :_ConstructTemplate_1, "}"],
  },
  :_ConstructTemplate_1 => {
    "(" => [:ConstructTriples],
    :ANON => [:ConstructTriples],
    :BLANK_NODE_LABEL => [:ConstructTriples],
    :DECIMAL => [:ConstructTriples],
    :DECIMAL_NEGATIVE => [:ConstructTriples],
    :DECIMAL_POSITIVE => [:ConstructTriples],
    :DOUBLE => [:ConstructTriples],
    :DOUBLE_NEGATIVE => [:ConstructTriples],
    :DOUBLE_POSITIVE => [:ConstructTriples],
    :INTEGER => [:ConstructTriples],
    :INTEGER_NEGATIVE => [:ConstructTriples],
    :INTEGER_POSITIVE => [:ConstructTriples],
    :IRIREF => [: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],
    "[" => [:ConstructTriples],
    "false" => [:ConstructTriples],
    "true" => [:ConstructTriples],
    "}" => [],
  },
  :ConstructTriples => {
    "(" => [:TriplesSameSubject, :_ConstructTriples_1],
    :ANON => [:TriplesSameSubject, :_ConstructTriples_1],
    :BLANK_NODE_LABEL => [:TriplesSameSubject, :_ConstructTriples_1],
    :DECIMAL => [:TriplesSameSubject, :_ConstructTriples_1],
    :DECIMAL_NEGATIVE => [:TriplesSameSubject, :_ConstructTriples_1],
    :DECIMAL_POSITIVE => [:TriplesSameSubject, :_ConstructTriples_1],
    :DOUBLE => [:TriplesSameSubject, :_ConstructTriples_1],
    :DOUBLE_NEGATIVE => [:TriplesSameSubject, :_ConstructTriples_1],
    :DOUBLE_POSITIVE => [:TriplesSameSubject, :_ConstructTriples_1],
    :INTEGER => [:TriplesSameSubject, :_ConstructTriples_1],
    :INTEGER_NEGATIVE => [:TriplesSameSubject, :_ConstructTriples_1],
    :INTEGER_POSITIVE => [:TriplesSameSubject, :_ConstructTriples_1],
    :IRIREF => [:TriplesSameSubject, :_ConstructTriples_1],
    :NIL => [:TriplesSameSubject, :_ConstructTriples_1],
    :PNAME_LN => [:TriplesSameSubject, :_ConstructTriples_1],
    :PNAME_NS => [:TriplesSameSubject, :_ConstructTriples_1],
    :STRING_LITERAL1 => [:TriplesSameSubject, :_ConstructTriples_1],
    :STRING_LITERAL2 => [:TriplesSameSubject, :_ConstructTriples_1],
    :STRING_LITERAL_LONG1 => [:TriplesSameSubject, :_ConstructTriples_1],
    :STRING_LITERAL_LONG2 => [:TriplesSameSubject, :_ConstructTriples_1],
    :VAR1 => [:TriplesSameSubject, :_ConstructTriples_1],
    :VAR2 => [:TriplesSameSubject, :_ConstructTriples_1],
    "[" => [:TriplesSameSubject, :_ConstructTriples_1],
    "false" => [:TriplesSameSubject, :_ConstructTriples_1],
    "true" => [:TriplesSameSubject, :_ConstructTriples_1],
  },
  :_ConstructTriples_1 => {
    "." => [:_ConstructTriples_2],
    "}" => [],
  },
  :_ConstructTriples_2 => {
    "." => [".", :_ConstructTriples_3],
  },
  :_ConstructTriples_3 => {
    "(" => [:ConstructTriples],
    :ANON => [:ConstructTriples],
    :BLANK_NODE_LABEL => [:ConstructTriples],
    :DECIMAL => [:ConstructTriples],
    :DECIMAL_NEGATIVE => [:ConstructTriples],
    :DECIMAL_POSITIVE => [:ConstructTriples],
    :DOUBLE => [:ConstructTriples],
    :DOUBLE_NEGATIVE => [:ConstructTriples],
    :DOUBLE_POSITIVE => [:ConstructTriples],
    :INTEGER => [:ConstructTriples],
    :INTEGER_NEGATIVE => [:ConstructTriples],
    :INTEGER_POSITIVE => [:ConstructTriples],
    :IRIREF => [: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],
    "[" => [:ConstructTriples],
    "false" => [:ConstructTriples],
    "true" => [:ConstructTriples],
    "}" => [],
  },
  :Copy => {
    "COPY" => ["COPY", :_Copy_1, :GraphOrDefault, "TO", :GraphOrDefault],
  },
  :_Copy_1 => {
    "DEFAULT" => [],
    "GRAPH" => [],
    :IRIREF => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "SILENT" => ["SILENT"],
  },
  :Create => {
    "CREATE" => ["CREATE", :_Create_1, :GraphRef],
  },
  :_Create_1 => {
    "GRAPH" => [],
    "SILENT" => ["SILENT"],
  },
  :DataBlock => {
    "(" => [:InlineDataFull],
    :NIL => [:InlineDataFull],
    :VAR1 => [:InlineDataOneVar],
    :VAR2 => [:InlineDataOneVar],
  },
  :DataBlockValue => {
    :DECIMAL => [:NumericLiteral],
    :DECIMAL_NEGATIVE => [:NumericLiteral],
    :DECIMAL_POSITIVE => [:NumericLiteral],
    :DOUBLE => [:NumericLiteral],
    :DOUBLE_NEGATIVE => [:NumericLiteral],
    :DOUBLE_POSITIVE => [:NumericLiteral],
    :INTEGER => [:NumericLiteral],
    :INTEGER_NEGATIVE => [:NumericLiteral],
    :INTEGER_POSITIVE => [:NumericLiteral],
    :IRIREF => [:iri],
    :PNAME_LN => [:iri],
    :PNAME_NS => [:iri],
    :STRING_LITERAL1 => [:RDFLiteral],
    :STRING_LITERAL2 => [:RDFLiteral],
    :STRING_LITERAL_LONG1 => [:RDFLiteral],
    :STRING_LITERAL_LONG2 => [:RDFLiteral],
    "UNDEF" => ["UNDEF"],
    "false" => [:BooleanLiteral],
    "true" => [:BooleanLiteral],
  },
  :DatasetClause => {
    "FROM" => ["FROM", :_DatasetClause_1],
  },
  :_DatasetClause_1 => {
    :IRIREF => [:DefaultGraphClause],
    "NAMED" => [:NamedGraphClause],
    :PNAME_LN => [:DefaultGraphClause],
    :PNAME_NS => [:DefaultGraphClause],
  },
  :DefaultGraphClause => {
    :IRIREF => [:SourceSelector],
    :PNAME_LN => [:SourceSelector],
    :PNAME_NS => [:SourceSelector],
  },
  :DeleteClause => {
    "DELETE" => ["DELETE", :QuadPattern],
  },
  :DeleteData => {
    "DELETE DATA" => ["DELETE DATA", :QuadData],
  },
  :DeleteWhere => {
    "DELETE WHERE" => ["DELETE WHERE", :QuadPattern],
  },
  :DescribeQuery => {
    "DESCRIBE" => ["DESCRIBE", :_DescribeQuery_1, :_DescribeQuery_2, :_DescribeQuery_3, :SolutionModifier, :ValuesClause],
  },
  :_DescribeQuery_1 => {
    "*" => ["*"],
    :IRIREF => [:_DescribeQuery_4],
    :PNAME_LN => [:_DescribeQuery_4],
    :PNAME_NS => [:_DescribeQuery_4],
    :VAR1 => [:_DescribeQuery_4],
    :VAR2 => [:_DescribeQuery_4],
  },
  :_DescribeQuery_2 => {
    "FROM" => [:_DescribeQuery_7],
    "GROUP" => [],
    "HAVING" => [],
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [],
    "VALUES" => [],
    "WHERE" => [],
    "{" => [],
  },
  :_DescribeQuery_3 => {
    "GROUP" => [],
    "HAVING" => [],
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [],
    "VALUES" => [],
    "WHERE" => [:WhereClause],
    "{" => [:WhereClause],
  },
  :_DescribeQuery_4 => {
    :IRIREF => [:VarOrIri, :_DescribeQuery_5],
    :PNAME_LN => [:VarOrIri, :_DescribeQuery_5],
    :PNAME_NS => [:VarOrIri, :_DescribeQuery_5],
    :VAR1 => [:VarOrIri, :_DescribeQuery_5],
    :VAR2 => [:VarOrIri, :_DescribeQuery_5],
  },
  :_DescribeQuery_5 => {
    "FROM" => [],
    "GROUP" => [],
    "HAVING" => [],
    :IRIREF => [:_DescribeQuery_6],
    "LIMIT" => [],
    "OFFSET" => [],
    "ORDER" => [],
    :PNAME_LN => [:_DescribeQuery_6],
    :PNAME_NS => [:_DescribeQuery_6],
    "VALUES" => [],
    :VAR1 => [:_DescribeQuery_6],
    :VAR2 => [:_DescribeQuery_6],
    "WHERE" => [],
    "{" => [],
  },
  :_DescribeQuery_6 => {
    :IRIREF => [:VarOrIri, :_DescribeQuery_5],
    :PNAME_LN => [:VarOrIri, :_DescribeQuery_5],
    :PNAME_NS => [:VarOrIri, :_DescribeQuery_5],
    :VAR1 => [:VarOrIri, :_DescribeQuery_5],
    :VAR2 => [:VarOrIri, :_DescribeQuery_5],
  },
  :_DescribeQuery_7 => {
    "FROM" => [:DatasetClause, :_DescribeQuery_2],
  },
  :Drop => {
    "DROP" => ["DROP", :_Drop_1, :GraphRefAll],
  },
  :_Drop_1 => {
    "ALL" => [],
    "DEFAULT" => [],
    "GRAPH" => [],
    "NAMED" => [],
    "SILENT" => ["SILENT"],
  },
  :ExistsFunc => {
    "EXISTS" => ["EXISTS", :GroupGraphPattern],
  },
  :Expression => {
    "!" => [:ConditionalOrExpression],
    "(" => [:ConditionalOrExpression],
    "+" => [:ConditionalOrExpression],
    "-" => [:ConditionalOrExpression],
    "ABS" => [:ConditionalOrExpression],
    "AVG" => [:ConditionalOrExpression],
    "BNODE" => [:ConditionalOrExpression],
    "BOUND" => [:ConditionalOrExpression],
    "CEIL" => [:ConditionalOrExpression],
    "COALESCE" => [:ConditionalOrExpression],
    "CONCAT" => [:ConditionalOrExpression],
    "CONTAINS" => [:ConditionalOrExpression],
    "COUNT" => [:ConditionalOrExpression],
    "DATATYPE" => [:ConditionalOrExpression],
    "DAY" => [:ConditionalOrExpression],
    :DECIMAL => [:ConditionalOrExpression],
    :DECIMAL_NEGATIVE => [:ConditionalOrExpression],
    :DECIMAL_POSITIVE => [:ConditionalOrExpression],
    :DOUBLE => [:ConditionalOrExpression],
    :DOUBLE_NEGATIVE => [:ConditionalOrExpression],
    :DOUBLE_POSITIVE => [:ConditionalOrExpression],
    "ENCODE_FOR_URI" => [:ConditionalOrExpression],
    "EXISTS" => [:ConditionalOrExpression],
    "FLOOR" => [:ConditionalOrExpression],
    "GROUP_CONCAT" => [:ConditionalOrExpression],
    "HOURS" => [:ConditionalOrExpression],
    "IF" => [:ConditionalOrExpression],
    :INTEGER => [:ConditionalOrExpression],
    :INTEGER_NEGATIVE => [:ConditionalOrExpression],
    :INTEGER_POSITIVE => [:ConditionalOrExpression],
    "IRI" => [:ConditionalOrExpression],
    :IRIREF => [:ConditionalOrExpression],
    "LANG" => [:ConditionalOrExpression],
    "LANGMATCHES" => [:ConditionalOrExpression],
    "LCASE" => [:ConditionalOrExpression],
    "MAX" => [:ConditionalOrExpression],
    "MD5" => [:ConditionalOrExpression],
    "MIN" => [:ConditionalOrExpression],
    "MINUTES" => [:ConditionalOrExpression],
    "MONTH" => [:ConditionalOrExpression],
    "NOT" => [:ConditionalOrExpression],
    "NOW" => [:ConditionalOrExpression],
    :PNAME_LN => [:ConditionalOrExpression],
    :PNAME_NS => [:ConditionalOrExpression],
    "RAND" => [:ConditionalOrExpression],
    "REGEX" => [:ConditionalOrExpression],
    "REPLACE" => [:ConditionalOrExpression],
    "ROUND" => [:ConditionalOrExpression],
    "SAMPLE" => [:ConditionalOrExpression],
    "SECONDS" => [:ConditionalOrExpression],
    "SHA1" => [:ConditionalOrExpression],
    "SHA224" => [:ConditionalOrExpression],
    "SHA256" => [:ConditionalOrExpression],
    "SHA384" => [:ConditionalOrExpression],
    "SHA512" => [:ConditionalOrExpression],
    "STR" => [:ConditionalOrExpression],
    "STRAFTER" => [:ConditionalOrExpression],
    "STRBEFORE" => [:ConditionalOrExpression],
    "STRDT" => [:ConditionalOrExpression],
    "STRENDS" => [:ConditionalOrExpression],
    :STRING_LITERAL1 => [:ConditionalOrExpression],
    :STRING_LITERAL2 => [:ConditionalOrExpression],
    :STRING_LITERAL_LONG1 => [:ConditionalOrExpression],
    :STRING_LITERAL_LONG2 => [:ConditionalOrExpression],
    "STRLANG" => [:ConditionalOrExpression],
    "STRLEN" => [:ConditionalOrExpression],
    "STRSTARTS" => [:ConditionalOrExpression],
    "STRUUID" => [:ConditionalOrExpression],
    "SUBSTR" => [:ConditionalOrExpression],
    "SUM" => [:ConditionalOrExpression],
    "TIMEZONE" => [:ConditionalOrExpression],
    "TZ" => [:ConditionalOrExpression],
    "UCASE" => [:ConditionalOrExpression],
    "URI" => [:ConditionalOrExpression],
    "UUID" => [:ConditionalOrExpression],
    :VAR1 => [:ConditionalOrExpression],
    :VAR2 => [:ConditionalOrExpression],
    "YEAR" => [:ConditionalOrExpression],
    "false" => [:ConditionalOrExpression],
    "isBLANK" => [:ConditionalOrExpression],
    "isIRI" => [:ConditionalOrExpression],
    "isLITERAL" => [:ConditionalOrExpression],
    "isNUMERIC" => [:ConditionalOrExpression],
    "isURI" => [:ConditionalOrExpression],
    "sameTerm" => [:ConditionalOrExpression],
    "true" => [:ConditionalOrExpression],
  },
  :ExpressionList => {
    "(" => [:_ExpressionList_1],
    :NIL => [:NIL],
  },
  :_ExpressionList_1 => {
    "(" => ["(", :Expression, :_ExpressionList_2, ")"],
  },
  :_ExpressionList_2 => {
    ")" => [],
    "," => [:_ExpressionList_4],
  },
  :_ExpressionList_3 => {
    "," => [",", :Expression],
  },
  :_ExpressionList_4 => {
    "," => [:_ExpressionList_3, :_ExpressionList_2],
  },
  :Filter => {
    "FILTER" => ["FILTER", :Constraint],
  },
  :FunctionCall => {
    :IRIREF => [:iri, :ArgList],
    :PNAME_LN => [:iri, :ArgList],
    :PNAME_NS => [:iri, :ArgList],
  },
  :GraphGraphPattern => {
    "GRAPH" => ["GRAPH", :VarOrIri, :GroupGraphPattern],
  },
  :GraphNode => {
    "(" => [:TriplesNode],
    :ANON => [:VarOrTerm],
    :BLANK_NODE_LABEL => [:VarOrTerm],
    :DECIMAL => [:VarOrTerm],
    :DECIMAL_NEGATIVE => [:VarOrTerm],
    :DECIMAL_POSITIVE => [:VarOrTerm],
    :DOUBLE => [:VarOrTerm],
    :DOUBLE_NEGATIVE => [:VarOrTerm],
    :DOUBLE_POSITIVE => [:VarOrTerm],
    :INTEGER => [:VarOrTerm],
    :INTEGER_NEGATIVE => [:VarOrTerm],
    :INTEGER_POSITIVE => [:VarOrTerm],
    :IRIREF => [: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],
    "[" => [:TriplesNode],
    "false" => [:VarOrTerm],
    "true" => [:VarOrTerm],
  },
  :GraphNodePath => {
    "(" => [:TriplesNodePath],
    :ANON => [:VarOrTerm],
    :BLANK_NODE_LABEL => [:VarOrTerm],
    :DECIMAL => [:VarOrTerm],
    :DECIMAL_NEGATIVE => [:VarOrTerm],
    :DECIMAL_POSITIVE => [:VarOrTerm],
    :DOUBLE => [:VarOrTerm],
    :DOUBLE_NEGATIVE => [:VarOrTerm],
    :DOUBLE_POSITIVE => [:VarOrTerm],
    :INTEGER => [:VarOrTerm],
    :INTEGER_NEGATIVE => [:VarOrTerm],
    :INTEGER_POSITIVE => [:VarOrTerm],
    :IRIREF => [: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],
    "[" => [:TriplesNodePath],
    "false" => [:VarOrTerm],
    "true" => [:VarOrTerm],
  },
  :GraphOrDefault => {
    "DEFAULT" => ["DEFAULT"],
    "GRAPH" => [:_GraphOrDefault_1],
    :IRIREF => [:_GraphOrDefault_1],
    :PNAME_LN => [:_GraphOrDefault_1],
    :PNAME_NS => [:_GraphOrDefault_1],
  },
  :_GraphOrDefault_1 => {
    "GRAPH" => [:_GraphOrDefault_2, :iri],
    :IRIREF => [:_GraphOrDefault_2, :iri],
    :PNAME_LN => [:_GraphOrDefault_2, :iri],
    :PNAME_NS => [:_GraphOrDefault_2, :iri],
  },
  :_GraphOrDefault_2 => {
    "GRAPH" => ["GRAPH"],
    :IRIREF => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
  },
  :GraphPatternNotTriples => {
    "BIND" => [:Bind],
    "FILTER" => [:Filter],
    "GRAPH" => [:GraphGraphPattern],
    "MINUS" => [:MinusGraphPattern],
    "OPTIONAL" => [:OptionalGraphPattern],
    "SERVICE" => [:ServiceGraphPattern],
    "VALUES" => [:InlineData],
    "{" => [:GroupOrUnionGraphPattern],
  },
  :GraphRef => {
    "GRAPH" => ["GRAPH", :iri],
  },
  :GraphRefAll => {
    "ALL" => ["ALL"],
    "DEFAULT" => ["DEFAULT"],
    "GRAPH" => [:GraphRef],
    "NAMED" => ["NAMED"],
  },
  :GraphTerm => {
    :ANON => [:BlankNode],
    :BLANK_NODE_LABEL => [:BlankNode],
    :DECIMAL => [:NumericLiteral],
    :DECIMAL_NEGATIVE => [:NumericLiteral],
    :DECIMAL_POSITIVE => [:NumericLiteral],
    :DOUBLE => [:NumericLiteral],
    :DOUBLE_NEGATIVE => [:NumericLiteral],
    :DOUBLE_POSITIVE => [:NumericLiteral],
    :INTEGER => [:NumericLiteral],
    :INTEGER_NEGATIVE => [:NumericLiteral],
    :INTEGER_POSITIVE => [:NumericLiteral],
    :IRIREF => [:iri],
    :NIL => [:NIL],
    :PNAME_LN => [:iri],
    :PNAME_NS => [:iri],
    :STRING_LITERAL1 => [:RDFLiteral],
    :STRING_LITERAL2 => [:RDFLiteral],
    :STRING_LITERAL_LONG1 => [:RDFLiteral],
    :STRING_LITERAL_LONG2 => [:RDFLiteral],
    "false" => [:BooleanLiteral],
    "true" => [:BooleanLiteral],
  },
  :GroupClause => {
    "GROUP" => ["GROUP", "BY", :_GroupClause_1],
  },
  :_GroupClause_1 => {
    "(" => [:GroupCondition, :_GroupClause_2],
    "ABS" => [:GroupCondition, :_GroupClause_2],
    "AVG" => [:GroupCondition, :_GroupClause_2],
    "BNODE" => [:GroupCondition, :_GroupClause_2],
    "BOUND" => [:GroupCondition, :_GroupClause_2],
    "CEIL" => [:GroupCondition, :_GroupClause_2],
    "COALESCE" => [:GroupCondition, :_GroupClause_2],
    "CONCAT" => [:GroupCondition, :_GroupClause_2],
    "CONTAINS" => [:GroupCondition, :_GroupClause_2],
    "COUNT" => [:GroupCondition, :_GroupClause_2],
    "DATATYPE" => [:GroupCondition, :_GroupClause_2],
    "DAY" => [:GroupCondition, :_GroupClause_2],
    "ENCODE_FOR_URI" => [:GroupCondition, :_GroupClause_2],
    "EXISTS" => [:GroupCondition, :_GroupClause_2],
    "FLOOR" => [:GroupCondition, :_GroupClause_2],
    "GROUP_CONCAT" => [:GroupCondition, :_GroupClause_2],
    "HOURS" => [:GroupCondition, :_GroupClause_2],
    "IF" => [:GroupCondition, :_GroupClause_2],
    "IRI" => [:GroupCondition, :_GroupClause_2],
    :IRIREF => [:GroupCondition, :_GroupClause_2],
    "LANG" => [:GroupCondition, :_GroupClause_2],
    "LANGMATCHES" => [:GroupCondition, :_GroupClause_2],
    "LCASE" => [:GroupCondition, :_GroupClause_2],
    "MAX" => [:GroupCondition, :_GroupClause_2],
    "MD5" => [:GroupCondition, :_GroupClause_2],
    "MIN" => [:GroupCondition, :_GroupClause_2],
    "MINUTES" => [:GroupCondition, :_GroupClause_2],
    "MONTH" => [:GroupCondition, :_GroupClause_2],
    "NOT" => [:GroupCondition, :_GroupClause_2],
    "NOW" => [:GroupCondition, :_GroupClause_2],
    :PNAME_LN => [:GroupCondition, :_GroupClause_2],
    :PNAME_NS => [:GroupCondition, :_GroupClause_2],
    "RAND" => [:GroupCondition, :_GroupClause_2],
    "REGEX" => [:GroupCondition, :_GroupClause_2],
    "REPLACE" => [:GroupCondition, :_GroupClause_2],
    "ROUND" => [:GroupCondition, :_GroupClause_2],
    "SAMPLE" => [:GroupCondition, :_GroupClause_2],
    "SECONDS" => [:GroupCondition, :_GroupClause_2],
    "SHA1" => [:GroupCondition, :_GroupClause_2],
    "SHA224" => [:GroupCondition, :_GroupClause_2],
    "SHA256" => [:GroupCondition, :_GroupClause_2],
    "SHA384" => [:GroupCondition, :_GroupClause_2],
    "SHA512" => [:GroupCondition, :_GroupClause_2],
    "STR" => [:GroupCondition, :_GroupClause_2],
    "STRAFTER" => [:GroupCondition, :_GroupClause_2],
    "STRBEFORE" => [:GroupCondition, :_GroupClause_2],
    "STRDT" => [:GroupCondition, :_GroupClause_2],
    "STRENDS" => [:GroupCondition, :_GroupClause_2],
    "STRLANG" => [:GroupCondition, :_GroupClause_2],
    "STRLEN" => [:GroupCondition, :_GroupClause_2],
    "STRSTARTS" => [:GroupCondition, :_GroupClause_2],
    "STRUUID" => [:GroupCondition, :_GroupClause_2],
    "SUBSTR" => [:GroupCondition, :_GroupClause_2],
    "SUM" => [:GroupCondition, :_GroupClause_2],
    "TIMEZONE" => [:GroupCondition, :_GroupClause_2],
    "TZ" => [:GroupCondition, :_GroupClause_2],
    "UCASE" => [:GroupCondition, :_GroupClause_2],
    "URI" => [:GroupCondition, :_GroupClause_2],
    "UUID" => [:GroupCondition, :_GroupClause_2],
    :VAR1 => [:GroupCondition, :_GroupClause_2],
    :VAR2 => [:GroupCondition, :_GroupClause_2],
    "YEAR" => [:GroupCondition, :_GroupClause_2],
    "isBLANK" => [:GroupCondition, :_GroupClause_2],
    "isIRI" => [:GroupCondition, :_GroupClause_2],
    "isLITERAL" => [:GroupCondition, :_GroupClause_2],
    "isNUMERIC" => [:GroupCondition, :_GroupClause_2],
    "isURI" => [:GroupCondition, :_GroupClause_2],
    "sameTerm" => [:GroupCondition, :_GroupClause_2],
  },
  :_GroupClause_2 => {
    "(" => [:_GroupClause_3],
    "ABS" => [:_GroupClause_3],
    "AVG" => [:_GroupClause_3],
    "BNODE" => [:_GroupClause_3],
    "BOUND" => [:_GroupClause_3],
    "CEIL" => [:_GroupClause_3],
    "COALESCE" => [:_GroupClause_3],
    "CONCAT" => [:_GroupClause_3],
    "CONTAINS" => [:_GroupClause_3],
    "COUNT" => [:_GroupClause_3],
    "DATATYPE" => [:_GroupClause_3],
    "DAY" => [:_GroupClause_3],
    "ENCODE_FOR_URI" => [:_GroupClause_3],
    "EXISTS" => [:_GroupClause_3],
    "FLOOR" => [:_GroupClause_3],
    "GROUP_CONCAT" => [:_GroupClause_3],
    "HAVING" => [],
    "HOURS" => [:_GroupClause_3],
    "IF" => [:_GroupClause_3],
    "IRI" => [:_GroupClause_3],
    :IRIREF => [:_GroupClause_3],
    "LANG" => [:_GroupClause_3],
    "LANGMATCHES" => [:_GroupClause_3],
    "LCASE" => [:_GroupClause_3],
    "LIMIT" => [],
    "MAX" => [:_GroupClause_3],
    "MD5" => [:_GroupClause_3],
    "MIN" => [:_GroupClause_3],
    "MINUTES" => [:_GroupClause_3],
    "MONTH" => [:_GroupClause_3],
    "NOT" => [:_GroupClause_3],
    "NOW" => [:_GroupClause_3],
    "OFFSET" => [],
    "ORDER" => [],
    :PNAME_LN => [:_GroupClause_3],
    :PNAME_NS => [:_GroupClause_3],
    "RAND" => [:_GroupClause_3],
    "REGEX" => [:_GroupClause_3],
    "REPLACE" => [:_GroupClause_3],
    "ROUND" => [:_GroupClause_3],
    "SAMPLE" => [:_GroupClause_3],
    "SECONDS" => [:_GroupClause_3],
    "SHA1" => [:_GroupClause_3],
    "SHA224" => [:_GroupClause_3],
    "SHA256" => [:_GroupClause_3],
    "SHA384" => [:_GroupClause_3],
    "SHA512" => [:_GroupClause_3],
    "STR" => [:_GroupClause_3],
    "STRAFTER" => [:_GroupClause_3],
    "STRBEFORE" => [:_GroupClause_3],
    "STRDT" => [:_GroupClause_3],
    "STRENDS" => [:_GroupClause_3],
    "STRLANG" => [:_GroupClause_3],
    "STRLEN" => [:_GroupClause_3],
    "STRSTARTS" => [:_GroupClause_3],
    "STRUUID" => [:_GroupClause_3],
    "SUBSTR" => [:_GroupClause_3],
    "SUM" => [:_GroupClause_3],
    "TIMEZONE" => [:_GroupClause_3],
    "TZ" => [:_GroupClause_3],
    "UCASE" => [:_GroupClause_3],
    "URI" => [:_GroupClause_3],
    "UUID" => [:_GroupClause_3],
    "VALUES" => [],
    :VAR1 => [:_GroupClause_3],
    :VAR2 => [:_GroupClause_3],
    "YEAR" => [:_GroupClause_3],
    "isBLANK" => [:_GroupClause_3],
    "isIRI" => [:_GroupClause_3],
    "isLITERAL" => [:_GroupClause_3],
    "isNUMERIC" => [:_GroupClause_3],
    "isURI" => [:_GroupClause_3],
    "sameTerm" => [:_GroupClause_3],
    "}" => [],
  },
  :_GroupClause_3 => {
    "(" => [:GroupCondition, :_GroupClause_2],
    "ABS" => [:GroupCondition, :_GroupClause_2],
    "AVG" => [:GroupCondition, :_GroupClause_2],
    "BNODE" => [:GroupCondition, :_GroupClause_2],
    "BOUND" => [:GroupCondition, :_GroupClause_2],
    "CEIL" => [:GroupCondition, :_GroupClause_2],
    "COALESCE" => [:GroupCondition, :_GroupClause_2],
    "CONCAT" => [:GroupCondition, :_GroupClause_2],
    "CONTAINS" => [:GroupCondition, :_GroupClause_2],
    "COUNT" => [:GroupCondition, :_GroupClause_2],
    "DATATYPE" => [:GroupCondition, :_GroupClause_2],
    "DAY" => [:GroupCondition, :_GroupClause_2],
    "ENCODE_FOR_URI" => [:GroupCondition, :_GroupClause_2],
    "EXISTS" => [:GroupCondition, :_GroupClause_2],
    "FLOOR" => [:GroupCondition, :_GroupClause_2],
    "GROUP_CONCAT" => [:GroupCondition, :_GroupClause_2],
    "HOURS" => [:GroupCondition, :_GroupClause_2],
    "IF" => [:GroupCondition, :_GroupClause_2],
    "IRI" => [:GroupCondition, :_GroupClause_2],
    :IRIREF => [:GroupCondition, :_GroupClause_2],
    "LANG" => [:GroupCondition, :_GroupClause_2],
    "LANGMATCHES" => [:GroupCondition, :_GroupClause_2],
    "LCASE" => [:GroupCondition, :_GroupClause_2],
    "MAX" => [:GroupCondition, :_GroupClause_2],
    "MD5" => [:GroupCondition, :_GroupClause_2],
    "MIN" => [:GroupCondition, :_GroupClause_2],
    "MINUTES" => [:GroupCondition, :_GroupClause_2],
    "MONTH" => [:GroupCondition, :_GroupClause_2],
    "NOT" => [:GroupCondition, :_GroupClause_2],
    "NOW" => [:GroupCondition, :_GroupClause_2],
    :PNAME_LN => [:GroupCondition, :_GroupClause_2],
    :PNAME_NS => [:GroupCondition, :_GroupClause_2],
    "RAND" => [:GroupCondition, :_GroupClause_2],
    "REGEX" => [:GroupCondition, :_GroupClause_2],
    "REPLACE" => [:GroupCondition, :_GroupClause_2],
    "ROUND" => [:GroupCondition, :_GroupClause_2],
    "SAMPLE" => [:GroupCondition, :_GroupClause_2],
    "SECONDS" => [:GroupCondition, :_GroupClause_2],
    "SHA1" => [:GroupCondition, :_GroupClause_2],
    "SHA224" => [:GroupCondition, :_GroupClause_2],
    "SHA256" => [:GroupCondition, :_GroupClause_2],
    "SHA384" => [:GroupCondition, :_GroupClause_2],
    "SHA512" => [:GroupCondition, :_GroupClause_2],
    "STR" => [:GroupCondition, :_GroupClause_2],
    "STRAFTER" => [:GroupCondition, :_GroupClause_2],
    "STRBEFORE" => [:GroupCondition, :_GroupClause_2],
    "STRDT" => [:GroupCondition, :_GroupClause_2],
    "STRENDS" => [:GroupCondition, :_GroupClause_2],
    "STRLANG" => [:GroupCondition, :_GroupClause_2],
    "STRLEN" => [:GroupCondition, :_GroupClause_2],
    "STRSTARTS" => [:GroupCondition, :_GroupClause_2],
    "STRUUID" => [:GroupCondition, :_GroupClause_2],
    "SUBSTR" => [:GroupCondition, :_GroupClause_2],
    "SUM" => [:GroupCondition, :_GroupClause_2],
    "TIMEZONE" => [:GroupCondition, :_GroupClause_2],
    "TZ" => [:GroupCondition, :_GroupClause_2],
    "UCASE" => [:GroupCondition, :_GroupClause_2],
    "URI" => [:GroupCondition, :_GroupClause_2],
    "UUID" => [:GroupCondition, :_GroupClause_2],
    :VAR1 => [:GroupCondition, :_GroupClause_2],
    :VAR2 => [:GroupCondition, :_GroupClause_2],
    "YEAR" => [:GroupCondition, :_GroupClause_2],
    "isBLANK" => [:GroupCondition, :_GroupClause_2],
    "isIRI" => [:GroupCondition, :_GroupClause_2],
    "isLITERAL" => [:GroupCondition, :_GroupClause_2],
    "isNUMERIC" => [:GroupCondition, :_GroupClause_2],
    "isURI" => [:GroupCondition, :_GroupClause_2],
    "sameTerm" => [:GroupCondition, :_GroupClause_2],
  },
  :GroupCondition => {
    "(" => [:_GroupCondition_1],
    "ABS" => [:BuiltInCall],
    "AVG" => [:BuiltInCall],
    "BNODE" => [:BuiltInCall],
    "BOUND" => [:BuiltInCall],
    "CEIL" => [:BuiltInCall],
    "COALESCE" => [:BuiltInCall],
    "CONCAT" => [:BuiltInCall],
    "CONTAINS" => [:BuiltInCall],
    "COUNT" => [:BuiltInCall],
    "DATATYPE" => [:BuiltInCall],
    "DAY" => [:BuiltInCall],
    "ENCODE_FOR_URI" => [:BuiltInCall],
    "EXISTS" => [:BuiltInCall],
    "FLOOR" => [:BuiltInCall],
    "GROUP_CONCAT" => [:BuiltInCall],
    "HOURS" => [:BuiltInCall],
    "IF" => [:BuiltInCall],
    "IRI" => [:BuiltInCall],
    :IRIREF => [:FunctionCall],
    "LANG" => [:BuiltInCall],
    "LANGMATCHES" => [:BuiltInCall],
    "LCASE" => [:BuiltInCall],
    "MAX" => [:BuiltInCall],
    "MD5" => [:BuiltInCall],
    "MIN" => [:BuiltInCall],
    "MINUTES" => [:BuiltInCall],
    "MONTH" => [:BuiltInCall],
    "NOT" => [:BuiltInCall],
    "NOW" => [:BuiltInCall],
    :PNAME_LN => [:FunctionCall],
    :PNAME_NS => [:FunctionCall],
    "RAND" => [:BuiltInCall],
    "REGEX" => [:BuiltInCall],
    "REPLACE" => [:BuiltInCall],
    "ROUND" => [:BuiltInCall],
    "SAMPLE" => [:BuiltInCall],
    "SECONDS" => [:BuiltInCall],
    "SHA1" => [:BuiltInCall],
    "SHA224" => [:BuiltInCall],
    "SHA256" => [:BuiltInCall],
    "SHA384" => [:BuiltInCall],
    "SHA512" => [:BuiltInCall],
    "STR" => [:BuiltInCall],
    "STRAFTER" => [:BuiltInCall],
    "STRBEFORE" => [:BuiltInCall],
    "STRDT" => [:BuiltInCall],
    "STRENDS" => [:BuiltInCall],
    "STRLANG" => [:BuiltInCall],
    "STRLEN" => [:BuiltInCall],
    "STRSTARTS" => [:BuiltInCall],
    "STRUUID" => [:BuiltInCall],
    "SUBSTR" => [:BuiltInCall],
    "SUM" => [:BuiltInCall],
    "TIMEZONE" => [:BuiltInCall],
    "TZ" => [:BuiltInCall],
    "UCASE" => [:BuiltInCall],
    "URI" => [:BuiltInCall],
    "UUID" => [:BuiltInCall],
    :VAR1 => [:Var],
    :VAR2 => [:Var],
    "YEAR" => [:BuiltInCall],
    "isBLANK" => [:BuiltInCall],
    "isIRI" => [:BuiltInCall],
    "isLITERAL" => [:BuiltInCall],
    "isNUMERIC" => [:BuiltInCall],
    "isURI" => [:BuiltInCall],
    "sameTerm" => [:BuiltInCall],
  },
  :_GroupCondition_1 => {
    "(" => ["(", :Expression, :_GroupCondition_2, ")"],
  },
  :_GroupCondition_2 => {
    ")" => [],
    "AS" => [:_GroupCondition_3],
  },
  :_GroupCondition_3 => {
    "AS" => ["AS", :Var],
  },
  :GroupGraphPattern => {
    "{" => ["{", :_GroupGraphPattern_1, "}"],
  },
  :GroupGraphPatternSub => {
    "(" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :ANON => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "BIND" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :BLANK_NODE_LABEL => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :DECIMAL => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :DECIMAL_NEGATIVE => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :DECIMAL_POSITIVE => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :DOUBLE => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :DOUBLE_NEGATIVE => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :DOUBLE_POSITIVE => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "FILTER" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "GRAPH" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :INTEGER => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :INTEGER_NEGATIVE => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :INTEGER_POSITIVE => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :IRIREF => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "MINUS" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :NIL => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "OPTIONAL" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :PNAME_LN => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :PNAME_NS => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "SERVICE" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :STRING_LITERAL1 => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :STRING_LITERAL2 => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :STRING_LITERAL_LONG1 => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :STRING_LITERAL_LONG2 => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "VALUES" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :VAR1 => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    :VAR2 => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "[" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "false" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "true" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "{" => [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2],
    "}" => [],
  },
  :_GroupGraphPatternSub_1 => {
    "(" => [:TriplesBlock],
    :ANON => [:TriplesBlock],
    "BIND" => [],
    :BLANK_NODE_LABEL => [:TriplesBlock],
    :DECIMAL => [:TriplesBlock],
    :DECIMAL_NEGATIVE => [:TriplesBlock],
    :DECIMAL_POSITIVE => [:TriplesBlock],
    :DOUBLE => [:TriplesBlock],
    :DOUBLE_NEGATIVE => [:TriplesBlock],
    :DOUBLE_POSITIVE => [:TriplesBlock],
    "FILTER" => [],
    "GRAPH" => [],
    :INTEGER => [:TriplesBlock],
    :INTEGER_NEGATIVE => [:TriplesBlock],
    :INTEGER_POSITIVE => [:TriplesBlock],
    :IRIREF => [:TriplesBlock],
    "MINUS" => [],
    :NIL => [:TriplesBlock],
    "OPTIONAL" => [],
    :PNAME_LN => [:TriplesBlock],
    :PNAME_NS => [:TriplesBlock],
    "SERVICE" => [],
    :STRING_LITERAL1 => [:TriplesBlock],
    :STRING_LITERAL2 => [:TriplesBlock],
    :STRING_LITERAL_LONG1 => [:TriplesBlock],
    :STRING_LITERAL_LONG2 => [:TriplesBlock],
    "VALUES" => [],
    :VAR1 => [:TriplesBlock],
    :VAR2 => [:TriplesBlock],
    "[" => [:TriplesBlock],
    "false" => [:TriplesBlock],
    "true" => [:TriplesBlock],
    "{" => [],
    "}" => [],
  },
  :_GroupGraphPatternSub_2 => {
    "BIND" => [:_GroupGraphPatternSub_4],
    "FILTER" => [:_GroupGraphPatternSub_4],
    "GRAPH" => [:_GroupGraphPatternSub_4],
    "MINUS" => [:_GroupGraphPatternSub_4],
    "OPTIONAL" => [:_GroupGraphPatternSub_4],
    "SERVICE" => [:_GroupGraphPatternSub_4],
    "VALUES" => [:_GroupGraphPatternSub_4],
    "{" => [:_GroupGraphPatternSub_4],
    "}" => [],
  },
  :_GroupGraphPatternSub_3 => {
    "BIND" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
    "FILTER" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
    "GRAPH" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
    "MINUS" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
    "OPTIONAL" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
    "SERVICE" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
    "VALUES" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
    "{" => [:GraphPatternNotTriples, :_GroupGraphPatternSub_5, :_GroupGraphPatternSub_6],
  },
  :_GroupGraphPatternSub_4 => {
    "BIND" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
    "FILTER" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
    "GRAPH" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
    "MINUS" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
    "OPTIONAL" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
    "SERVICE" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
    "VALUES" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
    "{" => [:_GroupGraphPatternSub_3, :_GroupGraphPatternSub_2],
  },
  :_GroupGraphPatternSub_5 => {
    "(" => [],
    "." => ["."],
    :ANON => [],
    "BIND" => [],
    :BLANK_NODE_LABEL => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "FILTER" => [],
    "GRAPH" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    :IRIREF => [],
    "MINUS" => [],
    :NIL => [],
    "OPTIONAL" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "SERVICE" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "VALUES" => [],
    :VAR1 => [],
    :VAR2 => [],
    "[" => [],
    "false" => [],
    "true" => [],
    "{" => [],
    "}" => [],
  },
  :_GroupGraphPatternSub_6 => {
    "(" => [:TriplesBlock],
    :ANON => [:TriplesBlock],
    "BIND" => [],
    :BLANK_NODE_LABEL => [:TriplesBlock],
    :DECIMAL => [:TriplesBlock],
    :DECIMAL_NEGATIVE => [:TriplesBlock],
    :DECIMAL_POSITIVE => [:TriplesBlock],
    :DOUBLE => [:TriplesBlock],
    :DOUBLE_NEGATIVE => [:TriplesBlock],
    :DOUBLE_POSITIVE => [:TriplesBlock],
    "FILTER" => [],
    "GRAPH" => [],
    :INTEGER => [:TriplesBlock],
    :INTEGER_NEGATIVE => [:TriplesBlock],
    :INTEGER_POSITIVE => [:TriplesBlock],
    :IRIREF => [:TriplesBlock],
    "MINUS" => [],
    :NIL => [:TriplesBlock],
    "OPTIONAL" => [],
    :PNAME_LN => [:TriplesBlock],
    :PNAME_NS => [:TriplesBlock],
    "SERVICE" => [],
    :STRING_LITERAL1 => [:TriplesBlock],
    :STRING_LITERAL2 => [:TriplesBlock],
    :STRING_LITERAL_LONG1 => [:TriplesBlock],
    :STRING_LITERAL_LONG2 => [:TriplesBlock],
    "VALUES" => [],
    :VAR1 => [:TriplesBlock],
    :VAR2 => [:TriplesBlock],
    "[" => [:TriplesBlock],
    "false" => [:TriplesBlock],
    "true" => [:TriplesBlock],
    "{" => [],
    "}" => [],
  },
  :_GroupGraphPattern_1 => {
    "(" => [:GroupGraphPatternSub],
    :ANON => [:GroupGraphPatternSub],
    "BIND" => [:GroupGraphPatternSub],
    :BLANK_NODE_LABEL => [:GroupGraphPatternSub],
    :DECIMAL => [:GroupGraphPatternSub],
    :DECIMAL_NEGATIVE => [:GroupGraphPatternSub],
    :DECIMAL_POSITIVE => [:GroupGraphPatternSub],
    :DOUBLE => [:GroupGraphPatternSub],
    :DOUBLE_NEGATIVE => [:GroupGraphPatternSub],
    :DOUBLE_POSITIVE => [:GroupGraphPatternSub],
    "FILTER" => [:GroupGraphPatternSub],
    "GRAPH" => [:GroupGraphPatternSub],
    :INTEGER => [:GroupGraphPatternSub],
    :INTEGER_NEGATIVE => [:GroupGraphPatternSub],
    :INTEGER_POSITIVE => [:GroupGraphPatternSub],
    :IRIREF => [:GroupGraphPatternSub],
    "MINUS" => [:GroupGraphPatternSub],
    :NIL => [:GroupGraphPatternSub],
    "OPTIONAL" => [:GroupGraphPatternSub],
    :PNAME_LN => [:GroupGraphPatternSub],
    :PNAME_NS => [:GroupGraphPatternSub],
    "SELECT" => [:SubSelect],
    "SERVICE" => [:GroupGraphPatternSub],
    :STRING_LITERAL1 => [:GroupGraphPatternSub],
    :STRING_LITERAL2 => [:GroupGraphPatternSub],
    :STRING_LITERAL_LONG1 => [:GroupGraphPatternSub],
    :STRING_LITERAL_LONG2 => [:GroupGraphPatternSub],
    "VALUES" => [:GroupGraphPatternSub],
    :VAR1 => [:GroupGraphPatternSub],
    :VAR2 => [:GroupGraphPatternSub],
    "[" => [:GroupGraphPatternSub],
    "false" => [:GroupGraphPatternSub],
    "true" => [:GroupGraphPatternSub],
    "{" => [:GroupGraphPatternSub],
    "}" => [],
  },
  :GroupOrUnionGraphPattern => {
    "{" => [:GroupGraphPattern, :_GroupOrUnionGraphPattern_1],
  },
  :_GroupOrUnionGraphPattern_1 => {
    "(" => [],
    "." => [],
    :ANON => [],
    "BIND" => [],
    :BLANK_NODE_LABEL => [],
    :DECIMAL => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    :DOUBLE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "FILTER" => [],
    "GRAPH" => [],
    :INTEGER => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    :IRIREF => [],
    "MINUS" => [],
    :NIL => [],
    "OPTIONAL" => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "SERVICE" => [],
    :STRING_LITERAL1 => [],
    :STRING_LITERAL2 => [],
    :STRING_LITERAL_LONG1 => [],
    :STRING_LITERAL_LONG2 => [],
    "UNION" => [:_GroupOrUnionGraphPattern_3],
    "VALUES" => [],
    :VAR1 => [],
    :VAR2 => [],
    "[" => [],
    "false" => [],
    "true" => [],
    "{" => [],
    "}" => [],
  },
  :_GroupOrUnionGraphPattern_2 => {
    "UNION" => ["UNION", :GroupGraphPattern],
  },
  :_GroupOrUnionGraphPattern_3 => {
    "UNION" => [:_GroupOrUnionGraphPattern_2, :_GroupOrUnionGraphPattern_1],
  },
  :HavingClause => {
    "HAVING" => ["HAVING", :_HavingClause_1],
  },
  :_HavingClause_1 => {
    "(" => [:HavingCondition, :_HavingClause_2],
    "ABS" => [:HavingCondition, :_HavingClause_2],
    "AVG" => [:HavingCondition, :_HavingClause_2],
    "BNODE" => [:HavingCondition, :_HavingClause_2],
    "BOUND" => [:HavingCondition, :_HavingClause_2],
    "CEIL" => [:HavingCondition, :_HavingClause_2],
    "COALESCE" => [:HavingCondition, :_HavingClause_2],
    "CONCAT" => [:HavingCondition, :_HavingClause_2],
    "CONTAINS" => [:HavingCondition, :_HavingClause_2],
    "COUNT" => [:HavingCondition, :_HavingClause_2],
    "DATATYPE" => [:HavingCondition, :_HavingClause_2],
    "DAY" => [:HavingCondition, :_HavingClause_2],
    "ENCODE_FOR_URI" => [:HavingCondition, :_HavingClause_2],
    "EXISTS" => [:HavingCondition, :_HavingClause_2],
    "FLOOR" => [:HavingCondition, :_HavingClause_2],
    "GROUP_CONCAT" => [:HavingCondition, :_HavingClause_2],
    "HOURS" => [:HavingCondition, :_HavingClause_2],
    "IF" => [:HavingCondition, :_HavingClause_2],
    "IRI" => [:HavingCondition, :_HavingClause_2],
    :IRIREF => [:HavingCondition, :_HavingClause_2],
    "LANG" => [:HavingCondition, :_HavingClause_2],
    "LANGMATCHES" => [:HavingCondition, :_HavingClause_2],
    "LCASE" => [:HavingCondition, :_HavingClause_2],
    "MAX" => [:HavingCondition, :_HavingClause_2],
    "MD5" => [:HavingCondition, :_HavingClause_2],
    "MIN" => [:HavingCondition, :_HavingClause_2],
    "MINUTES" => [:HavingCondition, :_HavingClause_2],
    "MONTH" => [:HavingCondition, :_HavingClause_2],
    "NOT" => [:HavingCondition, :_HavingClause_2],
    "NOW" => [:HavingCondition, :_HavingClause_2],
    :PNAME_LN => [:HavingCondition, :_HavingClause_2],
    :PNAME_NS => [:HavingCondition, :_HavingClause_2],
    "RAND" => [:HavingCondition, :_HavingClause_2],
    "REGEX" => [:HavingCondition, :_HavingClause_2],
    "REPLACE" => [:HavingCondition, :_HavingClause_2],
    "ROUND" => [:HavingCondition, :_HavingClause_2],
    "SAMPLE" => [:HavingCondition, :_HavingClause_2],
    "SECONDS" => [:HavingCondition, :_HavingClause_2],
    "SHA1" => [:HavingCondition, :_HavingClause_2],
    "SHA224" => [:HavingCondition, :_HavingClause_2],
    "SHA256" => [:HavingCondition, :_HavingClause_2],
    "SHA384" => [:HavingCondition, :_HavingClause_2],
    "SHA512" => [:HavingCondition, :_HavingClause_2],
    "STR" => [:HavingCondition, :_HavingClause_2],
    "STRAFTER" => [:HavingCondition, :_HavingClause_2],
    "STRBEFORE" => [:HavingCondition, :_HavingClause_2],
    "STRDT" => [:HavingCondition, :_HavingClause_2],
    "STRENDS" => [:HavingCondition, :_HavingClause_2],
    "STRLANG" => [:HavingCondition, :_HavingClause_2],
    "STRLEN" => [:HavingCondition, :_HavingClause_2],
    "STRSTARTS" => [:HavingCondition, :_HavingClause_2],
    "STRUUID" => [:HavingCondition, :_HavingClause_2],
    "SUBSTR" => [:HavingCondition, :_HavingClause_2],
    "SUM" => [:HavingCondition, :_HavingClause_2],
    "TIMEZONE" => [:HavingCondition, :_HavingClause_2],
    "TZ" => [:HavingCondition, :_HavingClause_2],
    "UCASE" => [:HavingCondition, :_HavingClause_2],
    "URI" => [:HavingCondition, :_HavingClause_2],
    "UUID" => [:HavingCondition, :_HavingClause_2],
    "YEAR" => [:HavingCondition, :_HavingClause_2],
    "isBLANK" => [:HavingCondition, :_HavingClause_2],
    "isIRI" => [:HavingCondition, :_HavingClause_2],
    "isLITERAL" => [:HavingCondition, :_HavingClause_2],
    "isNUMERIC" => [:HavingCondition, :_HavingClause_2],
    "isURI" => [:HavingCondition, :_HavingClause_2],
    "sameTerm" => [:HavingCondition, :_HavingClause_2],
  },
  :_HavingClause_2 => {
    "(" => [:_HavingClause_3],
    "ABS" => [:_HavingClause_3],
    "AVG" => [:_HavingClause_3],
    "BNODE" => [:_HavingClause_3],
    "BOUND" => [:_HavingClause_3],
    "CEIL" => [:_HavingClause_3],
    "COALESCE" => [:_HavingClause_3],
    "CONCAT" => [:_HavingClause_3],
    "CONTAINS" => [:_HavingClause_3],
    "COUNT" => [:_HavingClause_3],
    "DATATYPE" => [:_HavingClause_3],
    "DAY" => [:_HavingClause_3],
    "ENCODE_FOR_URI" => [:_HavingClause_3],
    "EXISTS" => [:_HavingClause_3],
    "FLOOR" => [:_HavingClause_3],
    "GROUP_CONCAT" => [:_HavingClause_3],
    "HOURS" => [:_HavingClause_3],
    "IF" => [:_HavingClause_3],
    "IRI" => [:_HavingClause_3],
    :IRIREF => [:_HavingClause_3],
    "LANG" => [:_HavingClause_3],
    "LANGMATCHES" => [:_HavingClause_3],
    "LCASE" => [:_HavingClause_3],
    "LIMIT" => [],
    "MAX" => [:_HavingClause_3],
    "MD5" => [:_HavingClause_3],
    "MIN" => [:_HavingClause_3],
    "MINUTES" => [:_HavingClause_3],
    "MONTH" => [:_HavingClause_3],
    "NOT" => [:_HavingClause_3],
    "NOW" => [:_HavingClause_3],
    "OFFSET" => [],
    "ORDER" => [],
    :PNAME_LN => [:_HavingClause_3],
    :PNAME_NS => [:_HavingClause_3],
    "RAND" => [:_HavingClause_3],
    "REGEX" => [:_HavingClause_3],
    "REPLACE" => [:_HavingClause_3],
    "ROUND" => [:_HavingClause_3],
    "SAMPLE" => [:_HavingClause_3],
    "SECONDS" => [:_HavingClause_3],
    "SHA1" => [:_HavingClause_3],
    "SHA224" => [:_HavingClause_3],
    "SHA256" => [:_HavingClause_3],
    "SHA384" => [:_HavingClause_3],
    "SHA512" => [:_HavingClause_3],
    "STR" => [:_HavingClause_3],
    "STRAFTER" => [:_HavingClause_3],
    "STRBEFORE" => [:_HavingClause_3],
    "STRDT" => [:_HavingClause_3],
    "STRENDS" => [:_HavingClause_3],
    "STRLANG" => [:_HavingClause_3],
    "STRLEN" => [:_HavingClause_3],
    "STRSTARTS" => [:_HavingClause_3],
    "STRUUID" => [:_HavingClause_3],
    "SUBSTR" => [:_HavingClause_3],
    "SUM" => [:_HavingClause_3],
    "TIMEZONE" => [:_HavingClause_3],
    "TZ" => [:_HavingClause_3],
    "UCASE" => [:_HavingClause_3],
    "URI" => [:_HavingClause_3],
    "UUID" => [:_HavingClause_3],
    "VALUES" => [],
    "YEAR" => [:_HavingClause_3],
    "isBLANK" => [:_HavingClause_3],
    "isIRI" => [:_HavingClause_3],
    "isLITERAL" => [:_HavingClause_3],
    "isNUMERIC" => [:_HavingClause_3],
    "isURI" => [:_HavingClause_3],
    "sameTerm" => [:_HavingClause_3],
    "}" => [],
  },
  :_HavingClause_3 => {
    "(" => [:HavingCondition, :_HavingClause_2],
    "ABS" => [:HavingCondition, :_HavingClause_2],
    "AVG" => [:HavingCondition, :_HavingClause_2],
    "BNODE" => [:HavingCondition, :_HavingClause_2],
    "BOUND" => [:HavingCondition, :_HavingClause_2],
    "CEIL" => [:HavingCondition, :_HavingClause_2],
    "COALESCE" => [:HavingCondition, :_HavingClause_2],
    "CONCAT" => [:HavingCondition, :_HavingClause_2],
    "CONTAINS" => [:HavingCondition, :_HavingClause_2],
    "COUNT" => [:HavingCondition, :_HavingClause_2],
    "DATATYPE" => [:HavingCondition, :_HavingClause_2],
    "DAY" => [:HavingCondition, :_HavingClause_2],
    "ENCODE_FOR_URI" => [:HavingCondition, :_HavingClause_2],
    "EXISTS" => [:HavingCondition, :_HavingClause_2],
    "FLOOR" => [:HavingCondition, :_HavingClause_2],
    "GROUP_CONCAT" => [:HavingCondition, :_HavingClause_2],
    "HOURS" => [:HavingCondition, :_HavingClause_2],
    "IF" => [:HavingCondition, :_HavingClause_2],
    "IRI" => [:HavingCondition, :_HavingClause_2],
    :IRIREF => [:HavingCondition, :_HavingClause_2],
    "LANG" => [:HavingCondition, :_HavingClause_2],
    "LANGMATCHES" => [:HavingCondition, :_HavingClause_2],
    "LCASE" => [:HavingCondition, :_HavingClause_2],
    "MAX" => [:HavingCondition, :_HavingClause_2],
    "MD5" => [:HavingCondition, :_HavingClause_2],
    "MIN" => [:HavingCondition, :_HavingClause_2],
    "MINUTES" => [:HavingCondition, :_HavingClause_2],
    "MONTH" => [:HavingCondition, :_HavingClause_2],
    "NOT" => [:HavingCondition, :_HavingClause_2],
    "NOW" => [:HavingCondition, :_HavingClause_2],
    :PNAME_LN => [:HavingCondition, :_HavingClause_2],
    :PNAME_NS => [:HavingCondition, :_HavingClause_2],
    "RAND" => [:HavingCondition, :_HavingClause_2],
    "REGEX" => [:HavingCondition, :_HavingClause_2],
    "REPLACE" => [:HavingCondition, :_HavingClause_2],
    "ROUND" => [:HavingCondition, :_HavingClause_2],
    "SAMPLE" => [:HavingCondition, :_HavingClause_2],
    "SECONDS" => [:HavingCondition, :_HavingClause_2],
    "SHA1" => [:HavingCondition, :_HavingClause_2],
    "SHA224" => [:HavingCondition, :_HavingClause_2],
    "SHA256" => [:HavingCondition, :_HavingClause_2],
    "SHA384" => [:HavingCondition, :_HavingClause_2],
    "SHA512" => [:HavingCondition, :_HavingClause_2],
    "STR" => [:HavingCondition, :_HavingClause_2],
    "STRAFTER" => [:HavingCondition, :_HavingClause_2],
    "STRBEFORE" => [:HavingCondition, :_HavingClause_2],
    "STRDT" => [:HavingCondition, :_HavingClause_2],
    "STRENDS" => [:HavingCondition, :_HavingClause_2],
    "STRLANG" => [:HavingCondition, :_HavingClause_2],
    "STRLEN" => [:HavingCondition, :_HavingClause_2],
    "STRSTARTS" => [:HavingCondition, :_HavingClause_2],
    "STRUUID" => [:HavingCondition, :_HavingClause_2],
    "SUBSTR" => [:HavingCondition, :_HavingClause_2],
    "SUM" => [:HavingCondition, :_HavingClause_2],
    "TIMEZONE" => [:HavingCondition, :_HavingClause_2],
    "TZ" => [:HavingCondition, :_HavingClause_2],
    "UCASE" => [:HavingCondition, :_HavingClause_2],
    "URI" => [:HavingCondition, :_HavingClause_2],
    "UUID" => [:HavingCondition, :_HavingClause_2],
    "YEAR" => [:HavingCondition, :_HavingClause_2],
    "isBLANK" => [:HavingCondition, :_HavingClause_2],
    "isIRI" => [:HavingCondition, :_HavingClause_2],
    "isLITERAL" => [:HavingCondition, :_HavingClause_2],
    "isNUMERIC" => [:HavingCondition, :_HavingClause_2],
    "isURI" => [:HavingCondition, :_HavingClause_2],
    "sameTerm" => [:HavingCondition, :_HavingClause_2],
  },
  :HavingCondition => {
    "(" => [:Constraint],
    "ABS" => [:Constraint],
    "AVG" => [:Constraint],
    "BNODE" => [:Constraint],
    "BOUND" => [:Constraint],
    "CEIL" => [:Constraint],
    "COALESCE" => [:Constraint],
    "CONCAT" => [:Constraint],
    "CONTAINS" => [:Constraint],
    "COUNT" => [:Constraint],
    "DATATYPE" => [:Constraint],
    "DAY" => [:Constraint],
    "ENCODE_FOR_URI" => [:Constraint],
    "EXISTS" => [:Constraint],
    "FLOOR" => [:Constraint],
    "GROUP_CONCAT" => [:Constraint],
    "HOURS" => [:Constraint],
    "IF" => [:Constraint],
    "IRI" => [:Constraint],
    :IRIREF => [:Constraint],
    "LANG" => [:Constraint],
    "LANGMATCHES" => [:Constraint],
    "LCASE" => [:Constraint],
    "MAX" => [:Constraint],
    "MD5" => [:Constraint],
    "MIN" => [:Constraint],
    "MINUTES" => [:Constraint],
    "MONTH" => [:Constraint],
    "NOT" => [:Constraint],
    "NOW" => [:Constraint],
    :PNAME_LN => [:Constraint],
    :PNAME_NS => [:Constraint],
    "RAND" => [:Constraint],
    "REGEX" => [:Constraint],
    "REPLACE" => [:Constraint],
    "ROUND" => [:Constraint],
    "SAMPLE" => [:Constraint],
    "SECONDS" => [:Constraint],
    "SHA1" => [:Constraint],
    "SHA224" => [:Constraint],
    "SHA256" => [:Constraint],
    "SHA384" => [:Constraint],
    "SHA512" => [:Constraint],
    "STR" => [:Constraint],
    "STRAFTER" => [:Constraint],
    "STRBEFORE" => [:Constraint],
    "STRDT" => [:Constraint],
    "STRENDS" => [:Constraint],
    "STRLANG" => [:Constraint],
    "STRLEN" => [:Constraint],
    "STRSTARTS" => [:Constraint],
    "STRUUID" => [:Constraint],
    "SUBSTR" => [:Constraint],
    "SUM" => [:Constraint],
    "TIMEZONE" => [:Constraint],
    "TZ" => [:Constraint],
    "UCASE" => [:Constraint],
    "URI" => [:Constraint],
    "UUID" => [:Constraint],
    "YEAR" => [:Constraint],
    "isBLANK" => [:Constraint],
    "isIRI" => [:Constraint],
    "isLITERAL" => [:Constraint],
    "isNUMERIC" => [:Constraint],
    "isURI" => [:Constraint],
    "sameTerm" => [:Constraint],
  },
  :InlineData => {
    "VALUES" => ["VALUES", :DataBlock],
  },
  :InlineDataFull => {
    "(" => [:_InlineDataFull_1, "{", :_InlineDataFull_2, "}"],
    :NIL => [:_InlineDataFull_1, "{", :_InlineDataFull_2, "}"],
  },
  :_InlineDataFull_1 => {
    "(" => [:_InlineDataFull_3],
    :NIL => [:NIL],
  },
  :_InlineDataFull_10 => {
    :DECIMAL => [:DataBlockValue, :_InlineDataFull_9],
    :DECIMAL_NEGATIVE => [:DataBlockValue, :_InlineDataFull_9],
    :DECIMAL_POSITIVE => [:DataBlockValue, :_InlineDataFull_9],
    :DOUBLE => [:DataBlockValue, :_InlineDataFull_9],
    :DOUBLE_NEGATIVE => [:DataBlockValue, :_InlineDataFull_9],
    :DOUBLE_POSITIVE => [:DataBlockValue, :_InlineDataFull_9],
    :INTEGER => [:DataBlockValue, :_InlineDataFull_9],
    :INTEGER_NEGATIVE => [:DataBlockValue, :_InlineDataFull_9],
    :INTEGER_POSITIVE => [:DataBlockValue, :_InlineDataFull_9],
    :IRIREF => [:DataBlockValue, :_InlineDataFull_9],
    :PNAME_LN => [:DataBlockValue, :_InlineDataFull_9],
    :PNAME_NS => [:DataBlockValue, :_InlineDataFull_9],
    :STRING_LITERAL1 => [:DataBlockValue, :_InlineDataFull_9],
    :STRING_LITERAL2 => [:DataBlockValue, :_InlineDataFull_9],
    :STRING_LITERAL_LONG1 => [:DataBlockValue, :_InlineDataFull_9],
    :STRING_LITERAL_LONG2 => [:DataBlockValue, :_InlineDataFull_9],
    "UNDEF" => [:DataBlockValue, :_InlineDataFull_9],
    "false" => [:DataBlockValue, :_InlineDataFull_9],
    "true" => [:DataBlockValue, :_InlineDataFull_9],
  },
  :_InlineDataFull_2 => {
    "(" => [:_InlineDataFull_7],
    :NIL => [:_InlineDataFull_7],
    "}" => [],
  },
  :_InlineDataFull_3 => {
    "(" => ["(", :_InlineDataFull_4, ")"],
  },
  :_InlineDataFull_4 => {
    ")" => [],
    :VAR1 => [:_InlineDataFull_5],
    :VAR2 => [:_InlineDataFull_5],
  },
  :_InlineDataFull_5 => {
    :VAR1 => [:Var, :_InlineDataFull_4],
    :VAR2 => [:Var, :_InlineDataFull_4],
  },
  :_InlineDataFull_6 => {
    "(" => [:_InlineDataFull_8],
    :NIL => [:NIL],
  },
  :_InlineDataFull_7 => {
    "(" => [:_InlineDataFull_6, :_InlineDataFull_2],
    :NIL => [:_InlineDataFull_6, :_InlineDataFull_2],
  },
  :_InlineDataFull_8 => {
    "(" => ["(", :_InlineDataFull_9, ")"],
  },
  :_InlineDataFull_9 => {
    ")" => [],
    :DECIMAL => [:_InlineDataFull_10],
    :DECIMAL_NEGATIVE => [:_InlineDataFull_10],
    :DECIMAL_POSITIVE => [:_InlineDataFull_10],
    :DOUBLE => [:_InlineDataFull_10],
    :DOUBLE_NEGATIVE => [:_InlineDataFull_10],
    :DOUBLE_POSITIVE => [:_InlineDataFull_10],
    :INTEGER => [:_InlineDataFull_10],
    :INTEGER_NEGATIVE => [:_InlineDataFull_10],
    :INTEGER_POSITIVE => [:_InlineDataFull_10],
    :IRIREF => [:_InlineDataFull_10],
    :PNAME_LN => [:_InlineDataFull_10],
    :PNAME_NS => [:_InlineDataFull_10],
    :STRING_LITERAL1 => [:_InlineDataFull_10],
    :STRING_LITERAL2 => [:_InlineDataFull_10],
    :STRING_LITERAL_LONG1 => [:_InlineDataFull_10],
    :STRING_LITERAL_LONG2 => [:_InlineDataFull_10],
    "UNDEF" => [:_InlineDataFull_10],
    "false" => [:_InlineDataFull_10],
    "true" => [:_InlineDataFull_10],
  },
  :InlineDataOneVar => {
    :VAR1 => [:Var, "{", :_InlineDataOneVar_1, "}"],
    :VAR2 => [:Var, "{", :_InlineDataOneVar_1, "}"],
  },
  :_InlineDataOneVar_1 => {
    :DECIMAL => [:_InlineDataOneVar_2],
    :DECIMAL_NEGATIVE => [:_InlineDataOneVar_2],
    :DECIMAL_POSITIVE => [:_InlineDataOneVar_2],
    :DOUBLE => [:_InlineDataOneVar_2],
    :DOUBLE_NEGATIVE => [:_InlineDataOneVar_2],
    :DOUBLE_POSITIVE => [:_InlineDataOneVar_2],
    :INTEGER => [:_InlineDataOneVar_2],
    :INTEGER_NEGATIVE => [:_InlineDataOneVar_2],
    :INTEGER_POSITIVE => [:_InlineDataOneVar_2],
    :IRIREF => [:_InlineDataOneVar_2],
    :PNAME_LN => [:_InlineDataOneVar_2],
    :PNAME_NS => [:_InlineDataOneVar_2],
    :STRING_LITERAL1 => [:_InlineDataOneVar_2],
    :STRING_LITERAL2 => [:_InlineDataOneVar_2],
    :STRING_LITERAL_LONG1 => [:_InlineDataOneVar_2],
    :STRING_LITERAL_LONG2 => [:_InlineDataOneVar_2],
    "UNDEF" => [:_InlineDataOneVar_2],
    "false" => [:_InlineDataOneVar_2],
    "true" => [:_InlineDataOneVar_2],
    "}" => [],
  },
  :_InlineDataOneVar_2 => {
    :DECIMAL => [:DataBlockValue, :_InlineDataOneVar_1],
    :DECIMAL_NEGATIVE => [:DataBlockValue, :_InlineDataOneVar_1],
    :DECIMAL_POSITIVE => [:DataBlockValue, :_InlineDataOneVar_1],
    :DOUBLE => [:DataBlockValue, :_InlineDataOneVar_1],
    :DOUBLE_NEGATIVE => [:DataBlockValue, :_InlineDataOneVar_1],
    :DOUBLE_POSITIVE => [:DataBlockValue, :_InlineDataOneVar_1],
    :INTEGER => [:DataBlockValue, :_InlineDataOneVar_1],
    :INTEGER_NEGATIVE => [:DataBlockValue, :_InlineDataOneVar_1],
    :INTEGER_POSITIVE => [:DataBlockValue, :_InlineDataOneVar_1],
    :IRIREF => [:DataBlockValue, :_InlineDataOneVar_1],
    :PNAME_LN => [:DataBlockValue, :_InlineDataOneVar_1],
    :PNAME_NS => [:DataBlockValue, :_InlineDataOneVar_1],
    :STRING_LITERAL1 => [:DataBlockValue, :_InlineDataOneVar_1],
    :STRING_LITERAL2 => [:DataBlockValue, :_InlineDataOneVar_1],
    :STRING_LITERAL_LONG1 => [:DataBlockValue, :_InlineDataOneVar_1],
    :STRING_LITERAL_LONG2 => [:DataBlockValue, :_InlineDataOneVar_1],
    "UNDEF" => [:DataBlockValue, :_InlineDataOneVar_1],
    "false" => [:DataBlockValue, :_InlineDataOneVar_1],
    "true" => [:DataBlockValue, :_InlineDataOneVar_1],
  },
  :InsertClause => {
    "INSERT" => ["INSERT", :QuadPattern],
  },
  :InsertData => {
    "INSERT DATA" => ["INSERT DATA", :QuadData],
  },
  :LimitClause => {
    "LIMIT" => ["LIMIT", :INTEGER],
  },
  :LimitOffsetClauses => {
    "LIMIT" => [:_LimitOffsetClauses_1],
    "OFFSET" => [:_LimitOffsetClauses_2],
  },
  :_LimitOffsetClauses_1 => {
    "LIMIT" => [:LimitClause, :_LimitOffsetClauses_3],
  },
  :_LimitOffsetClauses_2 => {
    "OFFSET" => [:OffsetClause, :_LimitOffsetClauses_4],
  },
  :_LimitOffsetClauses_3 => {
    "OFFSET" => [:OffsetClause],
    "VALUES" => [],
    "}" => [],
  },
  :_LimitOffsetClauses_4 => {
    "LIMIT" => [:LimitClause],
    "VALUES" => [],
    "}" => [],
  },
  :Load => {
    "LOAD" => ["LOAD", :_Load_1, :iri, :_Load_2],
  },
  :_Load_1 => {
    :IRIREF => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "SILENT" => ["SILENT"],
  },
  :_Load_2 => {
    ";" => [],
    "INTO" => [:_Load_3],
  },
  :_Load_3 => {
    "INTO" => ["INTO", :GraphRef],
  },
  :MinusGraphPattern => {
    "MINUS" => ["MINUS", :GroupGraphPattern],
  },
  :Modify => {
    "DELETE" => [:_Modify_1, :_Modify_2, :_Modify_3, "WHERE", :GroupGraphPattern],
    "INSERT" => [:_Modify_1, :_Modify_2, :_Modify_3, "WHERE", :GroupGraphPattern],
    "WITH" => [:_Modify_1, :_Modify_2, :_Modify_3, "WHERE", :GroupGraphPattern],
  },
  :_Modify_1 => {
    "DELETE" => [],
    "INSERT" => [],
    "WITH" => [:_Modify_4],
  },
  :_Modify_2 => {
    "DELETE" => [:_Modify_5],
    "INSERT" => [:InsertClause],
  },
  :_Modify_3 => {
    "USING" => [:_Modify_7],
    "WHERE" => [],
  },
  :_Modify_4 => {
    "WITH" => ["WITH", :iri],
  },
  :_Modify_5 => {
    "DELETE" => [:DeleteClause, :_Modify_6],
  },
  :_Modify_6 => {
    "INSERT" => [:InsertClause],
    "USING" => [],
    "WHERE" => [],
  },
  :_Modify_7 => {
    "USING" => [:UsingClause, :_Modify_3],
  },
  :Move => {
    "MOVE" => ["MOVE", :_Move_1, :GraphOrDefault, "TO", :GraphOrDefault],
  },
  :_Move_1 => {
    "DEFAULT" => [],
    "GRAPH" => [],
    :IRIREF => [],
    :PNAME_LN => [],
    :PNAME_NS => [],
    "SILENT" => ["SILENT"],
  },
  :MultiplicativeExpression => {
    "!" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "(" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "+" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "-" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "ABS" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "AVG" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "BNODE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "BOUND" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "CEIL" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "COALESCE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "CONCAT" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "CONTAINS" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "COUNT" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "DATATYPE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "DAY" => [:UnaryExpression, :_MultiplicativeExpression_1],
    :DECIMAL => [:UnaryExpression, :_MultiplicativeExpression_1],
    :DECIMAL_NEGATIVE => [:UnaryExpression, :_MultiplicativeExpression_1],
    :DECIMAL_POSITIVE => [:UnaryExpression, :_MultiplicativeExpression_1],
    :DOUBLE => [:UnaryExpression, :_MultiplicativeExpression_1],
    :DOUBLE_NEGATIVE => [:UnaryExpression, :_MultiplicativeExpression_1],
    :DOUBLE_POSITIVE => [:UnaryExpression, :_MultiplicativeExpression_1],
    "ENCODE_FOR_URI" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "EXISTS" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "FLOOR" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "GROUP_CONCAT" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "HOURS" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "IF" => [:UnaryExpression, :_MultiplicativeExpression_1],
    :INTEGER => [:UnaryExpression, :_MultiplicativeExpression_1],
    :INTEGER_NEGATIVE => [:UnaryExpression, :_MultiplicativeExpression_1],
    :INTEGER_POSITIVE => [:UnaryExpression, :_MultiplicativeExpression_1],
    "IRI" => [:UnaryExpression, :_MultiplicativeExpression_1],
    :IRIREF => [:UnaryExpression, :_MultiplicativeExpression_1],
    "LANG" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "LANGMATCHES" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "LCASE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "MAX" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "MD5" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "MIN" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "MINUTES" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "MONTH" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "NOT" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "NOW" => [:UnaryExpression, :_MultiplicativeExpression_1],
    :PNAME_LN => [:UnaryExpression, :_MultiplicativeExpression_1],
    :PNAME_NS => [:UnaryExpression, :_MultiplicativeExpression_1],
    "RAND" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "REGEX" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "REPLACE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "ROUND" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SAMPLE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SECONDS" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SHA1" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SHA224" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SHA256" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SHA384" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SHA512" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STR" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRAFTER" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRBEFORE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRDT" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRENDS" => [:UnaryExpression, :_MultiplicativeExpression_1],
    :STRING_LITERAL1 => [:UnaryExpression, :_MultiplicativeExpression_1],
    :STRING_LITERAL2 => [:UnaryExpression, :_MultiplicativeExpression_1],
    :STRING_LITERAL_LONG1 => [:UnaryExpression, :_MultiplicativeExpression_1],
    :STRING_LITERAL_LONG2 => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRLANG" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRLEN" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRSTARTS" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "STRUUID" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SUBSTR" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "SUM" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "TIMEZONE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "TZ" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "UCASE" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "URI" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "UUID" => [:UnaryExpression, :_MultiplicativeExpression_1],
    :VAR1 => [:UnaryExpression, :_MultiplicativeExpression_1],
    :VAR2 => [:UnaryExpression, :_MultiplicativeExpression_1],
    "YEAR" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "false" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "isBLANK" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "isIRI" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "isLITERAL" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "isNUMERIC" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "isURI" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "sameTerm" => [:UnaryExpression, :_MultiplicativeExpression_1],
    "true" => [:UnaryExpression, :_MultiplicativeExpression_1],
  },
  :_MultiplicativeExpression_1 => {
    "!=" => [],
    "&&" => [],
    ")" => [],
    "*" => [:_MultiplicativeExpression_3],
    "+" => [],
    "," => [],
    "-" => [],
    "/" => [:_MultiplicativeExpression_3],
    ";" => [],
    "<" => [],
    "<=" => [],
    "=" => [],
    ">" => [],
    ">=" => [],
    "AS" => [],
    :DECIMAL_NEGATIVE => [],
    :DECIMAL_POSITIVE => [],
    :DOUBLE_NEGATIVE => [],
    :DOUBLE_POSITIVE => [],
    "IN" => [],
    :INTEGER_NEGATIVE => [],
    :INTEGER_POSITIVE => [],
    "NOT" => [],
    "||" => [],
  },
  :_MultiplicativeExpression_2 => {
    "*" => [:_MultiplicativeExpression_4],
    "/" => [:_MultiplicativeExpression_5],
  },
  :_MultiplicativeExpression_3 => {
    "*" => [:_MultiplicativeExpression_2, :_MultiplicativeExpression_1],
    "/" => [:_MultiplicativeExpression_2, :_MultiplicativeExpression_1],
  },
  :_MultiplicativeExpression_4 => {
    "*" => ["*", :UnaryExpression],
  },
  :_MultiplicativeExpression_5 => {
    "/" => ["/", :UnaryExpression],
  },
  :NamedGraphClause => {
    "NAMED" => ["NAMED", :SourceSelector],
  },
  :NotExistsFunc => {
    "NOT" => ["NOT", "EXISTS", :GroupGraphPattern],
  },
  :NumericExpression => {
    "!" => [:AdditiveExpression],
    "(" => [:AdditiveExpression],
    "+" => [:AdditiveExpression],
    "-" => [:AdditiveExpression],
    "ABS" => [:AdditiveExpression],
    "AVG" => [:AdditiveExpression],
    "BNODE" => [:AdditiveExpression],
    "BOUND" => [:AdditiveExpression],
    "CEIL" => [:AdditiveExpression],
    "COALESCE" => [:AdditiveExpression],
    "CONCAT" => [:AdditiveExpression],
    "CONTAINS" => [:AdditiveExpression],
    "COUNT" => [:AdditiveExpression],
    "DATATYPE" => [:AdditiveExpression],
    "DAY" => [:AdditiveExpression],
    :DECIMAL => [:AdditiveExpression],
    :DECIMAL_NEGATIVE => [:AdditiveExpression],
    :DECIMAL_POSITIVE => [:AdditiveExpression],
    :DOUBLE => [:AdditiveExpression],
    :DOUBLE_NEGATIVE => [:AdditiveExpression],
    :DOUBLE_POSITIVE => [:AdditiveExpression],
    "ENCODE_FOR_URI" => [:AdditiveExpression],
    "EXISTS" => [:AdditiveExpression],
    "FLOOR" => [:AdditiveExpression],
    "GROUP_CONCAT" => [:AdditiveExpression],
    "HOURS" => [:AdditiveExpression],
    "IF" => [:AdditiveExpression],
    :INTEGER => [:AdditiveExpression],
    :INTEGER_NEGATIVE => [:AdditiveExpression],
    :INTEGER_POSITIVE => [:AdditiveExpression],
    "IRI" => [:AdditiveExpression],
    :IRIREF => [:AdditiveExpression],
    "LANG" => [:AdditiveExpression],
    "LANGMATCHES" => [:AdditiveExpression],
    "LCASE" => [:AdditiveExpression],
    "MAX" => [:AdditiveExpression],
    "MD5" => [:AdditiveExpression],
    "MIN" => [:AdditiveExpression],
    "MINUTES" => [:AdditiveExpression],
    "MONTH" => [:AdditiveExpression],
    "NOT" => [:AdditiveExpression],
    "NOW" => [:AdditiveExpression],
    :PNAME_LN => [:AdditiveExpression],
    :PNAME_NS => [:AdditiveExpression],
    "RAND" => [:AdditiveExpression],
    "REGEX" => [:AdditiveExpression],
    "REPLACE" => [:AdditiveExpression],
    "ROUND" => [:AdditiveExpression],
    "SAMPLE" => [:AdditiveExpression],
    "SECONDS" => [:AdditiveExpression],
    "SHA1" => [:AdditiveExpression],
    "SHA224" => [:AdditiveExpression],
    "SHA256" => [:AdditiveExpression],
    "SHA384" => [:AdditiveExpression],
    "SHA512" => [:AdditiveExpression],
    "STR" => [:AdditiveExpression],
    "STRAFTER" => [:AdditiveExpression],
    "STRBEFORE" => [:AdditiveExpression],
    "STRDT" => [:AdditiveExpression],
    "STRENDS" => [:AdditiveExpression],
    :STRING_LITERAL1 => [:AdditiveExpression],
    :STRING_LITERAL2 => [:AdditiveExpression],
    :STRING_LITERAL_LONG1 => [:AdditiveExpression],
    :STRING_LITERAL_LONG2 => [:AdditiveExpression],
    "STRLANG" => [:AdditiveExpression],
    "STRLEN" => [:AdditiveExpression],
    "STRSTARTS" => [:AdditiveExpression],
    "STRUUID" => [:AdditiveExpression],
    "SUBSTR" => [:AdditiveExpression],
    "SUM" => [:AdditiveExpression],
    "TIMEZONE" => [:AdditiveExpression],
    "TZ" => [:AdditiveExpression],
    "UCASE" => [:AdditiveExpression],
    "URI" => [:AdditiveExpression],
    "UUID" => [:AdditiveExpression],
    :VAR1 => [:AdditiveExpression],
    :VAR2 => [:AdditiveExpression],
    "YEAR" => [:AdditiveExpression],
    "false" => [:AdditiveExpression],
    "isBLANK" => [:AdditiveExpression],
    "isIRI" => [:AdditiveExpression],
    "isLITERAL" => [:AdditiveExpression],
    "isNUMERIC" => [:AdditiveExpression],
    "isURI" => [:AdditiveExpression],
    "sameTerm" => [:AdditiveExpression],
    "true" => [:AdditiveExpression],
  },
  :NumericLiteral => {
    :DECIMAL => [:NumericLiteralUnsigned],
    :DECIMAL_NEGATIVE => [:NumericLiteralNegative],
    :DECIMAL_POSITIVE => [:NumericLiteralPositive],
    :DOUBLE => [:NumericLiteralUnsigned],
    :DOUBLE_NEGATIVE => [:NumericLiteralNegative],
    :DOUBLE_POSITIVE => [:NumericLiteralPositive],
    :INTEGER => [:NumericLiteralUnsigned],
    :INTEGER_NEGATIVE => [:NumericLiteralNegative],
    :INTEGER_POSITIVE => [:NumericLiteralPositive],
  },
  :NumericLiteralNegative => {
    :DECIMAL_NEGATIVE => [:DECIMAL_NEGATIVE],
    :DOUBLE_NEGATIVE => [:DOUBLE_NEGATIVE],
    :INTEGER_NEGATIVE => [:INTEGER_NEGATIVE],
  },
  :NumericLiteralPositive => {
    :DECIMAL_POSITIVE => [:DECIMAL_POSITIVE],
    :DOUBLE_POSITIVE => [:DOUBLE_POSITIVE],
    :INTEGER_POSITIVE => [:INTEGER_POSITIVE],
  },
  :NumericLiteralUnsigned => {
    :DECIMAL => [:DECIMAL],
    :DOUBLE => [:DOUBLE],
    :INTEGER => [:INTEGER],
  },
  :Object => {
    "(" => [:GraphNode],
    :ANON => [:GraphNode],
    :BLANK_NODE_LABEL => [:GraphNode],
    :DECIMAL => [:GraphNode],
    :DECIMAL_NEGATIVE => [:GraphNode],
    :DECIMAL_POSITIVE => [:GraphNode],
    :DOUBLE => [:GraphNode],
    :DOUBLE_NEGATIVE => [:GraphNode],
    :DOUBLE_POSITIVE => [:GraphNode],
    :INTEGER => [:GraphNode],
    :INTEGER_NEGATIVE => [:GraphNode],
    :INTEGER_POSITIVE => [:GraphNode],
    :IRIREF => [: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],
    "[" => [:GraphNode],
    "false" => [:GraphNode],
    "true" => [:GraphNode],
  },
  :ObjectList => {
    "(" => [:Object, :_ObjectList_1],
    :ANON => [:Object, :_ObjectList_1],
    :BLANK_NODE_LABEL => [:Object, :_ObjectList_1],
    :DECIMAL => [:Object, :_ObjectList_1],
    :DECIMAL_NEGATIVE => [:Object, :_ObjectList_1],
    :DECIMAL_POSITIVE => [:Object, :_ObjectList_1],
    :DOUBLE => [:Object, :_ObjectList_1],
    :DOUBLE_NEGATIVE => [:Object, :_ObjectList_1],
    :DOUBLE_POSITIVE => [:Object, :_ObjectList_1],
    :INTEGER => [:Object, :_ObjectList_1],
    :INTEGER_NEGATIVE => [:Object, :_ObjectList_1],
    :INTEGER_POSITIVE => [:Object, :_ObjectList_1],
    :IRIREF => [:Object, :_ObjectList_1],
    :NIL => [:Object, :_ObjectList_1],
    :PNAME_LN => [:Object, :_ObjectList_1],
    :PNAME_NS => [:Object, :_ObjectList_1],
    :STRING_LITERAL1 => [:Object, :_ObjectList_1],
    :STRING_LITERAL2 => [:Object, :_ObjectList_1],
    :STRING_LITERAL_LONG1 => [:Object, :_ObjectList_1],
    :STRING_LITERAL_LONG2 => [:Object, :_ObjectList_1],
    :VAR1 => [:Object, :_ObjectList_1],
    :VAR2 => [:Object, :_ObjectList_1],
    "[" => [:Object, :_ObjectList_1],
    "false" => [:Object, :_ObjectList_1],
    "true" => [:Object, :_ObjectList_1],
  },
  :ObjectListPath => {
    "(" => [:ObjectPath, :_ObjectListPath_1],
    :ANON => [:ObjectPath, :_ObjectListPath_1],
    :BLANK_NODE_LABEL => [:ObjectPath, :_ObjectListPath_1],
    :DECIMAL => [:ObjectPath, :_ObjectListPath_1],
    :DECIMAL_NEGATIVE => [:ObjectPath, :_ObjectListPath_1],
    :DECIMAL_POSITIVE => [:ObjectPath, :_ObjectListPath_1],
    :DOUBLE => [:ObjectPath, :_ObjectListPath_1],
    :DOUBLE_NEGATIVE => [:ObjectPath, :_ObjectListPath_1],
    :DOUBLE_POSITIVE => [:ObjectPath, :_ObjectListPath_1],
    :INTEGER => [:ObjectPath, :_ObjectListPath_1],
    :INTEGER_NEGATIVE => [:ObjectPath, :_ObjectListPath_1],
    :INTEGER_POSITIVE => [:ObjectPath, :_ObjectListPath_1],
    :IRIREF => [:ObjectPath, :_ObjectListPath_1],
    :NIL => [:ObjectPath, :_ObjectListPath_1],
    :PNAME_LN => [:ObjectPath, :_ObjectListPath_1],
    :PNAME_NS => [:ObjectPath, :_ObjectListPath_1],
    :STRING_LITERAL1 => [:ObjectPath, :_ObjectListPath_1],
    :STRING_LITERAL2 => [:ObjectPath, :_ObjectListPath_1],
    :STRING_LITERAL_LONG1 => [:ObjectPath, :_ObjectListPath_1],
    :STRING_LITERAL_LONG2 => [:ObjectPath, :_ObjectListPath_1],
    :VAR1 => [:ObjectPath, :_ObjectListPath_1],
    :VAR2 => [:ObjectPath, :_ObjectListPath_1],
    "[" => [:ObjectPath, :_ObjectListPath_1],
    "false" => [:ObjectPath, :_ObjectListPath_1],
    "true" => [:ObjectPath, :_ObjectListPath_1],
  },
  :_ObjectListPath_1 => {
    "," => [:_ObjectListPath_3],
    "." => [],
    ";" => [],
    "BIND" => [],
    "FILTER" => [],
    "GRAPH" => [],
    "MINUS" => [],
    "OPTIONAL" => [],
    "SERVICE" => [],
    "VALUES" => [],
    "]" => [],
    "{" => [],
    "}" => [],
  },
  :_ObjectListPath_2 => {
    "," => [",", :ObjectPath],
  },
  :_ObjectListPath_3 => {
    "," => [:_ObjectListPath_2, :_ObjectListPath_1],
  },
  :_ObjectList_1 => {
    "," => [:_ObjectList_3],
    "." => [],
    ";" => [],
    "BIND" => [],
    "FILTER" => [],
    "GRAPH" => [],
    "MINUS" => [],
    "OPTIONAL" => [],
    "SERVICE" => [],
    "VALUES" => [],
    "]" => [],
    "{" => [],
    "}" => [],
  },
  :_ObjectList_2 => {
    "," => [",", :Object],
  },
  :_ObjectList_3 => {
    "," => [:_ObjectList_2, :_ObjectList_1],
  },
  :ObjectPath => {
    "(" => [:GraphNodePath],
    :ANON => [:GraphNodePath],
    :BLANK_NODE_LABEL => [:GraphNodePath],
    :DECIMAL => [:GraphNodePath],
    :DECIMAL_NEGATIVE => [:GraphNodePath],
    :DECIMAL_POSITIVE => [:GraphNodePath],
    :DOUBLE => [:GraphNodePath],
    :DOUBLE_NEGATIVE => [:GraphNodePath],
    :DOUBLE_POSITIVE => [:GraphNodePath],
    :INTEGER => [:GraphNodePath],
    :INTEGER_NEGATIVE => [:GraphNodePath],
    :INTEGER_POSITIVE => [:GraphNodePath],
    :IRIREF => [