+++ /dev/null
-// OpenAI assisted generation from the makefile .. a start on a gradle build file
-
-plugins {
- id 'java'
-}
-
-group 'com.example'
-version '1.0-SNAPSHOT'
-
-sourceCompatibility = 1.8
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- implementation 'org.antlr:antlr4:4.9.2' // Include the ANTLR runtime library
- testImplementation 'junit:junit:4.12' // Include JUnit for testing
-}
-
-// Define environment variables
-def javaHome = System.getenv('JAVA_HOME')
-def antlrJar = file(System.getenv('ANTLR_JAR'))
-
-// Define directories
-def antlrPrimaryDir = 'ANTLR'
-def antlrInDir = "${antlrPrimaryDir}"
-def antlrOutDir = 'javac/ANTLR'
-def antlrOutDirParent = 'javac'
-def tempDir = 'temporary'
-def executorDir = 'executor'
-def jvmOutDir = 'jvm'
-
-// Define program paths
-def programPrintRuleNameList = "${executorDir}/PrintRuleNameList"
-def programSyntaxTreeTest = "${executorDir}/SyntaxTree_Test"
-def programSyntaxTree20240412 = "${executorDir}/SyntaxTree_20240412"
-
-// Define grammar files
-def grammarFiles = fileTree(dir: antlrInDir, include: '**/*.g4')
-
-// Task to set up directories
-task setup {
- doLast {
- mkdir antlrInDir
- mkdir antlrOutDirParent
- mkdir 'javac'
- mkdir jvmOutDir
- mkdir executorDir
- mkdir 'test'
- mkdir 'deprecated'
- mkdir 'experiment'
- mkdir 'documentation'
- mkdir tempDir
- }
-}
-
-// Function to generate grammar tasks
-def generateGrammarTask(String grammarName) {
- task "generate${grammarName}Grammar" {
- inputs.file file("${antlrInDir}/${grammarName}.g4")
- outputs.dir antlrOutDir
-
- doLast {
- println "Generating grammar files for: ${grammarName}"
- exec {
- commandLine "${javaHome}/bin/java", '-jar', antlrJar, '-Dlanguage=Java', '-visitor', '-o', antlrOutDirParent, file("${antlrInDir}/${grammarName}.g4")
- }
- }
- }
-}
-
-// Generate grammar tasks for each grammar file
-grammarFiles.each { File file ->
- def grammarName = file.name.replace('.g4', '')
- generateGrammarTask(grammarName)
-}
-
-// Define source sets
-sourceSets {
- main {
- java {
- srcDirs = ['javac', antlrOutDir]
- }
- }
-}
-
-// Task to compile Java files
-task compileJava(type: JavaCompile) {
- source = sourceSets.main.java
- classpath = sourceSets.main.compileClasspath
- destinationDir = file(jvmOutDir)
-}
-
-// Task to build JAR file
-task buildJar(type: Jar) {
- from compileJava.destinationDir
- archiveBaseName.set('project')
- destinationDirectory.set(file(jvmOutDir))
-}
-
-// Task to create an executable script
-task createScript {
- dependsOn buildJar
-
- doLast {
- def jarFile = buildJar.archiveFile.get().asFile
- def scriptFile = file("${executorDir}/${project.name}")
-
- scriptFile.text = """#!/usr/bin/env bash
-${javaHome}/bin/java -cp ${jarFile} ${project.name}
-"""
- scriptFile.setExecutable(true)
- }
-}
-
-// Task to clean generated files
-task clean(type: Delete) {
- delete antlrOutDir
- delete jvmOutDir
- delete tempDir
- delete programPrintRuleNameList
- delete programSyntaxTreeTest
- delete programSyntaxTree20240412
- delete fileTree(dir: executorDir, exclude: '.githolder')
-}
-
-// Task to print version information
-task printVersion {
- doLast {
- println "ANTLR Jar: ${antlrJar.name}"
- println "Java version: ${javaHome}/bin/java -version".execute().text
- println "Jar version: ${javaHome}/bin/jar --version".execute().text
- println "Gradle version: ${gradle.gradleVersion}"
- }
-}
-
-// Default tasks
-defaultTasks 'setup', 'generateGQLGrammar', 'compileJava', 'buildJar', 'createScript'
-
-// Set encoding for JavaCompile tasks
-tasks.withType(JavaCompile) {
- options.encoding = 'UTF-8'
-}
-
-// Task to build everything
-task all {
- dependsOn setup, 'generateGQLGrammar', compileJava, buildJar, createScript
-}
-
-// Task to generate grammar files
-task grammar {
- dependsOn setup, 'generateGQLGrammar'
-}
-
-// Task to compile Java files
-task java {
- dependsOn setup, compileJava
-}
-
-// Task to clean temporary files
-task cleanTemporary(type: Delete) {
- delete tempDir
-}
-
-// Task to clean all files
-task cleanAll {
- dependsOn clean
-}
-
-// Task to clean all files except program files
-task cleanAllMinus {
- doLast {
- delete tempDir
- delete antlrOutDir
- delete fileTree(dir: jvmOutDir, include: '**/*.class')
- }
-}
-
-// Task to clean program files
-task cleanProgram {
- doLast {
- delete programPrintRuleNameList
- delete programSyntaxTreeTest
- delete programSyntaxTree20240412
- }
-}
-
-// Task to clean class files
-task cleanClass {
- doLast {
- delete fileTree(dir: jvmOutDir, include: '**/*.class')
- }
-}
-
-// Task to clean grammar files
-task cleanGrammar {
- doLast {
- delete fileTree(dir: antlrOutDir, include: '**/*.java')
- }
-}
-
-// Task to clean a specific program
-task cleanProgramSpecific {
- doLast {
- def programName = project.findProperty('program') ?: ''
- if (programName) {
- delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
- delete fileTree(dir: executorDir, include: "${programName}")
- } else {
- println "Usage: gradle cleanProgramSpecific -Pprogram=<name>"
- }
- }
-}
-
-// Task to clean a specific program and everything else
-task cleanProgramPlusSpecific {
- doLast {
- def programName = project.findProperty('program') ?: ''
- if (programName) {
- delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
- delete fileTree(dir: executorDir, include: "${programName}")
- delete tempDir
- delete antlrOutDir
- } else {
- println "Usage: gradle cleanProgramPlusSpecific -Pprogram=<name>"
- }
- }
-}
-
-// Task to clean a specific program and everything else except program files
-task cleanProgramMinusSpecific {
- doLast {
- def programName = project.findProperty('program') ?: ''
- if (programName) {
- delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
- delete fileTree(dir: executorDir, include: "${programName}")
- delete tempDir
- delete fileTree(dir: jvmOutDir, include: '**/*.class')
- } else {
- println "Usage: gradle cleanProgramMinusSpecific -Pprogram=<name>"
- }
- }
-}
-
-// Task to clean a specific grammar
-task cleanGrammarSpecific {
- doLast {
- def grammarName = project.findProperty('grammar') ?: ''
- if (grammarName) {
- delete fileTree(dir: antlrOutDir, include: "${grammarName}*")
- } else {
- println "Usage: gradle cleanGrammarSpecific -Pgrammar=<name>"
- }
- }
-}
-
-// Define tasks for each program
-task buildPrintRuleNameList {
- dependsOn setup, 'generateGQLGrammar', compileJava
-}
-
-task buildSyntaxTreeTest {
- dependsOn setup, 'generateSyntaxTreeGrammar', compileJava
-}
-
-task buildSyntaxTree20240412 {
- dependsOn setup, 'generateSyntaxTree20240412Grammar', compileJava
-}
+++ /dev/null
-#!/usr/bin/env bash
-
-# Ensure the script is sourced
-if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
- echo "This script must be sourced, not executed. Exiting."
- return 1
-fi
-
-
-# Note these suffixes:
-# _FL = File List
-# _FPL = File Path List
-# _DL = Directory List
-
-# _PRIMARY = stuff not built
-# _IN things input to some program
-# _OUT things output by some program
-
-#--------------------------------------------------------------------------------
-# directories
-#
-
-# ANTLR directories
-export ANTLR_IN_PRIMARY_DIR="ANTLR"
-export ANTLR_OUT_DIR="javac/ANTLR"
-export ANTLR_OUT_DIR_PARENT="javac"
-
-# JAVA directories
-export JAVA_COMP_IN_PRIMARY_DIR="javac"
-export JAVA_COMP_IN_ANTLR_DIR="${ANTLR_OUT_DIR}"
-export JAVA_COMP_IN_DL="${JAVA_COMP_IN_PRIMARY_DIR}:${JAVA_COMP_IN_ANTLR_DIR}"
-export JAVA_COMP_OUT_DIR="jvm"
-
-# JVM
-export JVM_IN_DIR="${JAVA_COMP_OUT_DIR}"
-export CLASSPATH="${CLASSPATH}:${JVM_IN_DIR}"
-
-#--------------------------------------------------------------------------------
-# tools used
-#
-# set by project manager: JAVA_HOME, ANTLR_JAR, DEVELOPER_HOME
-#
-export JAVA_COMP="${JAVA_HOME}/bin/javac"
-export JAVA_INTERP="${JAVA_HOME}/bin/java"
-export JAVA_ARCHIVE="${JAVA_HOME}/bin/jar"
-export CLASSPATH="$ANTLR_JAR"
-
-#--------------------------------------------------------------------------------
-# to be built
-#
-export PROGRAM_PrintRuleNameList="executor/PrintRuleNameList"
-export PROGRAM_SyntaxTree_Test="executor/SyntaxTree_Test"
-export PROGRAM_SyntaxTree_20240412="executor/SyntaxTree_20240412"
-
-# an all programs list
-export PROGRAM_FPL="${PROGRAM_PrintRuleNameList} ${PROGRAM_SyntaxTree_Test} ${PROGRAM_SyntaxTree_20240412}"
-
-#--------------------------------------------------------------------------------
-# misc
-#
-export TEMP_DIR="$DEVELOPER_HOME"/temporary
-
-#--------------------------------------------------------------------------------
-# ANTLR files
-#
-
-export ANTLR_IN_FPL=$(ls ${ANTLR_IN_PRIMARY_DIR}/*.g4 2>/dev/null)
-export ANTLR_GRAMMAR_LIST=$(basename -s .g4 ${ANTLR_IN_FPL})
-if [ -z "${ANTLR_IN_FPL}" ]; then
- echo "No ANTLR input grammar files found"
-fi
-
-# This function accepts a grammar name, or a grammar name with an extension;
-# and sets a variable of the form ANTLR_OUT_<grammar>_FPL to a list of
-# files that ANTLR would produce for <grammar>.
-set_ANTLR_out_fpl_var() {
- local grammar=$1
- export ANTLR_OUT_${grammar}_FPL="${ANTLR_OUT_DIR}/${grammar}Lexer.java ${ANTLR_OUT_DIR}/${grammar}Parser.java ${ANTLR_OUT_DIR}/${grammar}BaseVisitor.java ${ANTLR_OUT_DIR}/${grammar}Visitor.java"
-}
-
-# Generate ANTLR_OUT_<grammar>_FPL for each grammar
-for grammar in ${ANTLR_GRAMMAR_LIST}; do
- set_ANTLR_out_fpl_var ${grammar}
-done
-
-# Combine all individual file lists into ANTLR_OUT_FPL
-ANTLR_OUT_FPL=""
-for grammar in ${ANTLR_GRAMMAR_LIST}; do
- ANTLR_OUT_FPL="${ANTLR_OUT_FPL} $(eval echo \$ANTLR_OUT_${grammar}_FPL)"
-done
-export ANTLR_OUT_FPL
-
-#--------------------------------------------------------------------------------
-# Java files
-#
-
-# JAVA input files
-export JAVA_COMP_IN_PRIMARY_FPL=$(ls ${JAVA_COMP_IN_PRIMARY_DIR}/*.java 2>/dev/null)
-export JAVA_COMP_IN_ANTLR_FPL=${ANTLR_OUT_FPL}
-export JAVA_COMP_IN_FPL="${JAVA_COMP_IN_PRIMARY_FPL} ${JAVA_COMP_IN_ANTLR_FPL}"
-
-# JAVA will produce these output files
-export JAVA_COMP_OUT_PRIMARY_FPL=$(echo ${JAVA_COMP_IN_PRIMARY_FPL} | sed "s|${JAVA_COMP_IN_PRIMARY_DIR}/|${JAVA_COMP_OUT_DIR}/|g" | sed "s|.java|.class|g")
-export JAVA_COMP_OUT_ANTLR_FPL=$(echo ${JAVA_COMP_IN_ANTLR_FPL} | sed "s|${JAVA_COMP_IN_ANTLR_DIR}/|${JAVA_COMP_OUT_DIR}/|g" | sed "s|.java|.class|g")
-export JAVA_COMP_OUT_FPL="${JAVA_COMP_OUT_PRIMARY_FPL} ${JAVA_COMP_OUT_ANTLR_FPL}"
-
-#--------------------------------------------------------------------------------
-# JAR files
-#
-
-# List of JAR files to be built
-JAR_OUT_FPL=""
-for program_path in ${PROGRAM_FPL}; do
- program_name=$(basename ${program_path})
- class_file="${JAVA_COMP_OUT_DIR}/${program_name}.class"
- # Check if the .class file is in JAVA_COMP_OUT_FPL
- for item in ${JAVA_COMP_OUT_FPL}; do
- # if so add it to the JAR_OUT_FPL
- if [[ "${item}" == "${class_file}" ]]; then
- jar_file="${JAVA_COMP_OUT_DIR}/${program_name}.jar"
- JAR_OUT_FPL="${JAR_OUT_FPL} ${jar_file}"
- break
- fi
- done
-done
-export JAR_OUT_FPL
-
+++ /dev/null
-# 1. clean:temporary - removes files from ./temporary
-# 2. General clean targets:
-# clean:all - removes all things make built, and thus can be replaced by running make again.
-# clean:all- (minus after the all) same as clean:all except for the program files (and their .jar if any)
-# clean:program - all program files, i.e. ./exector/<program> and ./jvm/<program.jar> for all programs.
-# clean:class - class files
-# clean:grammar - all generated grammar files
-
-# 2.
-# clean:program:<name>
-# similear to clean:program, but only for the named program
-
-# clean:program+:<name>
-# bascially clean:all but only for the named program
-
-# clean:program-:<mame>
-# baiscally clean:all- but only for the named program
-
-# 3. clean:grammar:<name>
-# siimilar to clean:grammar, but only for the named grammar
-
-# Function to clean a list of files
-# Accepts a list of files as an argument and deletes the files in the list
-# without complaining if a file is not found
-define clean_files
- echo "Cleaning files: $1";\
- for file in $1; do \
- if [ -e "$$file" ]; then \
- echo rm -f "$$file"; \
- rm -f "$$file"; \
- fi; \
- done
-endef
-
-
-# Function to clean the contents of a directory
-# Accepts a directory as an argument, checks that the argument is not empty,
-# ensures the directory exists, and then deletes the contents of the directory
-# (excluding a file called .githolder)
-define clean_directory
- if [ -z "$1" ]; then \
- echo "Error: Directory argument is empty"; \
- elif [ ! -d "$1" ]; then \
- echo "Error: Directory $1 does not exist"; \
- else \
- : echo "Cleaning directory: $1"; \
- find "$1" -mindepth 1 -maxdepth 1 ! -name '.githolder' -exec rm -rf {} +; \
- touch "$1/.githolder"; \
- fi
-endef
-
-# Function to handle individual cleaning
-# Accepts a single option and removes the appropriate files
-define do_clean
- echo "Cleaning files for option: $1";\
- if [ "$1" = "" ]; then \
- echo "Usage: make clean:< all[-] | program[+/-][:<name>] | grammar[:<name>] | class | temp[orary] >"; \
- elif [ "$1" = "temporary" -o "$1" = "temp" ]; then \
- $(call clean_directory,$(TEMP_DIR)); \
- elif [ "$1" = "all" ]; then \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- $(call clean_files,$(JAVA_COMP_OUT_FPL)); \
- $(call clean_files,$(PROGRAM_FPL)); \
- elif [ "$1" = "all-" ]; then \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \
- elif [ "$1" = "program" ]; then \
- $(call clean_files,$(PROGRAM_FPL)); \
- elif [ "$1" = "class" ]; then \
- $(call clean_files,$(JAVA_COMP_OUT_FPL)); \
- elif [ "$1" = "grammar" ]; then \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- elif [ "$1" = "program:"* ]; then \
- program_name=$${1#program:}; \
- $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
- elif [ "$1" = "program+:"* ]; then \
- program_name=$${1#program+:}; \
- $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- elif [ "$1" = "program-:"* ]; then \
- program_name=$${1#program-:}; \
- $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \
- elif [ "$1" = "grammar:"* ]; then \
- grammar_name=$${1#grammar:}; \
- $(call clean_files,$(ANTLR_OUT_DIR)/$${grammar_name}*); \
- else \
- echo "Unknown clean option: $1"; \
- fi
-endef
-
-# Default clean target
-.PHONY: clean
-clean:
- @echo "Usage: make clean:< all[-] | program[+/-][:<name>] | grammar[:<name>] | class | temp[orary] >"
-
-# Clean specific program or option
-# Calls the do_clean function with the pattern as an argument
-.PHONY: clean\:%
-clean\:%:
- @$(call do_clean,$*)
+++ /dev/null
-#================================================================================
-# Make targets
-#
-
-all: setup $(PROGRAM_FPL)
-
-SyntaxTree_Test: $(ANTLR_OUT_GQL_Test_FPL)
- make $(PROGRAM_SyntaxTree_Test)
-
-SyntaxTree_20240412: $(ANTLR_OUT_GQL_20240412_FPL)
- make $(PROGRAM_SyntaxTree_20240412)
-
-PrintRuleNameList: $(PROGRAM_PrintRuleNameList)
-
-grammar: setup $(ANTLR_OUT_FPL)
-
-# Compile all the .java files.
-java: setup $(JAVA_COMP_OUT_FPL)
-
-# Specific grammar targets. Run them like this:
-# > make <grammar_name>
-# e.g. > make GQL_test
-$(foreach grammar,$(ANTLR_GRAMMAR_LIST),$(eval $(grammar): $(value ANTLR_OUT_$(grammar)_FPL)))
-
-.PHONY: version
-version:
- $(info ANTLR_JAR is '$(notdir $(ANTLR_JAR))')
- @ $(JAVA_COMP) --version
- @ $(JAVA_ARCHIVE) --version
- @ make -v | head -n 1
- @ echo "makefile 0.2"
-
-.PHONY: setup
-# ANTLR automatically creates $(ANTLR_OUT_DIR)
-setup:
- mkdir -p $(ANTLR_IN_DIR) $(JAVA_COMP_IN_PRIMARY_DIR) $(JVM_IN_DIR)
- mkdir -p executor test deprecated experiment documentation temporary
-
-# Default clean target
-.PHONY: setup
-clean:
- @echo "Use the clean script from the executor directory instead of \`make clean\`"
- @executor/clean
-
-#useful for distinguishing initial make error messages and message generated by rules firing
-nothing:
- @:
-
-#================================================================================
-# recipes
-
-# Without this, GNU make deletes .jar files after making them.
-# Surely this is part of a spat between GNU and Sun Microsysitems, where they
-# now produce tools that delete each others files ;-)
-.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
-
-$(ANTLR_OUT_DIR)/%Lexer.java \
-$(ANTLR_OUT_DIR)/%Parser.java \
-$(ANTLR_OUT_DIR)/%BaseVisitor.java \
-$(ANTLR_OUT_DIR)/%Visitor.java: $(ANTLR_IN_DIR)/%.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-# Rule to build .class files from .java files
-$(JAVA_COMP_OUT_DIR)/%.class: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
- @echo "Compiling $<..."
- $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
- @echo "Created $@"
-
-# Rule to build .jar files from .class files
-$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_OUT_DIR)/%.class
- @echo "Building $*..."
- $(JAVA_ARCHIVE) cf $@ -C $(JAVA_COMP_OUT_DIR) $*.class
- @echo "Created $@"
-
-# Rule to create executable scripts from .jar files
-executor/%: $(JAVA_COMP_OUT_DIR)/%.jar
- @echo "Creating script for $*..."
- @echo "#!/usr/bin/env bash" > executor/$*
- @echo "$(JAVA_INTERP) -cp $< $*" \$$\@ >> executor/$*
- chmod +x executor/$*
- @echo "Created script executor/$*"
-
-
+++ /dev/null
-# Makefile version 0.2.6cp
-
-#================================================================================
-# recipes
-
-# Without this, GNU make deletes .jar files after making them.
-# Surely this is part of a spat between GNU and Sun Microsysitems, where they
-# now produce tools that delete each others files ;-)
-.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
-
-# Rule to generate grammar files from .g4 files
-$(ANTLR_OUT_DIR)/GQL_20240412Lexer.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_20240412.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/GQL_20240412Parser.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_20240412.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/GQL_20240412BaseVisitor.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_20240412.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/GQL_20240412Visitor.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_20240412.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/GQL_testLexer.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_test.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/GQL_testParser.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_test.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/GQL_testBaseVisitor.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_test.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/GQL_testVisitor.java: $(ANTLR_IN_PRIMARY_DIR)/GQL_test.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-# Rule to build .class files from .java files in both primary and ANTLR directories
-$(JAVA_COMP_OUT_DIR)/%.class: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java $(JAVA_COMP_IN_ANTLR_DIR)/%.java
- @echo "Compiling $<..."
- $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
- @echo "Created $@"
-
-# Rule to build .jar files from .class files
-$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_OUT_DIR)/%.class
- @echo "Building $*..."
- $(JAVA_ARCHIVE) cf $@ -C $(JAVA_COMP_OUT_DIR) $*.class
- @echo "Created $@"
-
-# Rule to create executable scripts from .jar files
-executor/%: $(JAVA_COMP_OUT_DIR)/%.jar
- @echo "Creating script for $*..."
- @echo "#!/usr/bin/env bash" > executor/$*
- @echo "$(JAVA_INTERP) -cp $< $*" \$$\@ >> executor/$*
- chmod +x executor/$*
- @echo "Created script executor/$*"
-
-# Default target
-all: setup $(PROGRAM_FPL)
-
-SyntaxTree_Test: $(ANTLR_OUT_GQL_Test_FPL)
- make $(PROGRAM_SyntaxTree_Test)
-
-SyntaxTree_20240412: $(ANTLR_OUT_DIR)/GQL_20240412Lexer.java $(ANTLR_OUT_DIR)/GQL_20240412Parser.java $(ANTLR_OUT_DIR)/GQL_20240412BaseVisitor.java $(ANTLR_OUT_DIR)/GQL_20240412Visitor.java
- make $(PROGRAM_SyntaxTree_20240412)
-
-PrintRuleNameList: $(PROGRAM_PrintRuleNameList)
-
-grammar: setup $(ANTLR_OUT_DIR)/GQL_20240412Lexer.java $(ANTLR_OUT_DIR)/GQL_20240412Parser.java $(ANTLR_OUT_DIR)/GQL_20240412BaseVisitor.java $(ANTLR_OUT_DIR)/GQL_20240412Visitor.java $(ANTLR_OUT_DIR)/GQL_testLexer.java $(ANTLR_OUT_DIR)/GQL_testParser.java $(ANTLR_OUT_DIR)/GQL_testBaseVisitor.java $(ANTLR_OUT_DIR)/GQL_testVisitor.java
-
-# Compile all the .java files.
-java: setup $(JAVA_COMP_OUT_FPL)
-
-.PHONY: version
-version:
- $(info ANTLR_JAR is '$(notdir $(ANTLR_JAR))')
- @ $(JAVA_COMP) --version
- @ $(JAVA_ARCHIVE) --version
- @ make -v | head -n 1
- @ echo "makefile 0.2.6cp"
-
-.PHONY: setup
-# ANTLR automatically creates $(ANTLR_OUT_DIR)
-setup:
- mkdir -p $(ANTLR_IN_PRIMARY_DIR) $(JAVA_COMP_IN_PRIMARY_DIR) $(JVM_IN_DIR)
- mkdir -p executor test deprecated experiment documentation temporary
-
-# Default clean target
-.PHONY: clean
-clean:
- @echo "Use the clean script from the executor directory instead of \`make clean\`"
- @executor/clean
-
-# Useful for distinguishing initial make error messages and message generated by rules firing
-nothing:
- @:
+++ /dev/null
-# GQL_to_Cypher makefile
-
-#================================================================================
-# Setup the environment
-#
-# Use `make variable` to print the value assigned to the variables in this section
-
-#----------------------------------------
-# some notes about setting variables. Save yourself some grief by reading this.
-#
-
-# An example of setting a make variable. Embedded and trailing spaces are
-# included in the value, there are 4 of each present in the value for
-# ISLAND. Leading spaces are not included. If there is a comment starting with
-# a hash, the trailing spaces leading up to it the hash will be included in the
-# value. A `:=` will evaluate immediately. A `=` will evaluate at point of variable
-# expansion.
-ISLAND := land island
-
-# Note these abbreviations:
-# FL = File List, out file lists are those we want make to create
-# DL = Directory List
-
-#----------------------------------------
-# programs used by this makefile
-#
-JAVA_COMP := $(JAVA_HOME)/bin/javac
-JAVA_INTERP := $(JAVA_HOME)/bin/java
-JAVA_ARCHIVE := $(JAVA_HOME)/bin/jar
-
-#----------------------------------------
-# programs being built by this makefile:
-#
-PRINT_RULE_NAME_LIS := PrintRuleNameList
-SYNTAX_TREE_TEST := SyntaxTree_Test
-SYNTAX_TREE_20240412 := SyntaxTree_20240412
-# put your version here
-
-PROGRAM_LIST := $(PRINT_RULE_NAME_LIST) $(SYNTAX_TREE_TEST) $(SYNTAX_TREE_20240412)
-
-#----------------------------------------
-# ANTLR environment
-
-# ANTLR directories
-ANTLR_IN_DIR := ANTLR
-ANTLR_OUT_DIR := javac/ANTLR
-ANTLR_OUT_DIR_PARENT := javac
-
-# ANTLR input files
-ANTLR_IN_FL := $(wildcard $(ANTLR_IN_DIR)/*.g4)
-ifneq ($(strip $(ANTLR_IN_FL)),)
- ($info empty ANTLR_IN_FL)
-endif
-
-# ANTLR will produce these output files.
-
-# This function accepts a grammar name, or a grammar name with an extension;
-# and sets a variable of the form ANTLR_OUT_<grammar>_FL to a list of
-# files that ANTLR would produce for <grammar>.
-define set_ANTLR_out_fl_var
- ANTLR_OUT_$(basename $(notdir $1))_FL := \
- $(ANTLR_OUT_DIR)/$(basename $(notdir $1))Lexer.java \
- $(ANTLR_OUT_DIR)/$(basename $(notdir $1))Parser.java \
- $(ANTLR_OUT_DIR)/$(basename $(notdir $1))BaseVisitor.java \
- $(ANTLR_OUT_DIR)/$(basename $(notdir $1))Visitor.java
-endef
-
-# Generate an ANTLR_OUT_<grammar>_FL and set it, for each grammar
-$(foreach file,$(ANTLR_IN_FL),$(eval $(call set_ANTLR_out_fl_var,$(file))))
-
-# Combine all individual file lists into ANTLR_OUT_FL
-ANTLR_OUT_FL := $(foreach file,$(ANTLR_IN_FL),$(value ANTLR_OUT_$(basename $(notdir $(file)))_FL))
-
-
-#----------------------------------------
-# Java environment
-
-# JAVA directories
-JAVA_COMP_IN_PRIMARY_DIR := javac
-JAVA_COMP_IN_ANTLR_DIR := $(ANTLR_OUT_DIR)
-JAVA_COMP_IN_DL := $(JAVA_COMP_IN_PRIMARY_DIR):$(JAVA_COMP_IN_ANTLR_DIR)
-JAVA_COMP_OUT_DIR := jvm
-
-# JAVA input files
-JAVA_COMP_IN_PRIMARY_FL := $(wildcard $(JAVA_COMP_IN_PRIMARY_DIR)/*.java)
-JAVA_COMP_IN_ANTLR_FL := $(ANTLR_OUT_FL)
-JAVA_COMP_IN_FL := $(JAVA_COMP_IN_PRIMARY_FL) $(JAVA_COMP_IN_ANTLR_FL)
-
-# JAVA will produce these output files
-JAVA_COMP_OUT_PRIMARY_FL := $(patsubst $(JAVA_COMP_IN_PRIMARY_DIR)/%.java,$(JVM_IN_DIR)/%.class,$(JAVA_COMP_IN_PRIMARY_FL))
-JAVA_COMP_OUT_ANTLR_FL := $(patsubst $(JAVA_COMP_IN_ANTLR_DIR)/%.java,$(JVM_IN_DIR)/%.class,$(JAVA_COMP_IN_ANTLR_FL))
-JAVA_COMP_OUT_FL := $(JAVA_COMP_OUT_PRIMARY_FL) $(JAVA_COMP_OUT_ANTLR_FL)
-
-#----------------------------------------
-# JVM environment
-
-JVM_IN_DIR := $(JAVA_COMP_OUT_DIR)
-CLASSPATH := $(CLASSPATH):$(JVM_IN_DIR)
-export CLASSPATH
-
-
-#================================================================================
-# Make targets
-#
-
-# The general make everything targets:
-all: setup $(PROGRAM_LIST)
-grammar: setup $(ANTLR_OUT_FL)
-
-# specific programs or program versions:
-PrintRuleNameList: PrintRuleNameList.jar
-SyntaxTree_Test: $(ANTLR_OUT_SyntaxTree_Test_FL) SyntaxTree_Test.jar
-SyntaxTree_20240412: $(ANTLR_OUT_SyntaxTree_20240412_FL) SyntaxTree_20240412.jar
-
-# Specific grammar targets. Run them like this:
-# > make <grammar_name>
-# e.g. > make GQL_test
-# Specific grammar targets. Run them like this:
-# > make <grammar_name>
-# e.g. > make GQL_test
-
-# Specific grammar targets. Run them like this:
-# > make <grammar_name>
-# e.g. > make GQL_test
-define generate_grammar_target
-grammar_name := $(basename $(notdir $1))
-$(info Generating target: $(grammar_name) with dependencies: $(value ANTLR_OUT_$(grammar_name)_FL))
-$(basename $(notdir $1)): $(value ANTLR_OUT_$(basename $(notdir $1))_FL)
-endef
-$(foreach file,$(ANTLR_IN_FL),$(eval $(call generate_grammar_target,$(file))))
-
-
-# Compile all the .java files.
-java: setup $(JAVA_COMP_OUT_FL)
-
-# print out all variables within quotes so that spaces can be detected
-.PHONY: variable
-variable:
- $(info ISLAND is '$(ISLAND)')
-
- $(info PRINT_RULE_NAME_LIST is '$(PRINT_RULE_NAME_LIST)')
- $(info SYNTAX_TREE_TEST is '$(SYNTAX_TREE_TEST)')
- $(info SYNTAX_TREE_20240412 is '$(SYNTAX_TREE_20240412)')
- $(info PROGRAM_LIST is '$(PROGRAM_LIST)')
-
- $(info JAVA_COMP is '$(JAVA_COMP)')
- $(info JAVA_INTERP is '$(JAVA_INTERP)')
- $(info JAVA_ARCHIVE is '$(JAVA_ARCHIVE)')
-
- $(info ANTLR_IN_DIR is '$(ANTLR_IN_DIR)')
- $(info ANTLR_OUT_DIR is '$(ANTLR_OUT_DIR)')
- $(info ANTLR_OUT_DIR_PARENT is '$(ANTLR_OUT_DIR_PARENT)')
- $(info ANTLR_IN_FL is '$(ANTLR_IN_FL)')
- $(foreach file,$(ANTLR_IN_FL),$(info ANTLR_OUT_$(basename $(notdir $(file)))_FL is '$(value ANTLR_OUT_$(basename $(notdir $(file)))_FL)'))
- $(info ANTLR_OUT_FL is '$(ANTLR_OUT_FL)')
-
- $(info JAVA_COMP_IN_PRIMARY_DIR is '$(JAVA_COMP_IN_PRIMARY_DIR)')
- $(info JAVA_COMP_IN_ANTLR_DIR is '$(JAVA_COMP_IN_ANTLR_DIR)')
- $(info JAVA_COMP_IN_DL is '$(JAVA_COMP_IN_DL)')
- $(info JAVA_COMP_OUT_DIR is '$(JAVA_COMP_OUT_DIR)')
-
- $(info JAVA_COMP_IN_PRIMARY_FL is '$(JAVA_COMP_IN_PRIMARY_FL)')
- $(info JAVA_COMP_IN_ANTLR_FL is '$(JAVA_COMP_IN_ANTLR_FL)')
- $(info JAVA_COMP_IN_FL is '$(JAVA_COMP_IN_FL)')
-
- $(info JAVA_COMP_OUT_PRIMARY_FL is '$(JAVA_COMP_OUT_PRIMARY_FL)')
- $(info JAVA_COMP_OUT_ANTLR_FL is '$(JAVA_COMP_OUT_ANTLR_FL)')
- $(info JAVA_COMP_OUT_FL is '$(JAVA_COMP_OUT_FL)')
-
- $(info JVM_IN_DIR is '$(JVM_IN_DIR)')
- $(info CLASSPATH is '$(CLASSPATH)')
- @:
-
-.PHONY: version
-version:
- $(info ANTLR_JAR is '$(notdir $(ANTLR_JAR))')
- @ $(JAVA_COMP) --version
- @ $(JAVA_ARCHIVE) --version
- @ make -v | head -n 1
- @ echo "makefile 0.1"
-
-.PHONY: setup
-setup:
- # ANTLR automatically creates $(ANTLR_OUT_DIR)
- mkdir -p $(ANTLR_IN_DIR) $(JAVA_COMP_IN_PRIMARY_DIR) $(JVM_IN_DIR)
- mkdir -p test deprecated experiment documentation temporary
-
-.PHONY: clean
-clean:
- @if [ -n "$(JVM_IN_DIR)" ]; then \
- echo "Cleaning $(JVM_IN_DIR)"; \
- rm -rf $(JVM_IN_DIR)/*; \
- else \
- echo "Warning: JVM_IN_DIR is not set"; \
- fi
- @if [ -n "$(ANTLR_OUT_DIR)" ]; then \
- echo "Cleaning $(ANTLR_OUT_DIR)"; \
- rm -rf $(ANTLR_OUT_DIR); \
- else \
- echo "Warning: ANTLR_OUT_DIR is not set"; \
- fi
- @if [ -d "temporary" ]; then \
- echo "Cleaning temporary directory"; \
- rm -rf temporary/*; \
- else \
- echo "Warning: temporary directory does not exist"; \
- fi
-
-#================================================================================
-# recipes
-
-# ANTLR a run of any of these will make all the files
-$(ANTLR_OUT_DIR)/%Lexer.java: $(ANTLR_IN_DIR)/%.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/%Parser.java: $(ANTLR_IN_DIR)/%.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/%BaseVisitor.java: $(ANTLR_IN_DIR)/%.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-$(ANTLR_OUT_DIR)/%Visitor.java: $(ANTLR_IN_DIR)/%.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-# Generic recipe for building .jar files and placing scripts in the executor directory
-$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
- @echo "Building $*..."
- $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
- $(JAVA_ARCHIVE) cf $@ -C $(JVM_IN_DIR) $*.class
- @echo "Creating script for $*..."
- echo "#!/usr/bin/env bash\n$(JAVA_INTERP) -cp $@ $*" > executor/$*.sh
- chmod +x executor/$*.sh
-
+++ /dev/null
-# GQL_to_Cypher makefile
-
-#================================================================================
-# Setup the environment
-#
-# Use `make variable` to print the value assigned to each variable in this section
-
-#----------------------------------------
-# some notes about setting variables. Save yourself some grief by reading this.
-#
-
-# Note these suffixes:
-# _FL = File List
-# _FPL = File Path List
-# _DL = Directory List
-
-# _PRIMARY means these are primary inputs, this makefile does not build them
-# _IN program inputs
-# _OUT expected program outputs
-
-# The following is an example of setting a variable. Use `make variable`
-# to prints its value, and note the embedded and trailing spaces.
-ISLAND := land island
-
-#----------------------------------------
-# programs used by this makefile
-#
-JAVA_COMP := $(JAVA_HOME)/bin/javac
-JAVA_INTERP := $(JAVA_HOME)/bin/java
-JAVA_ARCHIVE := $(JAVA_HOME)/bin/jar
-
-#----------------------------------------
-# programs being built by this makefile:
-#
-PROGRAM_PrintRuleNameList := executor/PrintRuleNameList
-PROGRAM_SyntaxTree_Test := executor/SyntaxTree_Test
-PROGRAM_SyntaxTree_20240412 := executor/SyntaxTree_20240412
-
-PROGRAM_FPL := $(PROGRAM_PrintRuleNameList) $(PROGRAM_SyntaxTree_Test) $(PROGRAM_SyntaxTree_20240412)
-
-#----------------------------------------
-# misc
-#
-TEMP_DIR := temporary
-
-#----------------------------------------
-# ANTLR environment
-# Add a `<grammar>.g4` file into the ANTLR_IN_DIR
-
-# ANTLR directories
-ANTLR_PRIMARY_DIR := ANTLR
-ANTLR_IN_DIR := $(ANTLR_PRIMARY_DIR)
-ANTLR_OUT_DIR := javac/ANTLR
-ANTLR_OUT_DIR_PARENT := javac
-
-
-# ANTLR input files
-ANTLR_IN_FPL := $(wildcard $(ANTLR_IN_DIR)/*.g4)
-ANTLR_GRAMMAR_LIST := $(basename $(notdir $(ANTLR_IN_FPL)))
-ifeq ($(strip $(ANTLR_IN_FPL)),)
- $(info No ANTLR input grammar files found)
-endif
-
-# ANTLR will produce these output files.
-
-# This function accepts a grammar name, or a grammar name with an extension;
-# and sets a variable of the form ANTLR_OUT_<grammar>_FPL to a list of
-# files that ANTLR would produce for <grammar>.
-define set_ANTLR_out_fpl_var
- ANTLR_OUT_$(basename $1)_FPL := \
- $(ANTLR_OUT_DIR)/$(basename $1)Lexer.java \
- $(ANTLR_OUT_DIR)/$(basename $1)Parser.java \
- $(ANTLR_OUT_DIR)/$(basename $1)BaseVisitor.java \
- $(ANTLR_OUT_DIR)/$(basename $1)Visitor.java
-endef
-
-# Generate ANTLR_OUT_<grammar>_FPL for each grammar
-$(foreach file,$(ANTLR_GRAMMAR_LIST),$(eval $(call set_ANTLR_out_fpl_var,$(file))))
-
-# Combine all individual file lists into ANTLR_OUT_FPL
-ANTLR_OUT_FPL := $(foreach file,$(ANTLR_GRAMMAR_LIST),$(value ANTLR_OUT_$(file)_FPL))
-
-#----------------------------------------
-# Java environment
-
-# JAVA directories
-JAVA_COMP_IN_PRIMARY_DIR := javac
-JAVA_COMP_IN_ANTLR_DIR := $(ANTLR_OUT_DIR)
-JAVA_COMP_IN_DL := $(JAVA_COMP_IN_PRIMARY_DIR):$(JAVA_COMP_IN_ANTLR_DIR)
-JAVA_COMP_OUT_DIR := jvm
-
-# JAVA input files
-JAVA_COMP_IN_PRIMARY_FPL := $(wildcard $(JAVA_COMP_IN_PRIMARY_DIR)/*.java)
-JAVA_COMP_IN_ANTLR_FPL := $(ANTLR_OUT_FPL)
-JAVA_COMP_IN_FPL := $(JAVA_COMP_IN_PRIMARY_FPL) $(JAVA_COMP_IN_ANTLR_FPL)
-
-# JAVA will produce these output files
-JAVA_COMP_OUT_PRIMARY_FPL := $(patsubst $(JAVA_COMP_IN_PRIMARY_DIR)/%.java,$(JAVA_COMP_OUT_DIR)/%.class,$(JAVA_COMP_IN_PRIMARY_FPL))
-JAVA_COMP_OUT_ANTLR_FPL := $(patsubst $(JAVA_COMP_IN_ANTLR_DIR)/%.java,$(JAVA_COMP_OUT_DIR)/%.class,$(JAVA_COMP_IN_ANTLR_FPL))
-JAVA_COMP_OUT_FPL := $(JAVA_COMP_OUT_PRIMARY_FPL) $(JAVA_COMP_OUT_ANTLR_FPL)
-
-#----------------------------------------
-# JVM environment
-
-JVM_IN_DIR := $(JAVA_COMP_OUT_DIR)
-CLASSPATH := $(CLASSPATH):$(JVM_IN_DIR)
-export CLASSPATH
-
-
-#================================================================================
-# Make targets
-#
-
-# The general make everything targets:
-all: setup $(PROGRAM_FPL)
-grammar: setup $(ANTLR_OUT_FPL)
-
-# specific programs or program versions:
-PrintRuleNameList: $(PrintRuleNameList)
-SyntaxTree_Test: $(ANTLR_OUT_SyntaxTree_Test_FPL) $(SyntaxTree_Test)
-SyntaxTree_20240412: $(ANTLR_OUT_SyntaxTree_20240412_FPL) $(SyntaxTree_20240412)
-
-# Specific grammar targets. Run them like this:
-# > make <grammar_name>
-# e.g. > make GQL_test
-$(foreach grammar,$(ANTLR_GRAMMAR_LIST),$(eval $(grammar): $(value ANTLR_OUT_$(grammar)_FPL)))
-
-# Compile all the .java files.
-java: setup $(JAVA_COMP_OUT_FPL)
-
-# prints out each variable within quotes so that spaces can be seen
-.PHONY: variable
-variable:
- $(info ISLAND is '$(ISLAND)')
-
- $(info PROGRAM_PrintRuleNameList is '$(PROGRAM_PrintRuleNameList)')
- $(info PROGRAM_SyntaxTree_Test is '$(PROGRAM_SyntaxTree_Test)')
- $(info PROGRAM_SyntaxTree_20240412 is '$(PROGRAM_SyntaxTree_20240412)')
- $(info PROGRAM_FPL is '$(PROGRAM_FPL)')
-
- $(info JAVA_COMP is '$(JAVA_COMP)')
- $(info JAVA_INTERP is '$(JAVA_INTERP)')
- $(info JAVA_ARCHIVE is '$(JAVA_ARCHIVE)')
-
- $(info TEMP_DIR is '$(TEMP_DIR)')
-
- $(info ANTLR_PRIMARY_DIR is '$(ANTLR_PRIMARY_DIR)')
- $(info ANTLR_IN_DIR is '$(ANTLR_IN_DIR)')
- $(info ANTLR_OUT_DIR is '$(ANTLR_OUT_DIR)')
- $(info ANTLR_OUT_DIR_PARENT is '$(ANTLR_OUT_DIR_PARENT)')
- $(info ANTLR_IN_FPL is '$(ANTLR_IN_FPL)')
- $(info ANTLR_GRAMMAR_LIST is '$(ANTLR_GRAMMAR_LIST)')
- $(foreach file,$(ANTLR_GRAMMAR_LIST),$(info ANTLR_OUT_$(file)_FPL is '$(value ANTLR_OUT_$(file)_FPL)'))
- $(info ANTLR_OUT_FPL is '$(ANTLR_OUT_FPL)')
-
- $(info JAVA_COMP_IN_PRIMARY_DIR is '$(JAVA_COMP_IN_PRIMARY_DIR)')
- $(info JAVA_COMP_IN_ANTLR_DIR is '$(JAVA_COMP_IN_ANTLR_DIR)')
- $(info JAVA_COMP_IN_DL is '$(JAVA_COMP_IN_DL)')
- $(info JAVA_COMP_OUT_DIR is '$(JAVA_COMP_OUT_DIR)')
-
- $(info JAVA_COMP_IN_PRIMARY_FPL is '$(JAVA_COMP_IN_PRIMARY_FPL)')
- $(info JAVA_COMP_IN_ANTLR_FPL is '$(JAVA_COMP_IN_ANTLR_FPL)')
- $(info JAVA_COMP_IN_FPL is '$(JAVA_COMP_IN_FPL)')
-
- $(info JAVA_COMP_OUT_PRIMARY_FPL is '$(JAVA_COMP_OUT_PRIMARY_FPL)')
- $(info JAVA_COMP_OUT_ANTLR_FPL is '$(JAVA_COMP_OUT_ANTLR_FPL)')
- $(info JAVA_COMP_OUT_FPL is '$(JAVA_COMP_OUT_FPL)')
-
- $(info JVM_IN_DIR is '$(JVM_IN_DIR)')
- $(info CLASSPATH is '$(CLASSPATH)')
- @:
-
-.PHONY: version
-version:
- $(info ANTLR_JAR is '$(notdir $(ANTLR_JAR))')
- @ $(JAVA_COMP) --version
- @ $(JAVA_ARCHIVE) --version
- @ make -v | head -n 1
- @ echo "makefile 0.2"
-
-.PHONY: setup
-setup:
- # ANTLR automatically creates $(ANTLR_OUT_DIR)
- mkdir -p $(ANTLR_IN_DIR) $(JAVA_COMP_IN_PRIMARY_DIR) $(JVM_IN_DIR)
- mkdir -p executor test deprecated experiment documentation temporary
-
-
-# 1. clean:temporary - removes files from ./temporary
-# 2. General clean targets:
-# clean:all - removes all things make built, and thus can be replaced by running make again.
-# clean:all- (minus after the all) same as clean:all except for the program files (and their .jar if any)
-# clean:program - all program files, i.e. ./exector/<program> and ./jvm/<program.jar> for all programs.
-# clean:class - class files
-# clean:grammar - all generated grammar files
-
-# 2.
-# clean:program:<name>
-# similear to clean:program, but only for the named program
-
-# clean:program+:<name>
-# bascially clean:all but only for the named program
-
-# clean:program-:<mame>
-# baiscally clean:all- but only for the named program
-
-# 3. clean:grammar:<name>
-# siimilar to clean:grammar, but only for the named grammar
-
-# Function to clean the contents of a directory
-# Accepts a directory as an argument, checks that the argument is not empty,
-# ensures the directory exists, and then deletes the contents of the directory
-# (excluding a file called .githolder)
-
-define clean_directory
- if [ -z "$1" ]; then \
- echo "Error: Directory argument is empty"; \
- elif [ ! -d "$1" ]; then \
- echo "Error: Directory $1 does not exist"; \
- else \
- echo "Cleaning directory: $1"; \
- find "$1" -mindepth 1 -maxdepth 1 ! -name '.githolder' -exec rm -rf {} +; \
- touch "$1/.githolder"; \
- fi
-endef
-
-# Function to clean a list of files
-# Accepts a list of files as an argument and deletes the files in the list
-# without complaining if a file is not found
-define clean_files
- @echo "Cleaning files: $1"
- for file in $1; do \
- if [ -e "$$file" ]; then \
- echo rm -f "$$file"; \
- rm -f "$$file"; \
- fi; \
- done
-endef
-
-# Function to handle individual cleaning
-# Accepts a single option and removes the appropriate files
-define do_clean
- echo "Cleaning files for option: $1"
- if [ "$1" = "" ]; then \
- echo "Usage: make clean:< all[-] | program[+/-][:<name>] | grammar[:<name>] | class | temp[orary] >"; \
- elif [ "$1" = "temporary" -o "$1" = "temp" ]; then \
- $(call clean_directory,$(TEMP_DIR)); \
- elif [ "$1" = "all" ]; then \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- $(call clean_files,$(JAVA_COMP_OUT_FPL)); \
- $(call clean_files,$(PROGRAM_FPL)); \
- elif [ "$1" = "all-" ]; then \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \
- elif [ "$1" = "program" ]; then \
- $(call clean_files,$(PROGRAM_FPL)); \
- elif [ "$1" = "class" ]; then \
- $(call clean_files,$(JAVA_COMP_OUT_FPL)); \
- elif [ "$1" = "grammar" ]; then \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- elif [ "$1" = "program:"* ]; then \
- program_name=$${1#program:}; \
- $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
- elif [ "$1" = "program+:"* ]; then \
- program_name=$${1#program+:}; \
- $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(ANTLR_OUT_FPL)); \
- elif [ "$1" = "program-:"* ]; then \
- program_name=$${1#program-:}; \
- $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
- $(call clean_directory,$(TEMP_DIR)); \
- $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \
- elif [ "$1" = "grammar:"* ]; then \
- grammar_name=$${1#grammar:}; \
- $(call clean_files,$(ANTLR_OUT_DIR)/$${grammar_name}*); \
- else \
- echo "Unknown clean option: $1"; \
- fi
-endef
-
-# Default clean target
-.PHONY: clean
-clean:
- @echo "Usage: make clean:< all[-] | program[+/-][:<name>] | grammar[:<name>] | class | temp[orary] >"
-
-# Clean specific program or option
-# Calls the do_clean function with the pattern as an argument
-.PHONY: clean\:%
-clean\:%:
- $(call do_clean,$*)
-
-#useful for distinguishing initial make error messages and message generated by rules firing
-nothing:
- @:
-
-
-#================================================================================
-# recipes
-
-
-# ANTLR a run of any of these will make all the files
-$(ANTLR_OUT_DIR)/%Lexer.java \
-$(ANTLR_OUT_DIR)/%Parser.java \
-$(ANTLR_OUT_DIR)/%BaseVisitor.java \
-$(ANTLR_OUT_DIR)/%Visitor.java: $(ANTLR_IN_DIR)/%.g4
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-# Generic recipe for building .jar files and placing scripts in the executor directory
-$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
- @echo "Building $*..."
- $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
- $(JAVA_ARCHIVE) cf $@ -C $(JVM_IN_DIR) $*.class
-
-executor/%: $(JAVA_COMP_OUT_DIR)/%.jar
- @echo "Creating script for $*..."
- echo "#!/usr/bin/env bash\n$(JAVA_INTERP) -cp $@ $*" > executor/$*
- chmod +x executor/$*
-
-
-# LocalWords: makefile
+++ /dev/null
-Extracted Rules:
-PATH
-MONTH
-RIGHT_ARROW
-RIGHT_BRACKET_TILDE
-CREATE
-GROUPS
-TRIM
-CLOSE
-UINT32
-AGGREGATES
-FLOAT128
-LOG10
-FLOOR
-CATALOG
-YEAR
-CONNECTING
-CURRENT_PROPERTY_GRAPH
-NOTHING
-PARTITION
-INT16
-REVERSE_SOLIDUS
-BINDINGS
-LEFT_ANGLE_BRACKET
-LEFT
-NODE
-LEFT_BRACKET
-SIZE
-BIGINT
-SUM
-WHERE
-AS
-AT
-MIN
-QUERY
-TILDE_LEFT_BRACKET
-LEFT_ARROW_TILDE
-LTRIM
-VARCHAR
-SOURCE
-THEN
-XOR
-BINDING
-ALL_DIFFERENT
-SAME
-ORDINALITY
-CALL
-ALTER
-SET
-INT32
-BYTE_LENGTH
-PATHS
-RIGHT_PAREN
-CONSTRAINT
-PRECISION
-ASC
-GROUP
-UPPER
-ABS
-DELETE
-SMALL
-SIMPLE_COMMENT_MINUS
-VARIABLE
-BY
-OFFSET
-OCTET_LENGTH
-SKIP_RESERVED_WORD
-ELEMENT_ID
-INTERVAL
-DURATION_BETWEEN
-PROCEDURE
-YIELD
-STDDEV_POP
-POWER
-DOUBLE_DOLLAR_SIGN
-COLLECT_LIST
-INT8
-DETACH
-OPEN
-PERCENT
-STRING
-VARBINARY
-SIMPLE
-INTEGER8
-TO
-BRACKET_RIGHT_ARROW
-FLOAT16
-UNION
-DURATION
-SLASH_MINUS
-HOME_PROPERTY_GRAPH
-LOCAL_TIMESTAMP
-TYPED
-LEFT_ARROW
-FLOAT32
-DOUBLE_PERIOD
-DESC
-INTEGER32
-INTEGER128
-OPTIONAL
-PRODUCT
-DESCENDING
-PROPERTY_EXISTS
-LABEL
-LEFT_BRACE
-CURRENT_TIME
-REPLACE
-LABELS
-INTEGER
-NUMBER
-PROJECT
-INTEGER256
-PROPERTY
-PERCENTILE_DISC
-FOR
-UNIQUE
-TRAILING
-BTRIM
-UINT64
-BOOLEAN
-INTEGER16
-AVG
-NOT
-UBIGINT
-CEILING
-LOWER
-LAST
-SINH
-PATH_LENGTH
-INSTANT
-SIN
-END
-RELATIONSHIP
-HAVING
-LIST
-TANH
-TEMPORAL
-QUOTE
-MULTISET_ALTERNATION_OPERATOR
-BINARY
-ASINp
-UINT8
-DROP
-INFINITY
-RETURN
-ELEMENTS
-LEFT_ARROW_BRACKET
-SIGNED
-LEFT_MINUS_RIGHT
-SCHEMA
-NEXT
-RADIANS
-NORMALIZE
-GQLSTATUS
-RENAME
-BIG
-SLASH_TILDE_RIGHT
-FLOAT256
-FILTER
-MOD
-EXISTS
-INT64
-FLOAT64
-CONCATENATION_OPERATOR
-TIME
-COLON
-INTERSECT
-NORMALIZED
-WITH
-CLONE
-SLASH_MINUS_RIGHT
-RIGHT_BRACKET
-CURRENT_ROLE
-GRANT
-RELATIONSHIPS
-PLUS_SIGN
-DATETIME
-BOOL
-DIRECTORY
-DESTINATION
-START
-CHAR_LENGTH
-CHARACTER_LENGTH
-ZONED
-UNDERSCORE
-PERCENTILE_CONT
-DOUBLE_QUOTE
-SQRT
-INT128
-FINISH
-NULLIF
-SESSION_USER
-TABLE
-STDDEV_SAMP
-WHEN
-AGGREGATE
-VERTEX
-EXCLAMATION_MARK
-LOCAL
-DIRECTED
-ELSE
-CEIL
-CURRENT_GRAPH
-IF
-TYPE
-RIGHT_DOUBLE_ARROW
-PARAMETER
-CAST
-LOCAL_TIME
-GRAPH
-AMPERSAND
-SLASH_TILDE
-TRAIL
-IN
-LOG
-DISTINCT
-HOME_SCHEMA
-INT256
-IS
-EXACT
-LEADING
-FUNCTION
-INTEGER64
-CASE
-NODETACH
-NFKC
-NFKD
-DOLLAR_SIGN
-WITHOUT
-COUNT
-NOT_EQUALS_OPERATOR
-MINUS_LEFT_BRACKET
-MAX
-UNSIGNED
-CHAR
-TRANSACTION
-SYSTEM_USER
-LEFT_PAREN
-WRITE
-ORDER
-COMMERCIAL_AT
-REMOVE
-RIGHT
-VALUES
-DOUBLE
-COMMA
-GRAVE_ACCENT
-ZONED_DATETIME
-MINUS_SLASH
-NUMERIC
-REVOKE
-COS
-CURRENT_SCHEMA
-USE
-COT
-ASTERISK
-CHARACTERISTICS
-COPY
-SESSION
-TILDE_SLASH
-FIRST
-UNDIRECTED
-SELECT
-RECORDS
-ELEMENT
-ASCENDING
-LABELED
-HOME_GRAPH
-LOCAL_DATETIME
-REPEATABLE
-DAY
-UINT
-SIMPLE_COMMENT_SOLIDUS
-BYTES
-TAN
-ALL
-CURRENT_USER
-LN
-ARRAY
-SUBSTRING
-ZONE
-RECORD
-DECIMAL
-ONLY
-NFC
-FROM
-RESET
-VALUE
-LEFT_ARROW_TILDE_BRACKET
-NFD
-RIGHT_BRACKET_MINUS
-ZONED_TIME
-COALESCE
-QUESTION_MARK
-TIMESTAMP
-ACOS
-MINUTE
-EDGE
-GREATER_THAN_OR_EQUALS_OPERATOR
-BOTH
-NULL
-UNIT
-LEFT_TILDE_SLASH
-VERTICAL_BAR
-DIFFERENT
-KEEP
-LEFT_MINUS_SLASH
-BRACKETED_COMMENT
-PARAMETERS
-EXISTING
-EXCEPT
-SOLIDUS
-READ
-DATE
-SHORTEST
-LIKE
-DATA
-DRYRUN
-AND
-PERIOD
-OTHERWISE
-REAL
-INSERT
-CURRENT_DATE
-ATAN
-NO
-FLOAT
-LESS_THAN_OR_EQUALS_OPERATOR
-RIGHT_ANGLE_BRACKET
-CURRENT_TIMESTAMP
-HOUR
-LIMIT
-UINT16
-ANY
-UINT256
-ABSTRACT
-INT
-ROLLBACK
-OF
-REFERENCE
-CARDINALITY
-EDGES
-TILDE_RIGHT_ARROW
-COSH
-NULLS
-RTRIM
-ON
-BRACKET_TILDE_RIGHT_ARROW
-WALK
-RIGHT_BRACE
-DEC
-OR
-COMMIT
-MINUS_SIGN
-UINT128
-USMALLINT
-DOUBLE_COLON
-EQUALS_OPERATOR
-DEGREES
-TEMP
-ACYCLIC
-SMALLINT
-LET
-SECOND
-TILDE
-EXP
-MATCH
-CLEAR
+++ /dev/null
-Seems to me, that creating a disjoint sub graph is identical to creating a new graph. Perhaps we can work with that. Why don't we create a master index of disjoint subgraphs in a header, then when a new graph is made we will add an entry in the index.
-ChatGPT
-Creating a master index of disjoint subgraphs and managing them within a single Neo4j database is a practical approach. By using labels or properties to differentiate subgraphs, you can effectively manage multiple logical graphs within a single physical graph.
-
- Here's a step-by-step approach to implement this:
-
- Step 1: Create the Master Index
- First, create a master index node that will store references to all disjoint subgraphs.
-
- cypher
-
- MERGE (index:GraphIndex {name: 'MasterIndex'})
- Step 2: Create a New Graph
- When creating a new graph, add an entry to the master index.
-
- cypher
-
- // Create a new graph and add an entry to the master index
- MERGE (index:GraphIndex {name: 'MasterIndex'})
- CREATE (graph:Graph {name: 'myNewGraph'})
- MERGE (index)-[:CONTAINS]->(graph)
-
- // Create nodes and relationships within the new graph
- CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Alice'})
- CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Bob'})
- Step 3: Querying Subgraphs
- To query a specific subgraph, use the label or properties associated with that subgraph.
-
- cypher
-
- MATCH (index:GraphIndex {name: 'MasterIndex'})-[:CONTAINS]->(graph:Graph {name: 'myNewGraph'})-[:HAS_NODE]->(person:Person:myNewGraph)
- RETURN person.name
- Step 4: Adding More Nodes and Relationships to a Subgraph
- To add more nodes and relationships to an existing subgraph, refer to the subgraph by its label or properties.
-
- cypher
-
- MATCH (graph:Graph {name: 'myNewGraph'})
- CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Charlie'})
- CREATE (person:Person:myNewGraph {name: 'Alice'})-[:KNOWS]->(person:Person:myNewGraph {name: 'Charlie'})
- Example: Full Workflow
- Creating a New Graph
- cypher
-
- MERGE (index:GraphIndex {name: 'MasterIndex'})
- CREATE (graph:Graph {name: 'myNewGraph'})
- MERGE (index)-[:CONTAINS]->(graph)
- CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Alice'})
- CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Bob'})
- Querying a Subgraph
- cypher
-
- MATCH (index:GraphIndex {name: 'MasterIndex'})-[:CONTAINS]->(graph:Graph {name: 'myNewGraph'})-[:HAS_NODE]->(person:Person:myNewGraph)
- RETURN person.name
- Adding to a Subgraph
- cypher
-
- MATCH (graph:Graph {name: 'myNewGraph'})
- CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Charlie'})
- MATCH (alice:Person:myNewGraph {name: 'Alice'})
- MATCH (charlie:Person:myNewGraph {name: 'Charlie'})
- CREATE (alice)-[:KNOWS]->(charlie)
+++ /dev/null
-Here's the list of rules found in the GQL_20240412.g4 file:
-
-transactionMode
-transactionAccessMode
-rollbackCommand
-commitCommand
-nestedProcedureSpecification
-procedureSpecification
-nestedDataModifyingProcedureSpecification
-nestedQuerySpecification
-procedureBody
-bindingVariableDefinitionBlock
-bindingVariableDefinition
-statementBlock
-statement
-nextStatement
-graphVariableDefinition
-optTypedGraphInitializer
-graphInitializer
-bindingTableVariableDefinition
-optTypedBindingTableInitializer
-bindingTableInitializer
-valueVariableDefinition
-optTypedValueInitializer
-valueInitializer
-graphExpression
-currentGraph
-bindingTableExpression
-nestedBindingTableQuerySpecification
-objectExpressionPrimary
-linearCatalogModifyingStatement
-simpleCatalogModifyingStatement
-primitiveCatalogModifyingStatement
-createSchemaStatement
-dropSchemaStatement
-createGraphStatement
-openGraphType
-ofGraphType
-graphTypeLikeGraph
-graphSource
-dropGraphStatement
-createGraphTypeStatement
-graphTypeSource
-copyOfGraphType
-dropGraphTypeStatement
-callCatalogModifyingProcedureStatement
-linearDataModifyingStatement
-focusedLinearDataModifyingStatement
-focusedLinearDataModifyingStatementBody
-focusedNestedDataModifyingProcedureSpecification
-ambientLinearDataModifyingStatement
-ambientLinearDataModifyingStatementBody
-simpleLinearDataAccessingStatement
-simpleDataModifyingStatement
-primitiveDataModifyingStatement
-insertStatement
-setStatement
-setItemList
-setItem
-setPropertyItem
-setAllPropertiesItem
-setLabelItem
-removeStatement
-removeItemList
-removeItem
-removePropertyItem
-removeLabelItem
-deleteStatement
-deleteItemList
-deleteItem
-callDataModifyingProcedureStatement
-compositeQueryStatement
-compositeQueryExpression
-queryConjunction
-setOperator
-compositeQueryPrimary
-linearQueryStatement
-focusedLinearQueryStatement
-focusedLinearQueryStatementBody
-focusedNestedQuerySpecification
-ambientLinearQueryStatement
-ambientLinearQueryStatementBody
-nestedLinearQuerySpecification
-simpleQuerySpecification
-simpleQueryPrimary
-callDataAccessingProcedureStatement
-ambientDataModifyingProcedureStatement
-ambientQuerySpecification
-ambientQueryPrimary
-simpleQuerySpecificationBody
-simpleQueryPrimaryExpression
-simpleQueryBodyExpression
-compoundQuerySpecification
-ambientLinearQuerySpecification
-simpleDataAccessingStatement
-ambientDataModifyingStatement
-ambientLinearDataModifyingSpecification
-simpleDataAccessingSpecification
-ambientDataModifyingStatementBody
-simpleDataModifyingSpecification
-ambientLinearDataModifyingStatementBody
-simpleLinearDataModifyingSpecification
-focusedLinearDataModifyingSpecification
-focusedDataModifyingSpecification
-focusedLinearDataModifyingStatementBodyExpression
-focusedLinearQuerySpecification
-simpleLinearQuerySpecification
-focusedLinearQuerySpecificationBody
-simpleLinearQuerySpecificationBody
-focusedLinearQuerySpecificationBodyExpression
-simpleLinearQuerySpecificationBodyExpression
-compoundQueryBody
-compoundQueryExpression
-compoundQueryExpressionPart
-queryPrimary
-queryExpression
-queryTerm
-query
-querySpecification
-queryExpressionBody
-simpleQueryExpression
-simpleQuerySpecificationBodyExpression
-simpleQuerySpecificationBodyExpressionPart
-compoundQuerySpecificationBodyExpression
-compoundQuerySpecificationBodyExpressionPart
-simpleQuerySpecificationBodyPart
-simpleQuerySpecificationBodyExpressionPart
-simpleQuerySpecificationBodyExpression
-queryPrimaryExpression
-queryExpressionPart
-queryExpressionBodyPart
-queryExpressionPrimary
-queryExpressionTerm
-queryExpressionPrimaryExpression
-queryExpressionPrimaryExpressionPart
-queryExpressionPrimaryExpressionBody
-queryExpressionPrimaryExpressionTerm
-queryExpressionPrimaryExpressionBodyPart
-queryExpressionPrimaryExpressionPrimary
-queryExpressionPrimaryExpressionTermPart
-queryExpressionPrimaryExpressionPrimaryPart
-simpleQueryExpressionPrimary
-simpleQueryExpressionPrimaryPart
-simpleQueryExpressionPrimaryBody
-simpleQueryExpressionPrimaryTerm
-simpleQueryExpressionPrimaryBodyPart
-simpleQueryExpressionPrimaryPrimary
-simpleQueryExpressionPrimaryPrimaryPart
-simpleQueryExpressionPrimaryTermPart
-simpleQueryExpressionPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyTermPart
-simpleQueryExpressionPrimaryBodyExpression
-simpleQueryExpressionPrimaryBodyExpressionPart
-simpleQueryExpressionPrimaryBodyExpressionBody
-simpleQueryExpressionPrimaryBodyExpressionTerm
-simpleQueryExpressionPrimaryBodyExpressionBodyPart
-simpleQueryExpressionPrimaryBodyExpressionTermPart
-simpleQueryExpressionPrimaryBodyExpressionPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
-simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimary ​​
-
-
-
-
-
-
-
+++ /dev/null
-Extracted Rules:
-PATH
-MONTH
-RIGHT_ARROW
-RIGHT_BRACKET_TILDE
-CREATE
-GROUPS
-TRIM
-CLOSE
-UINT32
-AGGREGATES
-FLOAT128
-LOG10
-FLOOR
-CATALOG
-YEAR
-CONNECTING
-CURRENT_PROPERTY_GRAPH
-NOTHING
-PARTITION
-INT16
-REVERSE_SOLIDUS
-BINDINGS
-LEFT_ANGLE_BRACKET
-LEFT
-NODE
-LEFT_BRACKET
-SIZE
-BIGINT
-SUM
-WHERE
-AS
-AT
-MIN
-QUERY
-TILDE_LEFT_BRACKET
-LEFT_ARROW_TILDE
-LTRIM
-VARCHAR
-SOURCE
-THEN
-XOR
-BINDING
-ALL_DIFFERENT
-SAME
-ORDINALITY
-CALL
-ALTER
-SET
-INT32
-BYTE_LENGTH
-PATHS
-RIGHT_PAREN
-CONSTRAINT
-PRECISION
-ASC
-GROUP
-UPPER
-ABS
-DELETE
-SMALL
-SIMPLE_COMMENT_MINUS
-VARIABLE
-BY
-OFFSET
-OCTET_LENGTH
-SKIP_RESERVED_WORD
-ELEMENT_ID
-INTERVAL
-DURATION_BETWEEN
-PROCEDURE
-YIELD
-STDDEV_POP
-POWER
-DOUBLE_DOLLAR_SIGN
-COLLECT_LIST
-INT8
-DETACH
-OPEN
-PERCENT
-STRING
-VARBINARY
-SIMPLE
-INTEGER8
-TO
-BRACKET_RIGHT_ARROW
-FLOAT16
-UNION
-DURATION
-SLASH_MINUS
-HOME_PROPERTY_GRAPH
-LOCAL_TIMESTAMP
-TYPED
-LEFT_ARROW
-FLOAT32
-DOUBLE_PERIOD
-DESC
-INTEGER32
-INTEGER128
-OPTIONAL
-PRODUCT
-DESCENDING
-PROPERTY_EXISTS
-LABEL
-LEFT_BRACE
-CURRENT_TIME
-REPLACE
-LABELS
-INTEGER
-NUMBER
-PROJECT
-INTEGER256
-PROPERTY
-PERCENTILE_DISC
-FOR
-UNIQUE
-TRAILING
-BTRIM
-UINT64
-BOOLEAN
-INTEGER16
-AVG
-NOT
-UBIGINT
-CEILING
-LOWER
-LAST
-SINH
-PATH_LENGTH
-INSTANT
-SIN
-END
-RELATIONSHIP
-HAVING
-LIST
-TANH
-TEMPORAL
-QUOTE
-MULTISET_ALTERNATION_OPERATOR
-BINARY
-ASIN
-UINT8
-DROP
-INFINITY
-RETURN
-ELEMENTS
-LEFT_ARROW_BRACKET
-SIGNED
-LEFT_MINUS_RIGHT
-SCHEMA
-NEXT
-RADIANS
-NORMALIZE
-GQLSTATUS
-RENAME
-BIG
-SLASH_TILDE_RIGHT
-FLOAT256
-FILTER
-MOD
-EXISTS
-INT64
-FLOAT64
-CONCATENATION_OPERATOR
-TIME
-COLON
-INTERSECT
-NORMALIZED
-WITH
-CLONE
-SLASH_MINUS_RIGHT
-RIGHT_BRACKET
-CURRENT_ROLE
-GRANT
-RELATIONSHIPS
-PLUS_SIGN
-DATETIME
-BOOL
-DIRECTORY
-DESTINATION
-START
-CHAR_LENGTH
-CHARACTER_LENGTH
-ZONED
-UNDERSCORE
-PERCENTILE_CONT
-DOUBLE_QUOTE
-SQRT
-INT128
-FINISH
-NULLIF
-SESSION_USER
-TABLE
-STDDEV_SAMP
-WHEN
-AGGREGATE
-VERTEX
-EXCLAMATION_MARK
-LOCAL
-DIRECTED
-ELSE
-CEIL
-CURRENT_GRAPH
-IF
-TYPE
-RIGHT_DOUBLE_ARROW
-PARAMETER
-CAST
-LOCAL_TIME
-GRAPH
-AMPERSAND
-SLASH_TILDE
-TRAIL
-IN
-LOG
-DISTINCT
-HOME_SCHEMA
-INT256
-IS
-EXACT
-LEADING
-FUNCTION
-INTEGER64
-CASE
-NODETACH
-NFKC
-NFKD
-DOLLAR_SIGN
-WITHOUT
-COUNT
-NOT_EQUALS_OPERATOR
-MINUS_LEFT_BRACKET
-MAX
-UNSIGNED
-CHAR
-TRANSACTION
-SYSTEM_USER
-LEFT_PAREN
-WRITE
-ORDER
-COMMERCIAL_AT
-REMOVE
-RIGHT
-VALUES
-DOUBLE
-COMMA
-GRAVE_ACCENT
-ZONED_DATETIME
-MINUS_SLASH
-NUMERIC
-REVOKE
-COS
-CURRENT_SCHEMA
-USE
-COT
-ASTERISK
-CHARACTERISTICS
-COPY
-SESSION
-TILDE_SLASH
-FIRST
-UNDIRECTED
-SELECT
-RECORDS
-ELEMENT
-ASCENDING
-LABELED
-HOME_GRAPH
-LOCAL_DATETIME
-REPEATABLE
-DAY
-UINT
-SIMPLE_COMMENT_SOLIDUS
-BYTES
-TAN
-ALL
-CURRENT_USER
-LN
-ARRAY
-SUBSTRING
-ZONE
-RECORD
-DECIMAL
-ONLY
-NFC
-FROM
-RESET
-VALUE
-LEFT_ARROW_TILDE_BRACKET
-NFD
-RIGHT_BRACKET_MINUS
-ZONED_TIME
-COALESCE
-QUESTION_MARK
-TIMESTAMP
-ACOS
-MINUTE
-EDGE
-GREATER_THAN_OR_EQUALS_OPERATOR
-BOTH
-NULL
-UNIT
-LEFT_TILDE_SLASH
-VERTICAL_BAR
-DIFFERENT
-KEEP
-LEFT_MINUS_SLASH
-BRACKETED_COMMENT
-PARAMETERS
-EXISTING
-EXCEPT
-SOLIDUS
-READ
-DATE
-SHORTEST
-LIKE
-DATA
-DRYRUN
-AND
-PERIOD
-OTHERWISE
-REAL
-INSERT
-CURRENT_DATE
-ATAN
-NO
-FLOAT
-LESS_THAN_OR_EQUALS_OPERATOR
-RIGHT_ANGLE_BRACKET
-CURRENT_TIMESTAMP
-HOUR
-LIMIT
-UINT16
-ANY
-UINT256
-ABSTRACT
-INT
-ROLLBACK
-OF
-REFERENCE
-CARDINALITY
-EDGES
-TILDE_RIGHT_ARROW
-COSH
-NULLS
-RTRIM
-ON
-BRACKET_TILDE_RIGHT_ARROW
-WALK
-RIGHT_BRACE
-DEC
-OR
-COMMIT
-MINUS_SIGN
-UINT128
-USMALLINT
-DOUBLE_COLON
-EQUALS_OPERATOR
-DEGREES
-TEMP
-ACYCLIC
-SMALLINT
-LET
-SECOND
-TILDE
-EXP
-MATCH
-CLEAR
+++ /dev/null
-
-#--------------------------------------------------------------------------------
-# Data Types
-# INTEGER16 is referenced in some rules. INT16 is referenced in others.
-#
-
-
-BIGINT
-BOOL
-BOOLEAN
-BYTE_STRING_LITERAL
-CHARACTERISTICS
-CHARACTER_LENGTH
-FLOAT256
-INT
-INT8
-INT16
-INT32
-INT64
-INT128
-INT256
-INT256
-INTEGER16
-INTEGER32
-SMALLINT
-UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
-
-booleanType
-booleanValueExpression
-byteStringType
-byteStringValueExpression
-decimalExactNumericType
-numericValueExpressionDividend
-signedBinaryExactNumericType
-trimCharacterOrByteString
-trimCharacterOrByteStringSource
-trimMultiCharacterCharacterString
-unsignedInteger
-verboseBinaryExactNumericType
-
+++ /dev/null
-<code>
-<h2>Data Types</h2>
-<ul>
- <li>signedBinaryExactNumericType</li>
- <li>BYTE_STRING_LITERAL</li>
- <li>decimalExactNumericType</li>
- <li>booleanType</li>
- <li>INT256</li>
- <li>FLOAT256</li>
- <li>DATETIME</li>
- <li>BOOLEAN</li>
- <li>VARCHAR</li>
- <li>UNSIGNED_INTEGER</li>
- <li>numericValueExpressionDividend</li>
-</ul>
-<h2>Identifiers and References</h2>
-<ul>
- <li>labelName</li>
- <li>bindingVariable</li>
- <li>nodeTypeLabelSet</li>
- <li>absoluteCatalogSchemaReference</li>
- <li>destinationNodeTypeAlias</li>
- <li>graphTypeReference</li>
-</ul>
-<h2>Modifiers and Qualifiers</h2>
-<ul>
- <li>DISTINCT</li>
- <li>setQuantifier</li>
- <li>simplifiedDefaultingRight</li>
- <li>WITH</li>
- <li>sessionSetSchemaClause</li>
- <li>sessionSetParameterClause</li>
- <li>fixedQuantifier</li>
-</ul>
-<h2>Functions</h2>
-<ul>
- <li>LOG10</li>
- <li>FLOOR</li>
- <li>characterOrByteStringFunction</li>
- <li>ceilingFunction</li>
- <li>trigonometricFunction</li>
- <li>durationFunction</li>
- <li>datetimeFunction</li>
- <li>generalSetFunction</li>
- <li>functionCall</li>
-</ul>
-<h2>Expressions and Operators</h2>
-<ul>
- <li>booleanValueExpression</li>
- <li>commonLogarithm</li>
- <li>comparisonPredicatePart2</li>
- <li>naturalLogarithm</li>
- <li>powerFunction</li>
- <li>SIN</li>
- <li>MINUS_LEFT_BRACKET</li>
- <li>UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX</li>
- <li>simplifiedOverrideRight</li>
-</ul>
-<h2>Commands and Statements</h2>
-<ul>
- <li>SELECT</li>
- <li>INSERT</li>
- <li>CREATE</li>
- <li>DROP</li>
- <li>ROLLBACK</li>
- <li>simpleMatchStatement</li>
- <li>sessionSetCommand</li>
- <li>matchStatement</li>
- <li>matchStatementBlock</li>
- <li>createGraphStatement</li>
-</ul>
-<h2>Patterns and Matching</h2>
-<ul>
- <li>simpleMatchStatement</li>
- <li>pathPattern</li>
- <li>elementPatternPredicate</li>
- <li>graphPatternYieldClause</li>
- <li>graphPatternBindingTable</li>
- <li>pathPrimary</li>
- <li>pathOrPaths</li>
- <li>simplifiedPathUnion</li>
-</ul>
-<h2>Structures and Schema</h2>
-<ul>
- <li>procedureSpecification</li>
- <li>compositeQueryPrimary</li>
- <li>procedureBody</li>
- <li>linearCatalogModifyingStatement</li>
- <li>graphInitializer</li>
- <li>schemaReference</li>
-</ul>
-<h2>Miscellaneous</h2>
-<ul>
- <li>LEFT_ARROW_TILDE</li>
- <li>SIMPLE_COMMENT_MINUS</li>
- <li>optionalMatchStatement</li>
- <li>UNIQUE</li>
- <li>optionalOperand</li>
- <li>simplifiedContents</li>
-</ul>
-</code>
+++ /dev/null
-#--------------------------------------------------------------------------------
-# terminal symbols in the GQL_20240420 grammar
-#
-
-# Literals
-NULL
-TRUE
-FALSE
-NUMBER
-BOOLEAN_LITERAL
-
-# Data Types
-BIGINT
-BOOL
-BOOLEAN
-BYTES
-BYTE_LENGTH
-BYTE_STRING_LITERAL
-CARDINALITY
-CHAR
-DATE
-DATETIME
-DAY
-DEC
-DECIMAL
-DOUBLE
-DURATION
-DURATION_BETWEEN
-ELEMENT
-ELEMENT_ID
-FLOAT
-FLOAT
-INSTANT
-INT
-INT128
-INT16
-INT256
-INT32
-INT64
-INT8
-INTEGER
-INTERVAL
-MAX
-MIN
-MINUTE
-MODULUS
-MONTH
-NUMERIC
-REAL
-SIZE
-SMALLINT
-TEMP
-TEMPORAL
-TIME
-UBIGINT
-UINT
-UINT128
-UINT16
-UINT256
-UINT32
-UINT64
-UINT8
-UNSIGNED_BINARY_INTEGER
-UNSIGNED_DECIMAL_INTEGER
-UNSIGNED_HEXADECIMAL_INTEGER
-UNSIGNED_OCTAL_INTEGER
-USMALLINT
-VALUE
-VALUES
-VARBINARY
-VARCHAR
-YEAR
-ZONED
-ZONED_DATETIME
-ZONED_TIME
-
-
-# Functions
-ABS
-ACOS
-AGGREGATE
-AGGREGATES
-ALL_DIFFERENT
-ASIN
-ATAN
-AVG
-BTRIM
-CAST
-CEIL
-CEILING
-CHARACTER_LENGTH
-CONCATENATION_OPERATOR
-COS
-COSH
-COT
-COUNT
-EXP
-FLOOR
-LOG
-LOG10
-LOWER
-LTRIM
-MOD
-OCTET_LENGTH
-POSITION
-POWER
-RADIANS
-RTRIM
-SIN
-SINH
-SQRT
-STDDEV_POP
-STDDEV_SAMP
-SUBSTRING
-SUM
-TAN
-TANH
-TRIM
-UPPER
-
-# Punctuation and Operators
-AMPERSAND
-ASTERISK
-BRACKETED_COMMENT
-BRACKET_RIGHT_ARROW
-BRACKET_TILDE_RIGHT_ARROW
-COLON
-COMMA
-COMMERCIAL_AT
-CONCATENATION_OPERATOR
-DOLLAR_SIGN
-DOUBLE_COLON
-DOUBLE_DOLLAR_SIGN
-DOUBLE_PERIOD
-DOUBLE_QUOTE
-DOUBLE_QUOTED_CHARACTER_SEQUENCE
-EQUALS_OPERATOR
-EXCLAMATION_MARK
-GREATER_THAN_OR_EQUALS_OPERATOR
-LEFT_ANGLE_BRACKET
-LEFT_ARROW
-LEFT_BRACE
-LEFT_BRACKET
-LEFT_MINUS_RIGHT
-LEFT_MINUS_SLASH
-LEFT_PAREN
-LEFT_TILDE_SLASH
-LESS_THAN_OR_EQUALS_OPERATOR
-MINUS_LEFT_BRACKET
-MINUS_SIGN
-PERIOD
-PLUS_SIGN
-REVERSE_SOLIDUS
-RIGHT_ANGLE_BRACKET
-RIGHT_ARROW
-RIGHT_BRACE
-RIGHT_BRACKET
-RIGHT_BRACKET_MINUS
-RIGHT_BRACKET_TILDE
-RIGHT_DOUBLE_ARROW
-RIGHT_PAREN
-SINGLE_QUOTED_CHARACTER_SEQUENCE
-SLASH_MINUS
-SLASH_MINUS_RIGHT
-SLASH_TILDE
-SLASH_TILDE_RIGHT
-SOLIDUS
-TILDE
-TILDE_LEFT_BRACKET
-TILDE_RIGHT_ARROW
-TILDE_SLASH
-UNDERSCORE
-VERTICAL_BAR
-
-# Keywords
-ABSTRACT
-ALL
-ALTER
-AND
-ANY
-ARRAY
-AS
-ASC
-ASCENDING
-AT
-BIG
-BINARY
-BINDING
-BINDINGS
-BOTH
-CALL
-CATALOG
-CLEAR
-CLONE
-CLOSE
-COMMIT
-CONSTRAINT
-CREATE
-CURRENT_PROPERTY_GRAPH
-CURRENT_SCHEMA
-DELETE
-DESC
-DESCENDING
-DETACH
-DIFFERENT
-DIRECTED
-DIRECTORY
-DISTINCT
-DROP
-DRYRUN
-ELEMENTS
-EXCEPT
-EXISTING
-EXISTS
-FALSE
-FILTER
-FINISH
-FIRST
-FROM
-FUNCTION
-GENERAL_PARAMETER_REFERENCE
-GRANT
-GROUP
-GROUPS
-HAVING
-HOME_GRAPH
-HOME_PROPERTY_GRAPH
-HOME_SCHEMA
-IN
-INSERT
-INTERSECT
-IS
-KEEP
-LABELED
-LAST
-LEADING
-LEFT
-LEFT_ARROW_BRACKET
-LEFT_ARROW_TILDE
-LIKE
-LIST
-MATCH
-NOT
-NOTHING
-NULL
-NULLIF
-OF
-ON
-ONLY
-OPEN
-OPTIONAL
-OR
-ORDER
-ORDINALITY
-OTHERWISE
-PARENT
-PARENTHESIZED
-PATH
-PATHS
-PRECISION
-PRIMARY
-PRIORITY
-PROCEDURE
-PRODUCT
-PROPERTIES
-PROPERTY
-PROPERTY_EXISTS
-QUANTIFIER
-REFERENCE
-REFERENCES
-REFLECT
-REGULAR
-REMOVE
-RENAME
-REPEATABLE
-REPLACE
-RESET
-RETURN
-REVOKE
-RIGHT
-ROLLBACK
-SAME
-SCHEMA
-SELECT
-SESSION
-SET
-SHORTEST
-SIGNED
-SIMPLE
-SIMPLE_COMMENT_MINUS
-SIMPLE_COMMENT_SOLIDUS
-SOURCE
-SP
-START
-SUBSTITUTED_PARAMETER_REFERENCE
-TABLE
-TO
-TRAIL
-TRAILING
-TRANSACTION
-TRUE
-TYPED
-UNDIRECTED
-UNION
-UNIQUE
-UNIT
-UNSIGNED
-USE
-USING
-VERTEX
-WALK
-WHERE
-WHITESPACE
-WITH
-WITHOUT
-WRITE
-XOR
-YIELD
-ZONE
-
-
-# Control Flow
-BREAK
-CASE
-CONTINUE
-DO
-ELSE
-END
-FOR
-IF
-IMPLIES
-LOOP
-RETURN
-THEN
-WHEN
-WHILE
-
-# Miscellaneous
-ACCENT_QUOTED_CHARACTER_SEQUENCE
-ACYCLIC
-CURRENT_DATE
-CURRENT_GRAPH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_USER
-EDGE
-EDGES
-GQLSTATUS
-GRAPH
-GRAVE_ACCENT
-LABEL
-LABELS
-NODE
-NODES
-RELATIONSHIP
-RELATIONSHIPS
-SESSION_USER
-SYSTEM_USER
-TYPE
-VARIABLE
+++ /dev/null
-ABS
-ABSTRACT
-ACCENT_QUOTED_CHARACTER_SEQUENCE
-ACOS
-ACYCLIC
-AGGREGATE
-AGGREGATES
-ALL
-ALL_DIFFERENT
-ALTER
-AMPERSAND
-AND
-ANY
-ARRAY
-AS
-ASC
-ASCENDING
-ASIN
-ASTERISK
-AT
-ATAN
-AVG
-BIG
-BIGINT
-BINARY
-BINDING
-BINDINGS
-BOOL
-BOOLEAN
-BOOLEAN_LITERAL
-BOTH
-BRACKETED_COMMENT
-BRACKET_RIGHT_ARROW
-BRACKET_TILDE_RIGHT_ARROW
-BTRIM
-BY
-BYTES
-BYTE_LENGTH
-BYTE_STRING_LITERAL
-CALL
-CARDINALITY
-CASE
-CAST
-CATALOG
-CEIL
-CEILING
-CHAR
-CHARACTERISTICS
-CHARACTER_LENGTH
-CHAR_LENGTH
-CLEAR
-CLONE
-CLOSE
-COALESCE
-COLLECT_LIST
-COLON
-COMMA
-COMMERCIAL_AT
-COMMIT
-CONCATENATION_OPERATOR
-CONNECTING
-CONSTRAINT
-COPY
-COS
-COSH
-COT
-COUNT
-CREATE
-CURRENT_DATE
-CURRENT_GRAPH
-CURRENT_PROPERTY_GRAPH
-CURRENT_ROLE
-CURRENT_SCHEMA
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_USER
-DATA
-DATE
-DATETIME
-DAY
-DEC
-DECIMAL
-DEGREES
-DELETE
-DESC
-DESCENDING
-DESTINATION
-DETACH
-DIFFERENT
-DIRECTED
-DIRECTORY
-DISTINCT
-DOLLAR_SIGN
-DOUBLE
-DOUBLE_COLON
-DOUBLE_DOLLAR_SIGN
-DOUBLE_PERIOD
-DOUBLE_QUOTE
-DOUBLE_QUOTED_CHARACTER_SEQUENCE
-DROP
-DRYRUN
-DURATION
-DURATION_BETWEEN
-EDGE
-EDGES
-ELEMENT
-ELEMENTS
-ELEMENT_ID
-ELSE
-END
-EQUALS_OPERATOR
-EXACT
-EXCEPT
-EXCLAMATION_MARK
-EXISTING
-EXISTS
-EXP
-FILTER
-FINISH
-FIRST
-FLOAT
-FLOOR
-FOR
-FROM
-FUNCTION
-GENERAL_PARAMETER_REFERENCE
-GQLSTATUS
-GRANT
-GRAPH
-GRAVE_ACCENT
-GREATER_THAN_OR_EQUALS_OPERATOR
-GROUP
-GROUPS
-HAVING
-HOME_GRAPH
-HOME_PROPERTY_GRAPH
-HOME_SCHEMA
-HOUR
-IF
-IMPLIES
-IN
-INFINITY
-INSERT
-INSTANT
-INT
-INTEGER
-INTERSECT
-INTERVAL
-IS
-KEEP
-LABEL
-LABELED
-LABELS
-LAST
-LEADING
-LEFT
-LEFT_ANGLE_BRACKET
-LEFT_ARROW
-LEFT_ARROW_BRACKET
-LEFT_ARROW_TILDE
-LEFT_BRACE
-LEFT_BRACKET
-LEFT_MINUS_RIGHT
-LEFT_MINUS_SLASH
-LEFT_PAREN
-LEFT_TILDE_SLASH
-LESS_THAN_OR_EQUALS_OPERATOR
-LIKE
-LIST
-LOG
-LOG10
-LOWER
-LTRIM
-MATCH
-MAX
-MIN
-MINUS_LEFT_BRACKET
-MINUS_SIGN
-MINUTE
-MOD
-MODULUS
-MONTH
-MULTISET_ALTERNATION_OPERATOR
-NFKC
-NFKD
-NODE
-NODETACH
-NORMALIZE
-NOT
-NOT_EQUALS_OPERATOR
-NOTHING
-NULL
-NULLIF
-NUMBER
-NUMERIC
-OCTET_LENGTH
-OF
-ON
-ONLY
-OPEN
-OPTIONAL
-OR
-ORDER
-ORDINALITY
-OTHERWISE
-PARENT
-PARENTHESIZED
-PATH
-PATHS
-PERCENT
-PERIOD
-PLUS_SIGN
-POWER
-PRECISION
-PRIMARY
-PRIORITY
-PROCEDURE
-PRODUCT
-PROPERTIES
-PROPERTY
-PROPERTY_EXISTS
-QUANTIFIER
-QUOTE
-RADIANS
-REAL
-REFERENCE
-REFERENCES
-REFLECT
-REGULAR
-REMOVE
-RENAME
-REPEATABLE
-REPLACE
-RESET
-RETURN
-REVERSE_SOLIDUS
-REVOKE
-RIGHT
-RIGHT_ANGLE_BRACKET
-RIGHT_ARROW
-RIGHT_BRACE
-RIGHT_BRACKET
-RIGHT_BRACKET_MINUS
-RIGHT_BRACKET_TILDE
-RIGHT_DOUBLE_ARROW
-RIGHT_PAREN
-ROLLBACK
-RTRIM
-SAME
-SCHEMA
-SECOND
-SELECT
-SESSION
-SESSION_USER
-SET
-SHORTEST
-SIGNED
-SIMPLE
-SIMPLE_COMMENT_MINUS
-SIMPLE_COMMENT_SOLIDUS
-SIN
-SINGLE_QUOTED_CHARACTER_SEQUENCE
-SINH
-SIZE
-SKIP_RESERVED_WORD
-SLASH_MINUS
-SLASH_MINUS_RIGHT
-SLASH_TILDE
-SLASH_TILDE_RIGHT
-SMALL
-SMALLINT
-SOLIDUS
-SOURCE
-SP
-SQRT
-START
-STDDEV_POP
-STDDEV_SAMP
-STRING
-SUBSTITUTED_PARAMETER_REFERENCE
-SUBSTRING
-SUM
-SYSTEM_USER
-TABLE
-TAN
-TANH
-TEMP
-TEMPORAL
-THEN
-TILDE
-TILDE_LEFT_BRACKET
-TILDE_RIGHT_ARROW
-TILDE_SLASH
-TIME
-TIMESTAMP
-TO
-TRAIL
-TRAILING
-TRANSACTION
-TRIM
-TYPE
-TYPED
-UBIGINT
-UINT
-UNDERSCORE
-UNDIRECTED
-UNION
-UNIQUE
-UNIT
-UNSIGNED
-UNSIGNED_BINARY_INTEGER
-UNSIGNED_DECIMAL_INTEGER
-UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX
-UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX
-UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX
-UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
-UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX
-UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX
-UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
-UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX
-UNSIGNED_HEXADECIMAL_INTEGER
-UNSIGNED_OCTAL_INTEGER
-UPPER
-USE
-USMALLINT
-VALUE
-VALUES
-VARBINARY
-VARCHAR
-VARIABLE
-VERTEX
-VERTICAL_BAR
-WALK
-WHEN
-WHERE
-WHITESPACE
-WITH
-WITHOUT
-WRITE
-XOR
-YEAR
-YIELD
-ZONE
-ZONED
-ZONED_DATETIME
-ZONED_TIME
--- /dev/null
+#================================================================================
+# Custom make targets
+#
+$(info project_MAKECMDGOALS: $(MAKECMDGOALS))
+
+all: $(EXECUTOR_IN_FPL)
+
+PrintRuleNameList: $(EXECUTOR_IN_DIR)/PrintRuleNameList
+
+
+#-----------------------------------------------
+# Arithmetic
+
+ANTLR_OUT_Arithmetic_FL := $(shell ANTLR_OUT_FL Arithmetic.g4 -visitor -no-listener -no-tokens)
+ANTLR_OUT_Arithmetic_FPL := $(addprefix $(ANTLR_OUT_DIR)/, $(ANTLR_OUT_Arithmetic_FL))
+Arithmetic_Echo: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Echo_PrintVisitor.java
+ @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+ echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+ exit 1; \
+ fi
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Echo
+
+# Arithmetic_Echo__Test: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Echo_PrintVisitor.java
+# @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+# echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+# exit 1; \
+# fi
+# $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Echo__Test
+
+# Arithmetic_Syntax: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Syntax_PrintVisitor.java
+# @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+# echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+# exit 1; \
+# fi
+# $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Syntax
+
+# Arithmetic_Syntax__Test: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Syntax_PrintVisitor.java
+# @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+# echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+# exit 1; \
+# fi
+# $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Syntax__Test
+
+#-----------------------------------------------
+# GQL_20240412
+
+ANTLR_OUT_GQL_20240412_FL := $(shell ANTLR_OUT_FL GQL_20240412.g4 -visitor -no-listener -no-tokens)
+ANTLR_OUT_GQL_20240412_FPL := $(addprefix $(ANTLR_OUT_DIR)/, $(ANTLR_OUT_GQL_20240412_FL))
+
+GQL_20240412_Syntax: $(ANTLR_OUT_GQL_20240412_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/GQL_20240412_Syntax_PrintVisitor.java
+ @if [ -z "$(ANTLR_OUT_GQL_20240412_FPL)" ]; then \
+ echo "variable ANTLR_OUT_GQL_20240412_FPL empty."; \
+ exit 1; \
+ fi
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/GQL_20240412_Syntax
+
+GQL_20240412_Syntax__Test: $(ANTLR_OUT_GQL_20240412_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/GQL_20240412_Syntax_PrintVisitor.java
+ @if [ -z "$(ANTLR_OUT_GQL_20240412_FPL)" ]; then \
+ echo "variable ANTLR_OUT_GQL_20240412_FPL empty."; \
+ exit 1; \
+ fi
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/GQL_20240412_Syntax__Test
+
+TerminalToCategory:
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/TerminalToCategory
+
+GrammarSplitter:
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/GrammarSplitter
+
+#-----------------------------------------------
+# Compile all the .java files.
+
+java: $(JAVA_COMP_OUT_FPL)
+
+#-----------------------------------------------
+# useful for distinguishing between initial make error messages and message
+# generated by rules firing
+
+nothing:
+ @:
+
+#================================================================================
+# generic targets, aka recipes
+#
+
+$(ANTLR_OUT_DIR)/%Lexer.java \
+$(ANTLR_OUT_DIR)/%Lexer.tokens \
+$(ANTLR_OUT_DIR)/%Parser.java \
+$(ANTLR_OUT_DIR)/%Parser.tokens \
+$(ANTLR_OUT_DIR)/%BaseListener.java \
+$(ANTLR_OUT_DIR)/%Listener.java \
+$(ANTLR_OUT_DIR)/%BaseVisitor.java \
+$(ANTLR_OUT_DIR)/%Visitor.java: $(ANTLR_IN_PRIMARY_FPL)
+ @echo "making grammar from:" $<
+ $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
+
+# Rule to build .class files from .java files
+$(JAVA_COMP_OUT_DIR)/%.class: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
+ @echo "Compiling $<..."
+ $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
+ @echo "Created $@"
+
+# Without this, GNU make inserts an 'rm -rf' not on the recipe and deletes the .jar files
+# after making them. Why make why?
+.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
+# Rule to build .jar files from .class files
+$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_OUT_DIR)/%.class
+ @echo "Building $*..."
+ $(JAVA_ARCHIVE) cf $@ -C $(JAVA_COMP_OUT_DIR) $*.class
+ @echo "Created $@"
+
+$(EXECUTOR_IN_DIR)/%: $(JVM_IN_DIR)/%.jar
+ @echo "Creating script for $*..."
+ @echo "#!/usr/bin/env bash" > $(EXECUTOR_IN_DIR)/$*
+ @echo "$(JAVA_INTERP) -cp ${CLASSPATH}:${JVM_IN_DP}:$(JVM_IN_DP)/$*.jar $*" \$$\@ >> $(EXECUTOR_IN_DIR)/$*
+ chmod +x $(EXECUTOR_IN_DIR)/$*
+ @echo "Created script $(EXECUTOR_IN_DIR)/$*"
# _IN things input to some program
# _OUT things output by some program
+#--------------------------------------------------------------------------------
+# commands
+
+export BIN_MAKE=/bin/make
+
+
#--------------------------------------------------------------------------------
# to be built
# in case there have been edits to the environment
source "${EXECUTOR_IN_DIR}"/env_build
-/usr/bin/make --no-builtin-rules -f "${EXECUTOR_IN_DIR}"/makefile $@
+${BIN_MAKE} --no-builtin-rules -f "${EXECUTOR_IN_DIR}"/makefile-top.mk $@
+++ /dev/null
-# Top level makefile assures we do setup, tools, and project build in correct order.
-
-.PHONY: all setup tools project
-
-# The 'all' target now depends on 'tools' and 'project'
-all: setup tools project
-
-.PHONY: version
-version:
- $(info ANTLR_JAR is '$(notdir $(ANTLR_JAR))')
- @ $(JAVA_COMP) --version
- @ $(JAVA_ARCHIVE) --version
- @ make -v | head -n 1
- @ echo "makefile 0.4"
-
-setup:
- mkdir -p $(ANTLR_IN_PRIMARY_DIR) $(JAVA_COMP_IN_PRIMARY_DIR) $(JVM_IN_DIR)
- mkdir -p $(EXECUTOR_IN_DIR) test deprecated experiment documentation temporary
-
-# Ensure tools like ANTLR_OUT_FL are built before building the project programs
-tools: setup
- $(MAKE) -f $(EXECUTOR_IN_DIR)/makefile-tool -$(MAKEFLAGS)
-
-# Run the project makefile and pass any targets or arguments to it
-PROJECT_GOALS := $(filter-out setup version,$(MAKECMDGOALS))
-project: setup tools
- $(MAKE) -f $(EXECUTOR_IN_DIR)/makefile-project -$(MAKEFLAGS) $(PROJECT_GOALS)
+++ /dev/null
-#================================================================================
-# Custom make targets
-#
-
-all: $(EXECUTOR_IN_FPL)
-
-PrintRuleNameList: $(EXECUTOR_IN_DIR)/PrintRuleNameList
-
-
-ANTLR_OUT_Arithmetic_FPL := $(shell ANTLR_OUT_FL Arithmetic.g4 -visitor -no-listener)
-Arithmetic_Echo: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Echo_PrintVisitor.java
- @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
- echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
- exit 1; \
- fi
- make $(EXECUTOR_IN_DIR)/Arithmetic_Echo
-
-Arithmetic_Echo__Test: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Echo_PrintVisitor.java
- @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
- echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
- exit 1; \
- fi
- make $(EXECUTOR_IN_DIR)/Arithmetic_Echo__Test
-
-Arithmetic_Syntax: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Syntax_PrintVisitor.java
- @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
- echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
- exit 1; \
- fi
- make $(EXECUTOR_IN_DIR)/Arithmetic_Syntax
-
-Arithmetic_Syntax__Test: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Syntax_PrintVisitor.java
- @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
- echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
- exit 1; \
- fi
- make $(EXECUTOR_IN_DIR)/Arithmetic_Syntax__Test
-
-GQL_20240412_Syntax: $(ANTLR_OUT_GQL_20240412_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/GQL_20240412_Syntax_PrintVisitor.java
- @if [ -z "$(ANTLR_OUT_GQL_20240412_FPL)" ]; then \
- echo "variable ANTLR_OUT_GQL_20240412_FPL empty."; \
- exit 1; \
- fi
- make $(EXECUTOR_IN_DIR)/GQL_20240412_Syntax
-
-GQL_20240412_Syntax__Test: $(ANTLR_OUT_GQL_20240412_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/GQL_20240412_Syntax_PrintVisitor.java
- @if [ -z "$(ANTLR_OUT_GQL_20240412_FPL)" ]; then \
- echo "variable ANTLR_OUT_GQL_20240412_FPL empty."; \
- exit 1; \
- fi
- make $(EXECUTOR_IN_DIR)/GQL_20240412_Syntax__Test
-
-TerminalToCategory:
- make $(EXECUTOR_IN_DIR)/TerminalToCategory
-
-GrammarSplitter:
- make $(EXECUTOR_IN_DIR)/GrammarSplitter
-
-
-
-# make the `.java` files for all grammars
-grammar: $(ANTLR_OUT_FPL)
-
-# Specific grammar targets. Run them like this:
-# > make <grammar_name>
-# e.g. > make GQL_test
-$(foreach grammar,$(ANTLR_GRAMMAR_LIST),$(eval $(grammar): $(value ANTLR_OUT_$(grammar)_FPL)))
-
-# Compile all the .java files.
-java: $(JAVA_COMP_OUT_FPL)
-
-# Default clean target
-.PHONY: clean
-clean:
- @echo "Use the clean script from the $(EXECUTOR_IN_DIR) directory instead of \`make clean\`"
- @$(EXECUTOR_IN_DIR)/clean
-
-#useful for distinguishing initial make error messages and message generated by rules firing
-nothing:
- @:
-
-#================================================================================
-# generic targets, aka recipes
-#
-
-$(ANTLR_OUT_DIR)/%Lexer.java \
-$(ANTLR_OUT_DIR)/%Lexer.tokens \
-$(ANTLR_OUT_DIR)/%Parser.java \
-$(ANTLR_OUT_DIR)/%Parser.tokens \
-$(ANTLR_OUT_DIR)/%BaseListener.java \
-$(ANTLR_OUT_DIR)/%Listener.java \
-$(ANTLR_OUT_DIR)/%BaseVisitor.java \
-$(ANTLR_OUT_DIR)/%Visitor.java: $(ANTLR_IN_PRIMARY_FPL)
- @echo "making grammar from:" $<
- $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-
-# Rule to build .class files from .java files
-$(JAVA_COMP_OUT_DIR)/%.class: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
- @echo "Compiling $<..."
- $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
- @echo "Created $@"
-
-# Without this, GNU make inserts an 'rm -rf' not on the recipe and deletes the .jar files
-# after making them. Why make why?
-.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
-# Rule to build .jar files from .class files
-$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_OUT_DIR)/%.class
- @echo "Building $*..."
- $(JAVA_ARCHIVE) cf $@ -C $(JAVA_COMP_OUT_DIR) $*.class
- @echo "Created $@"
-
-$(EXECUTOR_IN_DIR)/%: $(JVM_IN_DIR)/%.jar
- @echo "Creating script for $*..."
- @echo "#!/usr/bin/env bash" > $(EXECUTOR_IN_DIR)/$*
- @echo "$(JAVA_INTERP) -cp ${CLASSPATH}:${JVM_IN_DP}:$(JVM_IN_DP)/$*.jar $*" \$$\@ >> $(EXECUTOR_IN_DIR)/$*
- chmod +x $(EXECUTOR_IN_DIR)/$*
- @echo "Created script $(EXECUTOR_IN_DIR)/$*"
--- /dev/null
+#================================================================================
+# Custom make targets
+#
+$(info project_MAKECMDGOALS: $(MAKECMDGOALS))
+
+all: $(EXECUTOR_IN_FPL)
+
+PrintRuleNameList: $(EXECUTOR_IN_DIR)/PrintRuleNameList
+
+
+#-----------------------------------------------
+# Arithmetic
+
+ANTLR_OUT_Arithmetic_FL := $(shell ANTLR_OUT_FL Arithmetic.g4 -visitor -no-listener -no-tokens)
+ANTLR_OUT_Arithmetic_FPL := $(addprefix $(ANTLR_OUT_DIR)/, $(ANTLR_OUT_Arithmetic_FL))
+Arithmetic_Echo: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Echo_PrintVisitor.java
+ @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+ echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+ exit 1; \
+ fi
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Echo
+
+# Arithmetic_Echo__Test: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Echo_PrintVisitor.java
+# @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+# echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+# exit 1; \
+# fi
+# $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Echo__Test
+
+# Arithmetic_Syntax: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Syntax_PrintVisitor.java
+# @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+# echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+# exit 1; \
+# fi
+# $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Syntax
+
+# Arithmetic_Syntax__Test: $(ANTLR_OUT_Arithmetic_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/Arithmetic_Syntax_PrintVisitor.java
+# @if [ -z "$(ANTLR_OUT_Arithmetic_FPL)" ]; then \
+# echo "variable ANTLR_OUT_Arithmetic_FPL empty."; \
+# exit 1; \
+# fi
+# $(BIN_MAKE) $(EXECUTOR_IN_DIR)/Arithmetic_Syntax__Test
+
+#-----------------------------------------------
+# GQL_20240412
+
+ANTLR_OUT_GQL_20240412_FL := $(shell ANTLR_OUT_FL GQL_20240412.g4 -visitor -no-listener -no-tokens)
+ANTLR_OUT_GQL_20240412_FPL := $(addprefix $(ANTLR_OUT_DIR)/, $(ANTLR_OUT_GQL_20240412_FL))
+
+GQL_20240412_Syntax: $(ANTLR_OUT_GQL_20240412_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/GQL_20240412_Syntax_PrintVisitor.java
+ @if [ -z "$(ANTLR_OUT_GQL_20240412_FPL)" ]; then \
+ echo "variable ANTLR_OUT_GQL_20240412_FPL empty."; \
+ exit 1; \
+ fi
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/GQL_20240412_Syntax
+
+GQL_20240412_Syntax__Test: $(ANTLR_OUT_GQL_20240412_FPL) $(JAVA_COMP_IN_PRIMARY_DIR)/GQL_20240412_Syntax_PrintVisitor.java
+ @if [ -z "$(ANTLR_OUT_GQL_20240412_FPL)" ]; then \
+ echo "variable ANTLR_OUT_GQL_20240412_FPL empty."; \
+ exit 1; \
+ fi
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/GQL_20240412_Syntax__Test
+
+TerminalToCategory:
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/TerminalToCategory
+
+GrammarSplitter:
+ $(BIN_MAKE) $(EXECUTOR_IN_DIR)/GrammarSplitter
+
+#-----------------------------------------------
+# Compile all the .java files.
+
+java: $(JAVA_COMP_OUT_FPL)
+
+#-----------------------------------------------
+# Clean is program, not a target
+
+# Default clean target
+.PHONY: clean
+clean:
+ @echo "Use the clean script from the $(EXECUTOR_IN_DIR) directory instead of \`make clean\`"
+ @$(EXECUTOR_IN_DIR)/clean
+
+#-----------------------------------------------
+# useful for distinguishing between initial make error messages and message
+# generated by rules firing
+
+nothing:
+ @:
+
+#================================================================================
+# generic targets, aka recipes
+#
+
+$(ANTLR_OUT_DIR)/%Lexer.java \
+$(ANTLR_OUT_DIR)/%Lexer.tokens \
+$(ANTLR_OUT_DIR)/%Parser.java \
+$(ANTLR_OUT_DIR)/%Parser.tokens \
+$(ANTLR_OUT_DIR)/%BaseListener.java \
+$(ANTLR_OUT_DIR)/%Listener.java \
+$(ANTLR_OUT_DIR)/%BaseVisitor.java \
+$(ANTLR_OUT_DIR)/%Visitor.java: $(ANTLR_IN_PRIMARY_FPL)
+ @echo "making grammar from:" $<
+ $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
+
+# Rule to build .class files from .java files
+$(JAVA_COMP_OUT_DIR)/%.class: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
+ @echo "Compiling $<..."
+ $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
+ @echo "Created $@"
+
+# Without this, GNU make inserts an 'rm -rf' not on the recipe and deletes the .jar files
+# after making them. Why make why?
+.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
+# Rule to build .jar files from .class files
+$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_OUT_DIR)/%.class
+ @echo "Building $*..."
+ $(JAVA_ARCHIVE) cf $@ -C $(JAVA_COMP_OUT_DIR) $*.class
+ @echo "Created $@"
+
+$(EXECUTOR_IN_DIR)/%: $(JVM_IN_DIR)/%.jar
+ @echo "Creating script for $*..."
+ @echo "#!/usr/bin/env bash" > $(EXECUTOR_IN_DIR)/$*
+ @echo "$(JAVA_INTERP) -cp ${CLASSPATH}:${JVM_IN_DP}:$(JVM_IN_DP)/$*.jar $*" \$$\@ >> $(EXECUTOR_IN_DIR)/$*
+ chmod +x $(EXECUTOR_IN_DIR)/$*
+ @echo "Created script $(EXECUTOR_IN_DIR)/$*"
+++ /dev/null
-#================================================================================
-# Custom make targets
-#
-
-all: ANTLR_OUT_FL
-
-ANTLR_OUT_FL: $(EXECUTOR_IN_DIR)/ANTLR_OUT_FL
-
-
-
-#================================================================================
-# generic targets, aka recipes
-#
-
-# Rule to build .class files from .java files
-$(JAVA_COMP_OUT_DIR)/%.class: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
- @echo "Compiling $<..."
- $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
- @echo "Created $@"
-
-# Without this, GNU make inserts an 'rm -rf' not on the recipe and deletes the .jar files
-# after making them. Why make why?
-.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
-# Rule to build .jar files from .class files
-$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_OUT_DIR)/%.class
- @echo "Building $*..."
- $(JAVA_ARCHIVE) cf $@ -C $(JAVA_COMP_OUT_DIR) $*.class
- @echo "Created $@"
-
-$(EXECUTOR_IN_DIR)/%: $(JVM_IN_DIR)/%.jar
- @echo "Creating script for $*..."
- @echo "#!/usr/bin/env bash" > $(EXECUTOR_IN_DIR)/$*
- @echo "$(JAVA_INTERP) -cp ${CLASSPATH}:${JVM_IN_DP}:$(JVM_IN_DP)/$*.jar $*" \$$\@ >> $(EXECUTOR_IN_DIR)/$*
- chmod +x $(EXECUTOR_IN_DIR)/$*
- @echo "Created script $(EXECUTOR_IN_DIR)/$*"
--- /dev/null
+#================================================================================
+# Custom make targets
+#
+
+all: ANTLR_OUT_FL
+
+ANTLR_OUT_FL: $(EXECUTOR_IN_DIR)/ANTLR_OUT_FL
+
+
+
+#================================================================================
+# generic targets, aka recipes
+#
+
+# Rule to build .class files from .java files
+$(JAVA_COMP_OUT_DIR)/%.class: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
+ @echo "Compiling $<..."
+ $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
+ @echo "Created $@"
+
+# Without this, GNU make inserts an 'rm -rf' not on the recipe and deletes the .jar files
+# after making them. Why make why?
+.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
+# Rule to build .jar files from .class files
+$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_OUT_DIR)/%.class
+ @echo "Building $*..."
+ $(JAVA_ARCHIVE) cf $@ -C $(JAVA_COMP_OUT_DIR) $*.class
+ @echo "Created $@"
+
+$(EXECUTOR_IN_DIR)/%: $(JVM_IN_DIR)/%.jar
+ @echo "Creating script for $*..."
+ @echo "#!/usr/bin/env bash" > $(EXECUTOR_IN_DIR)/$*
+ @echo "$(JAVA_INTERP) -cp ${CLASSPATH}:${JVM_IN_DP}:$(JVM_IN_DP)/$*.jar $*" \$$\@ >> $(EXECUTOR_IN_DIR)/$*
+ chmod +x $(EXECUTOR_IN_DIR)/$*
+ @echo "Created script $(EXECUTOR_IN_DIR)/$*"
--- /dev/null
+$(info top_MAKECMDGOALS: $(MAKECMDGOALS))
+
+.PHONY: all version clean setup tools project
+
+# The 'all' target now depends on 'tools' and 'project'
+all: setup tools project
+
+version:
+ $(info ANTLR_JAR is '$(notdir $(ANTLR_JAR))')
+ @ $(JAVA_COMP) --version
+ @ $(JAVA_ARCHIVE) --version
+ @ make -v | head -n 1
+ @ echo "makefile 0.4"
+
+# `clean` is program independent of `make`
+clean:
+ @echo "Use the clean script from the $(EXECUTOR_IN_DIR) directory instead of \`make clean\`"
+ @$(EXECUTOR_IN_DIR)/clean
+
+setup:
+ mkdir -p $(ANTLR_IN_PRIMARY_DIR) $(JAVA_COMP_IN_PRIMARY_DIR) $(JVM_IN_DIR)
+ mkdir -p $(EXECUTOR_IN_DIR) test deprecated experiment documentation temporary
+
+# Ensure tools like ANTLR_OUT_FL are built before building the project programs
+tools: setup
+ $(BIN_MAKE) -f $(EXECUTOR_IN_DIR)/makefile-tool.mk -$(MAKEFLAGS)
+
+project: tools
+ $(BIN_MAKE) -f $(EXECUTOR_IN_DIR)/makefile-project.mk -$(MAKEFLAGS)
+
+# all other targets are sent to makefile-project
+%: tools
+ $(BIN_MAKE) -f $(EXECUTOR_IN_DIR)/makefile-project.mk -$(MAKEFLAGS) $@
--- /dev/null
+Extracted Rules:
+PATH
+MONTH
+RIGHT_ARROW
+RIGHT_BRACKET_TILDE
+CREATE
+GROUPS
+TRIM
+CLOSE
+UINT32
+AGGREGATES
+FLOAT128
+LOG10
+FLOOR
+CATALOG
+YEAR
+CONNECTING
+CURRENT_PROPERTY_GRAPH
+NOTHING
+PARTITION
+INT16
+REVERSE_SOLIDUS
+BINDINGS
+LEFT_ANGLE_BRACKET
+LEFT
+NODE
+LEFT_BRACKET
+SIZE
+BIGINT
+SUM
+WHERE
+AS
+AT
+MIN
+QUERY
+TILDE_LEFT_BRACKET
+LEFT_ARROW_TILDE
+LTRIM
+VARCHAR
+SOURCE
+THEN
+XOR
+BINDING
+ALL_DIFFERENT
+SAME
+ORDINALITY
+CALL
+ALTER
+SET
+INT32
+BYTE_LENGTH
+PATHS
+RIGHT_PAREN
+CONSTRAINT
+PRECISION
+ASC
+GROUP
+UPPER
+ABS
+DELETE
+SMALL
+SIMPLE_COMMENT_MINUS
+VARIABLE
+BY
+OFFSET
+OCTET_LENGTH
+SKIP_RESERVED_WORD
+ELEMENT_ID
+INTERVAL
+DURATION_BETWEEN
+PROCEDURE
+YIELD
+STDDEV_POP
+POWER
+DOUBLE_DOLLAR_SIGN
+COLLECT_LIST
+INT8
+DETACH
+OPEN
+PERCENT
+STRING
+VARBINARY
+SIMPLE
+INTEGER8
+TO
+BRACKET_RIGHT_ARROW
+FLOAT16
+UNION
+DURATION
+SLASH_MINUS
+HOME_PROPERTY_GRAPH
+LOCAL_TIMESTAMP
+TYPED
+LEFT_ARROW
+FLOAT32
+DOUBLE_PERIOD
+DESC
+INTEGER32
+INTEGER128
+OPTIONAL
+PRODUCT
+DESCENDING
+PROPERTY_EXISTS
+LABEL
+LEFT_BRACE
+CURRENT_TIME
+REPLACE
+LABELS
+INTEGER
+NUMBER
+PROJECT
+INTEGER256
+PROPERTY
+PERCENTILE_DISC
+FOR
+UNIQUE
+TRAILING
+BTRIM
+UINT64
+BOOLEAN
+INTEGER16
+AVG
+NOT
+UBIGINT
+CEILING
+LOWER
+LAST
+SINH
+PATH_LENGTH
+INSTANT
+SIN
+END
+RELATIONSHIP
+HAVING
+LIST
+TANH
+TEMPORAL
+QUOTE
+MULTISET_ALTERNATION_OPERATOR
+BINARY
+ASINp
+UINT8
+DROP
+INFINITY
+RETURN
+ELEMENTS
+LEFT_ARROW_BRACKET
+SIGNED
+LEFT_MINUS_RIGHT
+SCHEMA
+NEXT
+RADIANS
+NORMALIZE
+GQLSTATUS
+RENAME
+BIG
+SLASH_TILDE_RIGHT
+FLOAT256
+FILTER
+MOD
+EXISTS
+INT64
+FLOAT64
+CONCATENATION_OPERATOR
+TIME
+COLON
+INTERSECT
+NORMALIZED
+WITH
+CLONE
+SLASH_MINUS_RIGHT
+RIGHT_BRACKET
+CURRENT_ROLE
+GRANT
+RELATIONSHIPS
+PLUS_SIGN
+DATETIME
+BOOL
+DIRECTORY
+DESTINATION
+START
+CHAR_LENGTH
+CHARACTER_LENGTH
+ZONED
+UNDERSCORE
+PERCENTILE_CONT
+DOUBLE_QUOTE
+SQRT
+INT128
+FINISH
+NULLIF
+SESSION_USER
+TABLE
+STDDEV_SAMP
+WHEN
+AGGREGATE
+VERTEX
+EXCLAMATION_MARK
+LOCAL
+DIRECTED
+ELSE
+CEIL
+CURRENT_GRAPH
+IF
+TYPE
+RIGHT_DOUBLE_ARROW
+PARAMETER
+CAST
+LOCAL_TIME
+GRAPH
+AMPERSAND
+SLASH_TILDE
+TRAIL
+IN
+LOG
+DISTINCT
+HOME_SCHEMA
+INT256
+IS
+EXACT
+LEADING
+FUNCTION
+INTEGER64
+CASE
+NODETACH
+NFKC
+NFKD
+DOLLAR_SIGN
+WITHOUT
+COUNT
+NOT_EQUALS_OPERATOR
+MINUS_LEFT_BRACKET
+MAX
+UNSIGNED
+CHAR
+TRANSACTION
+SYSTEM_USER
+LEFT_PAREN
+WRITE
+ORDER
+COMMERCIAL_AT
+REMOVE
+RIGHT
+VALUES
+DOUBLE
+COMMA
+GRAVE_ACCENT
+ZONED_DATETIME
+MINUS_SLASH
+NUMERIC
+REVOKE
+COS
+CURRENT_SCHEMA
+USE
+COT
+ASTERISK
+CHARACTERISTICS
+COPY
+SESSION
+TILDE_SLASH
+FIRST
+UNDIRECTED
+SELECT
+RECORDS
+ELEMENT
+ASCENDING
+LABELED
+HOME_GRAPH
+LOCAL_DATETIME
+REPEATABLE
+DAY
+UINT
+SIMPLE_COMMENT_SOLIDUS
+BYTES
+TAN
+ALL
+CURRENT_USER
+LN
+ARRAY
+SUBSTRING
+ZONE
+RECORD
+DECIMAL
+ONLY
+NFC
+FROM
+RESET
+VALUE
+LEFT_ARROW_TILDE_BRACKET
+NFD
+RIGHT_BRACKET_MINUS
+ZONED_TIME
+COALESCE
+QUESTION_MARK
+TIMESTAMP
+ACOS
+MINUTE
+EDGE
+GREATER_THAN_OR_EQUALS_OPERATOR
+BOTH
+NULL
+UNIT
+LEFT_TILDE_SLASH
+VERTICAL_BAR
+DIFFERENT
+KEEP
+LEFT_MINUS_SLASH
+BRACKETED_COMMENT
+PARAMETERS
+EXISTING
+EXCEPT
+SOLIDUS
+READ
+DATE
+SHORTEST
+LIKE
+DATA
+DRYRUN
+AND
+PERIOD
+OTHERWISE
+REAL
+INSERT
+CURRENT_DATE
+ATAN
+NO
+FLOAT
+LESS_THAN_OR_EQUALS_OPERATOR
+RIGHT_ANGLE_BRACKET
+CURRENT_TIMESTAMP
+HOUR
+LIMIT
+UINT16
+ANY
+UINT256
+ABSTRACT
+INT
+ROLLBACK
+OF
+REFERENCE
+CARDINALITY
+EDGES
+TILDE_RIGHT_ARROW
+COSH
+NULLS
+RTRIM
+ON
+BRACKET_TILDE_RIGHT_ARROW
+WALK
+RIGHT_BRACE
+DEC
+OR
+COMMIT
+MINUS_SIGN
+UINT128
+USMALLINT
+DOUBLE_COLON
+EQUALS_OPERATOR
+DEGREES
+TEMP
+ACYCLIC
+SMALLINT
+LET
+SECOND
+TILDE
+EXP
+MATCH
+CLEAR
--- /dev/null
+Seems to me, that creating a disjoint sub graph is identical to creating a new graph. Perhaps we can work with that. Why don't we create a master index of disjoint subgraphs in a header, then when a new graph is made we will add an entry in the index.
+ChatGPT
+Creating a master index of disjoint subgraphs and managing them within a single Neo4j database is a practical approach. By using labels or properties to differentiate subgraphs, you can effectively manage multiple logical graphs within a single physical graph.
+
+ Here's a step-by-step approach to implement this:
+
+ Step 1: Create the Master Index
+ First, create a master index node that will store references to all disjoint subgraphs.
+
+ cypher
+
+ MERGE (index:GraphIndex {name: 'MasterIndex'})
+ Step 2: Create a New Graph
+ When creating a new graph, add an entry to the master index.
+
+ cypher
+
+ // Create a new graph and add an entry to the master index
+ MERGE (index:GraphIndex {name: 'MasterIndex'})
+ CREATE (graph:Graph {name: 'myNewGraph'})
+ MERGE (index)-[:CONTAINS]->(graph)
+
+ // Create nodes and relationships within the new graph
+ CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Alice'})
+ CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Bob'})
+ Step 3: Querying Subgraphs
+ To query a specific subgraph, use the label or properties associated with that subgraph.
+
+ cypher
+
+ MATCH (index:GraphIndex {name: 'MasterIndex'})-[:CONTAINS]->(graph:Graph {name: 'myNewGraph'})-[:HAS_NODE]->(person:Person:myNewGraph)
+ RETURN person.name
+ Step 4: Adding More Nodes and Relationships to a Subgraph
+ To add more nodes and relationships to an existing subgraph, refer to the subgraph by its label or properties.
+
+ cypher
+
+ MATCH (graph:Graph {name: 'myNewGraph'})
+ CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Charlie'})
+ CREATE (person:Person:myNewGraph {name: 'Alice'})-[:KNOWS]->(person:Person:myNewGraph {name: 'Charlie'})
+ Example: Full Workflow
+ Creating a New Graph
+ cypher
+
+ MERGE (index:GraphIndex {name: 'MasterIndex'})
+ CREATE (graph:Graph {name: 'myNewGraph'})
+ MERGE (index)-[:CONTAINS]->(graph)
+ CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Alice'})
+ CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Bob'})
+ Querying a Subgraph
+ cypher
+
+ MATCH (index:GraphIndex {name: 'MasterIndex'})-[:CONTAINS]->(graph:Graph {name: 'myNewGraph'})-[:HAS_NODE]->(person:Person:myNewGraph)
+ RETURN person.name
+ Adding to a Subgraph
+ cypher
+
+ MATCH (graph:Graph {name: 'myNewGraph'})
+ CREATE (graph)-[:HAS_NODE]->(:Person:myNewGraph {name: 'Charlie'})
+ MATCH (alice:Person:myNewGraph {name: 'Alice'})
+ MATCH (charlie:Person:myNewGraph {name: 'Charlie'})
+ CREATE (alice)-[:KNOWS]->(charlie)
--- /dev/null
+Here's the list of rules found in the GQL_20240412.g4 file:
+
+transactionMode
+transactionAccessMode
+rollbackCommand
+commitCommand
+nestedProcedureSpecification
+procedureSpecification
+nestedDataModifyingProcedureSpecification
+nestedQuerySpecification
+procedureBody
+bindingVariableDefinitionBlock
+bindingVariableDefinition
+statementBlock
+statement
+nextStatement
+graphVariableDefinition
+optTypedGraphInitializer
+graphInitializer
+bindingTableVariableDefinition
+optTypedBindingTableInitializer
+bindingTableInitializer
+valueVariableDefinition
+optTypedValueInitializer
+valueInitializer
+graphExpression
+currentGraph
+bindingTableExpression
+nestedBindingTableQuerySpecification
+objectExpressionPrimary
+linearCatalogModifyingStatement
+simpleCatalogModifyingStatement
+primitiveCatalogModifyingStatement
+createSchemaStatement
+dropSchemaStatement
+createGraphStatement
+openGraphType
+ofGraphType
+graphTypeLikeGraph
+graphSource
+dropGraphStatement
+createGraphTypeStatement
+graphTypeSource
+copyOfGraphType
+dropGraphTypeStatement
+callCatalogModifyingProcedureStatement
+linearDataModifyingStatement
+focusedLinearDataModifyingStatement
+focusedLinearDataModifyingStatementBody
+focusedNestedDataModifyingProcedureSpecification
+ambientLinearDataModifyingStatement
+ambientLinearDataModifyingStatementBody
+simpleLinearDataAccessingStatement
+simpleDataModifyingStatement
+primitiveDataModifyingStatement
+insertStatement
+setStatement
+setItemList
+setItem
+setPropertyItem
+setAllPropertiesItem
+setLabelItem
+removeStatement
+removeItemList
+removeItem
+removePropertyItem
+removeLabelItem
+deleteStatement
+deleteItemList
+deleteItem
+callDataModifyingProcedureStatement
+compositeQueryStatement
+compositeQueryExpression
+queryConjunction
+setOperator
+compositeQueryPrimary
+linearQueryStatement
+focusedLinearQueryStatement
+focusedLinearQueryStatementBody
+focusedNestedQuerySpecification
+ambientLinearQueryStatement
+ambientLinearQueryStatementBody
+nestedLinearQuerySpecification
+simpleQuerySpecification
+simpleQueryPrimary
+callDataAccessingProcedureStatement
+ambientDataModifyingProcedureStatement
+ambientQuerySpecification
+ambientQueryPrimary
+simpleQuerySpecificationBody
+simpleQueryPrimaryExpression
+simpleQueryBodyExpression
+compoundQuerySpecification
+ambientLinearQuerySpecification
+simpleDataAccessingStatement
+ambientDataModifyingStatement
+ambientLinearDataModifyingSpecification
+simpleDataAccessingSpecification
+ambientDataModifyingStatementBody
+simpleDataModifyingSpecification
+ambientLinearDataModifyingStatementBody
+simpleLinearDataModifyingSpecification
+focusedLinearDataModifyingSpecification
+focusedDataModifyingSpecification
+focusedLinearDataModifyingStatementBodyExpression
+focusedLinearQuerySpecification
+simpleLinearQuerySpecification
+focusedLinearQuerySpecificationBody
+simpleLinearQuerySpecificationBody
+focusedLinearQuerySpecificationBodyExpression
+simpleLinearQuerySpecificationBodyExpression
+compoundQueryBody
+compoundQueryExpression
+compoundQueryExpressionPart
+queryPrimary
+queryExpression
+queryTerm
+query
+querySpecification
+queryExpressionBody
+simpleQueryExpression
+simpleQuerySpecificationBodyExpression
+simpleQuerySpecificationBodyExpressionPart
+compoundQuerySpecificationBodyExpression
+compoundQuerySpecificationBodyExpressionPart
+simpleQuerySpecificationBodyPart
+simpleQuerySpecificationBodyExpressionPart
+simpleQuerySpecificationBodyExpression
+queryPrimaryExpression
+queryExpressionPart
+queryExpressionBodyPart
+queryExpressionPrimary
+queryExpressionTerm
+queryExpressionPrimaryExpression
+queryExpressionPrimaryExpressionPart
+queryExpressionPrimaryExpressionBody
+queryExpressionPrimaryExpressionTerm
+queryExpressionPrimaryExpressionBodyPart
+queryExpressionPrimaryExpressionPrimary
+queryExpressionPrimaryExpressionTermPart
+queryExpressionPrimaryExpressionPrimaryPart
+simpleQueryExpressionPrimary
+simpleQueryExpressionPrimaryPart
+simpleQueryExpressionPrimaryBody
+simpleQueryExpressionPrimaryTerm
+simpleQueryExpressionPrimaryBodyPart
+simpleQueryExpressionPrimaryPrimary
+simpleQueryExpressionPrimaryPrimaryPart
+simpleQueryExpressionPrimaryTermPart
+simpleQueryExpressionPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyTermPart
+simpleQueryExpressionPrimaryBodyExpression
+simpleQueryExpressionPrimaryBodyExpressionPart
+simpleQueryExpressionPrimaryBodyExpressionBody
+simpleQueryExpressionPrimaryBodyExpressionTerm
+simpleQueryExpressionPrimaryBodyExpressionBodyPart
+simpleQueryExpressionPrimaryBodyExpressionTermPart
+simpleQueryExpressionPrimaryBodyExpressionPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimary
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBody
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPart
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPrimaryBodyPartTerm
+simpleQueryExpressionPrimaryBodyExpressionPrimaryBodyPrimaryBodyPrimaryBodyPrimary ​​
+
+
+
+
+
+
+
--- /dev/null
+Extracted Rules:
+PATH
+MONTH
+RIGHT_ARROW
+RIGHT_BRACKET_TILDE
+CREATE
+GROUPS
+TRIM
+CLOSE
+UINT32
+AGGREGATES
+FLOAT128
+LOG10
+FLOOR
+CATALOG
+YEAR
+CONNECTING
+CURRENT_PROPERTY_GRAPH
+NOTHING
+PARTITION
+INT16
+REVERSE_SOLIDUS
+BINDINGS
+LEFT_ANGLE_BRACKET
+LEFT
+NODE
+LEFT_BRACKET
+SIZE
+BIGINT
+SUM
+WHERE
+AS
+AT
+MIN
+QUERY
+TILDE_LEFT_BRACKET
+LEFT_ARROW_TILDE
+LTRIM
+VARCHAR
+SOURCE
+THEN
+XOR
+BINDING
+ALL_DIFFERENT
+SAME
+ORDINALITY
+CALL
+ALTER
+SET
+INT32
+BYTE_LENGTH
+PATHS
+RIGHT_PAREN
+CONSTRAINT
+PRECISION
+ASC
+GROUP
+UPPER
+ABS
+DELETE
+SMALL
+SIMPLE_COMMENT_MINUS
+VARIABLE
+BY
+OFFSET
+OCTET_LENGTH
+SKIP_RESERVED_WORD
+ELEMENT_ID
+INTERVAL
+DURATION_BETWEEN
+PROCEDURE
+YIELD
+STDDEV_POP
+POWER
+DOUBLE_DOLLAR_SIGN
+COLLECT_LIST
+INT8
+DETACH
+OPEN
+PERCENT
+STRING
+VARBINARY
+SIMPLE
+INTEGER8
+TO
+BRACKET_RIGHT_ARROW
+FLOAT16
+UNION
+DURATION
+SLASH_MINUS
+HOME_PROPERTY_GRAPH
+LOCAL_TIMESTAMP
+TYPED
+LEFT_ARROW
+FLOAT32
+DOUBLE_PERIOD
+DESC
+INTEGER32
+INTEGER128
+OPTIONAL
+PRODUCT
+DESCENDING
+PROPERTY_EXISTS
+LABEL
+LEFT_BRACE
+CURRENT_TIME
+REPLACE
+LABELS
+INTEGER
+NUMBER
+PROJECT
+INTEGER256
+PROPERTY
+PERCENTILE_DISC
+FOR
+UNIQUE
+TRAILING
+BTRIM
+UINT64
+BOOLEAN
+INTEGER16
+AVG
+NOT
+UBIGINT
+CEILING
+LOWER
+LAST
+SINH
+PATH_LENGTH
+INSTANT
+SIN
+END
+RELATIONSHIP
+HAVING
+LIST
+TANH
+TEMPORAL
+QUOTE
+MULTISET_ALTERNATION_OPERATOR
+BINARY
+ASIN
+UINT8
+DROP
+INFINITY
+RETURN
+ELEMENTS
+LEFT_ARROW_BRACKET
+SIGNED
+LEFT_MINUS_RIGHT
+SCHEMA
+NEXT
+RADIANS
+NORMALIZE
+GQLSTATUS
+RENAME
+BIG
+SLASH_TILDE_RIGHT
+FLOAT256
+FILTER
+MOD
+EXISTS
+INT64
+FLOAT64
+CONCATENATION_OPERATOR
+TIME
+COLON
+INTERSECT
+NORMALIZED
+WITH
+CLONE
+SLASH_MINUS_RIGHT
+RIGHT_BRACKET
+CURRENT_ROLE
+GRANT
+RELATIONSHIPS
+PLUS_SIGN
+DATETIME
+BOOL
+DIRECTORY
+DESTINATION
+START
+CHAR_LENGTH
+CHARACTER_LENGTH
+ZONED
+UNDERSCORE
+PERCENTILE_CONT
+DOUBLE_QUOTE
+SQRT
+INT128
+FINISH
+NULLIF
+SESSION_USER
+TABLE
+STDDEV_SAMP
+WHEN
+AGGREGATE
+VERTEX
+EXCLAMATION_MARK
+LOCAL
+DIRECTED
+ELSE
+CEIL
+CURRENT_GRAPH
+IF
+TYPE
+RIGHT_DOUBLE_ARROW
+PARAMETER
+CAST
+LOCAL_TIME
+GRAPH
+AMPERSAND
+SLASH_TILDE
+TRAIL
+IN
+LOG
+DISTINCT
+HOME_SCHEMA
+INT256
+IS
+EXACT
+LEADING
+FUNCTION
+INTEGER64
+CASE
+NODETACH
+NFKC
+NFKD
+DOLLAR_SIGN
+WITHOUT
+COUNT
+NOT_EQUALS_OPERATOR
+MINUS_LEFT_BRACKET
+MAX
+UNSIGNED
+CHAR
+TRANSACTION
+SYSTEM_USER
+LEFT_PAREN
+WRITE
+ORDER
+COMMERCIAL_AT
+REMOVE
+RIGHT
+VALUES
+DOUBLE
+COMMA
+GRAVE_ACCENT
+ZONED_DATETIME
+MINUS_SLASH
+NUMERIC
+REVOKE
+COS
+CURRENT_SCHEMA
+USE
+COT
+ASTERISK
+CHARACTERISTICS
+COPY
+SESSION
+TILDE_SLASH
+FIRST
+UNDIRECTED
+SELECT
+RECORDS
+ELEMENT
+ASCENDING
+LABELED
+HOME_GRAPH
+LOCAL_DATETIME
+REPEATABLE
+DAY
+UINT
+SIMPLE_COMMENT_SOLIDUS
+BYTES
+TAN
+ALL
+CURRENT_USER
+LN
+ARRAY
+SUBSTRING
+ZONE
+RECORD
+DECIMAL
+ONLY
+NFC
+FROM
+RESET
+VALUE
+LEFT_ARROW_TILDE_BRACKET
+NFD
+RIGHT_BRACKET_MINUS
+ZONED_TIME
+COALESCE
+QUESTION_MARK
+TIMESTAMP
+ACOS
+MINUTE
+EDGE
+GREATER_THAN_OR_EQUALS_OPERATOR
+BOTH
+NULL
+UNIT
+LEFT_TILDE_SLASH
+VERTICAL_BAR
+DIFFERENT
+KEEP
+LEFT_MINUS_SLASH
+BRACKETED_COMMENT
+PARAMETERS
+EXISTING
+EXCEPT
+SOLIDUS
+READ
+DATE
+SHORTEST
+LIKE
+DATA
+DRYRUN
+AND
+PERIOD
+OTHERWISE
+REAL
+INSERT
+CURRENT_DATE
+ATAN
+NO
+FLOAT
+LESS_THAN_OR_EQUALS_OPERATOR
+RIGHT_ANGLE_BRACKET
+CURRENT_TIMESTAMP
+HOUR
+LIMIT
+UINT16
+ANY
+UINT256
+ABSTRACT
+INT
+ROLLBACK
+OF
+REFERENCE
+CARDINALITY
+EDGES
+TILDE_RIGHT_ARROW
+COSH
+NULLS
+RTRIM
+ON
+BRACKET_TILDE_RIGHT_ARROW
+WALK
+RIGHT_BRACE
+DEC
+OR
+COMMIT
+MINUS_SIGN
+UINT128
+USMALLINT
+DOUBLE_COLON
+EQUALS_OPERATOR
+DEGREES
+TEMP
+ACYCLIC
+SMALLINT
+LET
+SECOND
+TILDE
+EXP
+MATCH
+CLEAR
--- /dev/null
+
+#--------------------------------------------------------------------------------
+# Data Types
+# INTEGER16 is referenced in some rules. INT16 is referenced in others.
+#
+
+
+BIGINT
+BOOL
+BOOLEAN
+BYTE_STRING_LITERAL
+CHARACTERISTICS
+CHARACTER_LENGTH
+FLOAT256
+INT
+INT8
+INT16
+INT32
+INT64
+INT128
+INT256
+INT256
+INTEGER16
+INTEGER32
+SMALLINT
+UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
+
+booleanType
+booleanValueExpression
+byteStringType
+byteStringValueExpression
+decimalExactNumericType
+numericValueExpressionDividend
+signedBinaryExactNumericType
+trimCharacterOrByteString
+trimCharacterOrByteStringSource
+trimMultiCharacterCharacterString
+unsignedInteger
+verboseBinaryExactNumericType
+
--- /dev/null
+<code>
+<h2>Data Types</h2>
+<ul>
+ <li>signedBinaryExactNumericType</li>
+ <li>BYTE_STRING_LITERAL</li>
+ <li>decimalExactNumericType</li>
+ <li>booleanType</li>
+ <li>INT256</li>
+ <li>FLOAT256</li>
+ <li>DATETIME</li>
+ <li>BOOLEAN</li>
+ <li>VARCHAR</li>
+ <li>UNSIGNED_INTEGER</li>
+ <li>numericValueExpressionDividend</li>
+</ul>
+<h2>Identifiers and References</h2>
+<ul>
+ <li>labelName</li>
+ <li>bindingVariable</li>
+ <li>nodeTypeLabelSet</li>
+ <li>absoluteCatalogSchemaReference</li>
+ <li>destinationNodeTypeAlias</li>
+ <li>graphTypeReference</li>
+</ul>
+<h2>Modifiers and Qualifiers</h2>
+<ul>
+ <li>DISTINCT</li>
+ <li>setQuantifier</li>
+ <li>simplifiedDefaultingRight</li>
+ <li>WITH</li>
+ <li>sessionSetSchemaClause</li>
+ <li>sessionSetParameterClause</li>
+ <li>fixedQuantifier</li>
+</ul>
+<h2>Functions</h2>
+<ul>
+ <li>LOG10</li>
+ <li>FLOOR</li>
+ <li>characterOrByteStringFunction</li>
+ <li>ceilingFunction</li>
+ <li>trigonometricFunction</li>
+ <li>durationFunction</li>
+ <li>datetimeFunction</li>
+ <li>generalSetFunction</li>
+ <li>functionCall</li>
+</ul>
+<h2>Expressions and Operators</h2>
+<ul>
+ <li>booleanValueExpression</li>
+ <li>commonLogarithm</li>
+ <li>comparisonPredicatePart2</li>
+ <li>naturalLogarithm</li>
+ <li>powerFunction</li>
+ <li>SIN</li>
+ <li>MINUS_LEFT_BRACKET</li>
+ <li>UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX</li>
+ <li>simplifiedOverrideRight</li>
+</ul>
+<h2>Commands and Statements</h2>
+<ul>
+ <li>SELECT</li>
+ <li>INSERT</li>
+ <li>CREATE</li>
+ <li>DROP</li>
+ <li>ROLLBACK</li>
+ <li>simpleMatchStatement</li>
+ <li>sessionSetCommand</li>
+ <li>matchStatement</li>
+ <li>matchStatementBlock</li>
+ <li>createGraphStatement</li>
+</ul>
+<h2>Patterns and Matching</h2>
+<ul>
+ <li>simpleMatchStatement</li>
+ <li>pathPattern</li>
+ <li>elementPatternPredicate</li>
+ <li>graphPatternYieldClause</li>
+ <li>graphPatternBindingTable</li>
+ <li>pathPrimary</li>
+ <li>pathOrPaths</li>
+ <li>simplifiedPathUnion</li>
+</ul>
+<h2>Structures and Schema</h2>
+<ul>
+ <li>procedureSpecification</li>
+ <li>compositeQueryPrimary</li>
+ <li>procedureBody</li>
+ <li>linearCatalogModifyingStatement</li>
+ <li>graphInitializer</li>
+ <li>schemaReference</li>
+</ul>
+<h2>Miscellaneous</h2>
+<ul>
+ <li>LEFT_ARROW_TILDE</li>
+ <li>SIMPLE_COMMENT_MINUS</li>
+ <li>optionalMatchStatement</li>
+ <li>UNIQUE</li>
+ <li>optionalOperand</li>
+ <li>simplifiedContents</li>
+</ul>
+</code>
--- /dev/null
+#--------------------------------------------------------------------------------
+# terminal symbols in the GQL_20240420 grammar
+#
+
+# Literals
+NULL
+TRUE
+FALSE
+NUMBER
+BOOLEAN_LITERAL
+
+# Data Types
+BIGINT
+BOOL
+BOOLEAN
+BYTES
+BYTE_LENGTH
+BYTE_STRING_LITERAL
+CARDINALITY
+CHAR
+DATE
+DATETIME
+DAY
+DEC
+DECIMAL
+DOUBLE
+DURATION
+DURATION_BETWEEN
+ELEMENT
+ELEMENT_ID
+FLOAT
+FLOAT
+INSTANT
+INT
+INT128
+INT16
+INT256
+INT32
+INT64
+INT8
+INTEGER
+INTERVAL
+MAX
+MIN
+MINUTE
+MODULUS
+MONTH
+NUMERIC
+REAL
+SIZE
+SMALLINT
+TEMP
+TEMPORAL
+TIME
+UBIGINT
+UINT
+UINT128
+UINT16
+UINT256
+UINT32
+UINT64
+UINT8
+UNSIGNED_BINARY_INTEGER
+UNSIGNED_DECIMAL_INTEGER
+UNSIGNED_HEXADECIMAL_INTEGER
+UNSIGNED_OCTAL_INTEGER
+USMALLINT
+VALUE
+VALUES
+VARBINARY
+VARCHAR
+YEAR
+ZONED
+ZONED_DATETIME
+ZONED_TIME
+
+
+# Functions
+ABS
+ACOS
+AGGREGATE
+AGGREGATES
+ALL_DIFFERENT
+ASIN
+ATAN
+AVG
+BTRIM
+CAST
+CEIL
+CEILING
+CHARACTER_LENGTH
+CONCATENATION_OPERATOR
+COS
+COSH
+COT
+COUNT
+EXP
+FLOOR
+LOG
+LOG10
+LOWER
+LTRIM
+MOD
+OCTET_LENGTH
+POSITION
+POWER
+RADIANS
+RTRIM
+SIN
+SINH
+SQRT
+STDDEV_POP
+STDDEV_SAMP
+SUBSTRING
+SUM
+TAN
+TANH
+TRIM
+UPPER
+
+# Punctuation and Operators
+AMPERSAND
+ASTERISK
+BRACKETED_COMMENT
+BRACKET_RIGHT_ARROW
+BRACKET_TILDE_RIGHT_ARROW
+COLON
+COMMA
+COMMERCIAL_AT
+CONCATENATION_OPERATOR
+DOLLAR_SIGN
+DOUBLE_COLON
+DOUBLE_DOLLAR_SIGN
+DOUBLE_PERIOD
+DOUBLE_QUOTE
+DOUBLE_QUOTED_CHARACTER_SEQUENCE
+EQUALS_OPERATOR
+EXCLAMATION_MARK
+GREATER_THAN_OR_EQUALS_OPERATOR
+LEFT_ANGLE_BRACKET
+LEFT_ARROW
+LEFT_BRACE
+LEFT_BRACKET
+LEFT_MINUS_RIGHT
+LEFT_MINUS_SLASH
+LEFT_PAREN
+LEFT_TILDE_SLASH
+LESS_THAN_OR_EQUALS_OPERATOR
+MINUS_LEFT_BRACKET
+MINUS_SIGN
+PERIOD
+PLUS_SIGN
+REVERSE_SOLIDUS
+RIGHT_ANGLE_BRACKET
+RIGHT_ARROW
+RIGHT_BRACE
+RIGHT_BRACKET
+RIGHT_BRACKET_MINUS
+RIGHT_BRACKET_TILDE
+RIGHT_DOUBLE_ARROW
+RIGHT_PAREN
+SINGLE_QUOTED_CHARACTER_SEQUENCE
+SLASH_MINUS
+SLASH_MINUS_RIGHT
+SLASH_TILDE
+SLASH_TILDE_RIGHT
+SOLIDUS
+TILDE
+TILDE_LEFT_BRACKET
+TILDE_RIGHT_ARROW
+TILDE_SLASH
+UNDERSCORE
+VERTICAL_BAR
+
+# Keywords
+ABSTRACT
+ALL
+ALTER
+AND
+ANY
+ARRAY
+AS
+ASC
+ASCENDING
+AT
+BIG
+BINARY
+BINDING
+BINDINGS
+BOTH
+CALL
+CATALOG
+CLEAR
+CLONE
+CLOSE
+COMMIT
+CONSTRAINT
+CREATE
+CURRENT_PROPERTY_GRAPH
+CURRENT_SCHEMA
+DELETE
+DESC
+DESCENDING
+DETACH
+DIFFERENT
+DIRECTED
+DIRECTORY
+DISTINCT
+DROP
+DRYRUN
+ELEMENTS
+EXCEPT
+EXISTING
+EXISTS
+FALSE
+FILTER
+FINISH
+FIRST
+FROM
+FUNCTION
+GENERAL_PARAMETER_REFERENCE
+GRANT
+GROUP
+GROUPS
+HAVING
+HOME_GRAPH
+HOME_PROPERTY_GRAPH
+HOME_SCHEMA
+IN
+INSERT
+INTERSECT
+IS
+KEEP
+LABELED
+LAST
+LEADING
+LEFT
+LEFT_ARROW_BRACKET
+LEFT_ARROW_TILDE
+LIKE
+LIST
+MATCH
+NOT
+NOTHING
+NULL
+NULLIF
+OF
+ON
+ONLY
+OPEN
+OPTIONAL
+OR
+ORDER
+ORDINALITY
+OTHERWISE
+PARENT
+PARENTHESIZED
+PATH
+PATHS
+PRECISION
+PRIMARY
+PRIORITY
+PROCEDURE
+PRODUCT
+PROPERTIES
+PROPERTY
+PROPERTY_EXISTS
+QUANTIFIER
+REFERENCE
+REFERENCES
+REFLECT
+REGULAR
+REMOVE
+RENAME
+REPEATABLE
+REPLACE
+RESET
+RETURN
+REVOKE
+RIGHT
+ROLLBACK
+SAME
+SCHEMA
+SELECT
+SESSION
+SET
+SHORTEST
+SIGNED
+SIMPLE
+SIMPLE_COMMENT_MINUS
+SIMPLE_COMMENT_SOLIDUS
+SOURCE
+SP
+START
+SUBSTITUTED_PARAMETER_REFERENCE
+TABLE
+TO
+TRAIL
+TRAILING
+TRANSACTION
+TRUE
+TYPED
+UNDIRECTED
+UNION
+UNIQUE
+UNIT
+UNSIGNED
+USE
+USING
+VERTEX
+WALK
+WHERE
+WHITESPACE
+WITH
+WITHOUT
+WRITE
+XOR
+YIELD
+ZONE
+
+
+# Control Flow
+BREAK
+CASE
+CONTINUE
+DO
+ELSE
+END
+FOR
+IF
+IMPLIES
+LOOP
+RETURN
+THEN
+WHEN
+WHILE
+
+# Miscellaneous
+ACCENT_QUOTED_CHARACTER_SEQUENCE
+ACYCLIC
+CURRENT_DATE
+CURRENT_GRAPH
+CURRENT_ROLE
+CURRENT_TIME
+CURRENT_TIMESTAMP
+CURRENT_USER
+EDGE
+EDGES
+GQLSTATUS
+GRAPH
+GRAVE_ACCENT
+LABEL
+LABELS
+NODE
+NODES
+RELATIONSHIP
+RELATIONSHIPS
+SESSION_USER
+SYSTEM_USER
+TYPE
+VARIABLE
--- /dev/null
+ABS
+ABSTRACT
+ACCENT_QUOTED_CHARACTER_SEQUENCE
+ACOS
+ACYCLIC
+AGGREGATE
+AGGREGATES
+ALL
+ALL_DIFFERENT
+ALTER
+AMPERSAND
+AND
+ANY
+ARRAY
+AS
+ASC
+ASCENDING
+ASIN
+ASTERISK
+AT
+ATAN
+AVG
+BIG
+BIGINT
+BINARY
+BINDING
+BINDINGS
+BOOL
+BOOLEAN
+BOOLEAN_LITERAL
+BOTH
+BRACKETED_COMMENT
+BRACKET_RIGHT_ARROW
+BRACKET_TILDE_RIGHT_ARROW
+BTRIM
+BY
+BYTES
+BYTE_LENGTH
+BYTE_STRING_LITERAL
+CALL
+CARDINALITY
+CASE
+CAST
+CATALOG
+CEIL
+CEILING
+CHAR
+CHARACTERISTICS
+CHARACTER_LENGTH
+CHAR_LENGTH
+CLEAR
+CLONE
+CLOSE
+COALESCE
+COLLECT_LIST
+COLON
+COMMA
+COMMERCIAL_AT
+COMMIT
+CONCATENATION_OPERATOR
+CONNECTING
+CONSTRAINT
+COPY
+COS
+COSH
+COT
+COUNT
+CREATE
+CURRENT_DATE
+CURRENT_GRAPH
+CURRENT_PROPERTY_GRAPH
+CURRENT_ROLE
+CURRENT_SCHEMA
+CURRENT_TIME
+CURRENT_TIMESTAMP
+CURRENT_USER
+DATA
+DATE
+DATETIME
+DAY
+DEC
+DECIMAL
+DEGREES
+DELETE
+DESC
+DESCENDING
+DESTINATION
+DETACH
+DIFFERENT
+DIRECTED
+DIRECTORY
+DISTINCT
+DOLLAR_SIGN
+DOUBLE
+DOUBLE_COLON
+DOUBLE_DOLLAR_SIGN
+DOUBLE_PERIOD
+DOUBLE_QUOTE
+DOUBLE_QUOTED_CHARACTER_SEQUENCE
+DROP
+DRYRUN
+DURATION
+DURATION_BETWEEN
+EDGE
+EDGES
+ELEMENT
+ELEMENTS
+ELEMENT_ID
+ELSE
+END
+EQUALS_OPERATOR
+EXACT
+EXCEPT
+EXCLAMATION_MARK
+EXISTING
+EXISTS
+EXP
+FILTER
+FINISH
+FIRST
+FLOAT
+FLOOR
+FOR
+FROM
+FUNCTION
+GENERAL_PARAMETER_REFERENCE
+GQLSTATUS
+GRANT
+GRAPH
+GRAVE_ACCENT
+GREATER_THAN_OR_EQUALS_OPERATOR
+GROUP
+GROUPS
+HAVING
+HOME_GRAPH
+HOME_PROPERTY_GRAPH
+HOME_SCHEMA
+HOUR
+IF
+IMPLIES
+IN
+INFINITY
+INSERT
+INSTANT
+INT
+INTEGER
+INTERSECT
+INTERVAL
+IS
+KEEP
+LABEL
+LABELED
+LABELS
+LAST
+LEADING
+LEFT
+LEFT_ANGLE_BRACKET
+LEFT_ARROW
+LEFT_ARROW_BRACKET
+LEFT_ARROW_TILDE
+LEFT_BRACE
+LEFT_BRACKET
+LEFT_MINUS_RIGHT
+LEFT_MINUS_SLASH
+LEFT_PAREN
+LEFT_TILDE_SLASH
+LESS_THAN_OR_EQUALS_OPERATOR
+LIKE
+LIST
+LOG
+LOG10
+LOWER
+LTRIM
+MATCH
+MAX
+MIN
+MINUS_LEFT_BRACKET
+MINUS_SIGN
+MINUTE
+MOD
+MODULUS
+MONTH
+MULTISET_ALTERNATION_OPERATOR
+NFKC
+NFKD
+NODE
+NODETACH
+NORMALIZE
+NOT
+NOT_EQUALS_OPERATOR
+NOTHING
+NULL
+NULLIF
+NUMBER
+NUMERIC
+OCTET_LENGTH
+OF
+ON
+ONLY
+OPEN
+OPTIONAL
+OR
+ORDER
+ORDINALITY
+OTHERWISE
+PARENT
+PARENTHESIZED
+PATH
+PATHS
+PERCENT
+PERIOD
+PLUS_SIGN
+POWER
+PRECISION
+PRIMARY
+PRIORITY
+PROCEDURE
+PRODUCT
+PROPERTIES
+PROPERTY
+PROPERTY_EXISTS
+QUANTIFIER
+QUOTE
+RADIANS
+REAL
+REFERENCE
+REFERENCES
+REFLECT
+REGULAR
+REMOVE
+RENAME
+REPEATABLE
+REPLACE
+RESET
+RETURN
+REVERSE_SOLIDUS
+REVOKE
+RIGHT
+RIGHT_ANGLE_BRACKET
+RIGHT_ARROW
+RIGHT_BRACE
+RIGHT_BRACKET
+RIGHT_BRACKET_MINUS
+RIGHT_BRACKET_TILDE
+RIGHT_DOUBLE_ARROW
+RIGHT_PAREN
+ROLLBACK
+RTRIM
+SAME
+SCHEMA
+SECOND
+SELECT
+SESSION
+SESSION_USER
+SET
+SHORTEST
+SIGNED
+SIMPLE
+SIMPLE_COMMENT_MINUS
+SIMPLE_COMMENT_SOLIDUS
+SIN
+SINGLE_QUOTED_CHARACTER_SEQUENCE
+SINH
+SIZE
+SKIP_RESERVED_WORD
+SLASH_MINUS
+SLASH_MINUS_RIGHT
+SLASH_TILDE
+SLASH_TILDE_RIGHT
+SMALL
+SMALLINT
+SOLIDUS
+SOURCE
+SP
+SQRT
+START
+STDDEV_POP
+STDDEV_SAMP
+STRING
+SUBSTITUTED_PARAMETER_REFERENCE
+SUBSTRING
+SUM
+SYSTEM_USER
+TABLE
+TAN
+TANH
+TEMP
+TEMPORAL
+THEN
+TILDE
+TILDE_LEFT_BRACKET
+TILDE_RIGHT_ARROW
+TILDE_SLASH
+TIME
+TIMESTAMP
+TO
+TRAIL
+TRAILING
+TRANSACTION
+TRIM
+TYPE
+TYPED
+UBIGINT
+UINT
+UNDERSCORE
+UNDIRECTED
+UNION
+UNIQUE
+UNIT
+UNSIGNED
+UNSIGNED_BINARY_INTEGER
+UNSIGNED_DECIMAL_INTEGER
+UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX
+UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX
+UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX
+UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
+UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX
+UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX
+UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
+UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX
+UNSIGNED_HEXADECIMAL_INTEGER
+UNSIGNED_OCTAL_INTEGER
+UPPER
+USE
+USMALLINT
+VALUE
+VALUES
+VARBINARY
+VARCHAR
+VARIABLE
+VERTEX
+VERTICAL_BAR
+WALK
+WHEN
+WHERE
+WHITESPACE
+WITH
+WITHOUT
+WRITE
+XOR
+YEAR
+YIELD
+ZONE
+ZONED
+ZONED_DATETIME
+ZONED_TIME
+++ /dev/null
-
-This directory contains project management documentation. Find here information
-about the directory structure, tools used, and installation required for setting
-up the environment.
-
-The `lector` directory under `developer` has documentation for the code
-being developed.
+++ /dev/null
-**directory_structure.txt**
-
-# Property-Based Directory Naming
-
-We think of a directory name as being the value of a property, where this
-property is shared by each and every file in said directory.
-
-When developing programs, we use a number of tools that process files. In this
-context, these are common property values to think of files having in common:
-
-* `processed_by`
-* `category_processed_by`
-
-The `processed_by` property is also known as `input`, which is often shortened
-to `in`. For example, C files to be compiled are processed by `cc`, so `cc` is a
-fine name for the directory. Other names could be `processed_by_cc`, `cc_input`,
-or `cc_in`.
-
-When input files destined to be processed by more than one related program are
-mixed in a directory, we generalize to the category. For example, a directory
-holding a collection of both Rust and C files could be called `compiler`, where
-`compiler` is the property that the related processing programs have. A mix of
-interpreted scripts destined to be processed by different interpreters could be
-`interpreter`.
-
-Files directly loaded and run by the machine are `processed_by` the architecture
-(e.g., `x86`) or `category_processed_by` a `machine`.
-
-An interpreter creates machine code on-the-fly. Calling an interpreter is the
-final step in a development chain, similar to calling the loader for a machine
-file. So, let us call the loader or the interpreter an `executor`. Thus, files
-in such a mixed directory are to be processed by an executor.
-
-The processing of files in a collection can be done by a person. Such is the
-case of the directory used by developers when they work, hence such a directory
-is called `developer`.
-
-We run into a bit of a problem when there is no word in English for the role a
-person plays when processing files in a directory. Such is the case for a
-directory full of documentation. The term `reader` comes close, but when you
-think about it, everything is a reader. For example, a compiler reads its input
-files. I thought to appeal to Latin and use `lector`, which indeed would refer
-to a person. However, the term is not intuitive, and people who cannot find this
-documentation will not be reading it so as to understand this term.
-
-In such a situation, we can move on to other property values shared by the files
-in the directory:
-
-* `purpose_is`
-* `is_a`
-* `is X`
-* `owned_by`
-
-Each file in a documentation directory shares the purpose of being
-documentation, hence such directories are called `documentation`.
-
-
-# Implicit Property Name
-
-The property used when naming a directory is implicit, so coming up with a
-directory name is essentially a mental exercise. The reader of the directory
-name is left to figure out the shared property value the person had in mind when
-naming the directory.
-
-Adopting a convention makes the task of deriving the property name easier, but
-if this is still not sufficient, then integrate the property name into the the
-directory name along with the common value. `is_a_red_car`, might be full of
-files that are describing read cars. This examples enters the gray area between
-file systems and databases.
-
-Sometimes a directory name will be held in a variable in a script, and we need
-to further distinguish the fact that the variable is referring to a
-directory. For example, a variable that holds the name of the directory that
-holds files to be processed by `javac` can be called `javac_input_directory`, or
-for those who want to be swank, `javac_in_dir`.
-
-# Why Directory Names Are Often Singular
-
-Each and every file in a directory has the same property value for a given
-property. Hence, this property value comes from the property of a file,
-a single object.
-
-For example, if a directory is named `compiler`, it signifies that each file in
-the directory is `processed_by` a `compiler`.
-
-However, there can be cases where the property value, though it comes from an
-individual file, will be plural. For example, a directory could conceivably be
-named `insights`, where each file in the directory contains multiple
-insights. When we look at the property value for a single file, it is plural.
-
-# Hidden Files
-
-In my humble opinion, that git uses hidden files is unfortunate. In general, I
-find hidden files in shared projects to be a bad idea. The approach of using a
-symbolic link to give hidden files visible names creates a maintenance
-problem. The idea of setting explicit parameters for git can be used to force
-git to not create hidden files, but this approach does not expose other hidden
-files that might be placed into a project repository. There is also an issue of
-coordinating with other team members who want hidden files. Hence, a general
-solution that solves all these issues is to alias `ls` to `ls -a`, which is done
-in the environment initialization file for the project.
-
-
-<!-- LocalWords: lector
- -->
+++ /dev/null
-
-
-The work area for developers is the `developer` directory. All other subdirectories
-and files found at the top level are for project management.
-
-The best way to setup the environment and to enter the `developer` directory is
-to use the `repo` command found in RT's `resource` project. The `repo` command
-will start a new shell with the proper environment variables setup for the
-project, and nothing else.
-
-A project can also be entered by sourcing `env_dev` by running the command
-`. exector/env_dev` in a shell. `use_tool` is analogous to `activate` in Python.
-
-
-
-
-
+++ /dev/null
-This is a project management log. This is not a code development log. (Git does
-a pretty good job of that already.)
-
-2024-07-25
- formal git project directory creation
-
- Preparation, studies, and discussion occur before this time.
-
-
-
--- /dev/null
+
+This directory contains project management documentation. Find here information
+about the directory structure, tools used, and installation required for setting
+up the environment.
+
+The `lector` directory under `developer` has documentation for the code
+being developed.
--- /dev/null
+**directory_structure.txt**
+
+# Property-Based Directory Naming
+
+We think of a directory name as being the value of a property, where this
+property is shared by each and every file in said directory.
+
+When developing programs, we use a number of tools that process files. In this
+context, these are common property values to think of files having in common:
+
+* `processed_by`
+* `category_processed_by`
+
+The `processed_by` property is also known as `input`, which is often shortened
+to `in`. For example, C files to be compiled are processed by `cc`, so `cc` is a
+fine name for the directory. Other names could be `processed_by_cc`, `cc_input`,
+or `cc_in`.
+
+When input files destined to be processed by more than one related program are
+mixed in a directory, we generalize to the category. For example, a directory
+holding a collection of both Rust and C files could be called `compiler`, where
+`compiler` is the property that the related processing programs have. A mix of
+interpreted scripts destined to be processed by different interpreters could be
+`interpreter`.
+
+Files directly loaded and run by the machine are `processed_by` the architecture
+(e.g., `x86`) or `category_processed_by` a `machine`.
+
+An interpreter creates machine code on-the-fly. Calling an interpreter is the
+final step in a development chain, similar to calling the loader for a machine
+file. So, let us call the loader or the interpreter an `executor`. Thus, files
+in such a mixed directory are to be processed by an executor.
+
+The processing of files in a collection can be done by a person. Such is the
+case of the directory used by developers when they work, hence such a directory
+is called `developer`.
+
+We run into a bit of a problem when there is no word in English for the role a
+person plays when processing files in a directory. Such is the case for a
+directory full of documentation. The term `reader` comes close, but when you
+think about it, everything is a reader. For example, a compiler reads its input
+files. I thought to appeal to Latin and use `lector`, which indeed would refer
+to a person. However, the term is not intuitive, and people who cannot find this
+documentation will not be reading it so as to understand this term.
+
+In such a situation, we can move on to other property values shared by the files
+in the directory:
+
+* `purpose_is`
+* `is_a`
+* `is X`
+* `owned_by`
+
+Each file in a documentation directory shares the purpose of being
+documentation, hence such directories are called `documentation`.
+
+
+# Implicit Property Name
+
+The property used when naming a directory is implicit, so coming up with a
+directory name is essentially a mental exercise. The reader of the directory
+name is left to figure out the shared property value the person had in mind when
+naming the directory.
+
+Adopting a convention makes the task of deriving the property name easier, but
+if this is still not sufficient, then integrate the property name into the the
+directory name along with the common value. `is_a_red_car`, might be full of
+files that are describing read cars. This examples enters the gray area between
+file systems and databases.
+
+Sometimes a directory name will be held in a variable in a script, and we need
+to further distinguish the fact that the variable is referring to a
+directory. For example, a variable that holds the name of the directory that
+holds files to be processed by `javac` can be called `javac_input_directory`, or
+for those who want to be swank, `javac_in_dir`.
+
+# Why Directory Names Are Often Singular
+
+Each and every file in a directory has the same property value for a given
+property. Hence, this property value comes from the property of a file,
+a single object.
+
+For example, if a directory is named `compiler`, it signifies that each file in
+the directory is `processed_by` a `compiler`.
+
+However, there can be cases where the property value, though it comes from an
+individual file, will be plural. For example, a directory could conceivably be
+named `insights`, where each file in the directory contains multiple
+insights. When we look at the property value for a single file, it is plural.
+
+# Hidden Files
+
+In my humble opinion, that git uses hidden files is unfortunate. In general, I
+find hidden files in shared projects to be a bad idea. The approach of using a
+symbolic link to give hidden files visible names creates a maintenance
+problem. The idea of setting explicit parameters for git can be used to force
+git to not create hidden files, but this approach does not expose other hidden
+files that might be placed into a project repository. There is also an issue of
+coordinating with other team members who want hidden files. Hence, a general
+solution that solves all these issues is to alias `ls` to `ls -a`, which is done
+in the environment initialization file for the project.
+
+
+<!-- LocalWords: lector
+ -->
--- /dev/null
+
+
+The work area for developers is the `developer` directory. All other subdirectories
+and files found at the top level are for project management.
+
+The best way to setup the environment and to enter the `developer` directory is
+to use the `repo` command found in RT's `resource` project. The `repo` command
+will start a new shell with the proper environment variables setup for the
+project, and nothing else.
+
+A project can also be entered by sourcing `env_dev` by running the command
+`. exector/env_dev` in a shell. `use_tool` is analogous to `activate` in Python.
+
+
+
+
+
--- /dev/null
+This is a project management log. This is not a code development log. (Git does
+a pretty good job of that already.)
+
+2024-07-25
+ formal git project directory creation
+
+ Preparation, studies, and discussion occur before this time.
+
+
+