コード生成部分を試験的に実装
1 parent 6278c54 commit fdf06a52bb761577a4811570035db34d7206da4e
yoichiro authored on 21 Apr 2020
Showing 2 changed files
View
42
AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java
type.addField(new FieldDeclaration(DataConstraintModel.typeInt,
rn.getIdentifierTemplate().getResourceName()));
codes.add(type);
}
 
return codes;
}
static public ArrayList<String> getCodes(ArrayList<TypeDeclaration> codeTree){
ArrayList<String> codes = new ArrayList<>();
for(TypeDeclaration type:codeTree) {
codes.add("public class " + type.getTypeName() + "{");
for(FieldDeclaration field:type.getFields()) {
codes.add("\t" + field.getType().getImplementastionTypeName() + " " + field.getName() + ";");
}
codes.add("");
for(MethodDeclaration method:type.getMethods()) {
codes.add("\t" + "public " + method.getReturnType().getImplementastionTypeName() + " " + method.getName() + "{");
for(VariableDeclaration value:method.getParameters()) {
}
codes.add("\t" + "}");
codes.add("");
}
codes.add("}");
}
return codes;
}
 
static private ArrayList<ResourceNode> StoreResourceCheck(ResourceDependencyGraph graph) {
View
8
AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
 
import algorithms.*;
import code.ast.FieldDeclaration;
import code.ast.MethodDeclaration;
model = parser.doParse();
ResourceDependencyGraph graph = DataStorageNecessity.run(model);
EdgeTransitionSelectable.run(graph);
DataStorageDecision.run(graph);
for(TypeDeclaration str:CodeGenerator.doGenerate(graph, model)) {
ArrayList<TypeDeclaration> codetree = CodeGenerator.doGenerate(graph, model);
for(TypeDeclaration str:codetree) {
System.out.println(str.getTypeName());
for(FieldDeclaration field:str.getFields()) {
System.out.println("-" + field.getType().getTypeName() + " " + field.getName());
}
for(MethodDeclaration method:str.getMethods()) {
System.out.println("-" + method.getReturnType() + " " + method.getName());
}
}
for(String str:CodeGenerator.getCodes(codetree)) {
System.out.println(str);
}
} catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutKeyword
| ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression
| WrongRHSExpression | ExpectedRightBracket e) {