apply plugin: 'java-library' apply plugin: 'idea' apply plugin: 'jastadd' apply plugin: 'application' group = 'de.tudresden.inf.st' sourceCompatibility = 1.8 targetCompatibility = 1.8 mainClassName = 'org.jastadd.ragconnect.compiler.Compiler' repositories { mavenCentral() jcenter() } buildscript { repositories.jcenter() dependencies { classpath 'org.jastadd:jastaddgradle:1.13.3' } } dependencies { implementation project(':relast-preprocessor') implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.2' implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.2' implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.11.2' implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: '0.9.6' runtime group: 'org.jastadd', name: 'jastadd', version: '2.3.4' api group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11' } def versionFile = 'src/main/resources/ragConnectVersion.properties' def oldProps = new Properties() try { file(versionFile).withInputStream { stream -> oldProps.load(stream) } version = oldProps['version'] } catch (e) { // this happens, if either the properties file is not present, or cannot be read from throw new GradleException("File ${versionFile} not found or unreadable. Aborting.", e) } task newVersion() { doFirst { def props = new Properties() props['version'] = value props.store(file(versionFile).newWriter(), null) } } sourceSets.main.java { srcDir "src/gen/java" } jar { manifest { attributes "Main-Class": 'org.jastadd.ragconnect.compiler.Compiler' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } task relast(type: JavaExec) { group = 'Build' main = "-jar" args = [ "../libs/relast.jar", "../relast-preprocessor/src/main/jastadd/RelAst.relast", "./src/main/jastadd/RagConnect.relast", "./src/main/jastadd/MustacheNodes.relast", "./src/main/jastadd/YAML.relast", "--listClass=java.util.ArrayList", "--jastAddList=JastAddList", "--useJastAddNames", "--file", "--resolverHelper", "--grammarName=./src/gen/jastadd/RagConnect" ] inputs.files("../libs/relast.jar", "../relast-preprocessor/src/main/jastadd/RelAst.relast", "./src/main/jastadd/RagConnect.relast", "./src/main/jastadd/MustacheNodes.relast", "./src/main/jastadd/YAML.relast") outputs.files("./src/gen/jastadd/RagConnect.ast", "./src/gen/jastadd/RagConnect.jadd", "./src/gen/jastadd/RagConnectRefResolver.jadd", './src/gen/jastadd/RagConnectResolverStubs.jrag') } jastadd { configureModuleBuild() modules { //noinspection GroovyAssignabilityCheck module("RagConnect") { java { basedir ".." include "relast-preprocessor/main/**/*.java" include "relast-preprocessor/gen/**/*.java" include "ragconnect.base/src/main/**/*.java" include "ragconnect.base/src/gen/**/*.java" } jastadd { basedir ".." include "relast-preprocessor/src/main/jastadd/**/*.ast" include "relast-preprocessor/src/main/jastadd/**/*.jadd" include "relast-preprocessor/src/main/jastadd/**/*.jrag" include "ragconnect.base/src/main/jastadd/**/*.ast" include "ragconnect.base/src/main/jastadd/**/*.jadd" include "ragconnect.base/src/main/jastadd/**/*.jrag" include "ragconnect.base/src/gen/jastadd/**/*.ast" include "ragconnect.base/src/gen/jastadd/**/*.jadd" include "ragconnect.base/src/gen/jastadd/**/*.jrag" } scanner { basedir ".." include "ragconnect.base/src/main/jastadd/scanner/Header.flex", [-5] include "relast-preprocessor/src/main/jastadd/scanner/Preamble.flex", [-4] include "relast-preprocessor/src/main/jastadd/scanner/Macros.flex", [-3] include "ragconnect.base/src/main/jastadd/scanner/Macros.flex", [-3] include "relast-preprocessor/src/main/jastadd/scanner/RulesPreamble.flex", [-2] include "ragconnect.base/src/main/jastadd/scanner/MappingContent.flex", [-1] include "ragconnect.base/src/main/jastadd/scanner/Keywords.flex" include "relast-preprocessor/src/main/jastadd/scanner/Keywords.flex" include "relast-preprocessor/src/main/jastadd/scanner/Symbols.flex", [1] include "relast-preprocessor/src/main/jastadd/scanner/RulesPostamble.flex", [2] } parser { basedir ".." include "ragconnect.base/src/main/jastadd/parser/Preamble.parser" include "ragconnect.base/src/main/jastadd/parser/RagConnect.parser" include "relast-preprocessor/src/main/jastadd/parser/RelAst.parser" } } } cleanGen.doFirst { delete "src/gen/java/org" delete "src/gen-res/BuildInfo.properties" } preprocessParser.doFirst { args += ["--no-beaver-symbol"] } module = "RagConnect" astPackage = 'org.jastadd.ragconnect.ast' parser.name = 'RagConnectParser' genDir = 'src/gen/java' buildInfoDir = 'src/gen-res' scanner.genDir = "src/gen/java/org/jastadd/ragconnect/scanner" parser.genDir = "src/gen/java/org/jastadd/ragconnect/parser" jastaddOptions = ["--lineColumnNumbers", "--List=JastAddList", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"] } generateAst.dependsOn relast