hydra-0.5.0: src/main/haskell/Hydra/Sources/Tier4/Langs/Tinkerpop/Gremlin.hs
{-# LANGUAGE OverloadedStrings #-}
module Hydra.Sources.Tier4.Langs.Tinkerpop.Gremlin where
import Hydra.Sources.Tier3.All
import Hydra.Dsl.Annotations
import Hydra.Dsl.Bootstrap
import Hydra.Dsl.Types as Types
import Hydra.Sources.Core
gremlinModule :: Module
gremlinModule = Module ns elements [hydraCoreModule] tier0Modules $
Just ("A Gremlin model, based on the Gremlin ANTLR grammar "
++ "(master branch, as of 2024-06-30).")
where
ns = Namespace "hydra/langs/tinkerpop/gremlin"
gremlin = typeref ns
def = datatype ns
defArgument name typ = def name $ union [
"value">: typ,
"variable">: variable]
booleanLiteral = boolean
booleanArgument = gremlin "BooleanArgument"
classType = identifier
dateArgument = gremlin "DateArgument"
dateLiteral = gremlin "DateLiteral"
floatArgument = gremlin "FloatArgument"
floatLiteral = gremlin "FloatLiteral"
genericLiteral = gremlin "GenericLiteral"
genericLiteralArgument = gremlin "GenericLiteralArgument"
genericLiteralCollection = gremlin "GenericLiteralCollection"
genericLiteralList = gremlin "GenericLiteralList"
genericLiteralMap = gremlin "GenericLiteralMap"
genericLiteralMapArgument = gremlin "GenericLiteralMapArgument"
genericLiteralMapNullableArgument = gremlin "GenericLiteralMapNullableArgument"
genericLiteralRange = gremlin "GenericLiteralRange"
genericLiteralSet = gremlin "GenericLiteralSet"
genericLiteralVarargs = nonemptyList genericLiteralArgument
identifier = gremlin "Identifier"
integerArgument = gremlin "IntegerArgument"
integerLiteral = gremlin "IntegerLiteral"
keyword = gremlin "Keyword"
nestedTraversal = gremlin "NestedTraversal"
nestedTraversalList = list nestedTraversal
numericLiteral = gremlin "NumericLiteral"
optionalGenericLiteralVarargs = list genericLiteralArgument
optionalStringLiteralVarargs = list stringNullableArgument
stringArgument = gremlin "StringArgument"
stringLiteral = string
stringLiteralVarargs = nonemptyList stringNullableArgument
stringNullableArgument = gremlin "StringNullableArgument"
stringNullableLiteral = optional stringLiteral
structureVertex = gremlin "StructureVertex"
structureVertexArgument = gremlin "StructureVertexArgument"
terminatedTraversal = gremlin "TerminatedTraversal"
traversalBarrier = unit
traversalBiFunctionArgument = gremlin "TraversalBiFunctionArgument"
traversalCardinality = gremlin "TraversalCardinality"
traversalCardinalityArgument = gremlin "TraversalCardinalityArgument"
traversalColumn = gremlin "TraversalColumn"
traversalColumnArgument = gremlin "TraversalColumnArgument"
traversalComparator = traversalOrder
traversalComparatorArgument = gremlin "TraversalComparatorArgument"
traversalDT = gremlin "TraversalDT"
traversalDirection = gremlin "TraversalDirection"
traversalDirectionArgument = gremlin "TraversalDirectionArgument"
traversalFunction = gremlin "TraversalFunction"
traversalFunctionArgument = gremlin "TraversalFunctionArgument"
traversalMergeArgument = gremlin "TraversalMergeArgument"
traversalOperator = gremlin "TraversalOperator"
traversalOrder = gremlin "TraversalOrder"
traversalOrderArgument = gremlin "TraversalOrderArgument"
traversalMerge = gremlin "TraversalMerge"
traversalMethod = gremlin "TraversalMethod"
traversalPick = gremlin "TraversalPick"
traversalPop = gremlin "TraversalPop"
traversalPopArgument = gremlin "TraversalPopArgument"
traversalPredicate = gremlin "TraversalPredicate"
traversalSackMethod = traversalBarrier
traversalScope = gremlin "TraversalScope"
traversalScopeArgument = gremlin "TraversalScopeArgument"
traversalToken = gremlin "TraversalToken"
traversalTokenArgument = gremlin "TraversalTokenArgument"
variable = identifier
elements = [
-- /*
-- * Licensed to the Apache Software Foundation (ASF) under one
-- * or more contributor license agreements. See the NOTICE file
-- * distributed with this work for additional information
-- * regarding copyright ownership. The ASF licenses this file
-- * to you under the Apache License, Version 2.0 (the
-- * "License"); you may not use this file except in compliance
-- * with the License. You may obtain a copy of the License at
-- *
-- * http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing,
-- * software distributed under the License is distributed on an
-- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-- * KIND, either express or implied. See the License for the
-- * specific language governing permissions and limitations
-- * under the License.
-- */
-- grammar Gremlin;
--
-- /*********************************************
-- PARSER RULES
-- **********************************************/
--
-- queryList
-- : query (SEMI? query)* SEMI? EOF
-- ;
def "QueryList" $ nonemptyList $ gremlin "Query",
-- query
def "Query" $ union [
-- : traversalSource
-- | traversalSource DOT transactionPart
"traversalSource">: gremlin "TraversalSourceQuery",
-- | rootTraversal
-- | rootTraversal DOT traversalTerminalMethod
"rootTraversal">: gremlin "RootTraversalQuery",
-- | query DOT 'toString' LPAREN RPAREN
"toString">: unit,
-- | emptyQuery
"empty">: unit],
-- ;
def "TraversalSourceQuery" $ record [
"source">: gremlin "TraversalSource",
"transactionPart">: optional $ gremlin "TransactionPart"],
def "RootTraversalQuery" $ record [
"root">: gremlin "RootTraversal",
"terminalMethod">: optional $ gremlin "TraversalTerminalMethod"],
-- emptyQuery
-- : EmptyStringLiteral
-- ;
--
-- traversalSource
-- : TRAVERSAL_ROOT
-- | TRAVERSAL_ROOT DOT traversalSourceSelfMethod
-- | traversalSource DOT traversalSourceSelfMethod
-- ;
def "TraversalSource" $ list $ gremlin "TraversalSourceSelfMethod",
-- transactionPart
-- : 'tx' LPAREN RPAREN DOT 'begin' LPAREN RPAREN
-- | 'tx' LPAREN RPAREN DOT 'commit' LPAREN RPAREN
-- | 'tx' LPAREN RPAREN DOT 'rollback' LPAREN RPAREN
-- ;
def "TransactionPart" $ enum [
"begin",
"commit",
"rollback"],
-- rootTraversal
-- : traversalSource DOT traversalSourceSpawnMethod
-- | traversalSource DOT traversalSourceSpawnMethod DOT chainedTraversal
-- | traversalSource DOT traversalSourceSpawnMethod DOT chainedParentOfGraphTraversal
-- ;
def "RootTraversal" $ record [
"source">: gremlin "TraversalSource",
"spawnMethod">: gremlin "TraversalSourceSpawnMethod",
"chained">: list $ gremlin "ChainedTraversalElement"],
-- traversalSourceSelfMethod
def "TraversalSourceSelfMethod" $ union [
-- : traversalSourceSelfMethod_withBulk
"withBulk">: boolean,
-- | traversalSourceSelfMethod_withPath
"withPath">: unit,
-- | traversalSourceSelfMethod_withSack
"withSack">: gremlin "GenericLiteralArgumentAndOptionalTraversalBiFunctionArgument",
-- | traversalSourceSelfMethod_withSideEffect
"withSideEffect">: gremlin "StringArgumentAndGenericLiteralArgument",
-- | traversalSourceSelfMethod_withStrategies
"withStrategies">: nonemptyList $ gremlin "TraversalStrategy",
-- | traversalSourceSelfMethod_withoutStrategies
"withoutStrategies">: nonemptyList classType,
-- | traversalSourceSelfMethod_with
"with">: gremlin "StringArgumentAndOptionalGenericLiteralArgument"],
-- ;
-- traversalSourceSelfMethod_withBulk
-- : 'withBulk' LPAREN booleanArgument RPAREN
-- ;
--
-- traversalSourceSelfMethod_withPath
-- : 'withPath' LPAREN RPAREN
-- ;
--
-- traversalSourceSelfMethod_withSack
-- : 'withSack' LPAREN genericLiteralArgument RPAREN
-- | 'withSack' LPAREN genericLiteralArgument COMMA traversalBiFunctionArgument RPAREN
-- ;
def "GenericLiteralArgumentAndOptionalTraversalBiFunctionArgument" $ record [
"literal">: genericLiteralArgument,
"biFunction">: optional traversalBiFunctionArgument],
-- traversalSourceSelfMethod_withSideEffect
-- : 'withSideEffect' LPAREN stringArgument COMMA genericLiteralArgument RPAREN
-- ;
def "StringArgumentAndGenericLiteralArgument" $ record [
"string">: stringArgument,
"literal">: genericLiteralArgument],
-- traversalSourceSelfMethod_withStrategies
-- : 'withStrategies' LPAREN traversalStrategy (COMMA traversalStrategyList)? RPAREN
-- ;
--
-- traversalSourceSelfMethod_withoutStrategies
-- : 'withoutStrategies' LPAREN classType (COMMA classTypeList)? RPAREN
-- ;
--
-- traversalSourceSelfMethod_with
-- : 'with' LPAREN stringArgument RPAREN
-- | 'with' LPAREN stringArgument COMMA genericLiteralArgument RPAREN
-- ;
def "StringArgumentAndOptionalGenericLiteralArgument" $ record [
"string">: stringArgument,
"literal">: optional genericLiteralArgument],
-- traversalSourceSpawnMethod
def "TraversalSourceSpawnMethod" $ union [
-- : traversalSourceSpawnMethod_addE
"addE">: gremlin "StringArgumentOrNestedTraversal",
-- | traversalSourceSpawnMethod_addV
"addV">: optional $ gremlin "StringArgumentOrNestedTraversal",
-- | traversalSourceSpawnMethod_E
"e">: genericLiteralVarargs,
-- | traversalSourceSpawnMethod_V
"v">: genericLiteralVarargs,
-- | traversalSourceSpawnMethod_mergeE
"mergeV">: gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
-- | traversalSourceSpawnMethod_mergeV
"mergeE">: gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
-- | traversalSourceSpawnMethod_inject
"inject">: genericLiteralVarargs,
-- | traversalSourceSpawnMethod_io
"io">: stringArgument,
-- | traversalSourceSpawnMethod_call
"call">: optional $ gremlin "ServiceCall",
-- | traversalSourceSpawnMethod_union
"union">: nestedTraversalList],
-- ;
-- traversalSourceSpawnMethod_addE
-- : 'addE' LPAREN stringArgument RPAREN
-- | 'addE' LPAREN nestedTraversal RPAREN
-- ;
-- traversalSourceSpawnMethod_addV
-- : 'addV' LPAREN RPAREN
-- | 'addV' LPAREN stringArgument RPAREN
-- | 'addV' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalSourceSpawnMethod_E
-- : 'E' LPAREN genericLiteralVarargs RPAREN
-- ;
--
-- traversalSourceSpawnMethod_V
-- : 'V' LPAREN genericLiteralVarargs RPAREN
-- ;
--
-- traversalSourceSpawnMethod_inject
-- : 'inject' LPAREN genericLiteralVarargs RPAREN
-- ;
--
-- traversalSourceSpawnMethod_io
-- : 'io' LPAREN stringArgument RPAREN
-- ;
--
-- traversalSourceSpawnMethod_mergeV
-- : 'mergeV' LPAREN genericLiteralMapNullableArgument RPAREN #traversalSourceSpawnMethod_mergeV_Map
-- | 'mergeV' LPAREN nestedTraversal RPAREN #traversalSourceSpawnMethod_mergeV_Traversal
-- ;
def "GenericLiteralMapNullableArgumentOrNestedTraversal" $ union [
"map">: genericLiteralMapNullableArgument,
"traversal">: nestedTraversal],
-- traversalSourceSpawnMethod_mergeE
-- : 'mergeE' LPAREN genericLiteralMapNullableArgument RPAREN #traversalSourceSpawnMethod_mergeE_Map
-- | 'mergeE' LPAREN nestedTraversal RPAREN #traversalSourceSpawnMethod_mergeE_Traversal
-- ;
--
-- traversalSourceSpawnMethod_call
-- : 'call' LPAREN RPAREN #traversalSourceSpawnMethod_call_empty
-- | 'call' LPAREN stringArgument RPAREN #traversalSourceSpawnMethod_call_string
-- | 'call' LPAREN stringArgument COMMA genericLiteralMapArgument RPAREN #traversalSourceSpawnMethod_call_string_map
-- | 'call' LPAREN stringArgument COMMA nestedTraversal RPAREN #traversalSourceSpawnMethod_call_string_traversal
-- | 'call' LPAREN stringArgument COMMA genericLiteralMapArgument COMMA nestedTraversal RPAREN #traversalSourceSpawnMethod_call_string_map_traversal
-- ;
def "ServiceCall" $ record [
"service">: stringArgument,
"arguments">: gremlin "ServiceArguments"],
def "ServiceArguments" $ union [
"map">: optional genericLiteralMapArgument,
"traversal">: optional nestedTraversal],
-- traversalSourceSpawnMethod_union
-- : 'union' LPAREN nestedTraversalList RPAREN
-- ;
--
-- chainedTraversal
-- : traversalMethod
-- | chainedTraversal DOT traversalMethod
-- | chainedTraversal DOT chainedParentOfGraphTraversal
-- ;
def "ChainedTraversal" $ record [
"first">: traversalMethod,
"rest">: gremlin "ChainedTraversalElement"],
def "ChainedTraversalElement" $ union [
"method">: traversalMethod,
"self">: gremlin "TraversalSelfMethod"],
-- chainedParentOfGraphTraversal
-- : traversalSelfMethod
-- | chainedParentOfGraphTraversal DOT traversalSelfMethod
-- ;
--
-- nestedTraversal
-- : rootTraversal
-- | chainedTraversal
-- | ANON_TRAVERSAL_ROOT DOT chainedTraversal
-- ;
def "NestedTraversal" $ union [
"root">: gremlin "RootTraversal",
"chained">: gremlin "ChainedTraversal",
"anonymous">: gremlin "ChainedTraversal"],
-- terminatedTraversal
-- : rootTraversal DOT traversalTerminalMethod
-- ;
def "TerminatedTraversal" $ record [
"root">: gremlin "RootTraversal",
"terminal">: gremlin "TraversalTerminalMethod"],
-- traversalMethod
def "TraversalMethod" $ union [ -- TODO
-- : traversalMethod_V
"v">: genericLiteralVarargs,
-- | traversalMethod_E
"e">: genericLiteralVarargs,
-- | traversalMethod_addE
"addE">: gremlin "StringArgumentOrNestedTraversal",
-- | traversalMethod_addV
"addV">: optional $ gremlin "StringArgumentOrNestedTraversal",
-- | traversalMethod_mergeE
"mergeE">: optional $ gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
-- | traversalMethod_mergeV
"mergeV">: optional $ gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
-- | traversalMethod_aggregate
"aggregate">: gremlin "OptionalTraversalScopeArgumentAndStringArgument",
-- | traversalMethod_all
"all">: traversalPredicate,
-- | traversalMethod_and
"and">: nestedTraversalList,
-- | traversalMethod_any
"any">: traversalPredicate,
-- | traversalMethod_as
"as">: gremlin "StringArgumentAndOptionalStringLiteralVarargs",
-- | traversalMethod_barrier
"barrier">: optional $ gremlin "TraversalSackMethodArgumentOrIntegerArgument",
-- | traversalMethod_both
"both">: stringLiteralVarargs,
-- | traversalMethod_bothE
"bothE">: stringLiteralVarargs,
-- | traversalMethod_bothV
"bothV">: unit,
-- | traversalMethod_branch
"branch">: nestedTraversal,
-- | traversalMethod_by
"by">: gremlin "ByArgs",
-- | traversalMethod_cap
"cap">: gremlin "StringArgumentAndOptionalStringLiteralVarargs",
-- | traversalMethod_choose
"choose">: gremlin "ChooseArgs",
-- | traversalMethod_coalesce
"coalesce">: nestedTraversalList,
-- | traversalMethod_coin
"coin">: floatArgument,
-- | traversalMethod_conjoin
"conjoin">: stringArgument,
-- | traversalMethod_connectedComponent
"connectedComponent">: unit,
-- | traversalMethod_constant
"constant">: genericLiteralArgument,
-- | traversalMethod_count
"count">: optional traversalScopeArgument,
-- | traversalMethod_cyclicPath
"cyclicPath">: unit,
-- | traversalMethod_dedup
"dedup">: gremlin "DedupArgs",
-- | traversalMethod_difference
"difference">: genericLiteralArgument,
-- | traversalMethod_disjunct
"disjunct">: genericLiteralArgument,
-- | traversalMethod_drop
"drop">: unit,
-- | traversalMethod_elementMap
"elementMap">: stringLiteralVarargs,
-- | traversalMethod_emit
"emit">: optional $ gremlin "PredicateOrTraversal",
-- | traversalMethod_filter
"filter">: gremlin "PredicateOrTraversal",
-- | traversalMethod_flatMap
"flatMap">: nestedTraversal,
-- | traversalMethod_fold
"fold">: optional $ gremlin "GenericLiteralArgumentAndTraversalBiFunctionArgument",
-- | traversalMethod_from
"from">: gremlin "FromArgs",
-- | traversalMethod_group
"group">: optional stringArgument,
-- | traversalMethod_groupCount
"groupCount">: optional stringArgument,
-- | traversalMethod_has
"has">: gremlin "HasArgs",
-- | traversalMethod_hasId
"hasId">: gremlin "GenericLiteralArgumentAndTraversalPredicate",
-- | traversalMethod_hasKey
"hasKey">: gremlin "TraversalPredicateOrStringLiteralVarargs",
-- | traversalMethod_hasLabel
"hasLabel">: gremlin "TraversalPredicateOrStringLiteralVarargs",
-- | traversalMethod_hasNot
"hasNot">: stringNullableArgument,
-- | traversalMethod_hasValue
"hasValue">: gremlin "TraversalPredicateOrGenericLiteralArgument",
-- | traversalMethod_id
"id">: unit,
-- | traversalMethod_identity
"identity">: unit,
-- | traversalMethod_in
"in">: stringLiteralVarargs,
-- | traversalMethod_inE
"inE">: stringLiteralVarargs,
-- | traversalMethod_intersect
"intersect">: genericLiteralArgument,
-- | traversalMethod_inV
"inV">: unit,
-- | traversalMethod_index
"index">: unit,
-- | traversalMethod_inject
"inject">: genericLiteralVarargs,
-- | traversalMethod_is
"is">: gremlin "TraversalPredicateOrGenericLiteralArgument",
-- | traversalMethod_key
"key">: unit,
-- | traversalMethod_label
"label">: unit,
-- | traversalMethod_limit
"limit">: gremlin "OptionalTraversalScopeArgumentAndIntegerArgument",
-- | traversalMethod_local
"local">: nestedTraversal,
-- | traversalMethod_loops
"loops">: optional stringArgument,
-- | traversalMethod_map
"map">: nestedTraversal,
-- | traversalMethod_match
"match">: nestedTraversalList,
-- | traversalMethod_math
"math">: stringArgument,
-- | traversalMethod_max
"max">: optional traversalScopeArgument,
-- | traversalMethod_mean
"mean">: optional traversalScopeArgument,
-- | traversalMethod_min
"min">: optional traversalScopeArgument,
-- | traversalMethod_none
"none">: traversalPredicate,
-- | traversalMethod_not
"not">: nestedTraversal,
-- | traversalMethod_option
"option">: gremlin "OptionArgs",
-- | traversalMethod_optional
"optional">: nestedTraversal,
-- | traversalMethod_or
"or">: nestedTraversalList,
-- | traversalMethod_order
"order">: optional traversalScopeArgument,
-- | traversalMethod_otherV
"otherV">: unit,
-- | traversalMethod_out
"out">: stringLiteralVarargs,
-- | traversalMethod_outE
"outE">: stringLiteralVarargs,
-- | traversalMethod_outV
"outV">: unit,
-- | traversalMethod_pageRank
"pageRank">: optional floatArgument,
-- | traversalMethod_path
"path">: unit,
-- | traversalMethod_peerPressure
"peerPressure">: unit,
-- | traversalMethod_profile
"profile">: optional stringArgument,
-- | traversalMethod_project
"project">: gremlin "StringArgumentAndOptionalStringLiteralVarargs",
-- | traversalMethod_properties
"properties">: stringLiteralVarargs,
-- | traversalMethod_property
"property">: gremlin "PropertyArgs",
-- | traversalMethod_propertyMap
"propertyMap">: stringLiteralVarargs,
-- | traversalMethod_range
"range">: gremlin "RangeArgs",
-- | traversalMethod_read
"read">: unit,
-- | traversalMethod_repeat
"repeat">: gremlin "OptionalStringArgumentAndNestedTraversal",
-- | traversalMethod_sack
"sack">: optional traversalBiFunctionArgument,
-- | traversalMethod_sample
"sample">: gremlin "OptionalTraversalScopeArgumentAndIntegerArgument",
-- | traversalMethod_select
"select">: gremlin "SelectArgs",
-- | traversalMethod_combine
"combine">: genericLiteralArgument,
-- | traversalMethod_product
"product">: genericLiteralArgument,
-- | traversalMethod_merge
"merge">: genericLiteralArgument,
-- | traversalMethod_shortestPath
"shortestPath">: unit,
-- | traversalMethod_sideEffect
"sideEffect">: nestedTraversal,
-- | traversalMethod_simplePath
"simplePath">: unit,
-- | traversalMethod_skip
"skip">: gremlin "OptionalTraversalScopeArgumentAndIntegerArgument",
-- | traversalMethod_store
"store">: stringArgument,
-- | traversalMethod_subgraph
"subgraph">: stringArgument,
-- | traversalMethod_sum
"sum">: optional traversalScopeArgument,
-- | traversalMethod_tail
"tail">: optional $ gremlin "TailArgs",
-- | traversalMethod_fail
"fail">: optional stringArgument,
-- | traversalMethod_timeLimit
-- | traversalMethod_times
"times">: integerArgument,
-- | traversalMethod_to
"to">: gremlin "ToArgs",
-- | traversalMethod_toE
"toE">: gremlin "DirectionAndVarargs",
-- | traversalMethod_toV
"toV">: traversalDirectionArgument,
-- | traversalMethod_tree
"tree">: optional stringArgument,
-- | traversalMethod_unfold
"unfold">: unit,
-- | traversalMethod_union
"union">: nestedTraversalList,
-- | traversalMethod_until
"until">: gremlin "PredicateOrTraversal",
-- | traversalMethod_value
"value">: unit,
-- | traversalMethod_valueMap
"valueMap">: gremlin "ValueMapArgs",
-- | traversalMethod_values
"values">: stringLiteralVarargs,
-- | traversalMethod_where
"where">: gremlin "WhereArgs",
-- | traversalMethod_with
"with">: gremlin "WithArgs",
-- | traversalMethod_write
"write">: unit,
-- | traversalMethod_element
"element">: stringLiteralVarargs,
-- | traversalMethod_call
"call">: gremlin "ServiceCall",
-- | traversalMethod_concat
"concat">: gremlin "ConcatArgs",
-- | traversalMethod_asString
"asString">: optional traversalScopeArgument,
-- | traversalMethod_format
"format">: stringArgument,
-- | traversalMethod_toUpper
"toUpper">: optional traversalScopeArgument,
-- | traversalMethod_toLower
"toLower">: optional traversalScopeArgument,
-- | traversalMethod_length
"length">: optional traversalScopeArgument,
-- | traversalMethod_trim
"trim">: optional traversalScopeArgument,
-- | traversalMethod_lTrim
"lTrim">: optional traversalScopeArgument,
-- | traversalMethod_rTrim
"rTrim">: optional traversalScopeArgument,
-- | traversalMethod_reverse
"reverse">: unit,
-- | traversalMethod_replace
"replace">: gremlin "ReplaceArgs",
-- | traversalMethod_split
"split">: gremlin "SplitArgs",
-- | traversalMethod_substring
"substring">: gremlin "SubstringArgs",
-- | traversalMethod_asDate
"asDate">: unit,
-- | traversalMethod_dateAdd
"dateAdd">: gremlin "DateAddArgs",
-- | traversalMethod_dateDiff
"dateDiff">: gremlin "DateDiffArgs"],
-- ;
-- traversalMethod_V
-- : 'V' LPAREN genericLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_E
-- : 'E' LPAREN genericLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_addE
-- : 'addE' LPAREN stringArgument RPAREN #traversalMethod_addE_String
-- | 'addE' LPAREN nestedTraversal RPAREN #traversalMethod_addE_Traversal
-- ;
def "StringArgumentOrNestedTraversal" $ union [
"string">: stringArgument,
"traversal">: nestedTraversal],
-- traversalMethod_addV
-- : 'addV' LPAREN RPAREN #traversalMethod_addV_Empty
-- | 'addV' LPAREN stringArgument RPAREN #traversalMethod_addV_String
-- | 'addV' LPAREN nestedTraversal RPAREN #traversalMethod_addV_Traversal
-- ;
-- traversalMethod_mergeV
-- : 'mergeV' LPAREN RPAREN #traversalMethod_mergeV_empty
-- | 'mergeV' LPAREN genericLiteralMapNullableArgument RPAREN #traversalMethod_mergeV_Map
-- | 'mergeV' LPAREN nestedTraversal RPAREN #traversalMethod_mergeV_Traversal
-- ;
-- traversalMethod_mergeE
-- : 'mergeE' LPAREN RPAREN #traversalMethod_mergeE_empty
-- | 'mergeE' LPAREN genericLiteralMapNullableArgument RPAREN #traversalMethod_mergeE_Map
-- | 'mergeE' LPAREN nestedTraversal RPAREN #traversalMethod_mergeE_Traversal
-- ;
-- traversalMethod_aggregate
-- : 'aggregate' LPAREN traversalScopeArgument COMMA stringArgument RPAREN #traversalMethod_aggregate_Scope_String
-- | 'aggregate' LPAREN stringArgument RPAREN #traversalMethod_aggregate_String
-- ;
def "OptionalTraversalScopeArgumentAndStringArgument" $ record [
"scope">: optional traversalScopeArgument,
"string">: stringArgument],
-- traversalMethod_all
-- : 'all' LPAREN traversalPredicate RPAREN #traversalMethod_all_P
-- ;
--
-- traversalMethod_and
-- : 'and' LPAREN nestedTraversalList RPAREN
-- ;
--
-- traversalMethod_any
-- : 'any' LPAREN traversalPredicate RPAREN #traversalMethod_any_P
-- ;
--
-- traversalMethod_as
-- : 'as' LPAREN stringArgument (COMMA stringLiteralVarargs)? RPAREN
-- ;
def "StringArgumentAndOptionalStringLiteralVarargs" $ record [
"first">: stringArgument,
"rest">: optionalStringLiteralVarargs],
-- traversalMethod_barrier
-- : 'barrier' LPAREN traversalSackMethodArgument RPAREN #traversalMethod_barrier_Consumer
-- | 'barrier' LPAREN RPAREN #traversalMethod_barrier_Empty
-- | 'barrier' LPAREN integerArgument RPAREN #traversalMethod_barrier_int
-- ;
def "TraversalSackMethodArgumentOrIntegerArgument" $ union [
"consumer">: gremlin "TraversalSackMethodArgument",
"int">: integerArgument],
--
-- traversalMethod_both
-- : 'both' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_bothE
-- : 'bothE' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_bothV
-- : 'bothV' LPAREN RPAREN
-- ;
--
-- traversalMethod_branch
-- : 'branch' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalMethod_by
-- : 'by' LPAREN traversalComparatorArgument RPAREN #traversalMethod_by_Comparator
-- | 'by' LPAREN RPAREN #traversalMethod_by_Empty
-- | 'by' LPAREN traversalFunctionArgument RPAREN #traversalMethod_by_Function
-- | 'by' LPAREN traversalFunctionArgument COMMA traversalComparatorArgument RPAREN #traversalMethod_by_Function_Comparator
-- | 'by' LPAREN traversalOrderArgument RPAREN #traversalMethod_by_Order
-- | 'by' LPAREN stringArgument RPAREN #traversalMethod_by_String
-- | 'by' LPAREN stringArgument COMMA traversalComparatorArgument RPAREN #traversalMethod_by_String_Comparator
-- | 'by' LPAREN traversalTokenArgument RPAREN #traversalMethod_by_T
-- | 'by' LPAREN nestedTraversal RPAREN #traversalMethod_by_Traversal
-- | 'by' LPAREN nestedTraversal COMMA traversalComparatorArgument RPAREN #traversalMethod_by_Traversal_Comparator
-- ;
def "ByArgs" $ union [
"order">: traversalOrderArgument,
"token">: traversalTokenArgument,
"other">: gremlin "ByOtherArgs"],
def "ByOtherArgs" $ union [
"comparator">: optional traversalComparatorArgument,
"other">: optional $ gremlin "TraversalFunctionArgumentOrStringArgumentOrNestedTraversal"],
def "TraversalFunctionArgumentOrStringArgumentOrNestedTraversal" $ union [
"function">: traversalFunctionArgument,
"string">: stringArgument,
"traversal">: nestedTraversal],
-- traversalMethod_cap
-- : 'cap' LPAREN stringArgument (COMMA stringLiteralVarargs)? RPAREN
-- ;
--
-- traversalMethod_choose
-- : 'choose' LPAREN traversalFunctionArgument RPAREN #traversalMethod_choose_Function
-- | 'choose' LPAREN traversalPredicate COMMA nestedTraversal RPAREN #traversalMethod_choose_Predicate_Traversal
-- | 'choose' LPAREN traversalPredicate COMMA nestedTraversal COMMA nestedTraversal RPAREN #traversalMethod_choose_Predicate_Traversal_Traversal
-- | 'choose' LPAREN nestedTraversal RPAREN #traversalMethod_choose_Traversal
-- | 'choose' LPAREN nestedTraversal COMMA nestedTraversal RPAREN #traversalMethod_choose_Traversal_Traversal
-- | 'choose' LPAREN nestedTraversal COMMA nestedTraversal COMMA nestedTraversal RPAREN #traversalMethod_choose_Traversal_Traversal_Traversal
-- ;
def "ChooseArgs" $ union [
"function">: traversalFunctionArgument,
"predicateTraversal">: gremlin "PredicateTraversalArgument",
"traversal">: gremlin "NestedTraversalArgument"],
def "PredicateTraversalArgument" $ record [
"predicate">: traversalPredicate,
"traversal1">: nestedTraversal,
"traversal2">: optional $ nestedTraversal],
def "NestedTraversalArgument" $ record [
"traversal1">: nestedTraversal,
"traversal2">: optional $ nestedTraversal,
"traversal3">: optional $ nestedTraversal],
-- traversalMethod_coalesce
-- : 'coalesce' LPAREN nestedTraversalList RPAREN
-- ;
--
-- traversalMethod_coin
-- : 'coin' LPAREN floatArgument RPAREN
-- ;
--
-- traversalMethod_combine
-- : 'combine' LPAREN genericLiteralArgument RPAREN #traversalMethod_combine_Object
-- ;
--
-- traversalMethod_connectedComponent
-- : 'connectedComponent' LPAREN RPAREN
-- ;
--
-- traversalMethod_constant
-- : 'constant' LPAREN genericLiteralArgument RPAREN
-- ;
--
-- traversalMethod_count
-- : 'count' LPAREN RPAREN #traversalMethod_count_Empty
-- | 'count' LPAREN traversalScopeArgument RPAREN #traversalMethod_count_Scope
-- ;
--
-- traversalMethod_cyclicPath
-- : 'cyclicPath' LPAREN RPAREN
-- ;
--
-- traversalMethod_dedup
-- : 'dedup' LPAREN traversalScopeArgument (COMMA stringLiteralVarargs)? RPAREN #traversalMethod_dedup_Scope_String
-- | 'dedup' LPAREN stringLiteralVarargs RPAREN #traversalMethod_dedup_String
-- ;
def "DedupArgs" $ union [
"scopeString">: gremlin "ScopeStringArgument",
"string">: stringLiteralVarargs],
def "ScopeStringArgument" $ record [
"scope">: traversalScopeArgument,
"strings">: optionalStringLiteralVarargs],
-- traversalMethod_difference
-- : 'difference' LPAREN genericLiteralArgument RPAREN #traversalMethod_difference_Object
-- ;
--
-- traversalMethod_disjunct
-- : 'disjunct' LPAREN genericLiteralArgument RPAREN #traversalMethod_disjunct_Object
-- ;
--
-- traversalMethod_drop
-- : 'drop' LPAREN RPAREN
-- ;
--
-- traversalMethod_elementMap
-- : 'elementMap' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_emit
-- : 'emit' LPAREN RPAREN #traversalMethod_emit_Empty
-- | 'emit' LPAREN traversalPredicate RPAREN #traversalMethod_emit_Predicate
-- | 'emit' LPAREN nestedTraversal RPAREN #traversalMethod_emit_Traversal
-- ;
def "PredicateOrTraversal" $ union [
"predicate">: traversalPredicate,
"traversal">: nestedTraversal],
-- traversalMethod_filter
-- : 'filter' LPAREN traversalPredicate RPAREN #traversalMethod_filter_Predicate
-- | 'filter' LPAREN nestedTraversal RPAREN #traversalMethod_filter_Traversal
-- ;
-- traversalMethod_flatMap
-- : 'flatMap' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalMethod_fold
-- : 'fold' LPAREN RPAREN #traversalMethod_fold_Empty
-- | 'fold' LPAREN genericLiteralArgument COMMA traversalBiFunctionArgument RPAREN #traversalMethod_fold_Object_BiFunction
-- ;
def "GenericLiteralArgumentAndTraversalBiFunctionArgument" $ record [
"literal">: genericLiteralArgument,
"biFunction">: traversalBiFunctionArgument],
-- traversalMethod_from
-- : 'from' LPAREN stringArgument RPAREN #traversalMethod_from_String
-- | 'from' LPAREN structureVertexArgument RPAREN #traversalMethod_from_Vertex
-- | 'from' LPAREN nestedTraversal RPAREN #traversalMethod_from_Traversal
-- ;
def "FromArgs" $ union [
"string">: stringArgument,
"vertex">: structureVertexArgument,
"traversal">: nestedTraversal],
-- traversalMethod_group
-- : 'group' LPAREN RPAREN #traversalMethod_group_Empty
-- | 'group' LPAREN stringArgument RPAREN #traversalMethod_group_String
-- ;
--
-- traversalMethod_groupCount
-- : 'groupCount' LPAREN RPAREN #traversalMethod_groupCount_Empty
-- | 'groupCount' LPAREN stringArgument RPAREN #traversalMethod_groupCount_String
-- ;
--
-- traversalMethod_has
-- : 'has' LPAREN stringNullableArgument RPAREN #traversalMethod_has_String
-- | 'has' LPAREN stringNullableArgument COMMA genericLiteralArgument RPAREN #traversalMethod_has_String_Object
-- | 'has' LPAREN stringNullableArgument COMMA traversalPredicate RPAREN #traversalMethod_has_String_P
-- | 'has' LPAREN stringNullableArgument COMMA stringNullableArgument COMMA genericLiteralArgument RPAREN #traversalMethod_has_String_String_Object
-- | 'has' LPAREN stringNullableArgument COMMA stringNullableArgument COMMA traversalPredicate RPAREN #traversalMethod_has_String_String_P
-- | 'has' LPAREN stringNullableArgument COMMA nestedTraversal RPAREN #traversalMethod_has_String_Traversal
-- | 'has' LPAREN traversalTokenArgument COMMA genericLiteralArgument RPAREN #traversalMethod_has_T_Object
-- | 'has' LPAREN traversalTokenArgument COMMA traversalPredicate RPAREN #traversalMethod_has_T_P
-- | 'has' LPAREN traversalTokenArgument COMMA nestedTraversal RPAREN #traversalMethod_has_T_Traversal
-- ;
def "HasArgs" $ union [
"string">: gremlin "HasStringArgumentAndOptionalStringLiteralVarargs",
"traversalToken">: gremlin "HasTraversalTokenArgs"],
def "HasStringArgumentAndOptionalStringLiteralVarargs" $ record [
"string">: stringNullableArgument,
"rest">: optional $ gremlin "HasStringArgumentAndOptionalStringLiteralVarargsRest"],
def "HasStringArgumentAndOptionalStringLiteralVarargsRest" $ union [
"object">: genericLiteralArgument,
"predicate">: traversalPredicate,
"stringObject">: gremlin "StringNullableArgumentAndGenericLiteralArgument",
"stringPredicate">: gremlin "StringNullableArgumentAndTraversalPredicate",
"traversal">: nestedTraversal],
def "StringNullableArgumentAndGenericLiteralArgument" $ record [
"string">: stringNullableArgument,
"literal">: genericLiteralArgument],
def "StringNullableArgumentAndTraversalPredicate" $ record [
"string">: stringNullableArgument,
"predicate">: traversalPredicate],
def "HasTraversalTokenArgs" $ record [
"traversalToken">: traversalTokenArgument,
"rest">: gremlin "HasTraversalTokenArgsRest"],
def "HasTraversalTokenArgsRest" $ union [
"literal">: genericLiteralArgument,
"predicate">: traversalPredicate,
"traversal">: nestedTraversal],
-- traversalMethod_hasId
-- : 'hasId' LPAREN genericLiteralArgument (COMMA genericLiteralVarargs)? RPAREN #traversalMethod_hasId_Object_Object
-- | 'hasId' LPAREN traversalPredicate RPAREN #traversalMethod_hasId_P
-- ;
def "GenericLiteralArgumentAndTraversalPredicate" $ union [
"literal">: genericLiteralArgument,
"predicate">: traversalPredicate],
-- traversalMethod_hasKey
-- : 'hasKey' LPAREN traversalPredicate RPAREN #traversalMethod_hasKey_P
-- | 'hasKey' LPAREN stringNullableArgument (COMMA stringLiteralVarargs)? RPAREN #traversalMethod_hasKey_String_String
-- ;
def "TraversalPredicateOrStringLiteralVarargs" $ union [
"predicate">: traversalPredicate,
"string">: stringLiteralVarargs],
-- traversalMethod_hasLabel
-- : 'hasLabel' LPAREN traversalPredicate RPAREN #traversalMethod_hasLabel_P
-- | 'hasLabel' LPAREN stringNullableArgument (COMMA stringLiteralVarargs)? RPAREN #traversalMethod_hasLabel_String_String
-- ;
--
-- traversalMethod_hasNot
-- : 'hasNot' LPAREN stringNullableArgument RPAREN
-- ;
--
-- traversalMethod_hasValue
-- : 'hasValue' LPAREN genericLiteralArgument (COMMA genericLiteralVarargs)? RPAREN #traversalMethod_hasValue_Object_Object
-- | 'hasValue' LPAREN traversalPredicate RPAREN #traversalMethod_hasValue_P
-- ;
def "TraversalPredicateOrGenericLiteralArgument" $ union [
"predicate">: traversalPredicate,
"literal">: list genericLiteralArgument],
-- traversalMethod_id
-- : 'id' LPAREN RPAREN
-- ;
--
-- traversalMethod_identity
-- : 'identity' LPAREN RPAREN
-- ;
--
-- traversalMethod_in
-- : 'in' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_inE
-- : 'inE' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_intersect
-- : 'intersect' LPAREN genericLiteralArgument RPAREN #traversalMethod_intersect_Object
-- ;
--
-- traversalMethod_inV
-- : 'inV' LPAREN RPAREN
-- ;
--
-- traversalMethod_index
-- : 'index' LPAREN RPAREN
-- ;
--
-- traversalMethod_inject
-- : 'inject' LPAREN genericLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_is
-- : 'is' LPAREN genericLiteralArgument RPAREN #traversalMethod_is_Object
-- | 'is' LPAREN traversalPredicate RPAREN #traversalMethod_is_P
-- ;
--
-- traversalMethod_conjoin
-- : 'conjoin' LPAREN stringArgument RPAREN #traversalMethod_conjoin_String
-- ;
--
-- traversalMethod_key
-- : 'key' LPAREN RPAREN
-- ;
--
-- traversalMethod_label
-- : 'label' LPAREN RPAREN
-- ;
--
-- traversalMethod_limit
-- : 'limit' LPAREN traversalScopeArgument COMMA integerArgument RPAREN #traversalMethod_limit_Scope_long
-- | 'limit' LPAREN integerArgument RPAREN #traversalMethod_limit_long
-- ;
-- traversalMethod_local
-- : 'local' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalMethod_loops
-- : 'loops' LPAREN RPAREN #traversalMethod_loops_Empty
-- | 'loops' LPAREN stringArgument RPAREN #traversalMethod_loops_String
-- ;
--
-- traversalMethod_map
-- : 'map' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalMethod_match
-- : 'match' LPAREN nestedTraversalList RPAREN
-- ;
--
-- traversalMethod_math
-- : 'math' LPAREN stringArgument RPAREN
-- ;
--
-- traversalMethod_max
-- : 'max' LPAREN RPAREN #traversalMethod_max_Empty
-- | 'max' LPAREN traversalScopeArgument RPAREN #traversalMethod_max_Scope
-- ;
--
-- traversalMethod_mean
-- : 'mean' LPAREN RPAREN #traversalMethod_mean_Empty
-- | 'mean' LPAREN traversalScopeArgument RPAREN #traversalMethod_mean_Scope
-- ;
--
-- traversalMethod_merge
-- : 'merge' LPAREN genericLiteralArgument RPAREN #traversalMethod_merge_Object
-- ;
--
-- traversalMethod_min
-- : 'min' LPAREN RPAREN #traversalMethod_min_Empty
-- | 'min' LPAREN traversalScopeArgument RPAREN #traversalMethod_min_Scope
-- ;
--
-- traversalMethod_none
-- : 'none' LPAREN traversalPredicate RPAREN #traversalMethod_none_P
-- ;
--
-- traversalMethod_not
-- : 'not' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalMethod_option
-- : 'option' LPAREN traversalPredicate COMMA nestedTraversal RPAREN #traversalMethod_option_Predicate_Traversal
-- | 'option' LPAREN traversalMergeArgument COMMA genericLiteralMapNullableArgument RPAREN #traversalMethod_option_Merge_Map
-- | 'option' LPAREN traversalMergeArgument COMMA genericLiteralMapNullableArgument COMMA traversalCardinality RPAREN #traversalMethod_option_Merge_Map_Cardinality
-- | 'option' LPAREN traversalMergeArgument COMMA nestedTraversal RPAREN #traversalMethod_option_Merge_Traversal
-- | 'option' LPAREN genericLiteralArgument COMMA nestedTraversal RPAREN #traversalMethod_option_Object_Traversal
-- | 'option' LPAREN nestedTraversal RPAREN #traversalMethod_option_Traversal
-- ;
def "OptionArgs" $ union [
"predicateTraversal">: gremlin "TraversalPredicateAndNestedTraversal",
"mergeMap">: gremlin "TraversalMergeArgumentAndGenericLiteralMapNullableArgument",
"mergeTraversal">: gremlin "TraversalMergeArgumentAndNestedTraversal",
"objectTraversal">: gremlin "GenericLiteralArgumentAndNestedTraversal",
"traversal">: nestedTraversal],
def "TraversalPredicateAndNestedTraversal" $ record [
"predicate">: traversalPredicate,
"traversal">: nestedTraversal],
def "TraversalMergeArgumentAndGenericLiteralMapNullableArgument" $ record [
"merge">: traversalMergeArgument,
"map">: genericLiteralMapNullableArgument,
"cardinality">: optional traversalCardinality],
def "TraversalMergeArgumentAndNestedTraversal" $ record [
"merge">: traversalMergeArgument,
"traversal">: nestedTraversal],
def "GenericLiteralArgumentAndNestedTraversal" $ record [
"object">: genericLiteralArgument,
"traversal">: nestedTraversal],
-- traversalMethod_optional
-- : 'optional' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalMethod_or
-- : 'or' LPAREN nestedTraversalList RPAREN
-- ;
--
-- traversalMethod_order
-- : 'order' LPAREN RPAREN #traversalMethod_order_Empty
-- | 'order' LPAREN traversalScopeArgument RPAREN #traversalMethod_order_Scope
-- ;
--
-- traversalMethod_otherV
-- : 'otherV' LPAREN RPAREN
-- ;
--
-- traversalMethod_out
-- : 'out' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_outE
-- : 'outE' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_outV
-- : 'outV' LPAREN RPAREN
-- ;
--
-- traversalMethod_pageRank
-- : 'pageRank' LPAREN RPAREN #traversalMethod_pageRank_Empty
-- | 'pageRank' LPAREN floatArgument RPAREN #traversalMethod_pageRank_double
-- ;
--
-- traversalMethod_path
-- : 'path' LPAREN RPAREN
-- ;
--
-- traversalMethod_peerPressure
-- : 'peerPressure' LPAREN RPAREN
-- ;
--
-- traversalMethod_product
-- : 'product' LPAREN genericLiteralArgument RPAREN #traversalMethod_product_Object
-- ;
--
-- traversalMethod_profile
-- : 'profile' LPAREN RPAREN #traversalMethod_profile_Empty
-- | 'profile' LPAREN stringArgument RPAREN #traversalMethod_profile_String
-- ;
--
-- traversalMethod_project
-- : 'project' LPAREN stringArgument (COMMA stringLiteralVarargs)? RPAREN
-- ;
-- traversalMethod_properties
-- : 'properties' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_property
-- : 'property' LPAREN traversalCardinalityArgument COMMA genericLiteralArgument COMMA genericLiteralArgument (COMMA genericLiteralVarargs)? RPAREN #traversalMethod_property_Cardinality_Object_Object_Object
-- | 'property' LPAREN genericLiteralArgument COMMA genericLiteralArgument (COMMA genericLiteralVarargs)? RPAREN #traversalMethod_property_Object_Object_Object
-- | 'property' LPAREN genericLiteralMapNullableArgument RPAREN # traversalMethod_property_Object
-- | 'property' LPAREN traversalCardinalityArgument COMMA genericLiteralMapNullableArgument RPAREN # traversalMethod_property_Cardinality_Object
-- ;
def "PropertyArgs" $ union [
"cardinalityObjects">: gremlin "TraversalCardinalityArgumentAndObjects",
"objects">: minLengthList 2 genericLiteralArgument,
"object">: genericLiteralMapNullableArgument,
"cardinalityObject">: gremlin "GenericLiteralMapNullableArgumentAndTraversalCardinalityArgument"],
def "TraversalCardinalityArgumentAndObjects" $ record [
"cardinality">: traversalCardinalityArgument,
"objects">: minLengthList 2 genericLiteralArgument],
def "GenericLiteralMapNullableArgumentAndTraversalCardinalityArgument" $ record [
"cardinality">: traversalCardinalityArgument,
"object">: genericLiteralMapNullableArgument],
-- traversalMethod_propertyMap
-- : 'propertyMap' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_range
-- : 'range' LPAREN traversalScopeArgument COMMA integerArgument COMMA integerArgument RPAREN #traversalMethod_range_Scope_long_long
-- | 'range' LPAREN integerArgument COMMA integerArgument RPAREN #traversalMethod_range_long_long
-- ;
def "RangeArgs" $ record [
"scope">: optional traversalScopeArgument,
"min">: integerArgument,
"max">: integerArgument],
-- traversalMethod_read
-- : 'read' LPAREN RPAREN
-- ;
--
-- traversalMethod_repeat
-- : 'repeat' LPAREN stringArgument COMMA nestedTraversal RPAREN #traversalMethod_repeat_String_Traversal
-- | 'repeat' LPAREN nestedTraversal RPAREN #traversalMethod_repeat_Traversal
-- ;
def "OptionalStringArgumentAndNestedTraversal" $ record [
"string">: optional stringArgument,
"traversal">: nestedTraversal],
-- traversalMethod_reverse
-- : 'reverse' LPAREN RPAREN #traversalMethod_reverse_Empty
-- ;
--
-- traversalMethod_sack
-- : 'sack' LPAREN traversalBiFunctionArgument RPAREN #traversalMethod_sack_BiFunction
-- | 'sack' LPAREN RPAREN #traversalMethod_sack_Empty
-- ;
--
-- traversalMethod_sample
-- : 'sample' LPAREN traversalScopeArgument COMMA integerArgument RPAREN #traversalMethod_sample_Scope_int
-- | 'sample' LPAREN integerArgument RPAREN #traversalMethod_sample_int
-- ;
-- traversalMethod_select
-- : 'select' LPAREN traversalColumnArgument RPAREN #traversalMethod_select_Column
-- | 'select' LPAREN traversalPopArgument COMMA stringArgument RPAREN #traversalMethod_select_Pop_String
-- | 'select' LPAREN traversalPopArgument COMMA stringArgument COMMA stringArgument (COMMA stringLiteralVarargs)? RPAREN #traversalMethod_select_Pop_String_String_String
-- | 'select' LPAREN traversalPopArgument COMMA nestedTraversal RPAREN #traversalMethod_select_Pop_Traversal
-- | 'select' LPAREN stringArgument RPAREN #traversalMethod_select_String
-- | 'select' LPAREN stringArgument COMMA stringArgument (COMMA stringLiteralVarargs)? RPAREN #traversalMethod_select_String_String_String
-- | 'select' LPAREN nestedTraversal RPAREN #traversalMethod_select_Traversal
-- ;
def "SelectArgs" $ union [
"column">: traversalColumnArgument,
"popStrings">: gremlin "PopStringsArgument",
"popTraversal">: gremlin "TraversalPopArgumentAndNestedTraversal",
"strings">: nonemptyList stringArgument,
"traversal">: nestedTraversal],
def "PopStringsArgument" $ record [
"pop">: traversalPopArgument,
"string">: nonemptyList stringArgument],
def "TraversalPopArgumentAndNestedTraversal" $ record [
"pop">: traversalPopArgument,
"traversal">: nestedTraversal],
-- traversalMethod_shortestPath
-- : 'shortestPath' LPAREN RPAREN
-- ;
--
-- traversalMethod_sideEffect
-- : 'sideEffect' LPAREN nestedTraversal RPAREN
-- ;
--
-- traversalMethod_simplePath
-- : 'simplePath' LPAREN RPAREN
-- ;
--
-- traversalMethod_skip
-- : 'skip' LPAREN traversalScopeArgument COMMA integerArgument RPAREN #traversalMethod_skip_Scope_long
-- | 'skip' LPAREN integerArgument RPAREN #traversalMethod_skip_long
-- ;
def "OptionalTraversalScopeArgumentAndIntegerArgument" $ record [
"scope">: optional traversalScopeArgument,
"long">: integerArgument],
-- traversalMethod_store
-- : 'store' LPAREN stringArgument RPAREN
-- ;
--
-- traversalMethod_subgraph
-- : 'subgraph' LPAREN stringArgument RPAREN
-- ;
--
-- traversalMethod_sum
-- : 'sum' LPAREN RPAREN #traversalMethod_sum_Empty
-- | 'sum' LPAREN traversalScopeArgument RPAREN #traversalMethod_sum_Scope
-- ;
--
-- traversalMethod_tail
-- : 'tail' LPAREN RPAREN #traversalMethod_tail_Empty
-- | 'tail' LPAREN traversalScopeArgument RPAREN #traversalMethod_tail_Scope
-- | 'tail' LPAREN traversalScopeArgument COMMA integerArgument RPAREN #traversalMethod_tail_Scope_long
-- | 'tail' LPAREN integerArgument RPAREN #traversalMethod_tail_long
-- ;
def "TailArgs" $ record [
"scope">: optional traversalScopeArgument,
"integer">: optional integerArgument],
-- traversalMethod_fail
-- : 'fail' LPAREN RPAREN #traversalMethod_fail_Empty
-- | 'fail' LPAREN stringArgument RPAREN #traversalMethod_fail_String
-- ;
--
-- traversalMethod_timeLimit
-- : 'timeLimit' LPAREN integerArgument RPAREN
-- ;
--
-- traversalMethod_times
-- : 'times' LPAREN integerArgument RPAREN
-- ;
--
-- traversalMethod_to
-- : 'to' LPAREN traversalDirectionArgument (COMMA stringLiteralVarargs)? RPAREN #traversalMethod_to_Direction_String
-- | 'to' LPAREN stringArgument RPAREN #traversalMethod_to_String
-- | 'to' LPAREN structureVertexArgument RPAREN #traversalMethod_to_Vertex
-- | 'to' LPAREN nestedTraversal RPAREN #traversalMethod_to_Traversal
-- ;
def "ToArgs" $ union [
"direction">: gremlin "DirectionAndVarargs",
"string">: stringArgument,
"vertex">: structureVertexArgument,
"traversal">: nestedTraversal],
-- traversalMethod_toE
-- : 'toE' LPAREN traversalDirectionArgument (COMMA stringLiteralVarargs)? RPAREN
-- ;
def "DirectionAndVarargs" $ record [
"direction">: traversalDirectionArgument,
"varargs">: optionalStringLiteralVarargs],
-- traversalMethod_toV
-- : 'toV' LPAREN traversalDirectionArgument RPAREN
-- ;
--
-- traversalMethod_tree
-- : 'tree' LPAREN RPAREN #traversalMethod_tree_Empty
-- | 'tree' LPAREN stringArgument RPAREN #traversalMethod_tree_String
-- ;
--
-- traversalMethod_unfold
-- : 'unfold' LPAREN RPAREN
-- ;
--
-- traversalMethod_union
-- : 'union' LPAREN nestedTraversalList RPAREN
-- ;
--
-- traversalMethod_until
-- : 'until' LPAREN traversalPredicate RPAREN #traversalMethod_until_Predicate
-- | 'until' LPAREN nestedTraversal RPAREN #traversalMethod_until_Traversal
-- ;
--
-- traversalMethod_value
-- : 'value' LPAREN RPAREN
-- ;
--
-- traversalMethod_valueMap
-- : 'valueMap' LPAREN stringLiteralVarargs RPAREN #traversalMethod_valueMap_String
-- | 'valueMap' LPAREN booleanArgument (COMMA stringLiteralVarargs)? RPAREN #traversalMethod_valueMap_boolean_String
-- ;
def "ValueMapArgs" $ union [
"string">: stringLiteralVarargs,
"boolean">: gremlin "ValueMapBooleanArgs"],
def "ValueMapBooleanArgs" $ record [
"value">: booleanArgument,
"keys">: optional stringLiteralVarargs],
-- traversalMethod_values
-- : 'values' LPAREN stringLiteralVarargs RPAREN
-- ;
--
-- traversalMethod_where
-- : 'where' LPAREN traversalPredicate RPAREN #traversalMethod_where_P
-- | 'where' LPAREN stringArgument COMMA traversalPredicate RPAREN #traversalMethod_where_String_P
-- | 'where' LPAREN nestedTraversal RPAREN #traversalMethod_where_Traversal
-- ;
def "WhereArgs" $ union [
"predicate">: gremlin "WhereWithPredicateArgs",
"string">: stringArgument,
"traversal">: nestedTraversal],
def "WhereWithPredicateArgs" $ record [
"leftArg">: optional stringArgument,
"predicate">: traversalPredicate],
-- traversalMethod_with
-- : 'with' LPAREN (withOptionKeys | stringArgument) RPAREN #traversalMethod_with_String
-- | 'with' LPAREN (withOptionKeys | stringArgument) COMMA (withOptionsValues | ioOptionsValues | genericLiteralArgument) RPAREN #traversalMethod_with_String_Object
-- ;
def "WithArgs" $ record [
"keys">: gremlin "WithArgsKeys",
"values">: optional $ gremlin "WithArgsValues"],
def "WithArgsKeys" $ union [
"withOption">: gremlin "WithOptionKeys",
"string">: stringArgument],
def "WithArgsValues" $ union [
"withOptions">: gremlin "WithOptionsValues",
"io">: gremlin "IoOptionsValues",
"object">: genericLiteralArgument],
-- traversalMethod_write
-- : 'write' LPAREN RPAREN
-- ;
--
-- traversalMethod_element
-- : 'element' LPAREN RPAREN
-- ;
--
-- traversalMethod_call
-- : 'call' LPAREN stringArgument RPAREN #traversalMethod_call_string
-- | 'call' LPAREN stringArgument COMMA genericLiteralMapArgument RPAREN #traversalMethod_call_string_map
-- | 'call' LPAREN stringArgument COMMA nestedTraversal RPAREN #traversalMethod_call_string_traversal
-- | 'call' LPAREN stringArgument COMMA genericLiteralMapArgument COMMA nestedTraversal RPAREN #traversalMethod_call_string_map_traversal
-- ;
-- traversalMethod_concat
-- : 'concat' LPAREN nestedTraversal (COMMA nestedTraversalList)? RPAREN #traversalMethod_concat_Traversal_Traversal
-- | 'concat' LPAREN stringLiteralVarargs RPAREN #traversalMethod_concat_String
-- ;
def "ConcatArgs" $ union [
"traversal">: nonemptyList $ nestedTraversal,
"string">: stringLiteralVarargs],
-- traversalMethod_asString
-- : 'asString' LPAREN RPAREN #traversalMethod_asString_Empty
-- | 'asString' LPAREN traversalScopeArgument RPAREN #traversalMethod_asString_Scope
-- ;
--
-- traversalMethod_format
-- : 'format' LPAREN stringArgument RPAREN #traversalMethod_format_String
-- ;
--
-- traversalMethod_toUpper
-- : 'toUpper' LPAREN RPAREN #traversalMethod_toUpper_Empty
-- | 'toUpper' LPAREN traversalScopeArgument RPAREN #traversalMethod_toUpper_Scope
-- ;
--
-- traversalMethod_toLower
-- : 'toLower' LPAREN RPAREN #traversalMethod_toLower_Empty
-- | 'toLower' LPAREN traversalScopeArgument RPAREN #traversalMethod_toLower_Scope
-- ;
--
-- traversalMethod_length
-- : 'length' LPAREN RPAREN #traversalMethod_length_Empty
-- | 'length' LPAREN traversalScopeArgument RPAREN #traversalMethod_length_Scope
-- ;
--
-- traversalMethod_trim
-- : 'trim' LPAREN RPAREN #traversalMethod_trim_Empty
-- | 'trim' LPAREN traversalScopeArgument RPAREN #traversalMethod_trim_Scope
-- ;
--
-- traversalMethod_lTrim
-- : 'lTrim' LPAREN RPAREN #traversalMethod_lTrim_Empty
-- | 'lTrim' LPAREN traversalScopeArgument RPAREN #traversalMethod_lTrim_Scope
-- ;
--
-- traversalMethod_rTrim
-- : 'rTrim' LPAREN RPAREN #traversalMethod_rTrim_Empty
-- | 'rTrim' LPAREN traversalScopeArgument RPAREN #traversalMethod_rTrim_Scope
-- ;
--
-- traversalMethod_replace
-- : 'replace' LPAREN stringNullableArgument COMMA stringNullableArgument RPAREN #traversalMethod_replace_String_String
-- | 'replace' LPAREN traversalScopeArgument COMMA stringNullableArgument COMMA stringNullableArgument RPAREN #traversalMethod_replace_Scope_String_String
-- ;
def "ReplaceArgs" $ record [
"scope">: optional traversalScopeArgument,
"from">: stringNullableArgument,
"to">: stringNullableArgument],
--
-- traversalMethod_split
-- : 'split' LPAREN stringNullableArgument RPAREN #traversalMethod_split_String
-- | 'split' LPAREN traversalScopeArgument COMMA stringNullableArgument RPAREN #traversalMethod_split_Scope_String
-- ;
def "SplitArgs" $ record [
"scope">: optional traversalScopeArgument,
"delimiter">: stringNullableArgument],
--
-- traversalMethod_substring
-- : 'substring' LPAREN integerArgument RPAREN #traversalMethod_substring_int
-- | 'substring' LPAREN traversalScopeArgument COMMA integerArgument RPAREN #traversalMethod_substring_Scope_int
-- | 'substring' LPAREN integerArgument COMMA integerArgument RPAREN #traversalMethod_substring_int_int
-- | 'substring' LPAREN traversalScopeArgument COMMA integerArgument COMMA integerArgument RPAREN #traversalMethod_substring_Scope_int_int
-- ;
def "SubstringArgs" $ record [
"scope">: optional traversalScopeArgument,
"start">: integerArgument,
"end">: optional integerArgument],
-- traversalMethod_asDate
-- : 'asDate' LPAREN RPAREN
-- ;
--
-- traversalMethod_dateAdd
-- : 'dateAdd' LPAREN traversalDTArgument COMMA integerArgument RPAREN
-- ;
def "DateAddArgs" $ record [
"unit">: gremlin "TraversalDTArgument",
"duration">: integerArgument],
-- traversalMethod_dateDiff
-- : 'dateDiff' LPAREN nestedTraversal RPAREN #traversalMethod_dateDiff_Traversal
-- | 'dateDiff' LPAREN dateArgument RPAREN #traversalMethod_dateDiff_Date
-- ;
def "DateDiffArgs" $ union [
"traversal">: nestedTraversal,
"date">: dateArgument],
-- /*********************************************
-- ARGUMENT AND TERMINAL RULES
-- **********************************************/
--
-- // There is syntax available in the construction of a ReferenceVertex, that allows the label to not be specified.
-- // That use case is related to OLAP when the StarGraph does not preserve the label of adjacent vertices or other
-- // fail fast scenarios in that processing model. It is not relevant to the grammar however when a user is creating
-- // the Vertex to be used in a Traversal and therefore both id and label are required.
-- structureVertex
-- : NEW? ('Vertex'|'ReferenceVertex') LPAREN genericLiteralArgument COMMA stringArgument RPAREN
-- ;
def "StructureVertex" $ record [
"new">: boolean,
"id">: genericLiteralArgument,
"label">: stringArgument],
-- traversalStrategy
-- : NEW? classType (LPAREN (configuration (COMMA configuration)*)? RPAREN)?
-- ;
def "TraversalStrategy" $ record [
"new">: boolean,
"class">: classType,
"configurations">: list $ gremlin "Configuration"],
-- configuration
-- : keyword COLON genericLiteralArgument
-- | Identifier COLON genericLiteralArgument
-- ;
def "Configuration" $ record [
"key">: gremlin "KeywordOrIdentifier",
"value">: genericLiteralArgument],
def "KeywordOrIdentifier" $ union [
"keyword">: gremlin "Keyword",
"identifier">: identifier],
-- traversalScope
-- : 'local' | 'Scope.local'
-- | 'global' | 'Scope.global'
-- ;
def "TraversalScope" $ enum [
"local",
"global"],
-- traversalBarrier
-- : 'normSack' | 'Barrier.normSack'
-- ;
-- traversalToken
-- : 'id' | 'T.id'
-- | 'label' | 'T.label'
-- | 'key' | 'T.key'
-- | 'value' | 'T.value'
-- ;
def "TraversalToken" $ enum [
"id",
"label",
"key",
"value"],
-- traversalMerge
-- : 'onCreate' | 'Merge.onCreate'
-- | 'onMatch' | 'Merge.onMatch'
-- | 'outV' | 'Merge.outV'
-- | 'inV' | 'Merge.inV'
-- ;
def "TraversalMerge" $ enum [
"onCreate",
"onMatch",
"outV",
"inV"],
-- traversalOrder
-- : 'incr' | 'Order.incr'
-- | 'decr' | 'Order.decr'
-- | 'asc' | 'Order.asc'
-- | 'desc' | 'Order.desc'
-- | 'shuffle' | 'Order.shuffle'
-- ;
def "TraversalOrder" $ enum [
"incr",
"decr",
"asc",
"desc",
"shuffle"],
-- traversalDirection
-- : 'IN' | 'Direction.IN' | 'Direction.from' | 'from'
-- | 'OUT' | 'Direction.OUT' | 'Direction.to' | 'to'
-- | 'BOTH' | 'Direction.BOTH'
-- ;
def "TraversalDirection" $ enum [
"in",
"out",
"both"],
-- traversalCardinality
-- : 'Cardinality.single' LPAREN genericLiteral RPAREN
-- | 'Cardinality.set' LPAREN genericLiteral RPAREN
-- | 'Cardinality.list' LPAREN genericLiteral RPAREN
-- | 'single' LPAREN genericLiteral RPAREN
-- | 'set' LPAREN genericLiteral RPAREN
-- | 'list' LPAREN genericLiteral RPAREN
-- | 'single' | 'Cardinality.single'
-- | 'set' | 'Cardinality.set'
-- | 'list' | 'Cardinality.list'
-- ;
def "TraversalCardinality" $ union [
"single">: genericLiteral,
"set">: genericLiteral,
"list">: genericLiteral],
-- traversalColumn
-- : KEYS | 'Column.keys'
-- | VALUES | 'Column.values'
-- ;
def "TraversalColumn" $ enum [
"keys",
"values"],
-- traversalPop
-- : 'first' | 'Pop.first'
-- | 'last' | 'Pop.last'
-- | 'all' | 'Pop.all'
-- | 'mixed' | 'Pop.mixed'
-- ;
def "TraversalPop" $ enum [
"first",
"last",
"all",
"mixed"],
-- traversalOperator
-- : 'addAll' | 'Operator.addAll'
-- | 'and' | 'Operator.and'
-- | 'assign' | 'Operator.assign'
-- | 'div' | 'Operator.div'
-- | 'max' | 'Operator.max'
-- | 'min' | 'Operator.min'
-- | 'minus' | 'Operator.minus'
-- | 'mult' | 'Operator.mult'
-- | 'or' | 'Operator.or'
-- | 'sum' | 'Operator.sum'
-- | 'sumLong' | 'Operator.sumLong'
-- ;
def "TraversalOperator" $ enum [
"addAll",
"and",
"assign",
"div",
"max",
"min",
"minus",
"mult",
"or",
"sum",
"sumLong"],
-- traversalPick
-- : 'any' | 'Pick.any'
-- | 'none' | 'Pick.none'
-- ;
def "TraversalPick" $ enum [
"any",
"none"],
-- traversalDT
-- : 'second' | 'DT.second'
-- | 'minute' | 'DT.minute'
-- | 'hour' | 'DT.hour'
-- | 'day' | 'DT.day'
-- ;
def "TraversalDT" $ enum [
"second",
"minute",
"hour",
"day"],
-- traversalPredicate
def "TraversalPredicate" $ union [
-- : traversalPredicate_eq
"eq">: genericLiteralArgument,
-- | traversalPredicate_neq
"neq">: genericLiteralArgument,
-- | traversalPredicate_lt
"lt">: genericLiteralArgument,
-- | traversalPredicate_lte
"lte">: genericLiteralArgument,
-- | traversalPredicate_gt
"gt">: genericLiteralArgument,
-- | traversalPredicate_gte
"gte">: genericLiteralArgument,
-- | traversalPredicate_inside
"inside">: gremlin "RangeArgument",
-- | traversalPredicate_outside
"outside">: gremlin "RangeArgument",
-- | traversalPredicate_between
"between">: gremlin "RangeArgument",
-- | traversalPredicate_within
"within">: optional genericLiteralArgument,
-- | traversalPredicate_without
"without">: optional genericLiteralArgument,
-- | traversalPredicate_not
"not">: traversalPredicate,
-- | traversalPredicate_startingWith
"startingWith">: stringArgument,
-- | traversalPredicate_notStartingWith
"notStartingWith">: stringArgument,
-- | traversalPredicate_endingWith
"endingWith">: stringArgument,
-- | traversalPredicate_notEndingWith
"notEndingWith">: stringArgument,
-- | traversalPredicate_containing
"containing">: stringArgument,
-- | traversalPredicate_notContaining
"notContaining">: stringArgument,
-- | traversalPredicate_regex
"regex">: stringArgument,
-- | traversalPredicate_notRegex
"notRegex">: stringArgument,
-- | traversalPredicate DOT 'and' LPAREN traversalPredicate RPAREN
"and">: gremlin "TwoTraversalPredicates",
-- | traversalPredicate DOT 'or' LPAREN traversalPredicate RPAREN
"or">: gremlin "TwoTraversalPredicates",
-- | traversalPredicate DOT 'negate' LPAREN RPAREN
"negate">: traversalPredicate],
-- ;
def "TwoTraversalPredicates" $ record [
"left">: traversalPredicate,
"right">: traversalPredicate],
-- traversalTerminalMethod
def "TraversalTerminalMethod" $ union [ -- TODO
-- : traversalTerminalMethod_explain
"explain">: unit,
-- | traversalTerminalMethod_iterate
"iterate">: unit,
-- | traversalTerminalMethod_hasNext
"hasNext">: unit,
-- | traversalTerminalMethod_tryNext
"tryNext">: unit,
-- | traversalTerminalMethod_next
"next">: optional integerLiteral,
-- | traversalTerminalMethod_toList
"toList">: unit,
-- | traversalTerminalMethod_toSet
"toSet">: unit,
-- | traversalTerminalMethod_toBulkSet
"toBulkSet">: unit],
-- ;
-- traversalSackMethod
-- : traversalBarrier
-- ;
-- traversalSelfMethod
def "TraversalSelfMethod" $ enum [
-- : traversalSelfMethod_discard
"discard"],
-- ;
-- // Additional special rules that are derived from above
-- // These are used to restrict broad method signatures that accept lambdas
-- // to a smaller set.
-- traversalComparator
-- : traversalOrder
-- ;
-- traversalFunction
-- : traversalToken
-- | traversalColumn
-- ;
def "TraversalFunction" $ union [
"token">: traversalToken,
"column">: gremlin "TraversalColumn"],
-- traversalBiFunction
-- : traversalOperator
-- ;
--
-- traversalPredicate_eq
-- : ('P.eq' | 'eq') LPAREN genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_neq
-- : ('P.neq' | 'neq') LPAREN genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_lt
-- : ('P.lt' | 'lt') LPAREN genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_lte
-- : ('P.lte' | 'lte') LPAREN genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_gt
-- : ('P.gt' | 'gt') LPAREN genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_gte
-- : ('P.gte' | 'gte') LPAREN genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_inside
-- : ('P.inside' | 'inside') LPAREN genericLiteralArgument COMMA genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_outside
-- : ('P.outside' | 'outside') LPAREN genericLiteralArgument COMMA genericLiteralArgument RPAREN
-- ;
def "RangeArgument" $ record [
"min">: genericLiteralArgument,
"max">: genericLiteralArgument],
-- traversalPredicate_between
-- : ('P.between' | 'between') LPAREN genericLiteralArgument COMMA genericLiteralArgument RPAREN
-- ;
--
-- traversalPredicate_within
-- : ('P.within' | 'within') LPAREN RPAREN
-- | ('P.within' | 'within') LPAREN genericLiteralListArgument RPAREN
-- ;
--
-- traversalPredicate_without
-- : ('P.without' | 'without') LPAREN RPAREN
-- | ('P.without' | 'without') LPAREN genericLiteralListArgument RPAREN
-- ;
--
-- traversalPredicate_not
-- : ('P.not' | 'not') LPAREN traversalPredicate RPAREN
-- ;
--
-- traversalPredicate_containing
-- : ('TextP.containing' | 'containing') LPAREN stringArgument RPAREN
-- ;
--
-- traversalPredicate_notContaining
-- : ('TextP.notContaining' | 'notContaining') LPAREN stringArgument RPAREN
-- ;
--
-- traversalPredicate_startingWith
-- : ('TextP.startingWith' | 'startingWith') LPAREN stringArgument RPAREN
-- ;
--
-- traversalPredicate_notStartingWith
-- : ('TextP.notStartingWith' | 'notStartingWith') LPAREN stringArgument RPAREN
-- ;
--
-- traversalPredicate_endingWith
-- : ('TextP.endingWith' | 'endingWith') LPAREN stringArgument RPAREN
-- ;
--
-- traversalPredicate_notEndingWith
-- : ('TextP.notEndingWith' | 'notEndingWith') LPAREN stringArgument RPAREN
-- ;
--
-- traversalPredicate_regex
-- : ('TextP.regex' | 'regex') LPAREN stringArgument RPAREN
-- ;
--
-- traversalPredicate_notRegex
-- : ('TextP.notRegex' | 'notRegex') LPAREN stringArgument RPAREN
-- ;
--
-- traversalTerminalMethod_explain
-- : 'explain' LPAREN RPAREN
-- ;
--
-- traversalTerminalMethod_hasNext
-- : 'hasNext' LPAREN RPAREN
-- ;
--
-- traversalTerminalMethod_iterate
-- : 'iterate' LPAREN RPAREN
-- ;
--
-- traversalTerminalMethod_tryNext
-- : 'tryNext' LPAREN RPAREN
-- ;
--
-- traversalTerminalMethod_next
-- : 'next' LPAREN RPAREN
-- | 'next' LPAREN integerLiteral RPAREN
-- ;
--
-- traversalTerminalMethod_toList
-- : 'toList' LPAREN RPAREN
-- ;
--
-- traversalTerminalMethod_toSet
-- : 'toSet' LPAREN RPAREN
-- ;
--
-- traversalTerminalMethod_toBulkSet
-- : 'toBulkSet' LPAREN RPAREN
-- ;
--
-- traversalSelfMethod_discard
-- : 'discard' LPAREN RPAREN
-- ;
--
-- // Gremlin specific lexer rules
--
-- withOptionKeys
-- : shortestPathConstants
-- | connectedComponentConstants
-- | pageRankConstants
-- | peerPressureConstants
-- | ioOptionsKeys
-- | withOptionsConstants_tokens
-- | withOptionsConstants_indexer
-- ;
def "WithOptionKeys" $ union [
"shortestPath">: gremlin "ShortestPathConstants",
"connectedComponent">: gremlin "ConnectedComponentConstants",
"pageRank">: gremlin "PageRankConstants",
"peerPressure">: gremlin "PeerPressureConstants",
"io">: gremlin "IoOptionsKeys",
"withOptionsTokens">: unit,
"withOptionsIndexer">: unit],
-- connectedComponentConstants
-- : connectedComponentConstants_component
-- | connectedComponentConstants_edges
-- | connectedComponentConstants_propertyName
-- ;
def "ConnectedComponentConstants" $ enum [
"component",
"edges",
"propertyName"],
-- pageRankConstants
-- : pageRankConstants_edges
-- | pageRankConstants_times
-- | pageRankConstants_propertyName
-- ;
def "PageRankConstants" $ enum [
"edges",
"times",
"propertyName"],
-- peerPressureConstants
-- : peerPressureConstants_edges
-- | peerPressureConstants_times
-- | peerPressureConstants_propertyName
-- ;
def "PeerPressureConstants" $ enum [
"edges",
"times",
"propertyName"],
-- shortestPathConstants
-- : shortestPathConstants_target
-- | shortestPathConstants_edges
-- | shortestPathConstants_distance
-- | shortestPathConstants_maxDistance
-- | shortestPathConstants_includeEdges
-- ;
def "ShortestPathConstants" $ enum [
"target",
"edges",
"distance",
"maxDistance",
"includeEdges"],
-- withOptionsValues
-- : withOptionsConstants_tokens
-- | withOptionsConstants_none
-- | withOptionsConstants_ids
-- | withOptionsConstants_labels
-- | withOptionsConstants_keys
-- | withOptionsConstants_values
-- | withOptionsConstants_all
-- | withOptionsConstants_list
-- | withOptionsConstants_map
-- ;
def "WithOptionsValues" $ enum [
"tokens",
"none",
"ids",
"labels",
"keys",
"values",
"all",
"list",
"map"],
-- ioOptionsKeys
-- : ioOptionsConstants_reader
-- | ioOptionsConstants_writer
-- ;
def "IoOptionsKeys" $ enum [
"reader",
"writer"],
-- ioOptionsValues
-- : ioOptionsConstants_gryo
-- | ioOptionsConstants_graphson
-- | ioOptionsConstants_graphml
-- ;
def "IoOptionsValues" $ enum [
"gryo",
"graphson",
"graphml"],
-- connectedComponentConstants_component
-- : connectedComponentStringConstant DOT 'component'
-- ;
--
-- connectedComponentConstants_edges
-- : connectedComponentStringConstant DOT EDGES
-- ;
--
-- connectedComponentConstants_propertyName
-- : connectedComponentStringConstant DOT 'propertyName'
-- ;
--
-- pageRankConstants_edges
-- : pageRankStringConstant DOT EDGES
-- ;
--
-- pageRankConstants_times
-- : pageRankStringConstant DOT 'times'
-- ;
--
-- pageRankConstants_propertyName
-- : pageRankStringConstant DOT 'propertyName'
-- ;
--
-- peerPressureConstants_edges
-- : peerPressureStringConstant DOT EDGES
-- ;
--
-- peerPressureConstants_times
-- : peerPressureStringConstant DOT 'times'
-- ;
--
-- peerPressureConstants_propertyName
-- : peerPressureStringConstant DOT 'propertyName'
-- ;
--
-- shortestPathConstants_target
-- : shortestPathStringConstant DOT 'target'
-- ;
--
-- shortestPathConstants_edges
-- : shortestPathStringConstant DOT EDGES
-- ;
--
-- shortestPathConstants_distance
-- : shortestPathStringConstant DOT 'distance'
-- ;
--
-- shortestPathConstants_maxDistance
-- : shortestPathStringConstant DOT 'maxDistance'
-- ;
--
-- shortestPathConstants_includeEdges
-- : shortestPathStringConstant DOT 'includeEdges'
-- ;
--
-- withOptionsConstants_tokens
-- : withOptionsStringConstant DOT 'tokens'
-- ;
--
-- withOptionsConstants_none
-- : withOptionsStringConstant DOT 'none'
-- ;
--
-- withOptionsConstants_ids
-- : withOptionsStringConstant DOT 'ids'
-- ;
--
-- withOptionsConstants_labels
-- : withOptionsStringConstant DOT 'labels'
-- ;
--
-- withOptionsConstants_keys
-- : withOptionsStringConstant DOT 'keys'
-- ;
--
-- withOptionsConstants_values
-- : withOptionsStringConstant DOT 'values'
-- ;
--
-- withOptionsConstants_all
-- : withOptionsStringConstant DOT 'all'
-- ;
--
-- withOptionsConstants_indexer
-- : withOptionsStringConstant DOT 'indexer'
-- ;
--
-- withOptionsConstants_list
-- : withOptionsStringConstant DOT 'list'
-- ;
--
-- withOptionsConstants_map
-- : withOptionsStringConstant DOT 'map'
-- ;
--
-- ioOptionsConstants_reader
-- : ioOptionsStringConstant DOT 'reader'
-- ;
--
-- ioOptionsConstants_writer
-- : ioOptionsStringConstant DOT 'writer'
-- ;
--
-- ioOptionsConstants_gryo
-- : ioOptionsStringConstant DOT 'gryo'
-- ;
--
-- ioOptionsConstants_graphson
-- : ioOptionsStringConstant DOT 'graphson'
-- ;
--
-- ioOptionsConstants_graphml
-- : ioOptionsStringConstant DOT 'graphml'
-- ;
--
-- connectedComponentStringConstant
-- : 'ConnectedComponent'
-- ;
--
-- pageRankStringConstant
-- : 'PageRank'
-- ;
--
-- peerPressureStringConstant
-- : 'PeerPressure'
-- ;
--
-- shortestPathStringConstant
-- : 'ShortestPath'
-- ;
--
-- withOptionsStringConstant
-- : 'WithOptions'
-- ;
--
-- ioOptionsStringConstant
-- : 'IO'
-- ;
--
-- booleanArgument
-- : booleanLiteral
-- | variable
-- ;
defArgument "BooleanArgument" booleanLiteral,
-- integerArgument
-- : integerLiteral
-- | variable
-- ;
defArgument "IntegerArgument" integerLiteral,
--
-- floatArgument
-- : floatLiteral
-- | variable
-- ;
defArgument "FloatArgument" floatLiteral,
-- stringArgument
-- : stringLiteral
-- | variable
-- ;
defArgument "StringArgument" stringLiteral,
-- stringNullableArgument
-- : stringNullableLiteral
-- | variable
-- ;
defArgument "StringNullableArgument" stringNullableLiteral,
-- dateArgument
-- : dateLiteral
-- | variable
-- ;
defArgument "DateArgument" dateLiteral,
-- genericLiteralArgument
-- : genericLiteral
-- | variable
-- ;
defArgument "GenericLiteralArgument" genericLiteral,
-- genericLiteralListArgument
-- : genericLiteralList
-- | variable
-- ;
defArgument "GenericLiteralListArgument" genericLiteralList,
-- genericLiteralMapArgument
-- : genericLiteralMap
-- | variable
-- ;
defArgument "GenericLiteralMapArgument" genericLiteralMap,
-- genericLiteralMapNullableArgument
-- : genericLiteralMap
-- | nullLiteral
-- | variable
-- ;
defArgument "GenericLiteralMapNullableArgument" (optional genericLiteralMap),
-- structureVertexArgument
-- : structureVertex
-- | variable
-- ;
defArgument "StructureVertexArgument" structureVertex,
-- traversalCardinalityArgument
-- : traversalCardinality
-- | variable
-- ;
defArgument "TraversalCardinalityArgument" traversalCardinality,
-- traversalColumnArgument
-- : traversalColumn
-- | variable
-- ;
defArgument "TraversalColumnArgument" traversalColumn,
-- traversalDirectionArgument
-- : traversalDirection
-- | variable
-- ;
defArgument "TraversalDirectionArgument" traversalDirection,
-- traversalMergeArgument
-- : traversalMerge
-- | variable
-- ;
defArgument "TraversalMergeArgument" traversalMerge,
-- traversalOrderArgument
-- : traversalOrder
-- | variable
-- ;
defArgument "TraversalOrderArgument" traversalOrder,
-- traversalPopArgument
-- : traversalPop
-- | variable
-- ;
defArgument "TraversalPopArgument" traversalPop,
-- traversalSackMethodArgument
-- : traversalSackMethod
-- | variable
-- ;
defArgument "TraversalSackMethodArgument" traversalSackMethod,
-- traversalScopeArgument
-- : traversalScope
-- | variable
-- ;
defArgument "TraversalScopeArgument" traversalScope,
-- traversalTokenArgument
-- : traversalToken
-- | variable
-- ;
defArgument "TraversalTokenArgument" traversalToken,
-- traversalComparatorArgument
-- : traversalComparator
-- | variable
-- ;
defArgument "TraversalComparatorArgument" traversalComparator,
-- traversalFunctionArgument
-- : traversalFunction
-- | variable
-- ;
defArgument "TraversalFunctionArgument" traversalFunction,
-- traversalBiFunctionArgument
-- : traversalBiFunction
-- | variable
-- ;
defArgument "TraversalBiFunctionArgument" traversalOperator,
-- traversalDTArgument
-- : traversalDT
-- | variable
-- ;
defArgument "TraversalDTArgument" traversalDT,
-- traversalStrategyList
-- : traversalStrategyExpr?
-- ;
--
-- traversalStrategyExpr
-- : traversalStrategy (COMMA traversalStrategy)*
-- ;
--
-- classTypeList
-- : classTypeExpr?
-- ;
--
-- classTypeExpr
-- : classType (COMMA classType)*
-- ;
--
-- nestedTraversalList
-- : nestedTraversalExpr?
-- ;
-- Use: nestedTraversalList
-- nestedTraversalExpr
-- : nestedTraversal (COMMA nestedTraversal)*
-- ;
--
-- genericLiteralVarargs
-- : (genericLiteralArgument (COMMA genericLiteralArgument)*)?
-- ;
-- genericLiteralList
-- : genericLiteralExpr?
-- ;
def "GenericLiteralList" $ list genericLiteral,
-- genericLiteralExpr
-- : genericLiteral (COMMA genericLiteral)*
-- ;
--
-- genericLiteralRange
-- : integerLiteral DOT DOT integerLiteral
-- | stringLiteral DOT DOT stringLiteral
-- ;
def "GenericLiteralRange" $ union [
"integer">: gremlin "IntegerRange",
"string">: gremlin "StringRange"],
def "IntegerRange" $ record [
"left">: integerLiteral,
"right">: integerLiteral],
def "StringRange" $ record [
"left">: stringLiteral,
"right">: stringLiteral],
-- genericLiteralSet
-- : LBRACE (genericLiteral (COMMA genericLiteral)*)? RBRACE
-- ;
def "GenericLiteralSet" $ list genericLiteral,
-- genericLiteralCollection
-- : LBRACK (genericLiteral (COMMA genericLiteral)*)? RBRACK
-- ;
def "GenericLiteralCollection" $ list genericLiteral,
-- stringLiteralVarargs
-- : (stringNullableArgument (COMMA stringNullableArgument)*)?
-- ;
-- Use: stringLiteralVarargs
-- stringLiteralList
-- : stringLiteralExpr?
-- | LBRACK stringLiteralExpr? RBRACK
-- ;
--
-- stringLiteralExpr
-- : stringNullableLiteral (COMMA stringNullableLiteral)*
-- ;
--
-- genericLiteral
def "GenericLiteral" $ union [
-- : numericLiteral
"numeric">: numericLiteral,
-- | booleanLiteral
"boolean">: booleanLiteral,
-- | stringLiteral
"string">: stringLiteral,
-- | dateLiteral
"date">: dateLiteral,
-- | nullLiteral
"null">: unit,
-- | nanLiteral
"nan">: unit,
-- | infLiteral
"inf">: unit,
-- // Allow the generic literal to match specific gremlin tokens also
-- | traversalToken
"traversalToken">: traversalToken,
-- | traversalCardinality
"traversalCardinality">: traversalCardinality,
-- | traversalDirection
"traversalDirection">: traversalDirection,
-- | traversalMerge
"traversalMerge">: traversalMerge,
-- | traversalPick
"traversalPick">: traversalPick,
-- | traversalDT
"traversalDT">: traversalDT,
-- | structureVertex
"structureVertex">: structureVertex,
-- | genericLiteralSet
"genericLiteralSet">: genericLiteralSet,
-- | genericLiteralCollection
"genericLiteralCollection">: genericLiteralCollection,
-- | genericLiteralRange
"genericLiteralRange">: genericLiteralRange,
-- | nestedTraversal
"nestedTraversal">: nestedTraversal,
-- | terminatedTraversal
"terminatedTraversal">: terminatedTraversal,
-- | genericLiteralMap
"genericLiteralMap">: genericLiteralMap],
-- ;
-- genericLiteralMap
-- : LBRACK COLON RBRACK
-- | LBRACK mapEntry (COMMA mapEntry)* RBRACK
-- ;
def "GenericLiteralMap" $ list $ gremlin "MapEntry",
-- // allow builds of Map that sorta make sense in the Gremlin context.
-- mapEntry
-- : (LPAREN stringLiteral RPAREN | stringLiteral) COLON genericLiteral
-- | (LPAREN numericLiteral RPAREN | numericLiteral) COLON genericLiteral
-- | (LPAREN traversalToken RPAREN | traversalToken) COLON genericLiteral
-- | (LPAREN traversalDirection RPAREN | traversalDirection) COLON genericLiteral
-- | (LPAREN genericLiteralSet RPAREN | genericLiteralSet) COLON genericLiteral
-- | (LPAREN genericLiteralCollection RPAREN | genericLiteralCollection) COLON genericLiteral
-- | (LPAREN genericLiteralMap RPAREN | genericLiteralMap) COLON genericLiteral
-- | keyword COLON genericLiteral
-- | Identifier COLON genericLiteral
-- ;
def "MapEntry" $ union [
"key">: gremlin "MapKey",
"value">: genericLiteral],
def "MapKey" $ union [
"string">: stringLiteral,
"numeric">: numericLiteral,
"traversalToken">: traversalToken,
"traversalDirection">: traversalDirection,
"set">: genericLiteralSet,
"collection">: genericLiteralCollection,
"map">: genericLiteralMap,
"keyword">: keyword,
"identifier">: identifier],
-- stringLiteral
-- : EmptyStringLiteral
-- | NonEmptyStringLiteral
-- ;
-- Use: stringLiteral
-- stringNullableLiteral
-- : EmptyStringLiteral
-- | NonEmptyStringLiteral
-- | NullLiteral
-- ;
-- Use: stringNullableLiteral
-- integerLiteral
-- : IntegerLiteral
-- ;
def "IntegerLiteral" bigint,
--
-- floatLiteral
-- : FloatingPointLiteral
-- ;
def "FloatLiteral" bigfloat,
-- numericLiteral
-- : integerLiteral
-- | floatLiteral
-- ;
def "NumericLiteral" $ union [
"integer">: integerLiteral,
"float">: floatLiteral],
-- booleanLiteral
-- : BooleanLiteral
-- ;
-- Use: booleanLiteral
-- dateLiteral
-- : 'datetime' LPAREN stringArgument RPAREN
-- | 'datetime' LPAREN RPAREN
-- ;
def "DateLiteral" $ optional stringArgument,
-- nullLiteral
-- : NullLiteral
-- ;
--
-- nanLiteral
-- : NaNLiteral
-- ;
--
-- infLiteral
-- : SignedInfLiteral
-- ;
--
-- classType
-- : Identifier
-- ;
-- Use: classType
-- variable
-- : Identifier
-- ;
-- Use: variable
-- // need to complete this list to fix https://issues.apache.org/jira/browse/TINKERPOP-3047 but this much proves the
-- // approach works and allows the TraversalStrategy work to be complete.
-- keyword
-- : EDGES
-- | KEYS
-- | NEW
-- | VALUES
-- ;
def "Keyword" $ enum [
"edges",
"keys",
"new",
"values"],
-- /*********************************************
-- LEXER RULES
-- **********************************************/
--
-- // Lexer rules
-- // These rules are extracted from Java ANTLRv4 Grammar.
-- // Source: https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4
--
-- // §3.9 Keywords
--
-- EDGES: 'edges';
-- KEYS: 'keys';
-- NEW : 'new';
-- VALUES: 'values';
--
-- // Integer Literals
--
-- IntegerLiteral
-- : Sign? DecimalIntegerLiteral
-- | Sign? HexIntegerLiteral
-- | Sign? OctalIntegerLiteral
-- ;
--
-- fragment
-- DecimalIntegerLiteral
-- : DecimalNumeral IntegerTypeSuffix?
-- ;
--
-- fragment
-- HexIntegerLiteral
-- : HexNumeral IntegerTypeSuffix?
-- ;
--
-- fragment
-- OctalIntegerLiteral
-- : OctalNumeral IntegerTypeSuffix?
-- ;
--
-- fragment
-- IntegerTypeSuffix
-- : [bBsSnNiIlL]
-- ;
--
-- fragment
-- DecimalNumeral
-- : '0'
-- | NonZeroDigit (Digits? | Underscores Digits)
-- ;
--
-- fragment
-- Digits
-- : Digit (DigitsAndUnderscores? Digit)?
-- ;
--
-- fragment
-- Digit
-- : '0'
-- | NonZeroDigit
-- ;
--
-- fragment
-- NonZeroDigit
-- : [1-9]
-- ;
--
-- fragment
-- DigitsAndUnderscores
-- : DigitOrUnderscore+
-- ;
--
-- fragment
-- DigitOrUnderscore
-- : Digit
-- | '_'
-- ;
--
-- fragment
-- Underscores
-- : '_'+
-- ;
--
-- fragment
-- HexNumeral
-- : '0' [xX] HexDigits
-- ;
--
-- fragment
-- HexDigits
-- : HexDigit (HexDigitsAndUnderscores? HexDigit)?
-- ;
--
-- fragment
-- HexDigit
-- : [0-9a-fA-F]
-- ;
--
-- fragment
-- HexDigitsAndUnderscores
-- : HexDigitOrUnderscore+
-- ;
--
-- fragment
-- HexDigitOrUnderscore
-- : HexDigit
-- | '_'
-- ;
--
-- fragment
-- OctalNumeral
-- : '0' Underscores? OctalDigits
-- ;
--
-- fragment
-- OctalDigits
-- : OctalDigit (OctalDigitsAndUnderscores? OctalDigit)?
-- ;
--
-- fragment
-- OctalDigit
-- : [0-7]
-- ;
--
-- fragment
-- OctalDigitsAndUnderscores
-- : OctalDigitOrUnderscore+
-- ;
--
-- fragment
-- OctalDigitOrUnderscore
-- : OctalDigit
-- | '_'
-- ;
--
-- // Floating-Point Literals
--
-- FloatingPointLiteral
-- : Sign? DecimalFloatingPointLiteral
-- ;
--
-- fragment
-- DecimalFloatingPointLiteral
-- : Digits ('.' Digits ExponentPart? | ExponentPart) FloatTypeSuffix?
-- | Digits FloatTypeSuffix
-- ;
--
-- fragment
-- ExponentPart
-- : ExponentIndicator SignedInteger
-- ;
--
-- fragment
-- ExponentIndicator
-- : [eE]
-- ;
--
-- fragment
-- SignedInteger
-- : Sign? Digits
-- ;
--
-- fragment
-- Sign
-- : [+-]
-- ;
--
-- fragment
-- FloatTypeSuffix
-- : [fFdDmM]
-- ;
--
-- // Boolean Literals
--
-- BooleanLiteral
-- : 'true'
-- | 'false'
-- ;
--
-- // Null Literal
--
-- NullLiteral
-- : 'null'
-- ;
--
-- // NaN Literal
--
-- NaNLiteral
-- : 'NaN'
-- ;
--
-- // Inf Literal
--
-- SignedInfLiteral
-- : Sign? InfLiteral
-- ;
--
-- InfLiteral
-- : 'Infinity'
-- ;
--
-- // String Literals
--
-- // String literal is customized since Java only allows double quoted strings where Groovy supports single quoted
-- // literals also. A side effect of this is ANTLR will not be able to parse single character string literals with
-- // single quoted so we instead remove char literal altogether and only have string literal in lexer tokens.
-- NonEmptyStringLiteral
-- : '"' DoubleQuotedStringCharacters '"'
-- | '\'' SingleQuotedStringCharacters '\''
-- ;
--
-- // We define NonEmptyStringLiteral and EmptyStringLiteral separately so that we can unambiguously handle empty queries
-- EmptyStringLiteral
-- : '""'
-- | '\'\''
-- ;
--
-- fragment
-- DoubleQuotedStringCharacters
-- : DoubleQuotedStringCharacter+
-- ;
--
-- fragment
-- DoubleQuotedStringCharacter
-- : ~('"' | '\\')
-- | JoinLineEscape
-- | EscapeSequence
-- ;
--
-- fragment
-- SingleQuotedStringCharacters
-- : SingleQuotedStringCharacter+
-- ;
--
-- fragment
-- SingleQuotedStringCharacter
-- : ~('\'' | '\\')
-- | JoinLineEscape
-- | EscapeSequence
-- ;
--
-- // Escape Sequences for Character and String Literals
-- fragment JoinLineEscape
-- : '\\' '\r'? '\n'
-- ;
--
-- fragment
-- EscapeSequence
-- : '\\' [btnfr"'\\]
-- | OctalEscape
-- | UnicodeEscape // This is not in the spec but prevents having to preprocess the input
-- ;
--
-- fragment
-- OctalEscape
-- : '\\' OctalDigit
-- | '\\' OctalDigit OctalDigit
-- | '\\' ZeroToThree OctalDigit OctalDigit
-- ;
--
-- fragment
-- ZeroToThree
-- : [0-3]
-- ;
--
-- // This is not in the spec but prevents having to preprocess the input
-- fragment
-- UnicodeEscape
-- : '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit
-- ;
--
-- // Separators
--
-- LPAREN : '(';
-- RPAREN : ')';
-- LBRACE : '{';
-- RBRACE : '}';
-- LBRACK : '[';
-- RBRACK : ']';
-- SEMI : ';';
-- COMMA : ',';
-- DOT : '.';
-- COLON : ':';
--
-- TRAVERSAL_ROOT: 'g';
-- ANON_TRAVERSAL_ROOT: '__';
--
-- // Trim whitespace and comments if present
--
-- WS : [ \t\r\n\u000C]+ -> skip
-- ;
--
-- LINE_COMMENT
-- : '//' ~[\r\n]* -> skip
-- ;
--
-- Identifier
-- : IdentifierStart IdentifierPart*
-- ;
def "Identifier" string]
-- // REFERENCE: https://github.com/antlr/grammars-v4/blob/master/java/java8/Java8Lexer.g4
-- fragment
-- IdentifierStart
-- : [\u0024]
-- | [\u0041-\u005A]
-- | [\u005F]
-- | [\u0061-\u007A]
-- | [\u00A2-\u00A5]
-- | [\u00AA]
-- | [\u00B5]
-- | [\u00BA]
-- | [\u00C0-\u00D6]
-- | [\u00D8-\u00F6]
-- | [\u00F8-\u02C1]
-- | [\u02C6-\u02D1]
-- | [\u02E0-\u02E4]
-- | [\u02EC]
-- | [\u02EE]
-- | [\u0370-\u0374]
-- | [\u0376-\u0377]
-- | [\u037A-\u037D]
-- | [\u037F]
-- | [\u0386]
-- | [\u0388-\u038A]
-- | [\u038C]
-- | [\u038E-\u03A1]
-- | [\u03A3-\u03F5]
-- | [\u03F7-\u0481]
-- | [\u048A-\u052F]
-- | [\u0531-\u0556]
-- | [\u0559]
-- | [\u0561-\u0587]
-- | [\u058F]
-- | [\u05D0-\u05EA]
-- | [\u05F0-\u05F2]
-- | [\u060B]
-- | [\u0620-\u064A]
-- | [\u066E-\u066F]
-- | [\u0671-\u06D3]
-- | [\u06D5]
-- | [\u06E5-\u06E6]
-- | [\u06EE-\u06EF]
-- | [\u06FA-\u06FC]
-- | [\u06FF]
-- | [\u0710]
-- | [\u0712-\u072F]
-- | [\u074D-\u07A5]
-- | [\u07B1]
-- | [\u07CA-\u07EA]
-- | [\u07F4-\u07F5]
-- | [\u07FA]
-- | [\u0800-\u0815]
-- | [\u081A]
-- | [\u0824]
-- | [\u0828]
-- | [\u0840-\u0858]
-- | [\u0860-\u086A]
-- | [\u08A0-\u08B4]
-- | [\u08B6-\u08BD]
-- | [\u0904-\u0939]
-- | [\u093D]
-- | [\u0950]
-- | [\u0958-\u0961]
-- | [\u0971-\u0980]
-- | [\u0985-\u098C]
-- | [\u098F-\u0990]
-- | [\u0993-\u09A8]
-- | [\u09AA-\u09B0]
-- | [\u09B2]
-- | [\u09B6-\u09B9]
-- | [\u09BD]
-- | [\u09CE]
-- | [\u09DC-\u09DD]
-- | [\u09DF-\u09E1]
-- | [\u09F0-\u09F3]
-- | [\u09FB-\u09FC]
-- | [\u0A05-\u0A0A]
-- | [\u0A0F-\u0A10]
-- | [\u0A13-\u0A28]
-- | [\u0A2A-\u0A30]
-- | [\u0A32-\u0A33]
-- | [\u0A35-\u0A36]
-- | [\u0A38-\u0A39]
-- | [\u0A59-\u0A5C]
-- | [\u0A5E]
-- | [\u0A72-\u0A74]
-- | [\u0A85-\u0A8D]
-- | [\u0A8F-\u0A91]
-- | [\u0A93-\u0AA8]
-- | [\u0AAA-\u0AB0]
-- | [\u0AB2-\u0AB3]
-- | [\u0AB5-\u0AB9]
-- | [\u0ABD]
-- | [\u0AD0]
-- | [\u0AE0-\u0AE1]
-- | [\u0AF1]
-- | [\u0AF9]
-- | [\u0B05-\u0B0C]
-- | [\u0B0F-\u0B10]
-- | [\u0B13-\u0B28]
-- | [\u0B2A-\u0B30]
-- | [\u0B32-\u0B33]
-- | [\u0B35-\u0B39]
-- | [\u0B3D]
-- | [\u0B5C-\u0B5D]
-- | [\u0B5F-\u0B61]
-- | [\u0B71]
-- | [\u0B83]
-- | [\u0B85-\u0B8A]
-- | [\u0B8E-\u0B90]
-- | [\u0B92-\u0B95]
-- | [\u0B99-\u0B9A]
-- | [\u0B9C]
-- | [\u0B9E-\u0B9F]
-- | [\u0BA3-\u0BA4]
-- | [\u0BA8-\u0BAA]
-- | [\u0BAE-\u0BB9]
-- | [\u0BD0]
-- | [\u0BF9]
-- | [\u0C05-\u0C0C]
-- | [\u0C0E-\u0C10]
-- | [\u0C12-\u0C28]
-- | [\u0C2A-\u0C39]
-- | [\u0C3D]
-- | [\u0C58-\u0C5A]
-- | [\u0C60-\u0C61]
-- | [\u0C80]
-- | [\u0C85-\u0C8C]
-- | [\u0C8E-\u0C90]
-- | [\u0C92-\u0CA8]
-- | [\u0CAA-\u0CB3]
-- | [\u0CB5-\u0CB9]
-- | [\u0CBD]
-- | [\u0CDE]
-- | [\u0CE0-\u0CE1]
-- | [\u0CF1-\u0CF2]
-- | [\u0D05-\u0D0C]
-- | [\u0D0E-\u0D10]
-- | [\u0D12-\u0D3A]
-- | [\u0D3D]
-- | [\u0D4E]
-- | [\u0D54-\u0D56]
-- | [\u0D5F-\u0D61]
-- | [\u0D7A-\u0D7F]
-- | [\u0D85-\u0D96]
-- | [\u0D9A-\u0DB1]
-- | [\u0DB3-\u0DBB]
-- | [\u0DBD]
-- | [\u0DC0-\u0DC6]
-- | [\u0E01-\u0E30]
-- | [\u0E32-\u0E33]
-- | [\u0E3F-\u0E46]
-- | [\u0E81-\u0E82]
-- | [\u0E84]
-- | [\u0E87-\u0E88]
-- | [\u0E8A]
-- | [\u0E8D]
-- | [\u0E94-\u0E97]
-- | [\u0E99-\u0E9F]
-- | [\u0EA1-\u0EA3]
-- | [\u0EA5]
-- | [\u0EA7]
-- | [\u0EAA-\u0EAB]
-- | [\u0EAD-\u0EB0]
-- | [\u0EB2-\u0EB3]
-- | [\u0EBD]
-- | [\u0EC0-\u0EC4]
-- | [\u0EC6]
-- | [\u0EDC-\u0EDF]
-- | [\u0F00]
-- | [\u0F40-\u0F47]
-- | [\u0F49-\u0F6C]
-- | [\u0F88-\u0F8C]
-- | [\u1000-\u102A]
-- | [\u103F]
-- | [\u1050-\u1055]
-- | [\u105A-\u105D]
-- | [\u1061]
-- | [\u1065-\u1066]
-- | [\u106E-\u1070]
-- | [\u1075-\u1081]
-- | [\u108E]
-- | [\u10A0-\u10C5]
-- | [\u10C7]
-- | [\u10CD]
-- | [\u10D0-\u10FA]
-- | [\u10FC-\u1248]
-- | [\u124A-\u124D]
-- | [\u1250-\u1256]
-- | [\u1258]
-- | [\u125A-\u125D]
-- | [\u1260-\u1288]
-- | [\u128A-\u128D]
-- | [\u1290-\u12B0]
-- | [\u12B2-\u12B5]
-- | [\u12B8-\u12BE]
-- | [\u12C0]
-- | [\u12C2-\u12C5]
-- | [\u12C8-\u12D6]
-- | [\u12D8-\u1310]
-- | [\u1312-\u1315]
-- | [\u1318-\u135A]
-- | [\u1380-\u138F]
-- | [\u13A0-\u13F5]
-- | [\u13F8-\u13FD]
-- | [\u1401-\u166C]
-- | [\u166F-\u167F]
-- | [\u1681-\u169A]
-- | [\u16A0-\u16EA]
-- | [\u16EE-\u16F8]
-- | [\u1700-\u170C]
-- | [\u170E-\u1711]
-- | [\u1720-\u1731]
-- | [\u1740-\u1751]
-- | [\u1760-\u176C]
-- | [\u176E-\u1770]
-- | [\u1780-\u17B3]
-- | [\u17D7]
-- | [\u17DB-\u17DC]
-- | [\u1820-\u1877]
-- | [\u1880-\u1884]
-- | [\u1887-\u18A8]
-- | [\u18AA]
-- | [\u18B0-\u18F5]
-- | [\u1900-\u191E]
-- | [\u1950-\u196D]
-- | [\u1970-\u1974]
-- | [\u1980-\u19AB]
-- | [\u19B0-\u19C9]
-- | [\u1A00-\u1A16]
-- | [\u1A20-\u1A54]
-- | [\u1AA7]
-- | [\u1B05-\u1B33]
-- | [\u1B45-\u1B4B]
-- | [\u1B83-\u1BA0]
-- | [\u1BAE-\u1BAF]
-- | [\u1BBA-\u1BE5]
-- | [\u1C00-\u1C23]
-- | [\u1C4D-\u1C4F]
-- | [\u1C5A-\u1C7D]
-- | [\u1C80-\u1C88]
-- | [\u1CE9-\u1CEC]
-- | [\u1CEE-\u1CF1]
-- | [\u1CF5-\u1CF6]
-- | [\u1D00-\u1DBF]
-- | [\u1E00-\u1F15]
-- | [\u1F18-\u1F1D]
-- | [\u1F20-\u1F45]
-- | [\u1F48-\u1F4D]
-- | [\u1F50-\u1F57]
-- | [\u1F59]
-- | [\u1F5B]
-- | [\u1F5D]
-- | [\u1F5F-\u1F7D]
-- | [\u1F80-\u1FB4]
-- | [\u1FB6-\u1FBC]
-- | [\u1FBE]
-- | [\u1FC2-\u1FC4]
-- | [\u1FC6-\u1FCC]
-- | [\u1FD0-\u1FD3]
-- | [\u1FD6-\u1FDB]
-- | [\u1FE0-\u1FEC]
-- | [\u1FF2-\u1FF4]
-- | [\u1FF6-\u1FFC]
-- | [\u203F-\u2040]
-- | [\u2054]
-- | [\u2071]
-- | [\u207F]
-- | [\u2090-\u209C]
-- | [\u20A0-\u20BF]
-- | [\u2102]
-- | [\u2107]
-- | [\u210A-\u2113]
-- | [\u2115]
-- | [\u2119-\u211D]
-- | [\u2124]
-- | [\u2126]
-- | [\u2128]
-- | [\u212A-\u212D]
-- | [\u212F-\u2139]
-- | [\u213C-\u213F]
-- | [\u2145-\u2149]
-- | [\u214E]
-- | [\u2160-\u2188]
-- | [\u2C00-\u2C2E]
-- | [\u2C30-\u2C5E]
-- | [\u2C60-\u2CE4]
-- | [\u2CEB-\u2CEE]
-- | [\u2CF2-\u2CF3]
-- | [\u2D00-\u2D25]
-- | [\u2D27]
-- | [\u2D2D]
-- | [\u2D30-\u2D67]
-- | [\u2D6F]
-- | [\u2D80-\u2D96]
-- | [\u2DA0-\u2DA6]
-- | [\u2DA8-\u2DAE]
-- | [\u2DB0-\u2DB6]
-- | [\u2DB8-\u2DBE]
-- | [\u2DC0-\u2DC6]
-- | [\u2DC8-\u2DCE]
-- | [\u2DD0-\u2DD6]
-- | [\u2DD8-\u2DDE]
-- | [\u2E2F]
-- | [\u3005-\u3007]
-- | [\u3021-\u3029]
-- | [\u3031-\u3035]
-- | [\u3038-\u303C]
-- | [\u3041-\u3096]
-- | [\u309D-\u309F]
-- | [\u30A1-\u30FA]
-- | [\u30FC-\u30FF]
-- | [\u3105-\u312E]
-- | [\u3131-\u318E]
-- | [\u31A0-\u31BA]
-- | [\u31F0-\u31FF]
-- | [\u3400-\u4DB5]
-- | [\u4E00-\u9FEA]
-- | [\uA000-\uA48C]
-- | [\uA4D0-\uA4FD]
-- | [\uA500-\uA60C]
-- | [\uA610-\uA61F]
-- | [\uA62A-\uA62B]
-- | [\uA640-\uA66E]
-- | [\uA67F-\uA69D]
-- | [\uA6A0-\uA6EF]
-- | [\uA717-\uA71F]
-- | [\uA722-\uA788]
-- | [\uA78B-\uA7AE]
-- | [\uA7B0-\uA7B7]
-- | [\uA7F7-\uA801]
-- | [\uA803-\uA805]
-- | [\uA807-\uA80A]
-- | [\uA80C-\uA822]
-- | [\uA838]
-- | [\uA840-\uA873]
-- | [\uA882-\uA8B3]
-- | [\uA8F2-\uA8F7]
-- | [\uA8FB]
-- | [\uA8FD]
-- | [\uA90A-\uA925]
-- | [\uA930-\uA946]
-- | [\uA960-\uA97C]
-- | [\uA984-\uA9B2]
-- | [\uA9CF]
-- | [\uA9E0-\uA9E4]
-- | [\uA9E6-\uA9EF]
-- | [\uA9FA-\uA9FE]
-- | [\uAA00-\uAA28]
-- | [\uAA40-\uAA42]
-- | [\uAA44-\uAA4B]
-- | [\uAA60-\uAA76]
-- | [\uAA7A]
-- | [\uAA7E-\uAAAF]
-- | [\uAAB1]
-- | [\uAAB5-\uAAB6]
-- | [\uAAB9-\uAABD]
-- | [\uAAC0]
-- | [\uAAC2]
-- | [\uAADB-\uAADD]
-- | [\uAAE0-\uAAEA]
-- | [\uAAF2-\uAAF4]
-- | [\uAB01-\uAB06]
-- | [\uAB09-\uAB0E]
-- | [\uAB11-\uAB16]
-- | [\uAB20-\uAB26]
-- | [\uAB28-\uAB2E]
-- | [\uAB30-\uAB5A]
-- | [\uAB5C-\uAB65]
-- | [\uAB70-\uABE2]
-- | [\uAC00-\uD7A3]
-- | [\uD7B0-\uD7C6]
-- | [\uD7CB-\uD7FB]
-- | [\uF900-\uFA6D]
-- | [\uFA70-\uFAD9]
-- | [\uFB00-\uFB06]
-- | [\uFB13-\uFB17]
-- | [\uFB1D]
-- | [\uFB1F-\uFB28]
-- | [\uFB2A-\uFB36]
-- | [\uFB38-\uFB3C]
-- | [\uFB3E]
-- | [\uFB40-\uFB41]
-- | [\uFB43-\uFB44]
-- | [\uFB46-\uFBB1]
-- | [\uFBD3-\uFD3D]
-- | [\uFD50-\uFD8F]
-- | [\uFD92-\uFDC7]
-- | [\uFDF0-\uFDFC]
-- | [\uFE33-\uFE34]
-- | [\uFE4D-\uFE4F]
-- | [\uFE69]
-- | [\uFE70-\uFE74]
-- | [\uFE76-\uFEFC]
-- | [\uFF04]
-- | [\uFF21-\uFF3A]
-- | [\uFF3F]
-- | [\uFF41-\uFF5A]
-- | [\uFF66-\uFFBE]
-- | [\uFFC2-\uFFC7]
-- | [\uFFCA-\uFFCF]
-- | [\uFFD2-\uFFD7]
-- | [\uFFDA-\uFFDC]
-- | [\uFFE0-\uFFE1]
-- | [\uFFE5-\uFFE6]
-- ;
--
-- fragment
-- IdentifierPart
-- : IdentifierStart
-- | [\u0030-\u0039]
-- | [\u007F-\u009F]
-- | [\u00AD]
-- | [\u0300-\u036F]
-- | [\u0483-\u0487]
-- | [\u0591-\u05BD]
-- | [\u05BF]
-- | [\u05C1-\u05C2]
-- | [\u05C4-\u05C5]
-- | [\u05C7]
-- | [\u0600-\u0605]
-- | [\u0610-\u061A]
-- | [\u061C]
-- | [\u064B-\u0669]
-- | [\u0670]
-- | [\u06D6-\u06DD]
-- | [\u06DF-\u06E4]
-- | [\u06E7-\u06E8]
-- | [\u06EA-\u06ED]
-- | [\u06F0-\u06F9]
-- | [\u070F]
-- | [\u0711]
-- | [\u0730-\u074A]
-- | [\u07A6-\u07B0]
-- | [\u07C0-\u07C9]
-- | [\u07EB-\u07F3]
-- | [\u0816-\u0819]
-- | [\u081B-\u0823]
-- | [\u0825-\u0827]
-- | [\u0829-\u082D]
-- | [\u0859-\u085B]
-- | [\u08D4-\u0903]
-- | [\u093A-\u093C]
-- | [\u093E-\u094F]
-- | [\u0951-\u0957]
-- | [\u0962-\u0963]
-- | [\u0966-\u096F]
-- | [\u0981-\u0983]
-- | [\u09BC]
-- | [\u09BE-\u09C4]
-- | [\u09C7-\u09C8]
-- | [\u09CB-\u09CD]
-- | [\u09D7]
-- | [\u09E2-\u09E3]
-- | [\u09E6-\u09EF]
-- | [\u0A01-\u0A03]
-- | [\u0A3C]
-- | [\u0A3E-\u0A42]
-- | [\u0A47-\u0A48]
-- | [\u0A4B-\u0A4D]
-- | [\u0A51]
-- | [\u0A66-\u0A71]
-- | [\u0A75]
-- | [\u0A81-\u0A83]
-- | [\u0ABC]
-- | [\u0ABE-\u0AC5]
-- | [\u0AC7-\u0AC9]
-- | [\u0ACB-\u0ACD]
-- | [\u0AE2-\u0AE3]
-- | [\u0AE6-\u0AEF]
-- | [\u0AFA-\u0AFF]
-- | [\u0B01-\u0B03]
-- | [\u0B3C]
-- | [\u0B3E-\u0B44]
-- | [\u0B47-\u0B48]
-- | [\u0B4B-\u0B4D]
-- | [\u0B56-\u0B57]
-- | [\u0B62-\u0B63]
-- | [\u0B66-\u0B6F]
-- | [\u0B82]
-- | [\u0BBE-\u0BC2]
-- | [\u0BC6-\u0BC8]
-- | [\u0BCA-\u0BCD]
-- | [\u0BD7]
-- | [\u0BE6-\u0BEF]
-- | [\u0C00-\u0C03]
-- | [\u0C3E-\u0C44]
-- | [\u0C46-\u0C48]
-- | [\u0C4A-\u0C4D]
-- | [\u0C55-\u0C56]
-- | [\u0C62-\u0C63]
-- | [\u0C66-\u0C6F]
-- | [\u0C81-\u0C83]
-- | [\u0CBC]
-- | [\u0CBE-\u0CC4]
-- | [\u0CC6-\u0CC8]
-- | [\u0CCA-\u0CCD]
-- | [\u0CD5-\u0CD6]
-- | [\u0CE2-\u0CE3]
-- | [\u0CE6-\u0CEF]
-- | [\u0D00-\u0D03]
-- | [\u0D3B-\u0D3C]
-- | [\u0D3E-\u0D44]
-- | [\u0D46-\u0D48]
-- | [\u0D4A-\u0D4D]
-- | [\u0D57]
-- | [\u0D62-\u0D63]
-- | [\u0D66-\u0D6F]
-- | [\u0D82-\u0D83]
-- | [\u0DCA]
-- | [\u0DCF-\u0DD4]
-- | [\u0DD6]
-- | [\u0DD8-\u0DDF]
-- | [\u0DE6-\u0DEF]
-- | [\u0DF2-\u0DF3]
-- | [\u0E31]
-- | [\u0E34-\u0E3A]
-- | [\u0E47-\u0E4E]
-- | [\u0E50-\u0E59]
-- | [\u0EB1]
-- | [\u0EB4-\u0EB9]
-- | [\u0EBB-\u0EBC]
-- | [\u0EC8-\u0ECD]
-- | [\u0ED0-\u0ED9]
-- | [\u0F18-\u0F19]
-- | [\u0F20-\u0F29]
-- | [\u0F35]
-- | [\u0F37]
-- | [\u0F39]
-- | [\u0F3E-\u0F3F]
-- | [\u0F71-\u0F84]
-- | [\u0F86-\u0F87]
-- | [\u0F8D-\u0F97]
-- | [\u0F99-\u0FBC]
-- | [\u0FC6]
-- | [\u102B-\u103E]
-- | [\u1040-\u1049]
-- | [\u1056-\u1059]
-- | [\u105E-\u1060]
-- | [\u1062-\u1064]
-- | [\u1067-\u106D]
-- | [\u1071-\u1074]
-- | [\u1082-\u108D]
-- | [\u108F-\u109D]
-- | [\u135D-\u135F]
-- | [\u1712-\u1714]
-- | [\u1732-\u1734]
-- | [\u1752-\u1753]
-- | [\u1772-\u1773]
-- | [\u17B4-\u17D3]
-- | [\u17DD]
-- | [\u17E0-\u17E9]
-- | [\u180B-\u180E]
-- | [\u1810-\u1819]
-- | [\u1885-\u1886]
-- | [\u18A9]
-- | [\u1920-\u192B]
-- | [\u1930-\u193B]
-- | [\u1946-\u194F]
-- | [\u19D0-\u19D9]
-- | [\u1A17-\u1A1B]
-- | [\u1A55-\u1A5E]
-- | [\u1A60-\u1A7C]
-- | [\u1A7F-\u1A89]
-- | [\u1A90-\u1A99]
-- | [\u1AB0-\u1ABD]
-- | [\u1B00-\u1B04]
-- | [\u1B34-\u1B44]
-- | [\u1B50-\u1B59]
-- | [\u1B6B-\u1B73]
-- | [\u1B80-\u1B82]
-- | [\u1BA1-\u1BAD]
-- | [\u1BB0-\u1BB9]
-- | [\u1BE6-\u1BF3]
-- | [\u1C24-\u1C37]
-- | [\u1C40-\u1C49]
-- | [\u1C50-\u1C59]
-- | [\u1CD0-\u1CD2]
-- | [\u1CD4-\u1CE8]
-- | [\u1CED]
-- | [\u1CF2-\u1CF4]
-- | [\u1CF7-\u1CF9]
-- | [\u1DC0-\u1DF9]
-- | [\u1DFB-\u1DFF]
-- | [\u200B-\u200F]
-- | [\u202A-\u202E]
-- | [\u2060-\u2064]
-- | [\u2066-\u206F]
-- | [\u20D0-\u20DC]
-- | [\u20E1]
-- | [\u20E5-\u20F0]
-- | [\u2CEF-\u2CF1]
-- | [\u2D7F]
-- | [\u2DE0-\u2DFF]
-- | [\u302A-\u302F]
-- | [\u3099-\u309A]
-- | [\uA620-\uA629]
-- | [\uA66F]
-- | [\uA674-\uA67D]
-- | [\uA69E-\uA69F]
-- | [\uA6F0-\uA6F1]
-- | [\uA802]
-- | [\uA806]
-- | [\uA80B]
-- | [\uA823-\uA827]
-- | [\uA880-\uA881]
-- | [\uA8B4-\uA8C5]
-- | [\uA8D0-\uA8D9]
-- | [\uA8E0-\uA8F1]
-- | [\uA900-\uA909]
-- | [\uA926-\uA92D]
-- | [\uA947-\uA953]
-- | [\uA980-\uA983]
-- | [\uA9B3-\uA9C0]
-- | [\uA9D0-\uA9D9]
-- | [\uA9E5]
-- | [\uA9F0-\uA9F9]
-- | [\uAA29-\uAA36]
-- | [\uAA43]
-- | [\uAA4C-\uAA4D]
-- | [\uAA50-\uAA59]
-- | [\uAA7B-\uAA7D]
-- | [\uAAB0]
-- | [\uAAB2-\uAAB4]
-- | [\uAAB7-\uAAB8]
-- | [\uAABE-\uAABF]
-- | [\uAAC1]
-- | [\uAAEB-\uAAEF]
-- | [\uAAF5-\uAAF6]
-- | [\uABE3-\uABEA]
-- | [\uABEC-\uABED]
-- | [\uABF0-\uABF9]
-- | [\uFB1E]
-- | [\uFE00-\uFE0F]
-- | [\uFE20-\uFE2F]
-- | [\uFEFF]
-- | [\uFF10-\uFF19]
-- | [\uFFF9-\uFFFB]
-- ;