From: Thomas Walker Lynch Date: Wed, 4 Sep 2024 05:33:03 +0000 (+0000) Subject: rm deprecated files, makefile tweaks, documentation is for the ologist .. dunno X-Git-Url: https://git.reasoningtechnology.com/usr/lib/python2.7/encodings/punycode.py?a=commitdiff_plain;h=1d82cd8e431298dc4d441944af16a70ceb3f7425;p=GQL-to-Cypher rm deprecated files, makefile tweaks, documentation is for the ologist .. dunno --- diff --git a/developer/deprecated/build.gradle b/developer/deprecated/build.gradle deleted file mode 100644 index 50966c6..0000000 --- a/developer/deprecated/build.gradle +++ /dev/null @@ -1,269 +0,0 @@ -// 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=" - } - } -} - -// 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=" - } - } -} - -// 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=" - } - } -} - -// 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=" - } - } -} - -// Define tasks for each program -task buildPrintRuleNameList { - dependsOn setup, 'generateGQLGrammar', compileJava -} - -task buildSyntaxTreeTest { - dependsOn setup, 'generateSyntaxTreeGrammar', compileJava -} - -task buildSyntaxTree20240412 { - dependsOn setup, 'generateSyntaxTree20240412Grammar', compileJava -} diff --git a/developer/deprecated/env_build_2 b/developer/deprecated/env_build_2 deleted file mode 100755 index ea2ba30..0000000 --- a/developer/deprecated/env_build_2 +++ /dev/null @@ -1,127 +0,0 @@ -#!/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__FPL to a list of -# files that ANTLR would produce for . -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__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 - diff --git a/developer/deprecated/makefil_clean b/developer/deprecated/makefil_clean deleted file mode 100644 index 7cc647e..0000000 --- a/developer/deprecated/makefil_clean +++ /dev/null @@ -1,105 +0,0 @@ -# 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/ and ./jvm/ for all programs. -# clean:class - class files -# clean:grammar - all generated grammar files - -# 2. -# clean:program: -# similear to clean:program, but only for the named program - -# clean:program+: -# bascially clean:all but only for the named program - -# clean:program-: -# baiscally clean:all- but only for the named program - -# 3. clean:grammar: -# 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[+/-][:] | grammar[:] | 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[+/-][:] | grammar[:] | 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,$*) diff --git a/developer/deprecated/makefile3 b/developer/deprecated/makefile3 deleted file mode 100644 index 251ac90..0000000 --- a/developer/deprecated/makefile3 +++ /dev/null @@ -1,84 +0,0 @@ -#================================================================================ -# 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 -# 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/$*" - - diff --git a/developer/deprecated/makefile4 b/developer/deprecated/makefile4 deleted file mode 100644 index 288194f..0000000 --- a/developer/deprecated/makefile4 +++ /dev/null @@ -1,102 +0,0 @@ -# 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: - @: diff --git a/developer/deprecated/makefile_0 b/developer/deprecated/makefile_0 deleted file mode 100644 index 5cea41c..0000000 --- a/developer/deprecated/makefile_0 +++ /dev/null @@ -1,237 +0,0 @@ -# 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__FL to a list of -# files that ANTLR would produce for . -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__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 -# e.g. > make GQL_test -# Specific grammar targets. Run them like this: -# > make -# e.g. > make GQL_test - -# Specific grammar targets. Run them like this: -# > make -# 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 - diff --git a/developer/deprecated/makefile_1 b/developer/deprecated/makefile_1 deleted file mode 100644 index 68ff7c0..0000000 --- a/developer/deprecated/makefile_1 +++ /dev/null @@ -1,323 +0,0 @@ -# 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 `.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__FPL to a list of -# files that ANTLR would produce for . -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__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 -# 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/ and ./jvm/ for all programs. -# clean:class - class files -# clean:grammar - all generated grammar files - -# 2. -# clean:program: -# similear to clean:program, but only for the named program - -# clean:program+: -# bascially clean:all but only for the named program - -# clean:program-: -# baiscally clean:all- but only for the named program - -# 3. clean:grammar: -# 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[+/-][:] | grammar[:] | 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[+/-][:] | grammar[:] | 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 diff --git a/developer/documentation/#rule_list.txt# b/developer/documentation/#rule_list.txt# deleted file mode 100644 index dd9812e..0000000 --- a/developer/documentation/#rule_list.txt# +++ /dev/null @@ -1,368 +0,0 @@ -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 diff --git a/developer/documentation/.githolder b/developer/documentation/.githolder deleted file mode 100644 index e69de29..0000000 diff --git a/developer/documentation/Cypher_GQL_differences.txt b/developer/documentation/Cypher_GQL_differences.txt deleted file mode 100644 index 227a5bf..0000000 --- a/developer/documentation/Cypher_GQL_differences.txt +++ /dev/null @@ -1,62 +0,0 @@ -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) diff --git a/developer/documentation/GQL_20240412_rule_list.txt b/developer/documentation/GQL_20240412_rule_list.txt deleted file mode 100644 index 729a7e6..0000000 --- a/developer/documentation/GQL_20240412_rule_list.txt +++ /dev/null @@ -1,215 +0,0 @@ -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 ​​ - - - - - - - diff --git a/developer/documentation/rule_list.txt b/developer/documentation/rule_list.txt deleted file mode 100644 index 79457ec..0000000 --- a/developer/documentation/rule_list.txt +++ /dev/null @@ -1,368 +0,0 @@ -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 diff --git a/developer/documentation/rules_by_catebory.txt b/developer/documentation/rules_by_catebory.txt deleted file mode 100644 index 729f885..0000000 --- a/developer/documentation/rules_by_catebory.txt +++ /dev/null @@ -1,40 +0,0 @@ - -#-------------------------------------------------------------------------------- -# 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 - diff --git a/developer/documentation/rules_by_category.html b/developer/documentation/rules_by_category.html deleted file mode 100644 index 5e28fc0..0000000 --- a/developer/documentation/rules_by_category.html +++ /dev/null @@ -1,101 +0,0 @@ - -

