TypeExpr Algo begonnen
This commit is contained in:
parent
e115430874
commit
382a39f255
@ -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() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
57
src/de/dhbwstuttgart/strucTypes/Algo_TypeExpr.java
Normal file
57
src/de/dhbwstuttgart/strucTypes/Algo_TypeExpr.java
Normal 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...
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -14,6 +14,7 @@ class A {
|
||||
|
||||
mt3(a) {return a.add(); }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
39
test/strucTypes/StructuralTypesSimple2.jav
Normal file
39
test/strucTypes/StructuralTypesSimple2.jav
Normal 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; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user