TypeExpr Algo begonnen

This commit is contained in:
sebastian 2017-03-16 16:26:59 +01:00
parent e115430874
commit 382a39f255
7 changed files with 131 additions and 13 deletions

View File

@ -20,7 +20,7 @@ public class AS_Argument extends AS_Abstract {
public String toString() {
return String.format("Assumption: { %s : %s } )" , fp.toString() , tv_alpha.toString() );
return String.format("Assumption: { %s : %s } )" , fp.getName() , tv_alpha.toString() );
}

View File

@ -8,7 +8,7 @@ import de.dhbwstuttgart.syntaxtree.Field;
import de.dhbwstuttgart.syntaxtree.Method;
import de.dhbwstuttgart.syntaxtree.SourceFile;
public class Type {
public class Algo_Type {
@ -16,7 +16,7 @@ public class Type {
private List<TC_Abstract> result_constraint_set;
public Type(List<AS_Abstract> ass, ClassOrInterface cl) {
public Algo_Type(List<AS_Abstract> ass, ClassOrInterface cl) {
this.result_constraint_set = new ArrayList<TC_Abstract>();
@ -34,15 +34,26 @@ public class Type {
// TODO: AssAll + this: A für die aktuelle Klasse
//Beispielhafte Ausgabe der Assumptions
for (AS_Abstract as : assAll ) {
System.out.println(as.toString());
}
// für alle Methoden der Klasse
List<AS_Argument> ass_arguments = new ArrayList<AS_Argument>();
for (Method m : cl.getMethods()) {
for (int i = 0; i < m.parameterlist.formalparameter.size() ; i++ ) {
AS_Argument as_argument = new AS_Argument(m.parameterlist.formalparameter.get(i), i , m , cl );
ass_arguments.add(as_argument);
}
}
// ASS = AssAll vereinigt mit ass_arguments
assAll.addAll(ass_arguments);
//Beispielhafte Ausgabe der Assumptions
for (AS_Abstract as : assAll ) {
System.out.println(as.toString());
}
@ -58,13 +69,12 @@ public class Type {
// fass
private List<AS_Field> make_field_assumptions(ClassOrInterface cl) {
List<AS_Field> fass = new ArrayList<AS_Field>();
List<AS_Field> fass = new ArrayList<AS_Field>();
for (Field f : cl.getFieldDecl() ) {
AS_Field as_f = new AS_Field(cl, f) ;
fass.add(as_f);
}
}
return fass;
}

View File

@ -0,0 +1,57 @@
package de.dhbwstuttgart.strucTypes;
import java.util.ArrayList;
import java.util.List;
import de.dhbwstuttgart.syntaxtree.statement.Statement;
public class Algo_TypeExpr {
List<TC_Abstract> res_constriant_set;
//TODO Hier muss noch ein passendes Datenformat gefunden werden
String res_expression_typed;
// übergabe der assumptions und der Statments der Methode
public Algo_TypeExpr(List<AS_Abstract> ass , List<Statement> expression ) {
this.res_constriant_set = new ArrayList<TC_Abstract>();
/*
* Wenn erstes element Return statement ist da
*/
// Fall 1 (Ass , x ) Expression ist lediglich ein Argument
// ContraintSet ist leer;
// Expression Typed?
// Suche in den Assumptions nach der passenden Assumption
// this.res_expression_typed = x : alpha...
}
}

View File

@ -17,4 +17,12 @@ public class FormalParameter extends SyntaxTreeNode
public RefTypeOrTPH getType() {
return type;
}
// @sebastian hinzugefügt für Assumption
public String getName() {
return name;
}
}

View File

@ -9,7 +9,7 @@ import java.util.List;
import de.dhbwstuttgart.parser.JavaTXParser;
import de.dhbwstuttgart.strucTypes.AS_Abstract;
import de.dhbwstuttgart.strucTypes.TC_Abstract;
import de.dhbwstuttgart.strucTypes.Type;
import de.dhbwstuttgart.strucTypes.Algo_Type;
import de.dhbwstuttgart.syntaxtree.SourceFile;
import org.junit.Test;
@ -40,7 +40,7 @@ public class GeneralParserTest{
//filenames.add("FieldVarTest.jav");
//filenames.add("StructuralTypesField.jav");
filenames.add("StructuralTypesSimple.jav");
filenames.add("StructuralTypesSimple2.jav");
JavaTXParser parser = new JavaTXParser();
try{
@ -53,7 +53,10 @@ public class GeneralParserTest{
SourceFile sfdebug = sf;
List<AS_Abstract> ass = new ArrayList<AS_Abstract>();
Type type = new Type( ass , sf.KlassenVektor.get(0));
Algo_Type type = new Algo_Type( ass , sf.KlassenVektor.get(0));
// Erstellen der TypeExpression

View File

@ -14,6 +14,7 @@ class A {
mt3(a) {return a.add(); }
}

View File

@ -0,0 +1,39 @@
class A {
A f1;
A f2;
mt6(haus2) {
nummer = haus.hausnummer;
val = nummer.value;
return val;
}
mt1(x) { return x; }
mt2(x) { return x.field ; }
mt3(a,b,c) { return a.add(b).sub(c); }
mt4(a,b,c) {
r1 = a.add(b);
r2 = r1.sub(c);
return r2;
}
mt5(haus) { return haus.hausnummer.value; }
}