Skip to content
Snippets Groups Projects
Commit d802b018 authored by Johannes Mey's avatar Johannes Mey
Browse files

add new relast variants

parent 94dcf5fa
Branches
Tags
No related merge requests found
Showing
with 533 additions and 28 deletions
......@@ -49,6 +49,7 @@ replay_*.log
~*.*
*.~*
jastadd-gen/
xtend-gen/
neo4j-server/
out/
......
//ViatraBackendrootProject.name = 'trainbenchmark'
include ':trainbenchmark-config'
include ':trainbenchmark-format-emf'
include ':trainbenchmark-format-emf-model'
//include ':trainbenchmark-format-graph-neo4j'
//include ':trainbenchmark-format-rdf'
//include ':trainbenchmark-format-sql'
include ':trainbenchmark-generator'
include ':trainbenchmark-generator-emf'
//include ':trainbenchmark-generator-graph-cypher'
//include ':trainbenchmark-generator-graph-neo4j'
include ':trainbenchmark-generator-graph-tinkerpop'
//include ':trainbenchmark-generator-rdf'
//include ':trainbenchmark-generator-sql'
include ':trainbenchmark-generator-json4ag'
include ':trainbenchmark-generator-json4ag-special'
include ':trainbenchmark-generator-relast'
include ':trainbenchmark-generator-dot'
include ':trainbenchmark-reporting'
include ':trainbenchmark-scripts'
include ':trainbenchmark-server'
include ':trainbenchmark-tool'
//include ':trainbenchmark-tool-blazegraph'
//include ':trainbenchmark-tool-drools'
//include ':trainbenchmark-tool-eclipseocl'
include ':trainbenchmark-tool-emf'
//include ':trainbenchmark-tool-emfapi'
//include ':trainbenchmark-tool-epsilon'
//include ':trainbenchmark-tool-ingraph'
//include ':trainbenchmark-tool-ingraph-query-plans'
include ':trainbenchmark-tool-jastadd-base'
include ':trainbenchmark-tool-jastadd-namelookup'
include ':trainbenchmark-tool-jastadd-namelookup-base'
......@@ -35,21 +21,10 @@ include ':trainbenchmark-tool-jastadd-optimized'
include ':trainbenchmark-tool-jastadd-optimized-base'
include ':trainbenchmark-tool-jastadd-optimized-incremental'
include ':trainbenchmark-tool-jastadd-specialized'
include ':trainbenchmark-tool-jastadd-relast'
include ':trainbenchmark-tool-jastadd-specialized-base'
include ':trainbenchmark-tool-jastadd-specialized-incremental'
//include ':trainbenchmark-tool-kiama'
//include ':trainbenchmark-tool-racr'
//include ':trainbenchmark-tool-racr-python'
//include ':trainbenchmark-tool-racr-scheme'
//include ':trainbenchmark-tool-racr-cpp'
//include ':trainbenchmark-tool-jena'
//include ':trainbenchmark-tool-mysql'
//include ':trainbenchmark-tool-neo4j'
//include ':trainbenchmark-tool-rdf'
//include ':trainbenchmark-tool-rdf4j'
//include ':trainbenchmark-tool-sesame'
//include ':trainbenchmark-tool-sql'
//include ':trainbenchmark-tool-sqlite'
include ':trainbenchmark-tool-jastadd-relast-incremental'
include ':trainbenchmark-tool-tinkergraph'
include ':trainbenchmark-tool-viatra'
include ':trainbenchmark-tool-viatra-patterns'
root = true
[*.java]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 140
trim_trailing_whitespace = true
[*.jadd]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 140
trim_trailing_whitespace = true
[*.jrag]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 140
trim_trailing_whitespace = true
plugins { id "com.github.johnrengelman.shadow" version "1.2.3" }
shadowJar {
classifier = 'fat'
manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
}
task preprocess(type: JavaExec) {
doFirst {
delete fileTree('src/main/jastadd-gen')
}
group = 'Build'
main = "-jar"
args = [
"../trainbenchmark-tool-jastadd-base/libs/relast-compiler.jar",
"../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast",
"--listClass=RefList",
"--serializer=jackson",
"--grammarName=src/main/jastadd-gen/Train",
"--file"
]
}
task jastadd(type: JavaExec) {
group = 'Build'
main = "-jar"
args = [
"../trainbenchmark-tool-jastadd-base/libs/jastadd2.jar",
"--cache=all",
"--flush=full",
"--incremental=param",
"--rewrite=cnta",
"--package=de.tudresden.inf.st.train.jastadd.ast",
"--o=src/main/java-gen",
"--tracing=api",
] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("src/main/jastadd-gen/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/").matching {exclude "*.relast"}
doFirst {
delete fileTree('src/main/java-gen')
}
doLast {
ant.replaceregexp(match:'RefList extends List', replace:'RefList<T extends ASTNode> extends List<T>', flags:'g', byline:true) {
fileset(dir: 'src/main/java-gen/de/tudresden/inf/st/train/jastadd/ast', includes: 'RefList.java')
}
}
inputs.files fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/") + fileTree("src/main/jastadd-gen/")
outputs.files file("src/main/java-gen")
}
sourceSets {
main {
java {
srcDir 'src/main/java'
srcDir 'src/main/java-gen'
srcDir '../trainbenchmark-tool-jastadd-base/src/main/java'
srcDir '../trainbenchmark-tool-jastadd-specialized-base/src/main/java'
}
}
}
clean {
delete fileTree('src/main/java-gen')
}
dependencies {
compile project(':trainbenchmark-tool')
compile project(':trainbenchmark-tool-jastadd-base')
compile project(':trainbenchmark-tool-jastadd-specialized-base')
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
}
test {
outputs.upToDateWhen { false }
}
jastadd.dependsOn preprocess
compileJava.dependsOn jastadd
\ No newline at end of file
*
!.gitignore
package de.tudresden.inf.st.train.jastadd;
import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
public class JastaddBenchmarkMain {
public static void main(final String[] args) throws Exception {
final JastaddRelASTBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddRelASTBenchmarkConfig.class);
final JastaddRelASTBenchmarkScenario scenario = new JastaddRelASTBenchmarkScenario(bc);
scenario.performBenchmark();
scenario.printTraces();
}
}
package de.tudresden.inf.st.train.jastadd;
import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
public class JastaddRelASTBenchmarkScenario extends
JastaddAbstractBenchmarkScenario<JastaddRelASTBenchmarkConfig> {
public JastaddRelASTBenchmarkScenario(final JastaddRelASTBenchmarkConfig bc) throws Exception {
super(bc, true);
}
}
package de.tudresden.inf.st.train.jastadd.config;
import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
public class JastaddRelASTBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
protected JastaddRelASTBenchmarkConfig(final BenchmarkConfigBase configBase) {
super(configBase);
}
@Override
public String getToolName() {
return "Grammar Extension with Serialiser";
}
@Override
public String getProjectName() {
return "jastadd-relast";
}
}
package de.tudresden.inf.st.train.jastadd.config;
import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
public class JastaddRelASTBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddRelASTBenchmarkConfig, JastaddRelASTBenchmarkConfigBuilder> {
@Override
public JastaddRelASTBenchmarkConfig createConfig() {
checkNotNulls();
return new JastaddRelASTBenchmarkConfig(configBase);
}
}
package de.tudresden.inf.st.train.jastadd.driver;
import de.tudresden.inf.st.train.jastadd.ast.ASTState;
import de.tudresden.inf.st.train.jastadd.ast.DeserializationException;
import de.tudresden.inf.st.train.jastadd.ast.RailwayContainer;
import de.tudresden.inf.st.train.jastadd.ast.SerializationException;
import de.tudresden.inf.st.train.jastadd.driver.deserializer.JsonDeserializer;
import hu.bme.mit.trainbenchmark.benchmark.driver.Driver;
import java.io.File;
import java.io.IOException;
public class JastaddDriver extends Driver {
RailwayContainer root;
private int idCounter = 0;
public boolean flushCaches() {
return flushCaches;
}
private final boolean flushCaches;
private final ASTState.Trace.Receiver receiver;
public JastaddDriver(boolean flushCaches, ASTState.Trace.Receiver receiver) {
super();
this.flushCaches = flushCaches;
this.receiver = receiver;
}
public static JastaddDriver create(boolean flushCaches, ASTState.Trace.Receiver receiver) {
return new JastaddDriver(flushCaches, receiver);
}
public int nextId() {
idCounter--;
return idCounter;
}
public RailwayContainer getModel() {
return root;
}
@Override
public void read(final String modelPath) throws IOException {
File modelFile = new File(modelPath);
try {
root = RailwayContainer.deserialize(modelFile);
root.resolveAll();
} catch (DeserializationException e) {
throw new IOException(e);
}
// enable tracing if there is a receiver
if (receiver != null) {
getModel().trace().setReceiver(receiver);
}
}
@Override
public String getPostfix() {
return "-relast.json";
}
public void flushCache() {
if (flushCaches) {
getModel().flushTreeCache();
}
}
}
package de.tudresden.inf.st.train.jastadd.driver.deserializer;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import de.tudresden.inf.st.train.jastadd.ast.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Created by jm on 5/15/17.
*/
public class ASTNodeDeserializer extends StdDeserializer<ASTNode> {
public ASTNodeDeserializer() {
super((JavaType) null);
}
protected ASTNodeDeserializer(Class<?> vc) {
super(vc);
}
@Override
public ASTNode deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
throw new RuntimeException("this should not be called");
}
}
package de.tudresden.inf.st.train.jastadd.test;
import de.tudresden.inf.st.train.jastadd.JastaddRelASTBenchmarkScenario;
import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfigBuilder;
import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
public class RelASTSerializerIncrementalTest extends TrainBenchmarkTest {
@Override
protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
final JastaddRelASTBenchmarkConfig bc = new JastaddRelASTBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
final JastaddRelASTBenchmarkScenario scenario = new JastaddRelASTBenchmarkScenario(bc);
final BenchmarkResult result = scenario.performBenchmark();
return result;
}
}
root = true
[*.java]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 140
trim_trailing_whitespace = true
[*.jadd]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 140
trim_trailing_whitespace = true
[*.jrag]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 140
trim_trailing_whitespace = true
plugins { id "com.github.johnrengelman.shadow" version "1.2.3" }
shadowJar {
classifier = 'fat'
manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
}
task preprocess(type: JavaExec) {
doFirst {
delete fileTree('src/main/jastadd-gen')
}
group = 'Build'
main = "-jar"
args = [
"../trainbenchmark-tool-jastadd-base/libs/relast-compiler.jar",
"../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast",
"--listClass=RefList",
"--serializer=jackson",
"--grammarName=src/main/jastadd-gen/Train",
"--file"
]
}
task jastadd(type: JavaExec) {
group = 'Build'
main = "-jar"
args = [
"../trainbenchmark-tool-jastadd-base/libs/jastadd2.jar",
"--cache=all",
"--flush=full",
"--package=de.tudresden.inf.st.train.jastadd.ast",
"--o=src/main/java-gen",
"--tracing=api",
] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("src/main/jastadd-gen/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/").matching {exclude "*.relast"}
doFirst {
delete fileTree('src/main/java-gen')
}
doLast {
ant.replaceregexp(match:'RefList extends List', replace:'RefList<T extends ASTNode> extends List<T>', flags:'g', byline:true) {
fileset(dir: 'src/main/java-gen/de/tudresden/inf/st/train/jastadd/ast', includes: 'RefList.java')
}
}
inputs.files fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/") + fileTree("src/main/jastadd-gen/")
outputs.files file("src/main/java-gen")
}
sourceSets {
main {
java {
srcDir 'src/main/java'
srcDir 'src/main/java-gen'
srcDir '../trainbenchmark-tool-jastadd-base/src/main/java'
srcDir '../trainbenchmark-tool-jastadd-specialized-base/src/main/java'
}
}
}
clean {
delete fileTree('src/main/java-gen')
}
dependencies {
compile project(':trainbenchmark-tool')
compile project(':trainbenchmark-tool-jastadd-base')
compile project(':trainbenchmark-tool-jastadd-specialized-base')
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
}
test {
outputs.upToDateWhen { false }
}
jastadd.dependsOn preprocess
compileJava.dependsOn jastadd
\ No newline at end of file
*
!.gitignore
package de.tudresden.inf.st.train.jastadd;
import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
public class JastaddBenchmarkMain {
public static void main(final String[] args) throws Exception {
final JastaddRelASTBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddRelASTBenchmarkConfig.class);
final JastaddRelASTBenchmarkScenario scenario = new JastaddRelASTBenchmarkScenario(bc);
scenario.performBenchmark();
scenario.printTraces();
}
}
package de.tudresden.inf.st.train.jastadd;
import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
public class JastaddRelASTBenchmarkScenario extends
JastaddAbstractBenchmarkScenario<JastaddRelASTBenchmarkConfig> {
public JastaddRelASTBenchmarkScenario(final JastaddRelASTBenchmarkConfig bc) throws Exception {
super(bc, true);
}
}
package de.tudresden.inf.st.train.jastadd.config;
import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
public class JastaddRelASTBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
protected JastaddRelASTBenchmarkConfig(final BenchmarkConfigBase configBase) {
super(configBase);
}
@Override
public String getToolName() {
return "Grammar Extension with Serialiser";
}
@Override
public String getProjectName() {
return "jastadd-relast";
}
}
package de.tudresden.inf.st.train.jastadd.config;
import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
public class JastaddRelASTBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddRelASTBenchmarkConfig, JastaddRelASTBenchmarkConfigBuilder> {
@Override
public JastaddRelASTBenchmarkConfig createConfig() {
checkNotNulls();
return new JastaddRelASTBenchmarkConfig(configBase);
}
}
package de.tudresden.inf.st.train.jastadd.driver;
import de.tudresden.inf.st.train.jastadd.ast.ASTState;
import de.tudresden.inf.st.train.jastadd.ast.DeserializationException;
import de.tudresden.inf.st.train.jastadd.ast.RailwayContainer;
import de.tudresden.inf.st.train.jastadd.ast.SerializationException;
import de.tudresden.inf.st.train.jastadd.driver.deserializer.JsonDeserializer;
import hu.bme.mit.trainbenchmark.benchmark.driver.Driver;
import java.io.File;
import java.io.IOException;
public class JastaddDriver extends Driver {
RailwayContainer root;
private int idCounter = 0;
public boolean flushCaches() {
return flushCaches;
}
private final boolean flushCaches;
private final ASTState.Trace.Receiver receiver;
public JastaddDriver(boolean flushCaches, ASTState.Trace.Receiver receiver) {
super();
this.flushCaches = flushCaches;
this.receiver = receiver;
}
public static JastaddDriver create(boolean flushCaches, ASTState.Trace.Receiver receiver) {
return new JastaddDriver(flushCaches, receiver);
}
public int nextId() {
idCounter--;
return idCounter;
}
public RailwayContainer getModel() {
return root;
}
@Override
public void read(final String modelPath) throws IOException {
File modelFile = new File(modelPath);
try {
root = RailwayContainer.deserialize(modelFile);
root.resolveAll();
} catch (DeserializationException e) {
throw new IOException(e);
}
// enable tracing if there is a receiver
if (receiver != null) {
getModel().trace().setReceiver(receiver);
}
}
@Override
public String getPostfix() {
return "-relast.json";
}
public void flushCache() {
if (flushCaches) {
getModel().flushTreeCache();
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment