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() {
|
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.Method;
|
||||||
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
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;
|
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>();
|
this.result_constraint_set = new ArrayList<TC_Abstract>();
|
||||||
|
|
||||||
@ -34,15 +34,26 @@ public class Type {
|
|||||||
// TODO: AssAll + this: A für die aktuelle Klasse
|
// 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
|
// 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
|
// fass
|
||||||
private List<AS_Field> make_field_assumptions(ClassOrInterface cl) {
|
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() ) {
|
for (Field f : cl.getFieldDecl() ) {
|
||||||
AS_Field as_f = new AS_Field(cl, f) ;
|
AS_Field as_f = new AS_Field(cl, f) ;
|
||||||
fass.add(as_f);
|
fass.add(as_f);
|
||||||
}
|
}
|
||||||
|
|
||||||
return fass;
|
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() {
|
public RefTypeOrTPH getType() {
|
||||||
return type;
|
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.parser.JavaTXParser;
|
||||||
import de.dhbwstuttgart.strucTypes.AS_Abstract;
|
import de.dhbwstuttgart.strucTypes.AS_Abstract;
|
||||||
import de.dhbwstuttgart.strucTypes.TC_Abstract;
|
import de.dhbwstuttgart.strucTypes.TC_Abstract;
|
||||||
import de.dhbwstuttgart.strucTypes.Type;
|
import de.dhbwstuttgart.strucTypes.Algo_Type;
|
||||||
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -40,7 +40,7 @@ public class GeneralParserTest{
|
|||||||
//filenames.add("FieldVarTest.jav");
|
//filenames.add("FieldVarTest.jav");
|
||||||
|
|
||||||
//filenames.add("StructuralTypesField.jav");
|
//filenames.add("StructuralTypesField.jav");
|
||||||
filenames.add("StructuralTypesSimple.jav");
|
filenames.add("StructuralTypesSimple2.jav");
|
||||||
|
|
||||||
JavaTXParser parser = new JavaTXParser();
|
JavaTXParser parser = new JavaTXParser();
|
||||||
try{
|
try{
|
||||||
@ -53,7 +53,10 @@ public class GeneralParserTest{
|
|||||||
SourceFile sfdebug = sf;
|
SourceFile sfdebug = sf;
|
||||||
|
|
||||||
List<AS_Abstract> ass = new ArrayList<AS_Abstract>();
|
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(); }
|
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