diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..a45db48e146596da3c7d69b124388500998ed5f3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +insert_final_newline = true diff --git a/.gitignore b/.gitignore index 6aa49287512956886644f7ee8924b01287e203b7..272dd3d2d290b6bb43c9a33afbbdaf16cb1bc894 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,9 @@ +# Gradle +.gradle/ build/ -ParserAspects/ -bin/ + +# Eclipse .classpath .project -.settings/org.eclipse.jdt.core.prefs -.gradle/ -logs/ -*.swp -*.log -*~ -! .gitkeep -.DS_Store -tmp/ -PROB_LOGFILE_IS_UNDEFINED -.settings/org.eclipse.jdt.ui.prefs -src/main/resources/build.properties -config.groovy -local.* -Version.java +.settings +/bin/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..fee584bb12a1f469b89d6d8721ed67bb6ef7242d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,39 @@ +image: openjdk:8-jdk-slim + +stages: + - test + - deploy + +variables: + GRADLE_OPTIONS: --no-daemon --info --stacktrace --warning-mode=all + +cache: + paths: + - .gradle/wrapper + - .gradle/caches + +before_script: + - export GRADLE_USER_HOME=`pwd`/.gradle + +tests: + stage: test + script: ./gradlew ${GRADLE_OPTIONS} check + +tests:jdk-11: + extends: tests + image: openjdk:11-jdk-slim + +tests:jdk-14: + extends: tests + image: openjdk:14-jdk-slim + +publish: + stage: deploy + script: + - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -d -a -md md5 -in secring.gpg.enc -out secring.gpg + - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -d -a -md md5 -in pubring.gpg.enc -out pubring.gpg + - openssl aes-256-cbc -pass "env:ENCRYPTION_PASSWORD" -d -a -md md5 -in gradle.properties.enc -out gradle.properties + - ./gradlew ${GRADLE_OPTIONS} publish + only: + - master@general/stups/sablecc-stups + - develop@general/stups/sablecc-stups diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ca877fc8ab5ea36c00b4210e6a204592e624dc66..0000000000000000000000000000000000000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: java - -before_install: -- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in secring.gpg.enc -out secring.gpg -d -- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in pubring.gpg.enc -out pubring.gpg -d -- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in gradle.properties.enc -out gradle.properties -d - -script: gradle uploadArchives - -env: - global: - secure: kFKnWpX4wkRGZ6gdP5Y7Nl/Gd5EZYYuJfv8qU2wfullMfLxeB/N1ANhUVqS+pP9oTbA52SHy7gzHTKxk4aeYBgPoiVx4RwRFV1wPYzv9SENNGsHrDdtSNRGM0OBpDkem6rX+OZ5FJ2GRCtX5ba3frclo11HUiAsYvAtoX8sk6lU= diff --git a/README.md b/README.md index b5f617c3d815946e84fc05ad4bd7112312250fb3..218c163b8a96c6b7814ba0e0a52289f993a707fe 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ This derived work is, like SableCC, covered by the GNU Lesser General Public Lic Building --- -* Clone the repository -* Run the deploy target using gradle. If you don't have gradle installed, you can use the gradlew wrapper scripts, e.g., under Linux use './gradlew deploy' +* Clone the repository. +* Run the `assemble` target using Gradle (`./gradlew assemble` on Linux/macOS/etc., `gradlew.bat assemble` on Windows). * The binary is located in the build/libs subdirectory. Documentation diff --git a/build.gradle b/build.gradle index f02d96dffc91430ccea881c0fe3a47080340e821..310849df7b39c3f77c3f4733980ea679ce595793 100644 --- a/build.gradle +++ b/build.gradle @@ -1,115 +1,96 @@ +apply plugin: 'application' apply plugin: 'java' apply plugin: 'eclipse' -apply plugin: 'maven' +apply plugin: 'maven-publish' +apply plugin: 'signing' -project.version = '3.2.13' +project.version = '3.2.14' project.group = 'de.hhu.stups' -project.archivesBaseName = "sablecc" - -allprojects { - sourceCompatibility = 1.5 - targetCompatibility = 1.5 -} -dependencies { - testCompile 'junit:junit:4.8.2' +wrapper { + gradleVersion = "6.3" + distributionType = Wrapper.DistributionType.ALL } +final isSnapshot = project.version.endsWith("-SNAPSHOT") -task javadocJar(type: Jar) { - classifier = 'javadoc' - from javadoc -} +sourceCompatibility = 7 +targetCompatibility = 7 -task sourcesJar(type: Jar) { - classifier = 'sources' - from sourceSets.main.allSource +repositories { + jcenter() } -jar { - manifest { - attributes 'Main-Class': 'org.sablecc.sablecc.SableCC' - } -} +mainClassName = "org.sablecc.sablecc.SableCC" -artifacts { - archives javadocJar, sourcesJar +java { + withSourcesJar() + withJavadocJar() } -task writeVersion() { - - doFirst { - def buildconstants_class = """ - package org.sablecc.sablecc; - - public class Version - { - public static final String VERSION = "${project.version}"; +processResources { + inputs.property("project.version", project.version) + filesMatching("org/sablecc/sablecc/build.properties") { + expand(version: project.version) } - """ - File f = file("src/main/java/org/sablecc/sablecc/Version.java") - f.delete() - f << buildconstants_class - } } -compileJava { - dependsOn = ['writeVersion'] -} - -task deploy(dependsOn: [jar,test,javadoc], group: 'Build') - -if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) { - -apply plugin: 'signing' - -signing { - sign configurations.archives +jar { + manifest { + attributes 'Main-Class': mainClassName + } } -uploadArchives { - repositories { - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } +publishing { + publications { + mavenJava(MavenPublication) { + from components.java - pom.project { - name 'SableCC - Stups fork' - packaging 'jar' - // optionally artifactId can be defined here - description 'This version of SableCC enriches the abstract syntax tree with information about tokens.' - url 'https://github.com/bendisposto/sablecc-stups' + pom { + name = 'SableCC - Stups fork' + description = 'This version of SableCC enriches the abstract syntax tree with information about tokens.' + url = 'https://gitlab.cs.uni-duesseldorf.de/general/stups/sablecc-stups' licenses { license { - name 'GNU Lesser General Public License, Version 2.1' - url 'http://www.gnu.org/licenses/lgpl-2.1.html' + name = 'GNU Lesser General Public License, Version 2.1' + url = 'http://www.gnu.org/licenses/lgpl-2.1.html' } } scm { - connection 'scm:git:git://github.com/bendisposto/sablecc-stups.git' - developerConnection 'scm:git:git@github.com:bendisposto/sablecc-stups.git' - url 'https://github.com/bendisposto/sablecc-stups' + connection = 'scm:git:https://gitlab.cs.uni-duesseldorf.de/general/stups/sablecc-stups.git' + developerConnection = 'scm:git:git@gitlab.cs.uni-duesseldorf.de:general/stups/sablecc-stups.git' + url = 'https://gitlab.cs.uni-duesseldorf.de/general/stups/sablecc-stups' } - developers { developer { - id 'bendisposto' - name 'Jens Bendisposto' - email 'jens@bendisposto.de' + id = 'bendisposto' + name = 'Jens Bendisposto' + email = 'jens@bendisposto.de' } } } } } + + repositories { + maven { + final releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2" + final snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots" + url isSnapshot ? snapshotsRepoUrl : releasesRepoUrl + if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) { + credentials { + username project.ossrhUsername + password project.ossrhPassword + } + } + } + } } + +signing { + sign publishing.publications.mavenJava } diff --git a/gradle.properties.enc b/gradle.properties.enc index 86b5e6251ecf1be7fedf5aa3917a35b3c4238e3a..6f9a4bbdb53a7ebd2f58e4f2057bc168906e2026 100644 --- a/gradle.properties.enc +++ b/gradle.properties.enc @@ -1 +1,6 @@ -Salted__»¢LníÜXóÄ$ºùoÉ HJ™Ã1Œ“³ÿz£ÇÿíVIÊ2(ß,IAø};på^¼E°ƒñ{q ÛñmŸÉÝ»š1Vb7P¹4‹¦Moj^(ý]lâ¶pß[|ÒôôƒUŽí¾S¥Õ²D02ùºBOðèz;Š+1e#™Ê/úÄ3¶ô®`wÅWO÷Æ-À6TR+Inx·B/l‡ŽýG>àSÇ‹&G!iSy+ˆ³#4ôXf¯£Œºœ}Àê¥1ØE¥*²¿+¹¹sS \ No newline at end of file +U2FsdGVkX1+772WWsEs8y4Z+vdhQLZyW24cH/04lX8CxgZ4JycDLZWPBAc70ZGyT +w1lgwUF18NmTGDpjwyDkUQmXdYUHYRGUCLTeNays57gOaxEVQQz0zm0kKAISdnNW +9IgD8BI/lbftz7Y8dqxMUBxfcUTijzJfXz+uEK53jwBoxKYVznzzCCfwEv+1KMR9 +oypMpm9HRBMEZyDkPRPJ2DKOFhW6YCdcszCjTNKmeJkOwVjfyltC43WXzcrzYKR/ +S2pGjR+7mcBg9zq0yMI+1DgMWwmrAaLP9pKnyDqDgXK1yJIKKE80C4NkJN6XVhHc +qjWQ8xnLXRorA7j0lkWAhw== diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 45bfb5c85ea4b9b0d02616718f2637b2075acb1c..490fda8577df6c95960ba7077c43220e5bb2c0d9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index de7270243d9b8f2f13b33c2c1240417228949aec..6623300bebd011bc5f7991f4f9c389e2f67b14ac 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed Jun 08 11:31:31 CEST 2011 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://repo.gradle.org/gradle/distributions/gradle-1.0-milestone-3-bin.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000000000000000000000000000000000..2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3 --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/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 +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +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" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +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 + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# 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 + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + 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" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +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" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000000000000000000000000000000000..9109989e3cbf666b0a3c8f48fd92bd03bb53b968 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pubring.gpg.enc b/pubring.gpg.enc index 96245b700e81bb5a2b5882ecbcbd895c6adffc6e..fb1dfb132bd34d077723753821aefdc42be64bc2 100644 Binary files a/pubring.gpg.enc and b/pubring.gpg.enc differ diff --git a/secring.gpg.enc b/secring.gpg.enc index 58887ef2640d034a8d79683138ff7711fe1e5677..048652a825198ed70f778f2b82600b83be9d5d3e 100644 Binary files a/secring.gpg.enc and b/secring.gpg.enc differ diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000000000000000000000000000000000000..f8e1a304f02217429bc099f8761a639e7dc3a25a --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "sablecc" diff --git a/src/main/java/org/sablecc/sablecc/Version.java b/src/main/java/org/sablecc/sablecc/Version.java new file mode 100644 index 0000000000000000000000000000000000000000..2925b777b593d21381569491b14fc40d991cbf42 --- /dev/null +++ b/src/main/java/org/sablecc/sablecc/Version.java @@ -0,0 +1,35 @@ + +package org.sablecc.sablecc; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.Properties; + +public class Version +{ + public static final String VERSION; + static + { + final Properties buildProperties = new Properties(); + final InputStream is = Version.class.getResourceAsStream("build.properties"); + if(is == null) + { + throw new IllegalStateException("Build properties not found, this should never happen!"); + } + else + { + try(final Reader r = new InputStreamReader(is, StandardCharsets.UTF_8)) + { + buildProperties.load(r); + } + catch(final IOException e) + { + throw new IllegalStateException("IOException while loading build properties, this should never happen!", e); + } + } + VERSION = buildProperties.getProperty("version"); + } +} diff --git a/src/main/resources/org/sablecc/sablecc/build.properties b/src/main/resources/org/sablecc/sablecc/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..178150d8adcd72de8d62a2fea7bb8611961d2a38 --- /dev/null +++ b/src/main/resources/org/sablecc/sablecc/build.properties @@ -0,0 +1,3 @@ +# The values for these properties are generated during the build. +# See the configuration of the processResources task in build.gradle. +version=${version} diff --git a/src/main/resources/org/sablecc/sablecc/lexer.txt b/src/main/resources/org/sablecc/sablecc/lexer.txt index 6f1938cf42987a992ae4e9eaa05fd07b3334ba0c..45b66df4c821749ffe3798113f5bb08a782eb511 100644 --- a/src/main/resources/org/sablecc/sablecc/lexer.txt +++ b/src/main/resources/org/sablecc/sablecc/lexer.txt @@ -39,8 +39,8 @@ public class Lexer implements ITokenListContainer protected State state = State.$2$; private PushbackReader in; - private int line; - private int pos; + protected int line; + protected int pos; private boolean cr; private boolean eof; private final StringBuffer text = new StringBuffer(); diff --git a/src/main/resources/patchfiles/IParser.txt b/src/main/resources/patchfiles/IParser.txt index a5d25de7a3f481a10bbef531c74fa12d993675ac..98d239ede5e46101d8dba291da5637716943996c 100644 --- a/src/main/resources/patchfiles/IParser.txt +++ b/src/main/resources/patchfiles/IParser.txt @@ -1,4 +1,4 @@ -/** +/* * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, * Heinrich Heine Universitaet Duesseldorf * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) diff --git a/src/main/resources/patchfiles/IToken.txt b/src/main/resources/patchfiles/IToken.txt index 65c0aff6cd3af835e2588ca9e6411f3f4ccbaae6..b8ae5da99d66db0636daa871541e0a558e245a06 100644 --- a/src/main/resources/patchfiles/IToken.txt +++ b/src/main/resources/patchfiles/IToken.txt @@ -1,4 +1,4 @@ -/** +/* * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, * Heinrich Heine Universitaet Duesseldorf * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) diff --git a/src/main/resources/patchfiles/ITokenListContainer.txt b/src/main/resources/patchfiles/ITokenListContainer.txt index 8d72be46b33a9e1de102373e89ed8de6329a7f9a..8280e1e0f0eb1727adc5e0011eb4a633d9655e96 100644 --- a/src/main/resources/patchfiles/ITokenListContainer.txt +++ b/src/main/resources/patchfiles/ITokenListContainer.txt @@ -1,4 +1,4 @@ -/** +/* * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, * Heinrich Heine Universitaet Duesseldorf * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) @@ -10,4 +10,4 @@ import java.util.List; public interface ITokenListContainer { public List<IToken> getTokenList(); -} \ No newline at end of file +} diff --git a/src/main/resources/patchfiles/PositionedNode.txt b/src/main/resources/patchfiles/PositionedNode.txt index 7072ca65eacb74e94f15367e3c0874be70d7f8ba..0af0ce91b157cf7ed18aa3d8d1a7c8d26221e773 100644 --- a/src/main/resources/patchfiles/PositionedNode.txt +++ b/src/main/resources/patchfiles/PositionedNode.txt @@ -1,4 +1,4 @@ -/** +/* * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, * Heinrich Heine Universitaet Duesseldorf * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) diff --git a/src/main/resources/patchfiles/SourcePosition.txt b/src/main/resources/patchfiles/SourcePosition.txt index 6521067286a3d32c1bcdddae287664fd7e81ea4e..106966f010635c84e4a32c81354579359662a43f 100644 --- a/src/main/resources/patchfiles/SourcePosition.txt +++ b/src/main/resources/patchfiles/SourcePosition.txt @@ -1,4 +1,4 @@ -/** +/* * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, * Heinrich Heine Universitaet Duesseldorf * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) diff --git a/src/main/resources/patchfiles/SourcePositions.txt b/src/main/resources/patchfiles/SourcePositions.txt index eefe61eca54b46f0606e696a1347945e274d67d9..a13acd004bf59fe8ccb7bf884e6dc5f4d2585859 100644 --- a/src/main/resources/patchfiles/SourcePositions.txt +++ b/src/main/resources/patchfiles/SourcePositions.txt @@ -1,4 +1,4 @@ -/** +/* * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, * Heinrich Heine Universitaet Duesseldorf * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) @@ -22,10 +22,10 @@ public class SourcePositions { /** * Returns the {@link SourcecodeRange} of this {@link PositionedNode} or - * <code>null</code> if no {@link SourcecodeRange} is available. + * {@code null} if no {@link SourcecodeRange} is available. * * @param node the node with source code information - * @return the source code range of <code>node</code> + * @return the source code range of {@code node} */ public SourcecodeRange getSourcecodeRange(final PositionedNode node) { return positions.get(node); @@ -33,11 +33,11 @@ public class SourcePositions { /** * Returns the line in which this {@link PositionedNode} begins. The value - * <code>0</code> is returned if no sourcecode range is available for this + * {@code 0} is returned if no sourcecode range is available for this * {@link PositionedNode}. * * @param node the node with source code information - * @return the line where the <code>node</code> starts + * @return the line where the {@code node} starts */ public int getBeginLine(final PositionedNode node) { if (node instanceof IToken) { @@ -57,11 +57,11 @@ public class SourcePositions { /** * Returns the column of the first character of this {@link PositionedNode}, - * i.e. the begin column. The value <code>0</code> is returned if no + * i.e. the begin column. The value {@code 0} is returned if no * sourcecode range is available for this {@link PositionedNode}. * * @param node the node with source code information - * @return the begin column of <code>node</code> + * @return the begin column of {@code node} */ public int getBeginColumn(final PositionedNode node) { if (node instanceof IToken) { @@ -81,7 +81,7 @@ public class SourcePositions { /** * Returns the line in which the {@link PositionedNode} ends. The value - * <code>0</code> is returned if no sourcecode range is available for this + * {@code 0} is returned if no sourcecode range is available for this * {@link PositionedNode}. * * @param node the node with source code information @@ -125,7 +125,7 @@ public class SourcePositions { /** * Returns the last column of this {@link PositionedNode}, i.e. the column * of the last character of the {@link PositionedNode}. The value - * <code>0</code> is returned if no sourcecode range is available for this + * {@code 0} is returned if no sourcecode range is available for this * {@link PositionedNode}. * * @param node the node with source code information @@ -175,7 +175,7 @@ public class SourcePositions { * can be determined for this {@link PositionedNode}. * * @param node the node with source code information - * @return all tokens of <code>node</code> + * @return all tokens of {@code node} */ public IToken[] getTokens(final PositionedNode node) { if (node instanceof IToken) { @@ -299,9 +299,9 @@ public class SourcePositions { * Finds the index of the token that belongs to the position. * </p> * <p> - * If no token list is available <code>-1</code> is returned. For - * <code>line < 0</code> the index <code>0</code> is returned. If - * <code>line >= 1 && column < 0</code> the line number is returned. + * If no token list is available {@code -1} is returned. For + * {@code line < 0} the index {@code 0} is returned. If + * {@code line >= 1 && column < 0} the line number is returned. * </p> * <p> * If the line matches but the requested column is beyond the max. length of @@ -413,11 +413,9 @@ public class SourcePositions { /** * Compares the token position (within line only) with the column. * - * @param token - * @param column - * @return <code>-1</code> if <code>column < beginColumn</code>, - * <code>1</code> if <code>endColumn < column</code> or - * <code>0</code> if the column is within the range of the token. + * @return {@code -1} if {@code column < beginColumn}, + * {@code 1} if {@code endColumn < column} or + * {@code 0} if the column is within the range of the token. */ private int compareTokenColumn(final IToken token, final int column) { final int beginColumn = token.getPos(); diff --git a/src/main/resources/patchfiles/SourcecodeRange.txt b/src/main/resources/patchfiles/SourcecodeRange.txt index 629befb1801b2916aaaa90586cc4323909c8c709..e064a453a08f4bdbefe9fe4f79e199b1e5be1858 100644 --- a/src/main/resources/patchfiles/SourcecodeRange.txt +++ b/src/main/resources/patchfiles/SourcecodeRange.txt @@ -1,4 +1,4 @@ -/** +/* * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, * Heinrich Heine Universitaet Duesseldorf * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html)