forked from JavaTX/JavaCompilerCore
Debug-Code einfügen für Karthesisches Produkt in Unify
This commit is contained in:
parent
2c4f735935
commit
442da87f48
@ -36,6 +36,10 @@ public class ConstraintsSet extends UndMenge<Pair> implements Iterable<OderConst
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void filterWrongConstraints(Unifier unify) {
|
public void filterWrongConstraints(Unifier unify) {
|
||||||
|
/*
|
||||||
|
* Das ConstraintsSet enthält nur OderConstraints, welche UND-Verknüpft sind.
|
||||||
|
* Hier werden Constraints in den OderConstraints kontrolliert:
|
||||||
|
*/
|
||||||
for(OderConstraint constraint : this){
|
for(OderConstraint constraint : this){
|
||||||
constraint.filterWrongConstraints(unify);
|
constraint.filterWrongConstraints(unify);
|
||||||
}
|
}
|
||||||
|
@ -81,10 +81,15 @@ public class OderConstraint extends OderMenge<Pair>{
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addConstraint(UndConstraint methodConstraint) {
|
public void addConstraint(UndConstraint constraint) {
|
||||||
oderConstraintPairs.add(methodConstraint);
|
oderConstraintPairs.add(constraint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filtert die Constraints in diesem ODER-Verknüpften Constraint aus,
|
||||||
|
* welche keinen Sinn ergeben, also beim unifizieren scheitern.
|
||||||
|
* @param unifier - Wird für die Unifizierung benutzt
|
||||||
|
*/
|
||||||
void filterWrongConstraints(Unifier unifier) {
|
void filterWrongConstraints(Unifier unifier) {
|
||||||
Menge<UndConstraint> filteredConstraints = new Menge<>();
|
Menge<UndConstraint> filteredConstraints = new Menge<>();
|
||||||
for(UndConstraint cons : this.getUndConstraints()){
|
for(UndConstraint cons : this.getUndConstraints()){
|
||||||
|
@ -34,6 +34,13 @@ public class UndConstraint extends UndMenge<Pair> {
|
|||||||
Pair p = new Pair(type, rT);
|
Pair p = new Pair(type, rT);
|
||||||
this.set.add(new EinzelElement<Pair>(p));
|
this.set.add(new EinzelElement<Pair>(p));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
String ret = this.getConstraintPairs().toString();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public UndConstraint(ConstraintType p1, ConstraintType p2) {
|
public UndConstraint(ConstraintType p1, ConstraintType p2) {
|
||||||
|
@ -630,25 +630,30 @@ public class Unify
|
|||||||
}
|
}
|
||||||
//Schritt 4, Teil 2: Kartesisches Produkt bilden.
|
//Schritt 4, Teil 2: Kartesisches Produkt bilden.
|
||||||
|
|
||||||
/*
|
///*
|
||||||
//TODO: Vor der Bildung des Karthesischen Produkts unmögliche Kombinationen ausfiltern
|
//TODO: Vor der Bildung des Karthesischen Produkts unmögliche Kombinationen ausfiltern
|
||||||
//cartProduktSets kontrollieren:
|
//cartProduktSets kontrollieren:
|
||||||
ConstraintsSet cSet = new ConstraintsSet();
|
ConstraintsSet cSet = new ConstraintsSet();
|
||||||
for (Menge<Menge<Pair>> vecvecpair : cartProduktSets){
|
UndConstraint eq1cons = new UndConstraint();
|
||||||
|
for(Pair p : Eq1){
|
||||||
|
eq1cons.addConstraint(p.TA1, p.TA2);
|
||||||
|
}
|
||||||
|
cSet.add(eq1cons);
|
||||||
|
for(Menge<Menge<Pair>> vecvecpair : cartProduktSets){
|
||||||
OderConstraint orConstraints = new OderConstraint();
|
OderConstraint orConstraints = new OderConstraint();
|
||||||
for(Menge<Pair> pairs : vecvecpair){
|
for(Menge<Pair> pairs : vecvecpair){
|
||||||
UndConstraint uCons = new UndConstraint();
|
UndConstraint uCons = new UndConstraint();
|
||||||
for(Pair p : pairs){
|
for(Pair p : pairs){
|
||||||
uCons.addConstraint(new ConstraintPair(p));
|
uCons.addConstraint(p.TA1, p.TA2);
|
||||||
}
|
}
|
||||||
orConstraints.addConstraint(uCons);
|
orConstraints.addConstraint(uCons);
|
||||||
}
|
}
|
||||||
cSet.addItems(orConstraints);
|
cSet.add(orConstraints);
|
||||||
}
|
}
|
||||||
|
|
||||||
SectionLogger log = Logger.getSectionLogger(Unify.class.getName(), Section.UNIFY);
|
SectionLogger log = Logger.getSectionLogger(Unify.class.getName(), Section.UNIFY);
|
||||||
|
|
||||||
if(filter){
|
if(filter && false){
|
||||||
Unifier filterUnify = (pairs)->{
|
Unifier filterUnify = (pairs)->{
|
||||||
String pairsString = pairs.toString();
|
String pairsString = pairs.toString();
|
||||||
Menge<Menge<Pair>> retValue = new Menge<>();
|
Menge<Menge<Pair>> retValue = new Menge<>();
|
||||||
@ -656,18 +661,19 @@ public class Unify
|
|||||||
//Unify.unify(pairs, fc_tto, (i)->{});
|
//Unify.unify(pairs, fc_tto, (i)->{});
|
||||||
log.debug("Filtere Constraints:\n"+pairsString);
|
log.debug("Filtere Constraints:\n"+pairsString);
|
||||||
log.debug("Ergebnis: "+ retValue);
|
log.debug("Ergebnis: "+ retValue);
|
||||||
return retValue;};
|
return retValue;
|
||||||
|
};
|
||||||
|
|
||||||
log.debug("Filtere mithilfe von 'filterWrongConstraints': "+cSet);
|
log.debug("Filtere mithilfe von 'filterWrongConstraints': "+cSet);
|
||||||
cSet.filterWrongConstraints(filterUnify);
|
cSet.filterWrongConstraints(filterUnify);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Menge<Menge<Pair>> bigCartProductErg = cSet.cartesianProduct();
|
Menge<Menge<Pair>> bigCartProductErg3 = cSet.cartesianProduct();
|
||||||
if(filter)log.debug("Karthesisches Produkt nach Filterung: "+bigCartProductErg);
|
if(filter)log.debug("Karthesisches Produkt nach Filterung: "+bigCartProductErg3);
|
||||||
*/
|
//*/
|
||||||
|
|
||||||
///*
|
///* Altes Karthesisches Produkt: Auskommentiert durch Andreas Stadelmeier
|
||||||
//Hier wird aus den in Schritt 4, Teil 1 erzeugten Vektoren das Kartesische Produkt gebildet.
|
//Hier wird aus den in Schritt 4, Teil 1 erzeugten Vektoren das Kartesische Produkt gebildet.
|
||||||
Menge<Pair> helpvp;
|
Menge<Pair> helpvp;
|
||||||
Menge<Menge<Pair>> bigCartProductErg = new Menge<Menge<Pair>>();
|
Menge<Menge<Pair>> bigCartProductErg = new Menge<Menge<Pair>>();
|
||||||
@ -689,6 +695,14 @@ public class Unify
|
|||||||
}
|
}
|
||||||
//*/
|
//*/
|
||||||
|
|
||||||
|
if(! bigCartProductErg.equals(bigCartProductErg3)){
|
||||||
|
for(int i = 0; i<bigCartProductErg3.size();i++){
|
||||||
|
if(! (bigCartProductErg.get(i).equals(bigCartProductErg3.get(i)))){
|
||||||
|
System.out.println(); //TODO: Hier testen, wo der Unterschied zwischen den beiden Karthesischen Produkten ist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Schritt 5: Einsetzen der Subst Regel
|
//Schritt 5: Einsetzen der Subst Regel
|
||||||
//Hier werden die TPHs substituiert, und dann nach geänderten und nicht geänderten Sets sortiert.
|
//Hier werden die TPHs substituiert, und dann nach geänderten und nicht geänderten Sets sortiert.
|
||||||
Menge<Menge<Pair>> changedSets = new Menge<Menge<Pair>>();
|
Menge<Menge<Pair>> changedSets = new Menge<Menge<Pair>>();
|
||||||
|
@ -8,6 +8,7 @@ import java.io.UnsupportedEncodingException;
|
|||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import plugindevelopment.TypeInsertTester;
|
||||||
import de.dhbwstuttgart.core.MyCompiler;
|
import de.dhbwstuttgart.core.MyCompiler;
|
||||||
import de.dhbwstuttgart.core.MyCompilerAPI;
|
import de.dhbwstuttgart.core.MyCompilerAPI;
|
||||||
import de.dhbwstuttgart.logger.Logger;
|
import de.dhbwstuttgart.logger.Logger;
|
||||||
@ -17,6 +18,8 @@ import de.dhbwstuttgart.parser.JavaParser.yyException;
|
|||||||
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||||
import de.dhbwstuttgart.typeinference.Menge;
|
import de.dhbwstuttgart.typeinference.Menge;
|
||||||
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
|
||||||
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
|
||||||
|
|
||||||
public class UnifyFilter {
|
public class UnifyFilter {
|
||||||
public final static String rootDirectory = System.getProperty("user.dir")+"/test/unify/";
|
public final static String rootDirectory = System.getProperty("user.dir")+"/test/unify/";
|
||||||
@ -32,6 +35,7 @@ public class UnifyFilter {
|
|||||||
//Nichts weiter unternehmen. Nur die Ausgabe des Unifikationsalgorithmus anzeigen.
|
//Nichts weiter unternehmen. Nur die Ausgabe des Unifikationsalgorithmus anzeigen.
|
||||||
String log = Logger.getWholeLog();
|
String log = Logger.getWholeLog();
|
||||||
//System.out.println(log);
|
//System.out.println(log);
|
||||||
|
|
||||||
writeLogFile(log);
|
writeLogFile(log);
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
Loading…
Reference in New Issue
Block a user