Data Types

-
    -
  • signedBinaryExactNumericType
  • -
  • BYTE_STRING_LITERAL
  • -
  • decimalExactNumericType
  • -
  • booleanType
  • -
  • INT256
  • -
  • FLOAT256
  • -
  • DATETIME
  • -
  • BOOLEAN
  • -
  • VARCHAR
  • -
  • UNSIGNED_INTEGER
  • -
  • numericValueExpressionDividend
  • -
-

Identifiers and References

-
    -
  • labelName
  • -
  • bindingVariable
  • -
  • nodeTypeLabelSet
  • -
  • absoluteCatalogSchemaReference
  • -
  • destinationNodeTypeAlias
  • -
  • graphTypeReference
  • -
-

Modifiers and Qualifiers

-
    -
  • DISTINCT
  • -
  • setQuantifier
  • -
  • simplifiedDefaultingRight
  • -
  • WITH
  • -
  • sessionSetSchemaClause
  • -
  • sessionSetParameterClause
  • -
  • fixedQuantifier
  • -
-

Functions

-
    -
  • LOG10
  • -
  • FLOOR
  • -
  • characterOrByteStringFunction
  • -
  • ceilingFunction
  • -
  • trigonometricFunction
  • -
  • durationFunction
  • -
  • datetimeFunction
  • -
  • generalSetFunction
  • -
  • functionCall
  • -
-

Expressions and Operators

-
    -
  • booleanValueExpression
  • -
  • commonLogarithm
  • -
  • comparisonPredicatePart2
  • -
  • naturalLogarithm
  • -
  • powerFunction
  • -
  • SIN
  • -
  • MINUS_LEFT_BRACKET
  • -
  • UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
  • -
  • simplifiedOverrideRight
  • -
-

Commands and Statements

