Skip to content
Snippets Groups Projects
Commit dde36d68 authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

initial grammar, gradle file gen

parent 5a3e9bf8
No related branches found
No related tags found
No related merge requests found
Showing with 194 additions and 2 deletions
......@@ -82,6 +82,10 @@ dependencies {
// testing
testImplementation('org.junit.jupiter:junit-jupiter:5.8.2')
// https://mvnrepository.com/artifact/com.github.spullara.mustache.java/compiler
implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: '0.9.10'
}
run {
......@@ -115,7 +119,7 @@ def ecoreInputFiles = [ecoreFile]
def ecoreOutputFiles = [ecoreRelastAspect,
ecoreRelastGrammar]
def relastInputFiles = [ecoreRelastGrammar, './src/main/jastadd/base/marking/Marking.relast', './src/main/jastadd/base/io/IoPN.relast', './src/main/jastadd/base/clauses/expressions.relast']
def relastInputFiles = [ecoreRelastGrammar, './src/main/jastadd/gen/Package.relast', './src/main/jastadd/base/marking/Marking.relast', './src/main/jastadd/base/io/IoPN.relast', './src/main/jastadd/base/clauses/expressions.relast']
def relastOutputFiles = ['src/gen/jastadd/pnml/placeTransition.ast', 'src/gen/jastadd/pnml/placeTransition.jadd']
task ecoreToRelast(type: JavaExec) {
......
DinerosPackage ::= Dir:PackageDirectory* File:PackageFile* <Name:String> <TokenClass:String>;
abstract PackageFile ::= <Name:String> ;
TemplateFile:PackageFile ;
StaticFile:PackageFile ;
NodeFile:TemplateFile ;
SubscriberFile:TemplateFile ;
ServerFile:TemplateFile ;
MapperFile:TemplateFile;
PackageDirectory ::= <Name:String> ;
../../../../../../../../../../pnml-relast-base/src/data/java/de/tudresden/inf/st/pnml/base
\ No newline at end of file
../../../../../../../../../../../pnml-relast-base/src/data/java/de/tudresden/inf/st/pnml/base
\ No newline at end of file
package de.tudresden.inf.st.pnml.gen.data;
public class GradleBuildContext {
private String mainClass;
private String archiveBaseName;
private String version;
private String pnmlRelastVersion;
public GradleBuildContext(String mainClass, String archiveBaseName, String version, String pnmlRelastVersion) {
this.mainClass = mainClass;
this.archiveBaseName = archiveBaseName;
this.version = version;
this.pnmlRelastVersion = pnmlRelastVersion;
}
public String getMainClass() {
return mainClass;
}
public void setMainClass(String mainClass) {
this.mainClass = mainClass;
}
public String getArchiveBaseName() {
return archiveBaseName;
}
public void setArchiveBaseName(String archiveBaseName) {
this.archiveBaseName = archiveBaseName;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getPnmlRelastVersion() {
return pnmlRelastVersion;
}
public void setPnmlRelastVersion(String pnmlRelastVersion) {
this.pnmlRelastVersion = pnmlRelastVersion;
}
}
package de.tudresden.inf.st.pnml.gen.data;
public class SettingsGradleContext {
private String rootProjectName;
public String getRootProjectName() {
return rootProjectName;
}
public void setRootProjectName(String rootProjectName) {
this.rootProjectName = rootProjectName;
}
public SettingsGradleContext(String rootProjectName) {
this.rootProjectName = rootProjectName;
}
}
package de.tudresden.inf.st.pnml.gen.generators;
import com.github.mustachejava.DefaultMustacheFactory;
import com.github.mustachejava.Mustache;
import com.github.mustachejava.MustacheFactory;
import de.tudresden.inf.st.pnml.gen.data.GradleBuildContext;
import de.tudresden.inf.st.pnml.gen.data.SettingsGradleContext;
import java.io.StringWriter;
public class GradleGenUtil {
public static String generateBuildGradle(String mainClass, String archiveBaseName, String version, String pnmlRelastersion){
GradleBuildContext gradleBuildContext = new GradleBuildContext(mainClass, archiveBaseName, version, pnmlRelastersion);
MustacheFactory mf = new DefaultMustacheFactory();
Mustache m = mf.compile("/main/resources/mustache/build.mustache");
StringWriter writer = new StringWriter();
m.execute(writer, gradleBuildContext);
return writer.toString();
}
public static String generateGradleSettings(String rootProjectName){
SettingsGradleContext settingsGradleContext = new SettingsGradleContext(rootProjectName);
MustacheFactory mf = new DefaultMustacheFactory();
Mustache m = mf.compile("/main/resources/mustache/settings.mustache");
StringWriter writer = new StringWriter();
m.execute(writer, settingsGradleContext);
return writer.toString();
}
}
package de.tudresden.inf.st.pnml.gen.generators;
public class JavaClassGenUtil {
}
package de.tudresden.inf.st.pnml.gen.generators;
public class TokenGenUtil {
}
{{#gradleBuildContext}}
buildscript {
repositories.mavenCentral()
}
group 'de.tudresden.inf.st'
version '{{version}}'
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'application'
apply plugin: "idea"
java.toolchain.languageVersion.set(JavaLanguageVersion.of(11))
repositories {
jcenter()
mavenCentral()
}
dependencies {
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.3'
compile fileTree(include: ['pnml-relast-engine-fatjar-{{pnmlRelastersion}}.jar'], dir: './libs')
testCompile group: 'junit', name: 'junit', version: '4.12'
}
jar {
manifest {
attributes "Main-Class": "{{mainClass}}"
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveBaseName = '{{archiveBaseName}}'
}
task fatJar(type: Jar) {
dependsOn jar
group = "build"
archiveAppendix = "fatjar"
from sourceSets.main.output
from {
configurations.runtimeClasspath.collect {it.isDirectory() ? it : zipTree(it) }
}
manifest.attributes "Main-Class": "{{mainClass}}"
}
run {
mainClassName = '{{mainClass}}'
standardInput = System.in
}
{{/gradleBuildContext}}
\ No newline at end of file
{{#settingsGradleContext}}
rootProject.name = '{{rootProjectName}}'
{{/settingsGradleContext}}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment