Skip to content

Commit

Permalink
Merge pull request #8 from LFrobeen/develop
Browse files Browse the repository at this point in the history
v2.0.0
  • Loading branch information
LFrobeen authored Apr 17, 2022
2 parents 03b829b + c088938 commit c7d2782
Show file tree
Hide file tree
Showing 33 changed files with 677 additions and 409 deletions.
9 changes: 6 additions & 3 deletions .idea/runConfigurations/Assemble.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## 2.0.0

### Syntax and Language Support
* Add support for base type syntax (#4).
* Add support `float` and `unsigned` data types.
* Fix parsing for aggregations; add `mean` aggregator.
* Improve support for parameters of `.input` and `.oudput` directives.

### Editor
* Fix syntax highlighting of `#include` directives.
* Fix bug in reference resolution logic (#3).
* Fix missing jump-to-relation line markers for fact statements.
* Improve jump-to-base / jump-to-sub-components line markers for components.
* Add quick-fix for replacing unused variables with wildcards in statements.

### Performance and Stability
* Replace usages of deprecated APIs (#6).
* Fix performance issues for line marker generation.
* Use latest IntelliJ Plugin SDK.

## 1.1.0
* Fix annotations for relation arity mistakes.
* Extend documentation parsing to all declaration types (e.g. preprocessor definitions, types, etc.).
Expand Down
142 changes: 67 additions & 75 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,33 +1,22 @@
import org.gradle.api.internal.HasConvention
import org.jetbrains.grammarkit.tasks.GenerateLexer
import org.jetbrains.grammarkit.tasks.GenerateParser
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.grammarkit.tasks.GenerateLexerTask
import org.jetbrains.grammarkit.tasks.GenerateParserTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

val ideaVersion = "2018.3.3" //prop("ideaVersion")
val ideaVersion = "2021.3.1" //prop("ideaVersion")


repositories {
mavenCentral()
maven("https://dl.bintray.com/jetbrains/markdown")
maven("https://plugins.gradle.org/m2/")
}
group = "com.lfrobeen"
version = "2.0.0"

plugins {
idea
kotlin("jvm") version "1.3.30"
id("org.jetbrains.intellij") version "0.4.7"
id("org.jetbrains.grammarkit") version "2018.3"
kotlin("jvm") version "1.6.20"
id("org.jetbrains.intellij") version "1.5.2"
id("org.jetbrains.grammarkit") version "2021.2.2"
id("de.undercouch.download") version "3.4.3"
id("net.saliman.properties") version "1.4.6"
id("com.palantir.git-version") version "0.11.0"
}

idea {
module {
generatedSourceDirs.add(file("src/main/gen"))
}
}

apply {
plugin("idea")
Expand All @@ -36,82 +25,85 @@ apply {
plugin("org.jetbrains.intellij")
}

group = "com.lfrobeen"
version = "1.1.0"
repositories {
mavenCentral()
maven("https://dl.bintray.com/jetbrains/markdown")
maven("https://plugins.gradle.org/m2/")
}

idea {
module {
generatedSourceDirs.add(file("src/main/gen"))
}
}

intellij {
pluginName = "intellij-datalog"
pluginName.set("intellij-datalog")
version.set(ideaVersion)
updateSinceUntilBuild.set(false)
instrumentCode.set(false)

version = ideaVersion
updateSinceUntilBuild = false
instrumentCode = false
// https://plugins.jetbrains.com/docs/intellij/annotator.html#required-project-configuration-changes
// plugins.set(listOf("com.intellij.java"))
}


val generateLexer = task<GenerateLexer>("generateLexer") {
source = "src/main/grammars/datalog.flex"
targetDir = "src/main/gen/com/lfrobeen/datalog/lang/lexer"
targetClass = "DatalogLexer"
purgeOldFiles = true
configure<JavaPluginExtension> {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

val generateParser = task<GenerateParser>("generateParser") {
source = "src/main/grammars/datalog.bnf"
targetRoot = "src/main/gen"
pathToParser = "/datalog/lang/parser/DatalogParser.java"
pathToPsiRoot = "/datalog/lang/psi"
purgeOldFiles = true
sourceSets {
main {
java.srcDirs("src/main/gen")
resources.srcDirs("src/main/resources")
}
test {
resources.srcDirs("src/test/resources")
}
}

tasks.withType<KotlinCompile> {
kotlinOptions {
jvmTarget = "1.8"
languageVersion = "1.3"
apiVersion = "1.3"
freeCompilerArgs = listOf("-Xjvm-default=enable")
kotlin {
sourceSets {
main {
kotlin.srcDirs("src/main/kotlin")
}
test {
kotlin.srcDirs("src/test/kotlin")
}
}
}

dependsOn(
generateLexer,
generateParser
)
val generateDatalogLexer = task<GenerateLexerTask>("generateDatalogLexer") {
source.set("src/main/grammars/datalog.flex")
targetDir.set("src/main/gen/com/lfrobeen/datalog/lang/lexer")
targetClass.set("DatalogLexer")
purgeOldFiles.set(true)
}

configure<JavaPluginConvention> {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
val generateDatalogParser = task<GenerateParserTask>("generateDatalogParser") {
source.set("src/main/grammars/datalog.bnf")
targetRoot.set("src/main/gen")
pathToParser.set("/datalog/lang/parser/DatalogParser.java")
pathToPsiRoot.set("/datalog/lang/psi")
purgeOldFiles.set(true)
}


tasks.withType<KotlinCompile> {
kotlinOptions {
jvmTarget = "1.8"
languageVersion = "1.3"
apiVersion = "1.3"
freeCompilerArgs = listOf("-Xjvm-default=enable")
jvmTarget = "11"
languageVersion = "1.6"
apiVersion = "1.5"
freeCompilerArgs = listOf("-Xjvm-default=all")
}
}

configure<JavaPluginConvention> {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
dependsOn(
generateDatalogLexer,
generateDatalogParser
)
}

sourceSets {
main {
java.srcDirs("src/main/gen")
kotlin.srcDirs("src/main/kotlin")
resources.srcDirs("src/main/resources")
}
test {
kotlin.srcDirs("src/test/kotlin")
resources.srcDirs("src/test/resources")
}
}

val SourceSet.kotlin: SourceDirectorySet
get() =
(this as HasConvention)
.convention
.getPlugin(KotlinSourceSet::class.java)
.kotlin
tasks.withType<Copy> {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
55 changes: 34 additions & 21 deletions gradlew
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
#!/usr/bin/env sh

#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

##############################################################################
##
## Gradle start up script for UN*X
Expand Down Expand Up @@ -28,7 +44,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m"'
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
Expand Down Expand Up @@ -56,7 +72,7 @@ case "`uname`" in
Darwin* )
darwin=true
;;
MINGW* )
MSYS* | MINGW* )
msys=true
;;
NONSTOP* )
Expand All @@ -66,6 +82,7 @@ esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar


# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
Expand Down Expand Up @@ -109,10 +126,11 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`

JAVACMD=`cygpath --unix "$JAVACMD"`

# We build the pattern for arguments to be converted via cygpath
Expand All @@ -138,19 +156,19 @@ if $cygwin ; then
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
i=`expr $i + 1`
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi

Expand All @@ -159,14 +177,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
APP_ARGS=`save "$@"`

# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"

# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi

exec "$JAVACMD" "$@"
Loading

0 comments on commit c7d2782

Please sign in to comment.