-
    -
  • SELECT
  • -
  • INSERT
  • -
  • CREATE
  • -
  • DROP
  • -
  • ROLLBACK
  • -
  • simpleMatchStatement
  • -
  • sessionSetCommand
  • -
  • matchStatement
  • -
  • matchStatementBlock
  • -
  • createGraphStatement
  • -
-

Patterns and Matching

-
    -
  • simpleMatchStatement
  • -
  • pathPattern
  • -
  • elementPatternPredicate
  • -
  • graphPatternYieldClause
  • -
  • graphPatternBindingTable
  • -
  • pathPrimary
  • -
  • pathOrPaths
  • -
  • simplifiedPathUnion
  • -
-

Structures and Schema

-
    -
  • procedureSpecification
  • -
  • compositeQueryPrimary
  • -
  • procedureBody
  • -
  • linearCatalogModifyingStatement
  • -
  • graphInitializer
  • -
  • schemaReference
  • -
-

Miscellaneous

-
    -
  • LEFT_ARROW_TILDE
  • -
  • SIMPLE_COMMENT_MINUS
  • -
  • optionalMatchStatement
  • -
  • UNIQUE
  • -
  • optionalOperand
  • -
  • simplifiedContents
  • -
-
diff --git a/developer/documentation/terminal_symbol_list.txt b/developer/documentation/terminal_symbol_list.txt deleted file mode 100644 index 14946b0..0000000 --- a/developer/documentation/terminal_symbol_list.txt +++ /dev/null @@ -1,361 +0,0 @@ -#-------------------------------------------------------------------------------- -# 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 diff --git a/developer/documentation/terminal_symbol_list_unsorted.txt b/developer/documentation/terminal_symbol_list_unsorted.txt deleted file mode 100644 index 80be8af..0000000 --- a/developer/documentation/terminal_symbol_list_unsorted.txt +++ /dev/null @@ -1,346 +0,0 @@ -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 diff --git a/developer/executor/#makefile-project.mk# b/developer/executor/#makefile-project.mk# new file mode 100644 index 0000000..42ba4ce --- /dev/null +++ b/developer/executor/#makefile-project.mk# @@ -0,0 +1,117 @@ +#================================================================================ +# 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)/$*" diff --git a/developer/executor/env_build b/developer/executor/env_build index fa99ac5..b8f9ef1 100755 --- a/developer/executor/env_build +++ b/developer/executor/env_build @@ -18,6 +18,12 @@ fi # _IN things input to some program # _OUT things output by some program +#-------------------------------------------------------------------------------- +# commands + +export BIN_MAKE=/bin/make + + #-------------------------------------------------------------------------------- # to be built diff --git a/developer/executor/make b/developer/executor/make index 02e3b57..a556a0f 100755 --- a/developer/executor/make +++ b/developer/executor/make @@ -12,4 +12,4 @@ cd "$DEVELOPER_HOME" # 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 $@ diff --git a/developer/executor/makefile b/developer/executor/makefile deleted file mode 100644 index d5b6644..0000000 --- a/developer/executor/makefile +++ /dev/null @@ -1,27 +0,0 @@ -# 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) diff --git a/developer/executor/makefile-project b/developer/executor/makefile-project deleted file mode 100644 index 0826e62..0000000 --- a/developer/executor/makefile-project +++ /dev/null @@ -1,117 +0,0 @@ -#================================================================================ -# 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 -# 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)/$*" diff --git a/developer/executor/makefile-project.mk b/developer/executor/makefile-project.mk new file mode 100644 index 0000000..ea61056 --- /dev/null +++ b/developer/executor/makefile-project.mk @@ -0,0 +1,126 @@ +#================================================================================ +# 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)/$*" diff --git a/developer/executor/makefile-tool b/developer/executor/makefile-tool deleted file mode 100644 index 4ee0f48..0000000 --- a/developer/executor/makefile-tool +++ /dev/null @@ -1,35 +0,0 @@ -#================================================================================ -# 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)/$*" diff --git a/developer/executor/makefile-tool.mk b/developer/executor/makefile-tool.mk new file mode 100644 index 0000000..4ee0f48 --- /dev/null +++ b/developer/executor/makefile-tool.mk @@ -0,0 +1,35 @@ +#================================================================================ +# 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)/$*" diff --git a/developer/executor/makefile-top.mk b/developer/executor/makefile-top.mk new file mode 100644 index 0000000..b4fef26 --- /dev/null +++ b/developer/executor/makefile-top.mk @@ -0,0 +1,33 @@ +$(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) $@ diff --git a/developer/ologist/#rule_list.txt# b/developer/ologist/#rule_list.txt# new file mode 100644 index 0000000..dd9812e --- /dev/null +++ b/developer/ologist/#rule_list.txt# @@ -0,0 +1,368 @@ +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 diff --git a/developer/ologist/.githolder b/developer/ologist/.githolder new file mode 100644 index 0000000..e69de29 diff --git a/developer/ologist/Cypher_GQL_differences.txt b/developer/ologist/Cypher_GQL_differences.txt new file mode 100644 index 0000000..227a5bf --- /dev/null +++ b/developer/ologist/Cypher_GQL_differences.txt @@ -0,0 +1,62 @@ +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) diff --git a/developer/ologist/GQL_20240412_rule_list.txt b/developer/ologist/GQL_20240412_rule_list.txt new file mode 100644 index 0000000..729a7e6 --- /dev/null +++ b/developer/ologist/GQL_20240412_rule_list.txt @@ -0,0 +1,215 @@ +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 ​​ + + + + + + + diff --git a/developer/ologist/rule_list.txt b/developer/ologist/rule_list.txt new file mode 100644 index 0000000..79457ec --- /dev/null +++ b/developer/ologist/rule_list.txt @@ -0,0 +1,368 @@ +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 diff --git a/developer/ologist/rules_by_catebory.txt b/developer/ologist/rules_by_catebory.txt new file mode 100644 index 0000000..729f885 --- /dev/null +++ b/developer/ologist/rules_by_catebory.txt @@ -0,0 +1,40 @@ + +#-------------------------------------------------------------------------------- +# 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 + diff --git a/developer/ologist/rules_by_category.html b/developer/ologist/rules_by_category.html new file mode 100644 index 0000000..5e28fc0 --- /dev/null +++ b/developer/ologist/rules_by_category.html @@ -0,0 +1,101 @@ + +

