試行錯誤
1 parent 6e60c06 commit 1f7ffd0f0fc9b3fe9998563dbd5a77776c22fcc3
yoichiro authored on 6 Apr 2020
Showing 1 changed file
View
73
AlgebraicDataflowArchitectureModel/src/algorithm/CodeGenerator.java
import models.algebra.Parameter;
import models.algebra.ParameterizedIdentifierIsFutureWork;
import models.algebra.Symbol;
import models.algebra.Term;
import models.algebra.Type;
import models.algebra.UnificationFailed;
import models.algebra.ValueUndefined;
import models.dataConstraintModel.ChannelMember;
import models.dataConstraintModel.DataConstraintModel;
import models.dataConstraintModel.IdentifierTemplate;
import models.dataFlowModel.*;
import models.dataFlowModel.DataflowChannelGenerator.IResourceStateAccessor;
 
IResourceStateAccessor pushAccessor = new IResourceStateAccessor() {
@Override
public Expression getCurrentStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) {
if (target.equals(from)) {
return new Field(target.getResourceName(), target.getResourceStateType());
return new Field(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt);
}
return null;
}
 
@Override
public Expression getNextStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) {
return new Parameter(target.getResourceName(), target.getResourceStateType());
return new Parameter(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt);
}
};
IResourceStateAccessor pullAccessor = new IResourceStateAccessor() {
@Override
public Expression getCurrentStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) {
if (target.equals(from)) {
return new Field(target.getResourceName(), target.getResourceStateType());
return new Field(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt);
}
return null;
}
 
String tmp;
codes.add("public class " + resource.getIdentifierTemplate().getResourceName().substring(0, 1).toUpperCase()
+ resource.getIdentifierTemplate().getResourceName().substring(1) + " {");
if (((StoreAttribute) resource.getAttribute()).isStored()) {
for (Edge e : resource.getInEdges()) {
ResourceDependency re = (ResourceDependency) e;
for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) {
try {
Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pushAccessor);
if(exp != null) {
Parameter param = exp.getSubTerms(Parameter.class).values().iterator().next();
codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + param.toImplementation() + "){");
tmp = "\t\t" + exp.toImplementation();
codes.add(tmp);
codes.add("\t" + "}");
}
} catch (ParameterizedIdentifierIsFutureWork e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ResolvingMultipleDefinitionIsFutureWork e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InvalidMessage e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnificationFailed e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ValueUndefined e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
for (Edge e : resource.getOutEdges()) {
ResourceDependency re = (ResourceDependency) e;
for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) {
try {
Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pushAccessor);
if(exp != null) {
tmp = "\t" + exp.toImplementation();
Parameter param = exp.getSubTerms(Parameter.class).values().iterator().next();
codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + param.toImplementation() + "){");
tmp = "\t\t" + exp.toImplementation();
codes.add(tmp);
codes.add("\t" + "}");
}
} catch (ParameterizedIdentifierIsFutureWork e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) {
try {
Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pullAccessor);
if(exp != null) {
tmp = "\t" + "return " + exp.toImplementation();
codes.add(tmp);
}
} catch (ParameterizedIdentifierIsFutureWork e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ResolvingMultipleDefinitionIsFutureWork e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InvalidMessage e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnificationFailed e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ValueUndefined e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
for (Edge e : resource.getOutEdges()) {
ResourceDependency re = (ResourceDependency) e;
for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) {
try {
Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pullAccessor);
if(exp != null) {
tmp = "\t" + "return " + exp.toImplementation();
tmp = "\t" + exp.toImplementation();
codes.add(tmp);
}
} catch (ParameterizedIdentifierIsFutureWork e1) {