From 323080843291f52afe050968d15d6bee0185044a Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Thu, 21 Jan 2021 12:45:36 +0100 Subject: [PATCH] update task --- statemachine.task/build.gradle | 31 +++++++++++++++++-- .../src/main/jastadd/SMtoDotG.jrag | 18 +++++++++++ .../tudresden/inf/st/statemachine/Main.java | 2 ++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 statemachine.task/src/main/jastadd/SMtoDotG.jrag diff --git a/statemachine.task/build.gradle b/statemachine.task/build.gradle index 1ba0944..d2e348f 100644 --- a/statemachine.task/build.gradle +++ b/statemachine.task/build.gradle @@ -21,7 +21,11 @@ configurations { File genSrc = file("src/gen/java") idea.module.generatedSourceDirs += genSrc sourceSets.main.java.srcDir genSrc -//jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.statemachine.Main') + +jar { + from { sourceSets.main.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } + manifest.attributes('Main-Class': 'de.tudresden.inf.st.statemachine.Main') +} dependencies { implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_version}" @@ -29,7 +33,7 @@ dependencies { implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5' jastadd2 "org.jastadd:jastadd:2.3.4" - ragdoc files('../libs/rd-builder.jar') + ragdoc files('../libs/rd-builder-1.3.0.jar') } // Default run configuration @@ -58,6 +62,29 @@ task ecoreToRelast(type: JavaExec) { outputs.files file(relastFile) } +task('ragdoc-java-8', type: JavaExec, group: 'documentation') { + description 'Generates RagDoc metadata for this JastAdd project.' + + inputs.files { + sourceSets.main.allJava.files + } + + main = 'org.extendj.ragdoc.RagDocBuilder' + + doFirst { + def destDir = new File(docsDir, 'ragdoc') + if (!destDir.isDirectory()) { + destDir.mkdirs() + } + classpath = configurations.ragdoc + def sourceFiles = sourceSets.main.allJava.files + args(['-d', "$destDir", + '-bootclasspath', '/usr/lib/jvm/java-1.8.0/jre/lib/rt.jar', + ] + sourceFiles) + } +} + + // Second phase: RelAst -> JastAdd task relastToJastAdd(type: JavaExec) { group = 'Build' diff --git a/statemachine.task/src/main/jastadd/SMtoDotG.jrag b/statemachine.task/src/main/jastadd/SMtoDotG.jrag new file mode 100644 index 0000000..18155d5 --- /dev/null +++ b/statemachine.task/src/main/jastadd/SMtoDotG.jrag @@ -0,0 +1,18 @@ +aspect StateMachinetoDotG { + syn String StateMachine.toDot() { + StringBuilder b = new StringBuilder(); + b.append("strict digraph cycles {\n"); + + for (State from : states()) { + b.append(" ").append(from.getLabel()).append("[label=\"").append(from.getLabel()).append("\"];\n"); + + for (Transition out : from.getOutgoingList()) { + b.append(" ").append(from.getLabel()).append(" -> ").append(out.getTo().getLabel()) + .append("[label=\"").append(out.getLabel()).append("\"];\n"); + } + } + + b.append("}\n"); + return b.toString(); + } +} diff --git a/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java b/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java index 2c381ce..2d0d558 100644 --- a/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java +++ b/statemachine.task/src/main/java/de/tudresden/inf/st/statemachine/Main.java @@ -41,6 +41,8 @@ public class Main { printHeading("StateMachine after"); System.out.println(stateMachine.prettyPrint()); } + printHeading("DotGraph"); + System.out.println(stateMachine.toDot()); Dumper.read(stateMachine).dumpAsPNG(Paths.get("02-transformed.png")); DrAST_root_node = stateMachine; } -- GitLab