Data Types

+
    +
  • signedBinaryExactNumericType
  • +
  • BYTE_STRING_LITERAL
  • +
  • decimalExactNumericType
  • +
  • booleanType
  • +
  • INT256
  • +
  • FLOAT256
  • +
  • DATETIME
  • +
  • BOOLEAN
  • +
  • VARCHAR
  • +
  • UNSIGNED_INTEGER
  • +
  • numericValueExpressionDividend
  • +
+

Identifiers and References

+
    +
  • labelName
  • +
  • bindingVariable
  • +
  • nodeTypeLabelSet
  • +
  • absoluteCatalogSchemaReference
  • +
  • destinationNodeTypeAlias
  • +
  • graphTypeReference
  • +
+

Modifiers and Qualifiers

+
    +
  • DISTINCT
  • +
  • setQuantifier
  • +
  • simplifiedDefaultingRight
  • +
  • WITH
  • +
  • sessionSetSchemaClause
  • +
  • sessionSetParameterClause
  • +
  • fixedQuantifier
  • +
+

Functions

+
    +
  • LOG10
  • +
  • FLOOR
  • +
  • characterOrByteStringFunction
  • +
  • ceilingFunction
  • +
  • trigonometricFunction
  • +
  • durationFunction
  • +
  • datetimeFunction
  • +
  • generalSetFunction
  • +
  • functionCall
  • +
+

Expressions and Operators

