CodeGenerationFromControlFlowGraph #74

Merged k-fujii merged 10 commits into nitta-lab:controlFlowModeling from nitta-lab:codeGenerationFromControlFlowGraph on 2 Jul 2023
Showing 10 changed files
View
14
AlgebraicDataflowArchitectureModel/models/Clock.dtram
model {
channel CIO1 {
out min(m, tick) == mod(m + 1, 60)
out min(m: Int, tick) == mod(m + 1, 60)
}
channel HourUpdate {
in hour(h, update(h')) == h'
out hour_hand(h_ang, update(h')) == h' / 6 * PI
in hour(h: Int, update(h2)) == h2
out hour_hand(h_ang: Float, update(h2)) == h2 / 6 * PI
}
channel MinUpdate {
in min(m, update(m')) == m'
out min_hand(m_ang, update(m')) == m' / 30 * PI
in min(m, update(m2)) == m2
out min_hand(m_ang: Float, update(m2)) == m2 / 30 * PI
}
channel Clock {
in min(m, update(m')) == m'
out hour(h, update(m')) == if(eq(m', 0), mod(h + 1, 24), h)
in min(m, update(m2)) == m2
out hour(h, update(m2)) == if(eq(m2, 0), mod(h + 1, 24), h)
}
}
geometry {
node c HourUpdate:520,340,30,30
View
13
AlgebraicDataflowArchitectureModel/models/Triangle.model 0 → 100644
channel cio1 {
out base(x: Double, setBase(x2)) == x2
}
 
channel cio2 {
out height(y: Double, setHeight(y2)) == y2
}
 
channel triable {
in base(x, update(x2, y2)) == x2
in height(y, update(x2, y2)) == y2
out hypothenuse(z: Double, update(x2, y2)) == sqrt(x2 * x2 + y2 * y2)
}
View
6
AlgebraicDataflowArchitectureModel/src/application/actions/JavaPrototypeGenerateAction.java
import algorithms.*;
import application.editor.Editor;
import code.ast.*;
import generators.CodeGenerator;
import generators.CodeGeneratorFromControlFlowGraph;
import generators.CodeGeneratorFromDataFlowGraph;
import generators.DataTransferMethodAnalyzer;
import generators.JavaCodeGenerator;
import generators.JavaMethodBodyGenerator;
import generators.JavaSpecific;
CodeGenerator.resetMainTypeName(); // use the default main type's name.
}
ControlFlowGraph controlFlowGraph = editor.getControlFlowGraph();
if (controlFlowGraph != null) {
editor.setCodes(CodeGenerator.doGenerate(model, controlFlowGraph, new JavaSpecific()));
editor.setCodes(new CodeGeneratorFromControlFlowGraph().generateCode(model, controlFlowGraph, new JavaSpecific()));
} else {
editor.setCodes(CodeGenerator.doGenerate(model, dataFlowgraph, new JavaSpecific()));
editor.setCodes(new CodeGeneratorFromDataFlowGraph().generateCode(model, dataFlowgraph, new JavaSpecific()));
}
ModelExtension.recoverModel(model);
for (CompilationUnit file : editor.getCodes()) {
System.out.println(file);
View
AlgebraicDataflowArchitectureModel/src/generators/CodeGenerator.java
View
AlgebraicDataflowArchitectureModel/src/generators/CodeGeneratorFromControlFlowGraph.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/generators/CodeGeneratorFromDataFlowGraph.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/generators/ILanguageSpecific.java
View
AlgebraicDataflowArchitectureModel/src/generators/JavaSpecific.java
View
AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java
View
AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/ControlFlowGraph.java