+
    +
  • booleanValueExpression
  • +
  • commonLogarithm
  • +
  • comparisonPredicatePart2
  • +
  • naturalLogarithm
  • +
  • powerFunction
  • +
  • SIN
  • +
  • MINUS_LEFT_BRACKET
  • +
  • UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX
  • +
  • simplifiedOverrideRight
  • +
+

Commands and Statements

+
    +
  • SELECT
  • +
  • INSERT
  • +
  • CREATE
  • +
  • DROP
  • +
  • ROLLBACK
  • +
  • simpleMatchStatement
  • +
  • sessionSetCommand
  • +
  • matchStatement
  • +
  • matchStatementBlock
  • +
  • createGraphStatement
  • +
+

Patterns and Matching

+
    +
  • simpleMatchStatement
  • +
  • pathPattern
  • +
  • elementPatternPredicate
  • +
  • graphPatternYieldClause
  • +
  • graphPatternBindingTable
  • +
  • pathPrimary
  • +
  • pathOrPaths
  • +
  • simplifiedPathUnion
  • +
+

Structures and Schema

+
    +
  • procedureSpecification
  • +
  • compositeQueryPrimary
  • +
  • procedureBody
  • +
  • linearCatalogModifyingStatement
  • +
  • graphInitializer
  • +
  • schemaReference
  • +
+

Miscellaneous

+
    +
  • LEFT_ARROW_TILDE
  • +
  • SIMPLE_COMMENT_MINUS
  • +
  • optionalMatchStatement
  • +
  • UNIQUE
  • +
  • optionalOperand
  • +
  • simplifiedContents
  • +
+
diff --git a/developer/ologist/terminal_symbol_list.txt b/developer/ologist/terminal_symbol_list.txt new file mode 100644 index 0000000..14946b0 --- /dev/null +++ b/developer/ologist/terminal_symbol_list.txt @@ -0,0 +1,361 @@ +#-------------------------------------------------------------------------------- +# 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 diff --git a/developer/ologist/terminal_symbol_list_unsorted.txt b/developer/ologist/terminal_symbol_list_unsorted.txt new file mode 100644 index 0000000..80be8af --- /dev/null +++ b/developer/ologist/terminal_symbol_list_unsorted.txt @@ -0,0 +1,346 @@ +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 diff --git a/documentation/README.md b/documentation/README.md deleted file mode 100644 index 21b4176..0000000 --- a/documentation/README.md +++ /dev/null @@ -1,7 +0,0 @@ - -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. diff --git a/documentation/directory_structure.md b/documentation/directory_structure.md deleted file mode 100644 index 8755bcb..0000000 --- a/documentation/directory_structure.md +++ /dev/null @@ -1,105 +0,0 @@ -**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. - - - diff --git a/documentation/for_developers.md b/documentation/for_developers.md deleted file mode 100644 index c702f7f..0000000 --- a/documentation/for_developers.md +++ /dev/null @@ -1,17 +0,0 @@ - - -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. - - - - - diff --git a/documentation/log.md b/documentation/log.md deleted file mode 100644 index 9df41ca..0000000 --- a/documentation/log.md +++ /dev/null @@ -1,10 +0,0 @@ -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. - - - diff --git a/ologist/README.md b/ologist/README.md new file mode 100644 index 0000000..21b4176 --- /dev/null +++ b/ologist/README.md @@ -0,0 +1,7 @@ + +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. diff --git a/ologist/directory_structure.md b/ologist/directory_structure.md new file mode 100644 index 0000000..8755bcb --- /dev/null +++ b/ologist/directory_structure.md @@ -0,0 +1,105 @@ +**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. + + + diff --git a/ologist/for_developers.md b/ologist/for_developers.md new file mode 100644 index 0000000..c702f7f --- /dev/null +++ b/ologist/for_developers.md @@ -0,0 +1,17 @@ + + +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. + + + + + diff --git a/ologist/log.md b/ologist/log.md new file mode 100644 index 0000000..9df41ca --- /dev/null +++ b/ologist/log.md @@ -0,0 +1,10 @@ +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. + + +