forked from JavaTX/JavaCompilerCore
Merge branch 'refactoring' into antlr
This commit is contained in:
commit
35b12402c7
@ -4,10 +4,10 @@
|
|||||||
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
|
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
|
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
<listEntry value="/JavaCompilerCore/tools/AntParserBuilderWindows.xml"/>
|
<listEntry value="/JavaCompilerCore"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
<listEntry value="1"/>
|
<listEntry value="4"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
|
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
|
||||||
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
|
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
encoding//src/mycompiler/mystatement/LambdaExpression.java=UTF-8
|
encoding//src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java=UTF-8
|
||||||
encoding//src/typinferenz/SingleConstraint.java=UTF-8
|
encoding//src/de/dhbwstuttgart/typeinference/SingleConstraint.java=UTF-8
|
||||||
encoding//src/typinferenz/UndConstraint.java=UTF-8
|
encoding//src/de/dhbwstuttgart/typeinference/UndConstraint.java=UTF-8
|
||||||
encoding/<project>=ISO-8859-1
|
encoding/<project>=ISO-8859-1
|
||||||
|
10
bin/.gitignore
vendored
10
bin/.gitignore
vendored
@ -1,8 +1,6 @@
|
|||||||
/mycompiler
|
/de
|
||||||
/typinferenz
|
|
||||||
/userinterface
|
|
||||||
/bytecode
|
|
||||||
/myJvmDisassembler
|
|
||||||
/parser
|
|
||||||
/plugindevelopment
|
/plugindevelopment
|
||||||
|
/mycompiler
|
||||||
|
/mytypereconstruction
|
||||||
/syntaxTree
|
/syntaxTree
|
||||||
|
/userinterface
|
||||||
|
6
bin/bytecode/FieldTest.jav
Normal file
6
bin/bytecode/FieldTest.jav
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
class FieldTest{
|
||||||
|
String var;
|
||||||
|
String methode(String para1){
|
||||||
|
return var;
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
3
bin/parser/BoundedParameter.jav
Normal file
3
bin/parser/BoundedParameter.jav
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
class Matrix{
|
||||||
|
<A extends B, C extends B> String op = "String";
|
||||||
|
}
|
3
bin/parser/FieldInitializationTest.jav
Normal file
3
bin/parser/FieldInitializationTest.jav
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
class FieldInitializationTest{
|
||||||
|
String var = "hallo";
|
||||||
|
}
|
3
bin/parser/GenericFieldVarTest.jav
Normal file
3
bin/parser/GenericFieldVarTest.jav
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
class Test{
|
||||||
|
<A> A var;
|
||||||
|
}
|
4
bin/parser/ImportTest.jav
Normal file
4
bin/parser/ImportTest.jav
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
class ImportTest{
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package myJvmDisassembler;
|
package de.dhbwstuttgart.JvmDisassembler;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package myJvmDisassembler;
|
package de.dhbwstuttgart.JvmDisassembler;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.Attribute.8529.package
|
// ino.module.Attribute.8529.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.Attribute.8529.import
|
// ino.module.Attribute.8529.import
|
||||||
@ -7,11 +7,11 @@ import java.io.FileOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
|
||||||
// ino.class.Attribute.21446.declaration
|
// ino.class.Attribute.21446.declaration
|
||||||
public abstract class Attribute implements ClassFileMember
|
public abstract class Attribute implements ClassFileMember
|
||||||
// ino.end
|
// ino.end
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.AttributeInfo.8530.package
|
// ino.module.AttributeInfo.8530.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.AttributeInfo.8530.import
|
// ino.module.AttributeInfo.8530.import
|
||||||
@ -8,8 +8,7 @@ import java.io.OutputStream;
|
|||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.class.AttributeInfo.21467.declaration
|
// ino.class.AttributeInfo.21467.declaration
|
||||||
public class AttributeInfo extends Attribute
|
public class AttributeInfo extends Attribute
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Class_info.8533.package
|
// ino.module.CONSTANT_Class_info.8533.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_Class_info.8533.import
|
// ino.module.CONSTANT_Class_info.8533.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Double_info.8534.package
|
// ino.module.CONSTANT_Double_info.8534.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_Double_info.8534.import
|
// ino.module.CONSTANT_Double_info.8534.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Fieldref_info.8535.package
|
// ino.module.CONSTANT_Fieldref_info.8535.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_Fieldref_info.8535.import
|
// ino.module.CONSTANT_Fieldref_info.8535.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Float_info.8536.package
|
// ino.module.CONSTANT_Float_info.8536.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.CONSTANT_Float_info.8536.import
|
// ino.module.CONSTANT_Float_info.8536.import
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Integer_info.8537.package
|
// ino.module.CONSTANT_Integer_info.8537.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.CONSTANT_Integer_info.8537.import
|
// ino.module.CONSTANT_Integer_info.8537.import
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_InterfaceMethodref_info.8538.package
|
// ino.module.CONSTANT_InterfaceMethodref_info.8538.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_InterfaceMethodref_info.8538.import
|
// ino.module.CONSTANT_InterfaceMethodref_info.8538.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Long_info.8539.package
|
// ino.module.CONSTANT_Long_info.8539.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_Long_info.8539.import
|
// ino.module.CONSTANT_Long_info.8539.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Methodref_info.8540.package
|
// ino.module.CONSTANT_Methodref_info.8540.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_Methodref_info.8540.import
|
// ino.module.CONSTANT_Methodref_info.8540.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_NameAndType_info.8541.package
|
// ino.module.CONSTANT_NameAndType_info.8541.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_NameAndType_info.8541.import
|
// ino.module.CONSTANT_NameAndType_info.8541.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_String_info.8542.package
|
// ino.module.CONSTANT_String_info.8542.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_String_info.8542.import
|
// ino.module.CONSTANT_String_info.8542.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CONSTANT_Utf8_info.8543.package
|
// ino.module.CONSTANT_Utf8_info.8543.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CONSTANT_Utf8_info.8543.import
|
// ino.module.CONSTANT_Utf8_info.8543.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.CPInfo.8544.package
|
// ino.module.CPInfo.8544.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CPInfo.8544.import
|
// ino.module.CPInfo.8544.import
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
// ino.module.ClassFile.8531.package
|
// ino.module.ClassFile.8531.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.ClassFile.8531.import
|
// ino.module.ClassFile.8531.import
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -13,20 +13,27 @@ import java.io.OutputStream;
|
|||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myclass.ParameterList;
|
|
||||||
import mycompiler.myclass.UsedId;
|
|
||||||
import mycompiler.MyCompiler;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.myinterface.Interface;
|
|
||||||
import mycompiler.mystatement.Assign;
|
|
||||||
import mycompiler.mystatement.Block;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.SourceFile;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.core.MyCompiler;
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.Interface;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.ParameterList;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Assign;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Block;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
|
||||||
|
|
||||||
// ino.class.ClassFile.21492.description type=javadoc
|
// ino.class.ClassFile.21492.description type=javadoc
|
||||||
/**
|
/**
|
||||||
* Darstellung einer Klassendatei aus Sicht fuer die JVM.
|
* Darstellung einer Klassendatei aus Sicht fuer die JVM.
|
@ -1,9 +1,9 @@
|
|||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
|
||||||
public interface ClassFileMember {
|
public interface ClassFileMember {
|
||||||
public void codegen(ClassFile cf, OutputStream out) throws JVMCodeException, IOException;
|
public void codegen(ClassFile cf, OutputStream out) throws JVMCodeException, IOException;
|
@ -4,7 +4,7 @@
|
|||||||
//muss wieder einkommentiert werden
|
//muss wieder einkommentiert werden
|
||||||
|
|
||||||
// ino.module.CodeAttribute.8532.package
|
// ino.module.CodeAttribute.8532.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CodeAttribute.8532.import
|
// ino.module.CodeAttribute.8532.import
|
||||||
@ -14,10 +14,9 @@ import java.io.OutputStream;
|
|||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.class.CodeAttribute.21681.declaration
|
// ino.class.CodeAttribute.21681.declaration
|
||||||
public class CodeAttribute extends Attribute
|
public class CodeAttribute extends Attribute
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.ExceptionTable.8545.package
|
// ino.module.ExceptionTable.8545.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.ExceptionTable.8545.import
|
// ino.module.ExceptionTable.8545.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.FieldInfo.8546.package
|
// ino.module.FieldInfo.8546.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.FieldInfo.8546.import
|
// ino.module.FieldInfo.8546.import
|
||||||
@ -8,11 +8,11 @@ import java.io.IOException;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
|
||||||
// ino.class.FieldInfo.22068.declaration
|
// ino.class.FieldInfo.22068.declaration
|
||||||
public class FieldInfo implements ClassFileMember
|
public class FieldInfo implements ClassFileMember
|
||||||
// ino.end
|
// ino.end
|
@ -1,13 +1,16 @@
|
|||||||
// ino.module.JVMCode.8547.package
|
// ino.module.JVMCode.8547.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.JVMCode.8547.import
|
// ino.module.JVMCode.8547.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
|
||||||
// ino.class.JVMCode.22140.description type=javadoc
|
// ino.class.JVMCode.22140.description type=javadoc
|
||||||
/**
|
/**
|
||||||
* Enthaelt die Befehle fuer die Umsetzung in JVM-Code und
|
* Enthaelt die Befehle fuer die Umsetzung in JVM-Code und
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.Key.8548.package
|
// ino.module.Key.8548.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.Key.8548.import
|
// ino.module.Key.8548.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.MethodInfo.8549.package
|
// ino.module.MethodInfo.8549.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.MethodInfo.8549.import
|
// ino.module.MethodInfo.8549.import
|
||||||
@ -8,11 +8,11 @@ import java.io.IOException;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
|
||||||
// ino.class.MethodInfo.22923.declaration
|
// ino.class.MethodInfo.22923.declaration
|
||||||
public class MethodInfo implements ClassFileMember
|
public class MethodInfo implements ClassFileMember
|
||||||
// ino.end
|
// ino.end
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SignatureInfo.8550.package
|
// ino.module.SignatureInfo.8550.package
|
||||||
package mycompiler.mybytecode;
|
package de.dhbwstuttgart.bytecode;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.SignatureInfo.8550.import
|
// ino.module.SignatureInfo.8550.import
|
||||||
@ -8,17 +8,20 @@ import java.io.IOException;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myclass.ParameterList;
|
|
||||||
import mycompiler.myclass.UsedId;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mytype.BoundedGenericTypeVar;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.ParameterList;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.BoundedGenericTypeVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||||||
|
|
||||||
// ino.class.SignatureInfo.22968.description type=javadoc
|
// ino.class.SignatureInfo.22968.description type=javadoc
|
@ -1,18 +1,24 @@
|
|||||||
|
|
||||||
// ino.module.AClassOrInterface.8526.package
|
// ino.module.AClassOrInterface.8526.package
|
||||||
package mycompiler;
|
package de.dhbwstuttgart.core;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.AClassOrInterface.8526.import
|
// ino.module.AClassOrInterface.8526.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myclass.UsedId;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.parser.JavaClassName;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
|
|
||||||
// ino.class.AClassOrInterface.21186.description type=javadoc
|
// ino.class.AClassOrInterface.21186.description type=javadoc
|
||||||
/**
|
/**
|
||||||
* Superklasse von Class und Interface. Beinhaltet gemeinsame Attribute
|
* Superklasse von Class und Interface. Beinhaltet gemeinsame Attribute
|
||||||
@ -28,7 +34,7 @@ public interface AClassOrInterface
|
|||||||
// ino.class.AClassOrInterface.21186.body
|
// ino.class.AClassOrInterface.21186.body
|
||||||
{
|
{
|
||||||
|
|
||||||
public String getName();
|
public JavaClassName getName();
|
||||||
public Vector<UsedId> getSuperInterfaces();
|
public Vector<UsedId> getSuperInterfaces();
|
||||||
public void setSuperInterfaces(Vector<UsedId> vector);
|
public void setSuperInterfaces(Vector<UsedId> vector);
|
||||||
|
|
@ -1,19 +1,15 @@
|
|||||||
package userinterface;
|
package de.dhbwstuttgart.core;
|
||||||
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import mycompiler.MyCompiler;
|
|
||||||
import mycompiler.MyCompilerAPI;
|
|
||||||
import mycompiler.mytypereconstruction.TypeinferenceResultSet;
|
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.apache.log4j.varia.NullAppender;
|
import org.apache.log4j.varia.NullAppender;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
public class ConsoleInterface {
|
public class ConsoleInterface {
|
||||||
private static final String directory = System.getProperty("user.dir");
|
private static final String directory = System.getProperty("user.dir");
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.IItemWithOffset.8527.package
|
// ino.module.IItemWithOffset.8527.package
|
||||||
package mycompiler;
|
package de.dhbwstuttgart.core;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.class.IItemWithOffset.21249.declaration
|
// ino.class.IItemWithOffset.21249.declaration
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.MyCompiler.8569.package
|
// ino.module.MyCompiler.8569.package
|
||||||
package mycompiler;
|
package de.dhbwstuttgart.core;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
@ -13,42 +13,41 @@ import java.io.Reader;
|
|||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.myclass.Class;
|
|
||||||
import mycompiler.myclass.ClassBody;
|
|
||||||
import mycompiler.myclass.DeclId;
|
|
||||||
import mycompiler.myclass.FormalParameter;
|
|
||||||
import mycompiler.myclass.ImportDeclarations;
|
|
||||||
import mycompiler.myclass.Method;
|
|
||||||
import mycompiler.myclass.ParameterList;
|
|
||||||
import mycompiler.myclass.UsedId;
|
|
||||||
import mycompiler.myexception.CTypeReconstructionException;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.myparser.JavaParser;
|
|
||||||
import mycompiler.myparser.Scanner;
|
|
||||||
import mycompiler.myparser.JavaParser.yyException;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.IMatchable;
|
|
||||||
import mycompiler.mytype.ITypeContainer;
|
|
||||||
import mycompiler.mytype.Pair;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
|
||||||
import mycompiler.mytypereconstruction.TypeinferenceResultSet;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.apache.log4j.xml.DOMConfigurator;
|
import org.apache.log4j.xml.DOMConfigurator;
|
||||||
|
|
||||||
import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;
|
import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;
|
||||||
import com.sun.org.apache.xerces.internal.impl.xs.identity.Field;
|
import com.sun.org.apache.xerces.internal.impl.xs.identity.Field;
|
||||||
|
|
||||||
import typinferenz.FunNInterface;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.myexception.CTypeReconstructionException;
|
||||||
// ino.end
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
import de.dhbwstuttgart.parser.JavaParser;
|
||||||
import typinferenz.exceptions.DebugException;
|
import de.dhbwstuttgart.parser.Scanner;
|
||||||
import typinferenz.exceptions.ParserError;
|
import de.dhbwstuttgart.parser.JavaParser.yyException;
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
import de.dhbwstuttgart.syntaxtree.Class;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.ClassBody;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.FormalParameter;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.ImportDeclarations;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.Method;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.ParameterList;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.IMatchable;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.ITypeContainer;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
|
import de.dhbwstuttgart.typeinference.FunNInterface;
|
||||||
|
import de.dhbwstuttgart.typeinference.Pair;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.DebugException;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.ParserError;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -175,7 +174,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
// Klasse existiert, darf aber keine Parameterliste in der Definition haben
|
// Klasse existiert, darf aber keine Parameterliste in der Definition haben
|
||||||
if( KlassenVektor.elementAt(k).get_ParaList().size() == 0 )
|
if( KlassenVektor.elementAt(k).get_ParaList().size() == 0 )
|
||||||
{
|
{
|
||||||
RefType RNeu = new RefType( TempParameter.getName(), null,TempParameter.getOffset());
|
RefType RNeu = new RefType( TempParameter.getName().toString(), null,TempParameter.getOffset());
|
||||||
inferencelog.debug( "Vorher: " + Parameter );
|
inferencelog.debug( "Vorher: " + Parameter );
|
||||||
// i-te Stelle ersetzen
|
// i-te Stelle ersetzen
|
||||||
Parameter.set( i, RNeu );
|
Parameter.set( i, RNeu );
|
||||||
@ -562,7 +561,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
* Generiert den Bytecode und das Class-File f�r den Syntaxbaum.
|
* Generiert den Bytecode und das Class-File f�r den Syntaxbaum.
|
||||||
* @throws NullPointerException Wenn noch kein abstrakter Syntaxbaum vorhanden
|
* @throws NullPointerException Wenn noch kein abstrakter Syntaxbaum vorhanden
|
||||||
* ist.
|
* ist.
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public Vector<ClassFile> codeGeneration(ResultSet result)
|
public Vector<ClassFile> codeGeneration(ResultSet result)
|
||||||
throws NullPointerException, JVMCodeException
|
throws NullPointerException, JVMCodeException
|
||||||
@ -580,7 +579,8 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
|
|
||||||
codegenlog.info("Codegenerierung beendet!");
|
codegenlog.info("Codegenerierung beendet!");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
// ino.method.main.21313.defdescription type=javadoc
|
// ino.method.main.21313.defdescription type=javadoc
|
||||||
/**
|
/**
|
||||||
@ -658,7 +658,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
return OutputDir;
|
return OutputDir;
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
/*
|
||||||
// ino.method.getFullyQualifiedNameFromClassname.21322.definition
|
// ino.method.getFullyQualifiedNameFromClassname.21322.definition
|
||||||
public static String getFullyQualifiedNameFromClassname(String typ, ImportDeclarations declarations)
|
public static String getFullyQualifiedNameFromClassname(String typ, ImportDeclarations declarations)
|
||||||
// ino.end
|
// ino.end
|
||||||
@ -669,7 +669,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
for(int j=0;j<declarations.size();j++){
|
for(int j=0;j<declarations.size();j++){
|
||||||
UsedId impDecl=declarations.elementAt(j);
|
UsedId impDecl=declarations.elementAt(j);
|
||||||
if(impDecl.getSimpleName().equals(typ)){
|
if(impDecl.getSimpleName().equals(typ)){
|
||||||
ret=(impDecl.getQualifiedName());
|
ret=(impDecl.getQualifiedName().toString());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -677,7 +677,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
*/
|
||||||
// ino.method.makeRefTypesFullyQualified.21325.defdescription type=javadoc
|
// ino.method.makeRefTypesFullyQualified.21325.defdescription type=javadoc
|
||||||
/**
|
/**
|
||||||
* @author HOTI
|
* @author HOTI
|
||||||
@ -686,7 +686,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
* @param containedTypes Alle Typen, die die Klasse beinhaltet
|
* @param containedTypes Alle Typen, die die Klasse beinhaltet
|
||||||
* @param name Alle Klassen, die es in den BasicAssumptions und im
|
* @param name Alle Klassen, die es in den BasicAssumptions und im
|
||||||
* AbstractSyntaxTree gibt @param declarations Alle Import-Declarations
|
* AbstractSyntaxTree gibt @param declarations Alle Import-Declarations
|
||||||
*/
|
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.makeRefTypesFullyQualified.21325.definition
|
// ino.method.makeRefTypesFullyQualified.21325.definition
|
||||||
public static void makeRefTypesFullyQualified(Vector<Type> containedTypes, ImportDeclarations declarations)
|
public static void makeRefTypesFullyQualified(Vector<Type> containedTypes, ImportDeclarations declarations)
|
||||||
@ -716,7 +716,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
*/
|
||||||
/**
|
/**
|
||||||
* @author Arne Lüdtke
|
* @author Arne Lüdtke
|
||||||
* Ersetzt alle GTVs durch TPHs mit gleichem Namen. Arbeitet Rekursiv.
|
* Ersetzt alle GTVs durch TPHs mit gleichem Namen. Arbeitet Rekursiv.
|
||||||
@ -737,7 +737,7 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
if(tt instanceof GenericTypeVar)
|
if(tt instanceof GenericTypeVar)
|
||||||
{
|
{
|
||||||
GenericTypeVar gtv = (GenericTypeVar)tt;
|
GenericTypeVar gtv = (GenericTypeVar)tt;
|
||||||
paras.set(i,TypePlaceholder.backdoorCreate(gtv.getName()));
|
paras.set(i,TypePlaceholder.backdoorCreate(gtv.getName().toString()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -854,5 +854,12 @@ public class MyCompiler implements MyCompilerAPI
|
|||||||
this.m_AbstractSyntaxTree.add(ret);
|
this.m_AbstractSyntaxTree.add(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vector<ClassFile> codeGeneration(ResultSet result)
|
||||||
|
throws NullPointerException, JVMCodeException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.MyCompilerAPI.8570.package
|
// ino.module.MyCompilerAPI.8570.package
|
||||||
package mycompiler;
|
package de.dhbwstuttgart.core;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.MyCompilerAPI.8570.import
|
// ino.module.MyCompilerAPI.8570.import
|
||||||
@ -8,15 +8,15 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import typinferenz.exceptions.ParserError;
|
import de.dhbwstuttgart.myexception.CTypeReconstructionException;
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
import de.dhbwstuttgart.parser.JavaParser;
|
||||||
import mycompiler.myexception.CTypeReconstructionException;
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
import mycompiler.myparser.JavaParser;
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
||||||
import mycompiler.mytypereconstruction.TypeinferenceResultSet;
|
import de.dhbwstuttgart.typeinference.exceptions.ParserError;
|
||||||
// ino.end
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
|
||||||
// ino.class.MyCompilerAPI.21328.description type=javadoc
|
// ino.class.MyCompilerAPI.21328.description type=javadoc
|
||||||
/**
|
/**
|
@ -1,11 +1,11 @@
|
|||||||
// ino.module.CTypeReconstructionException.8572.package
|
// ino.module.CTypeReconstructionException.8572.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.CTypeReconstructionException.8572.import
|
// ino.module.CTypeReconstructionException.8572.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.IItemWithOffset;
|
|
||||||
// ino.end
|
import de.dhbwstuttgart.core.IItemWithOffset;
|
||||||
|
|
||||||
// ino.class.CTypeReconstructionException.23746.description type=javadoc
|
// ino.class.CTypeReconstructionException.23746.description type=javadoc
|
||||||
/**
|
/**
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.JVMCodeException.8573.package
|
// ino.module.JVMCodeException.8573.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.class.JVMCodeException.23780.declaration
|
// ino.class.JVMCodeException.23780.declaration
|
||||||
public class JVMCodeException extends Exception
|
public class JVMCodeException extends Exception
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.MatchException.8574.package
|
// ino.module.MatchException.8574.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.class.MatchException.23790.declaration
|
// ino.class.MatchException.23790.declaration
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SCClassBodyException.8575.package
|
// ino.module.SCClassBodyException.8575.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.SCClassBodyException.8575.import
|
// ino.module.SCClassBodyException.8575.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SCClassException.8576.package
|
// ino.module.SCClassException.8576.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.SCClassException.8576.import
|
// ino.module.SCClassException.8576.import
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SCExcept.8577.package
|
// ino.module.SCExcept.8577.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.SCExcept.8577.import
|
// ino.module.SCExcept.8577.import
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SCException.8578.package
|
// ino.module.SCException.8578.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.SCException.8578.import
|
// ino.module.SCException.8578.import
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SCMethodException.8579.package
|
// ino.module.SCMethodException.8579.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.SCMethodException.8579.import
|
// ino.module.SCMethodException.8579.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SCStatementException.8580.package
|
// ino.module.SCStatementException.8580.package
|
||||||
package mycompiler.myexception;
|
package de.dhbwstuttgart.myexception;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.SCStatementException.8580.import
|
// ino.module.SCStatementException.8580.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
@ -1,9 +1,9 @@
|
|||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.mytype.RefType;
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
|
||||||
public class BoundedClassIdentifierList extends Vector<Type>{
|
public class BoundedClassIdentifierList extends Vector<Type>{
|
||||||
|
|
||||||
@ -20,6 +20,6 @@ public class BoundedClassIdentifierList extends Vector<Type>{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addOffsetOff(RefType refType) {
|
public void addOffsetOff(RefType refType) {
|
||||||
this.endOffset = refType.getOffset() + refType.getName().length();
|
this.endOffset = refType.getOffset() + refType.getName().toString().length();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,12 +1,12 @@
|
|||||||
// ino.module.ClassAndParameter.8613.package
|
// ino.module.ClassAndParameter.8613.package
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.ClassAndParameter.8613.import
|
// ino.module.ClassAndParameter.8613.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.mytype.ParaList;
|
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.syntaxtree.type.ParaList;
|
||||||
// ino.end
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
|
||||||
// ino.class.ClassAndParameter.24323.description type=javadoc
|
// ino.class.ClassAndParameter.24323.description type=javadoc
|
||||||
/**
|
/**
|
@ -1,9 +1,9 @@
|
|||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import typinferenz.exceptions.DebugException;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import de.dhbwstuttgart.typeinference.exceptions.DebugException;
|
||||||
|
|
||||||
public class GenericVarDeclarationList {
|
public class GenericVarDeclarationList {
|
||||||
|
|
@ -1,12 +1,12 @@
|
|||||||
// ino.module.InterfaceAndParameter.8614.package
|
// ino.module.InterfaceAndParameter.8614.package
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.InterfaceAndParameter.8614.import
|
// ino.module.InterfaceAndParameter.8614.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.mytype.ParaList;
|
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.syntaxtree.type.ParaList;
|
||||||
// ino.end
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
|
||||||
// ino.class.InterfaceAndParameter.24353.description type=javadoc
|
// ino.class.InterfaceAndParameter.24353.description type=javadoc
|
||||||
/**
|
/**
|
@ -1,11 +1,11 @@
|
|||||||
// ino.module.InterfaceList.8615.package
|
// ino.module.InterfaceList.8615.package
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.InterfaceList.8615.import
|
// ino.module.InterfaceList.8615.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.myclass.UsedId;
|
|
||||||
// ino.end
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
|
||||||
// ino.class.InterfaceList.24383.description type=javadoc
|
// ino.class.InterfaceList.24383.description type=javadoc
|
||||||
/**
|
/**
|
123
src/de/dhbwstuttgart/parser/JavaClassName.java
Normal file
123
src/de/dhbwstuttgart/parser/JavaClassName.java
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
package de.dhbwstuttgart.parser;
|
||||||
|
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stellt den Namen einer Java Klasse dar.
|
||||||
|
* Dieser kann auch den Packagenamen mit beinhalten: java.util.Vector
|
||||||
|
*
|
||||||
|
* @author janulrich
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class JavaClassName {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private PackageName packageName;
|
||||||
|
|
||||||
|
public JavaClassName(String name){
|
||||||
|
String[] names = name.split("[.]");
|
||||||
|
boolean match = true;
|
||||||
|
if(names.length == 1){
|
||||||
|
//packageName = new PackageName();
|
||||||
|
this.name = name;
|
||||||
|
}else {
|
||||||
|
name = names[names.length-1];
|
||||||
|
Vector<String> packageNames = new Vector<String>();
|
||||||
|
for(int i = 0; i<names.length-1;i++){
|
||||||
|
packageNames.add(names[i]);
|
||||||
|
}
|
||||||
|
packageName = new PackageName(packageNames);
|
||||||
|
this.name = names[names.length-1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Auto-generated hashCode:
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((name == null) ? 0 : name.hashCode());
|
||||||
|
//result = prime * result
|
||||||
|
// + ((packageName == null) ? 0 : packageName.hashCode()); //PackageName does not infect hashCode
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Namen sind nur gleich, wenn bei den beiden zu vergleichenden JavaClassNames auch das Package angegeben ist
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if(obj instanceof String)
|
||||||
|
return this.toString().equals(obj) || (this.name != null && this.name.equals(obj)); //Auch mit Strings als Klassennamen kompatibel TODO: sollte bald obsolet sein
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
JavaClassName other = (JavaClassName) obj;
|
||||||
|
if (name == null) {
|
||||||
|
if (other.name != null)
|
||||||
|
return false;
|
||||||
|
} else if (!name.equals(other.name))
|
||||||
|
return false;
|
||||||
|
if (packageName != null && other.packageName != null) {
|
||||||
|
if (!packageName.equals(other.packageName))
|
||||||
|
return false;//Spezialfall, nicht beide Typen müssen eindeutig mit Packagenamen angegeben werden
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return (packageName!=null ? packageName.toString() : "") + name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PackageName{
|
||||||
|
|
||||||
|
Vector<String> names = new Vector<String>();
|
||||||
|
|
||||||
|
public PackageName(Vector<String> packageNames) {
|
||||||
|
names = packageNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PackageName() {
|
||||||
|
//Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((names == null) ? 0 : names.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
PackageName other = (PackageName) obj;
|
||||||
|
if (names == null) {
|
||||||
|
if (other.names != null)
|
||||||
|
return false;
|
||||||
|
} else if (!names.equals(other.names))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
String ret = "";
|
||||||
|
if(names == null)return "";
|
||||||
|
for(String n : names)ret+=n+".";
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
* *
|
* *
|
||||||
********************************************/
|
********************************************/
|
||||||
// user code:
|
// user code:
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
|
|
||||||
|
|
||||||
public class JavaLexer {
|
public class JavaLexer {
|
@ -7,7 +7,7 @@
|
|||||||
********************************************/
|
********************************************/
|
||||||
|
|
||||||
// user code:
|
// user code:
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -4,105 +4,25 @@
|
|||||||
Backup von JavaParser.jay 10.April 17 Uhr
|
Backup von JavaParser.jay 10.April 17 Uhr
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
|
|
||||||
import mycompiler.myclass.FieldDeclaration;
|
import de.dhbwstuttgart.core.AClassOrInterface;
|
||||||
import mycompiler.myclass.GenericDeclarationList;
|
import de.dhbwstuttgart.syntaxtree.Class;
|
||||||
import mycompiler.myclass.Field;
|
import de.dhbwstuttgart.syntaxtree.ImportDeclarations;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.Interface;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
import de.dhbwstuttgart.typeinference.Pair;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Void;
|
||||||
|
import de.dhbwstuttgart.*;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.*;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.*;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.*;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.operator.*;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.*;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.*;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.SourceFile;
|
|
||||||
import mycompiler.AClassOrInterface;
|
|
||||||
import mycompiler.myclass.Class;
|
|
||||||
import mycompiler.myclass.ClassBody;
|
|
||||||
import mycompiler.myclass.Constructor;
|
|
||||||
import mycompiler.myclass.Constant;
|
|
||||||
import mycompiler.myclass.ImportDeclarations;
|
|
||||||
import mycompiler.myclass.DeclId;
|
|
||||||
import mycompiler.myclass.ExceptionList;
|
|
||||||
import mycompiler.myclass.FormalParameter;
|
|
||||||
import mycompiler.myclass.Method;
|
|
||||||
import mycompiler.myclass.ParameterList;
|
|
||||||
import mycompiler.myclass.UsedId;
|
|
||||||
import mycompiler.myinterface.Interface;
|
|
||||||
import mycompiler.myinterface.InterfaceBody;
|
|
||||||
import mycompiler.mymodifier.Abstract;
|
|
||||||
import mycompiler.mymodifier.Final;
|
|
||||||
import mycompiler.mymodifier.Modifier;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
import mycompiler.mymodifier.Private;
|
|
||||||
import mycompiler.mymodifier.Protected;
|
|
||||||
import mycompiler.mymodifier.Public;
|
|
||||||
import mycompiler.mymodifier.Static;
|
|
||||||
import mycompiler.myoperator.AndOp;
|
|
||||||
import mycompiler.myoperator.DivideOp;
|
|
||||||
import mycompiler.myoperator.EqualOp;
|
|
||||||
import mycompiler.myoperator.GreaterEquOp;
|
|
||||||
import mycompiler.myoperator.GreaterOp;
|
|
||||||
import mycompiler.myoperator.LessEquOp;
|
|
||||||
import mycompiler.myoperator.LessOp;
|
|
||||||
import mycompiler.myoperator.MinusOp;
|
|
||||||
import mycompiler.myoperator.ModuloOp;
|
|
||||||
import mycompiler.myoperator.NotEqualOp;
|
|
||||||
import mycompiler.myoperator.Operator;
|
|
||||||
import mycompiler.myoperator.OrOp;
|
|
||||||
import mycompiler.myoperator.PlusOp;
|
|
||||||
import mycompiler.myoperator.TimesOp;
|
|
||||||
import mycompiler.mystatement.ArgumentList;
|
|
||||||
import mycompiler.mystatement.Assign;
|
|
||||||
import mycompiler.mystatement.Binary;
|
|
||||||
import mycompiler.mystatement.Block;
|
|
||||||
import mycompiler.mystatement.BoolLiteral;
|
|
||||||
import mycompiler.mystatement.FloatLiteral;
|
|
||||||
import mycompiler.mystatement.DoubleLiteral;
|
|
||||||
import mycompiler.mystatement.LongLiteral;
|
|
||||||
import mycompiler.mystatement.CastExpr;
|
|
||||||
import mycompiler.mystatement.CharLiteral;
|
|
||||||
import mycompiler.mystatement.EmptyStmt;
|
|
||||||
import mycompiler.mystatement.Expr;
|
|
||||||
import mycompiler.mystatement.ExprStmt;
|
|
||||||
import mycompiler.mystatement.IfStmt;
|
|
||||||
import mycompiler.mystatement.InstanceOf;
|
|
||||||
import mycompiler.mystatement.IntLiteral;
|
|
||||||
import mycompiler.mystatement.Literal;
|
|
||||||
import mycompiler.mystatement.InstVar;
|
|
||||||
import mycompiler.mystatement.LocalOrFieldVar;
|
|
||||||
import mycompiler.mystatement.LocalVarDecl;
|
|
||||||
import mycompiler.mystatement.MethodCall;
|
|
||||||
import mycompiler.mystatement.NegativeExpr;
|
|
||||||
import mycompiler.mystatement.NewClass;
|
|
||||||
import mycompiler.mystatement.NotExpr;
|
|
||||||
import mycompiler.mystatement.Null;
|
|
||||||
import mycompiler.mystatement.PositivExpr;
|
|
||||||
import mycompiler.mystatement.PostDecExpr;
|
|
||||||
import mycompiler.mystatement.PostIncExpr;
|
|
||||||
import mycompiler.mystatement.PreDecExpr;
|
|
||||||
import mycompiler.mystatement.PreIncExpr;
|
|
||||||
import mycompiler.mystatement.Receiver;
|
|
||||||
import mycompiler.mystatement.Return;
|
|
||||||
import mycompiler.mystatement.Statement;
|
|
||||||
import mycompiler.mystatement.StringLiteral;
|
|
||||||
import mycompiler.mystatement.This;
|
|
||||||
import mycompiler.mystatement.UnaryMinus;
|
|
||||||
import mycompiler.mystatement.UnaryNot;
|
|
||||||
import mycompiler.mystatement.UnaryPlus;
|
|
||||||
import mycompiler.mystatement.WhileStmt;
|
|
||||||
import mycompiler.mystatement.ForStmt;
|
|
||||||
import mycompiler.mystatement.LambdaExpression;
|
|
||||||
import mycompiler.mytype.BaseType;
|
|
||||||
import mycompiler.mytype.BooleanType;
|
|
||||||
import mycompiler.mytype.CharacterType;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.BoundedGenericTypeVar;
|
|
||||||
import mycompiler.mytype.IntegerType;
|
|
||||||
import mycompiler.mytype.ParaList;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
|
||||||
import mycompiler.mytype.Void;
|
|
||||||
import mycompiler.mytype.WildcardType;
|
|
||||||
import mycompiler.mytype.ExtendsWildcardType;
|
|
||||||
import mycompiler.mytype.SuperWildcardType;
|
|
||||||
import mycompiler.mytype.Pair;
|
|
||||||
|
|
||||||
public class JavaParser{
|
public class JavaParser{
|
||||||
public Vector path = new Vector();
|
public Vector path = new Vector();
|
||||||
@ -226,6 +146,7 @@ public Vector<Pair> testPair = new Vector<Pair>();
|
|||||||
%type <DeclId> variabledeclarator
|
%type <DeclId> variabledeclarator
|
||||||
%type <DeclId> variabledeclaratorid
|
%type <DeclId> variabledeclaratorid
|
||||||
%type <UsedId> simplename
|
%type <UsedId> simplename
|
||||||
|
%type <UsedId> typename
|
||||||
%type <UsedId> qualifiedname
|
%type <UsedId> qualifiedname
|
||||||
%type <UsedId> importqualifiedname
|
%type <UsedId> importqualifiedname
|
||||||
%type <UsedId> importdeclaration
|
%type <UsedId> importdeclaration
|
||||||
@ -562,7 +483,7 @@ paralist : IDENTIFIER
|
|||||||
ParaList pl = new ParaList();
|
ParaList pl = new ParaList();
|
||||||
/* #JB# 05.04.2005 */
|
/* #JB# 05.04.2005 */
|
||||||
/* ########################################################### */
|
/* ########################################################### */
|
||||||
pl.getParalist().addElement(new GenericTypeVar($1.getLexem(), $1.getOffset()));
|
pl.getParalist().addElement(new GenericTypeVar($1.getLexem(),null, $1.getOffset()));
|
||||||
//pl.getParalist().addElement( new TypePlaceholder($1.getLexem()) );
|
//pl.getParalist().addElement( new TypePlaceholder($1.getLexem()) );
|
||||||
/* ########################################################### */
|
/* ########################################################### */
|
||||||
org.apache.log4j.Logger.getLogger("parser").debug( "IDENTIFIER --> Paralist f�r " + $1.getLexem() + " TV");
|
org.apache.log4j.Logger.getLogger("parser").debug( "IDENTIFIER --> Paralist f�r " + $1.getLexem() + " TV");
|
||||||
@ -588,7 +509,7 @@ paralist : IDENTIFIER
|
|||||||
|
|
||||||
/* #JB# 05.04.2005 */
|
/* #JB# 05.04.2005 */
|
||||||
/* ########################################################### */
|
/* ########################################################### */
|
||||||
$1.getParalist().addElement(new GenericTypeVar($3.getLexem(),$3.getOffset()));
|
$1.getParalist().addElement(new GenericTypeVar($3.getLexem(), null,$3.getOffset()));
|
||||||
//$1.getParalist().addElement(new TypePlaceholder($3.getLexem()));
|
//$1.getParalist().addElement(new TypePlaceholder($3.getLexem()));
|
||||||
/* ########################################################### */
|
/* ########################################################### */
|
||||||
org.apache.log4j.Logger.getLogger("parser").debug( "paralist ',' IDENTIFIER --> Paralist f�r " + $3.getLexem() + ": TV");
|
org.apache.log4j.Logger.getLogger("parser").debug( "paralist ',' IDENTIFIER --> Paralist f�r " + $3.getLexem() + ": TV");
|
||||||
@ -786,7 +707,8 @@ classbodydeclaration : classmemberdeclaration
|
|||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
//*/
|
//*/
|
||||||
classorinterfacetype : simplename parameter
|
|
||||||
|
classorinterfacetype : name parameter
|
||||||
{
|
{
|
||||||
if ($2 != null) {
|
if ($2 != null) {
|
||||||
//$1.set_ParaList($2.get_ParaList());
|
//$1.set_ParaList($2.get_ParaList());
|
||||||
@ -808,11 +730,22 @@ typelist : type
|
|||||||
$1.add($3);
|
$1.add($3);
|
||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
|
| typelist ',' wildcardparameter
|
||||||
|
{
|
||||||
|
$1.add($3);
|
||||||
|
$$=$1;
|
||||||
|
}
|
||||||
|
| wildcardparameter
|
||||||
|
{
|
||||||
|
Vector<Type> tl = new Vector<Type>();
|
||||||
|
tl.add($1);
|
||||||
|
$$ = tl;
|
||||||
|
}
|
||||||
|
|
||||||
/* PL 05-07-28 erg�nzt, weil jeder classorinterfacetype auch parametrisiert sein kann */
|
/* PL 05-07-28 erg�nzt, weil jeder classorinterfacetype auch parametrisiert sein kann */
|
||||||
//TODO: Das hier ist möglicherweise falsch. Ein Typ hat keine parameterliste, nur eine Liste von RefTypes
|
//TODO: Das hier ist möglicherweise falsch. Ein Typ hat keine parameterliste, nur eine Liste von RefTypes
|
||||||
parameter : { $$ = null; }
|
parameter : { $$ = null; }
|
||||||
| '<'typelist'>'//'<'paralist'>'//typelist statt
|
| '<' typelist '>' //'<'paralist'>'//typelist statt
|
||||||
{
|
{
|
||||||
$$ = $2;
|
$$ = $2;
|
||||||
}
|
}
|
||||||
@ -1044,11 +977,11 @@ boundedClassParameters : boundedClassParameter
|
|||||||
// returns GenericTypeVar
|
// returns GenericTypeVar
|
||||||
boundedMethodParameter : IDENTIFIER
|
boundedMethodParameter : IDENTIFIER
|
||||||
{
|
{
|
||||||
$$=new GenericTypeVar($1.getLexem(),$1.getOffset());
|
$$=new GenericTypeVar($1.getLexem(),null,$1.getOffset());
|
||||||
}
|
}
|
||||||
| IDENTIFIER EXTENDS boundedclassidentifierlist
|
| IDENTIFIER EXTENDS boundedclassidentifierlist
|
||||||
{
|
{
|
||||||
BoundedGenericTypeVar gtv=new BoundedGenericTypeVar($1.getLexem(), $3, $1.getOffset() ,$3.getEndOffset());
|
BoundedGenericTypeVar gtv=new BoundedGenericTypeVar($1.getLexem(), $3,null, $1.getOffset() ,$3.getEndOffset());
|
||||||
//gtv.setBounds($3);
|
//gtv.setBounds($3);
|
||||||
$$=gtv;
|
$$=gtv;
|
||||||
}
|
}
|
||||||
@ -1058,7 +991,7 @@ boundedclassidentifierlist : referencetype
|
|||||||
Vector<Type> vec=new Vector<Type>();
|
Vector<Type> vec=new Vector<Type>();
|
||||||
vec.addElement($1);
|
vec.addElement($1);
|
||||||
containedTypes.addElement($1);
|
containedTypes.addElement($1);
|
||||||
$$=new BoundedClassIdentifierList(vec, $1.getOffset()+$1.getName().length());
|
$$=new BoundedClassIdentifierList(vec, $1.getOffset()+$1.getName().toString().length());
|
||||||
}
|
}
|
||||||
| boundedclassidentifierlist '&' referencetype
|
| boundedclassidentifierlist '&' referencetype
|
||||||
{
|
{
|
||||||
@ -1357,6 +1290,28 @@ primitivetype :BOOLEAN
|
|||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
referencelongtype : typename parameter
|
||||||
|
{
|
||||||
|
if ($2 != null) {
|
||||||
|
//$1.set_ParaList($2.get_ParaList());
|
||||||
|
$1.set_ParaList($2);//Änderung von Andreas Stadelmeier. Type statt GenericVarType
|
||||||
|
/* otth: originale (also diese) Parameterliste retten */
|
||||||
|
//((UsedId)$1).vParaOrg = new Vector<Type>( $2.get_ParaList() );
|
||||||
|
}
|
||||||
|
UsedId uid = $1;
|
||||||
|
RefType RT = new RefType(uid.getOffset());
|
||||||
|
|
||||||
|
RT.set_ParaList(uid.get_RealParaList());
|
||||||
|
RT.setName(uid.getQualifiedName());
|
||||||
|
|
||||||
|
|
||||||
|
//PL 05-07-30 eingefuegt containedTypes ANFANG
|
||||||
|
containedTypes.addElement(RT);
|
||||||
|
//PL 05-07-30 eingefuegt containedTypes ENDE
|
||||||
|
|
||||||
|
$$=RT;
|
||||||
|
}
|
||||||
|
|
||||||
referencetype :classorinterfacetype
|
referencetype :classorinterfacetype
|
||||||
{
|
{
|
||||||
org.apache.log4j.Logger.getLogger("parser").debug("T->Parser->referenctype: " + $1);
|
org.apache.log4j.Logger.getLogger("parser").debug("T->Parser->referenctype: " + $1);
|
||||||
@ -1375,6 +1330,8 @@ referencetype :classorinterfacetype
|
|||||||
|
|
||||||
$$=RT;
|
$$=RT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 05-07-28 PL Parameterdeklarationen zur classorinterfacetype verschoben */
|
/* 05-07-28 PL Parameterdeklarationen zur classorinterfacetype verschoben */
|
||||||
|
|
||||||
variabledeclarator : variabledeclaratorid
|
variabledeclarator : variabledeclaratorid
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.Scanner.8618.package
|
// ino.module.Scanner.8618.package
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.class.Scanner.24842.declaration
|
// ino.class.Scanner.24842.declaration
|
||||||
public class Scanner extends JavaLexer implements JavaParser.yyInput
|
public class Scanner extends JavaLexer implements JavaParser.yyInput
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.Token.8619.package
|
// ino.module.Token.8619.package
|
||||||
package mycompiler.myparser;
|
package de.dhbwstuttgart.parser;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.class.Token.24859.declaration
|
// ino.class.Token.24859.declaration
|
||||||
public class Token
|
public class Token
|
@ -1,10 +1,9 @@
|
|||||||
// ino.module.BasicAssumptionClass.8552.package
|
// ino.module.BasicAssumptionClass.8552.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.BasicAssumptionClass.8552.import
|
// ino.module.BasicAssumptionClass.8552.import
|
||||||
import mycompiler.mymodifier.Modifiers;
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.class.BasicAssumptionClass.23000.declaration
|
// ino.class.BasicAssumptionClass.23000.declaration
|
||||||
public class BasicAssumptionClass extends Class
|
public class BasicAssumptionClass extends Class
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.Class.8553.package
|
// ino.module.Class.8553.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.Class.8553.import
|
// ino.module.Class.8553.import
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -9,81 +9,31 @@ import java.util.Hashtable;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.AClassOrInterface;
|
|
||||||
import mycompiler.IItemWithOffset;
|
|
||||||
import mycompiler.SyntaxTreeNode;
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.myexception.CTypeReconstructionException;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.myexception.SCClassBodyException;
|
|
||||||
import mycompiler.myexception.SCClassException;
|
|
||||||
import mycompiler.myexception.SCExcept;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
import mycompiler.mystatement.*;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.Pair;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.SuperWildcardType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
|
||||||
import mycompiler.mytype.WildcardType;
|
|
||||||
import mycompiler.mytypereconstruction.CReconstructionTuple;
|
|
||||||
import mycompiler.mytypereconstruction.CSubstitution;
|
|
||||||
import mycompiler.mytypereconstruction.CSupportData;
|
|
||||||
import mycompiler.mytypereconstruction.CTriple;
|
|
||||||
import mycompiler.mytypereconstruction.TypeinferenceResultSet;
|
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
|
||||||
import mycompiler.mytypereconstruction.set.CReconstructionTupleSet;
|
|
||||||
import mycompiler.mytypereconstruction.set.CSubstitutionSet;
|
|
||||||
import mycompiler.mytypereconstruction.set.CTripleSet;
|
|
||||||
import mycompiler.mytypereconstruction.set.CTypeAssumptionSet;
|
|
||||||
import mycompiler.mytypereconstruction.set.IHashSetKey;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CInstVarTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CLocalVarTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CMethodTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CParaTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumptionkey.CMethodKey;
|
|
||||||
import mycompiler.mytypereconstruction.unify.FC_TTO;
|
|
||||||
import mycompiler.mytypereconstruction.unify.Unify;
|
|
||||||
import mycompiler.SourceFile;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.core.AClassOrInterface;
|
||||||
|
import de.dhbwstuttgart.core.IItemWithOffset;
|
||||||
|
import de.dhbwstuttgart.parser.JavaClassName;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Block;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Expr;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Statement;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.SuperWildcardType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.WildcardType;
|
||||||
|
import de.dhbwstuttgart.typeinference.*;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.ClassAssumption;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.DebugException;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
|
||||||
|
import de.dhbwstuttgart.typeinference.unify.FC_TTO;
|
||||||
|
import de.dhbwstuttgart.typeinference.unify.Unify;
|
||||||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||||||
import typinferenz.ConstraintsSet;
|
|
||||||
import typinferenz.JavaCodeResult;
|
|
||||||
import typinferenz.OderConstraint;
|
|
||||||
import typinferenz.ResultSet;
|
|
||||||
import typinferenz.Typeable;
|
|
||||||
import typinferenz.UndConstraint;
|
|
||||||
import typinferenz.FunN;
|
|
||||||
import typinferenz.assumptions.ClassAssumption;
|
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
|
||||||
import typinferenz.exceptions.DebugException;
|
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
|
||||||
import typinferenz.typedeployment.TypeInsertPoint;
|
|
||||||
import typinferenz.*;
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.Class.23010.declaration
|
// ino.class.Class.23010.declaration
|
||||||
@ -111,9 +61,9 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
{
|
{
|
||||||
this.pkgName = pkgName;
|
this.pkgName = pkgName;
|
||||||
}
|
}
|
||||||
public String getName()
|
public JavaClassName getName()
|
||||||
{
|
{
|
||||||
return name;
|
return new JavaClassName((this.pkgName!=null ? this.pkgName.toString() +"." : "") +this.name);
|
||||||
}
|
}
|
||||||
public void setName(String strName)
|
public void setName(String strName)
|
||||||
{
|
{
|
||||||
@ -325,7 +275,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
* @param typeinferenceResult - Das ResultSet einer Typinferierung oder null, falls alle Typen eindeutig feststehen.
|
* @param typeinferenceResult - Das ResultSet einer Typinferierung oder null, falls alle Typen eindeutig feststehen.
|
||||||
* @return
|
* @return
|
||||||
* @throws JVMCodeException
|
* @throws JVMCodeException
|
||||||
*/
|
|
||||||
// ino.method.codegen.23071.definition
|
// ino.method.codegen.23071.definition
|
||||||
public ClassFile codegen(ResultSet typeinferenceResult)
|
public ClassFile codegen(ResultSet typeinferenceResult)
|
||||||
throws JVMCodeException
|
throws JVMCodeException
|
||||||
@ -351,7 +301,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
//geändert von Andreas Stadelmeier: pkgName wird nicht mehr aus dem SourceFile ausgelesen:
|
//geändert von Andreas Stadelmeier: pkgName wird nicht mehr aus dem SourceFile ausgelesen:
|
||||||
String packageName = "";
|
String packageName = "";
|
||||||
if(pkgName != null) packageName = pkgName.get_Name_1Element();
|
if(pkgName != null) packageName = pkgName.get_Name_1Element();
|
||||||
classfile.add_class(getName(), packageName, superClass, getAccessFlags());
|
classfile.add_class(getName(), superClass, getAccessFlags());
|
||||||
|
|
||||||
// Handling fuer Superinterfaces
|
// Handling fuer Superinterfaces
|
||||||
classfile.addSuperInterfaces(getSuperInterfaces());
|
classfile.addSuperInterfaces(getSuperInterfaces());
|
||||||
@ -375,25 +325,8 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
codegenlog.info("Compilierung erfolgreich abgeschlossen, "+ getName() + ".class erstellt.");
|
codegenlog.info("Compilierung erfolgreich abgeschlossen, "+ getName() + ".class erstellt.");
|
||||||
return classfile;
|
return classfile;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
public void codegen(ClassFile classfile, Vector paralist)
|
|
||||||
throws JVMCodeException
|
|
||||||
{
|
|
||||||
for(int i=0 ; i < this.getFields().size() ; i++)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* if(this.fielddecl.elementAt(i) instanceof InstVarDecl)
|
|
||||||
{
|
|
||||||
((InstVarDecl)this.fielddecl.elementAt(i)).codegen(classfile, paralist);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
this.fielddecl.elementAt(i).codegen(classfile, paralist);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void set_UsedId (UsedId uid)
|
public void set_UsedId (UsedId uid)
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.set_UsedId.23074.body
|
// ino.method.set_UsedId.23074.body
|
||||||
@ -451,7 +384,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
|
|
||||||
|
|
||||||
// ino.method.get_Superclass_Name.23086.definition
|
// ino.method.get_Superclass_Name.23086.definition
|
||||||
public String get_Superclass_Name()
|
public JavaClassName get_Superclass_Name()
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.get_Superclass_Name.23086.body
|
// ino.method.get_Superclass_Name.23086.body
|
||||||
{
|
{
|
||||||
@ -644,7 +577,6 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.TRProg.23110.definition
|
// ino.method.TRProg.23110.definition
|
||||||
public ConstraintsSet typeReconstruction(FC_TTO supportData, TypeAssumptions globalAssumptions)
|
public ConstraintsSet typeReconstruction(FC_TTO supportData, TypeAssumptions globalAssumptions)
|
||||||
throws CTypeReconstructionException
|
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.TRProg.23110.body
|
// ino.method.TRProg.23110.body
|
||||||
{
|
{
|
||||||
@ -655,6 +587,8 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
// Und los geht's:
|
// Und los geht's:
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
inferencelog.info("Rufe TRStart()...");
|
inferencelog.info("Rufe TRStart()...");
|
||||||
|
|
||||||
|
typinferenzLog.debug("Erstellte FiniteClosure: "+supportData);
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
// Ab hier ...
|
// Ab hier ...
|
||||||
// @author A10023 - Andreas Stadelmeier:
|
// @author A10023 - Andreas Stadelmeier:
|
||||||
@ -882,7 +816,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
this.typeAssumptions = assumptions; //Diese müssen anschließend nicht wieder generiert werden.
|
this.typeAssumptions = assumptions; //Diese müssen anschließend nicht wieder generiert werden.
|
||||||
return assumptions;
|
return assumptions;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
public ConstraintsSet TYPE(Vector<Method> methodList, Vector<Expr> fielddeclarationList, TypeAssumptions assumptions){
|
public ConstraintsSet TYPE(Vector<Method> methodList, Vector<Expr> fielddeclarationList, TypeAssumptions assumptions){
|
||||||
ConstraintsSet ret = new ConstraintsSet();
|
ConstraintsSet ret = new ConstraintsSet();
|
||||||
// Die Felddeklarationen werden zu den Assumptions hinzugefügt und gelten danach für jede Methode.
|
// Die Felddeklarationen werden zu den Assumptions hinzugefügt und gelten danach für jede Methode.
|
||||||
@ -897,31 +831,8 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
// ino.method.clear.23113.defdescription type=javadoc
|
|
||||||
/**
|
|
||||||
* Entfernt Annahmen f�r lokale Variablen, die f�r Methodenparameter erzeugt
|
|
||||||
* worden sind. (siehe Algorithmus 5.17 TRProg, Martin Pl�micke)
|
|
||||||
* <br/>Author: J�rg B�uerle
|
|
||||||
* @param V
|
|
||||||
* @param locals
|
|
||||||
*/
|
|
||||||
// ino.end
|
|
||||||
// ino.method.clear.23113.definition
|
|
||||||
void clear(CTypeAssumptionSet V, Vector<CTypeAssumption> locals)
|
|
||||||
// ino.end
|
|
||||||
// ino.method.clear.23113.body
|
|
||||||
{
|
|
||||||
Iterator<CTypeAssumption> localsIt = locals.iterator();
|
|
||||||
while(localsIt.hasNext()){
|
|
||||||
CTypeAssumption local = localsIt.next();
|
|
||||||
CTypeAssumption assum = V.getElement(local.getHashSetKey());
|
|
||||||
if(assum!=null){
|
|
||||||
V.removeElement(local.getHashSetKey());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.method.RetType.23119.defdescription type=javadoc
|
// ino.method.RetType.23119.defdescription type=javadoc
|
||||||
/**
|
/**
|
||||||
@ -931,7 +842,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
* @param me
|
* @param me
|
||||||
* @param V
|
* @param V
|
||||||
* @return
|
* @return
|
||||||
*/
|
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.RetType.23119.definition
|
// ino.method.RetType.23119.definition
|
||||||
private Type RetType(Method me, CTypeAssumptionSet V)
|
private Type RetType(Method me, CTypeAssumptionSet V)
|
||||||
@ -946,6 +857,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
*/
|
||||||
// ino.method.toString.23125.defdescription type=javadoc
|
// ino.method.toString.23125.defdescription type=javadoc
|
||||||
/**
|
/**
|
||||||
* <br/>Author: Martin Pl�micke
|
* <br/>Author: Martin Pl�micke
|
||||||
@ -1023,128 +935,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// ino.method.addOffsetsToAssumption.23131.defdescription type=javadoc
|
|
||||||
/**
|
|
||||||
* Methode f�gt zu einer CTypeAssumption alle
|
|
||||||
* Offsets hinzu, wo die Variable benutzt wird.
|
|
||||||
* <br/>Author: Thomas Hornberger 07.04.2006
|
|
||||||
* <br/>Author: Arne Lüdtke 20.01.2007, Auf Polymorphie erweitert.
|
|
||||||
* Wird nicht mehr verwendet. In Block ausgelagert.
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
// ino.end
|
|
||||||
// ino.method.addOffsetsToAssumption.23131.definition
|
|
||||||
public static void addOffsetsToAssumption(CTypeAssumption localAssumption, Block localBlock,String NameVariable,boolean isMemberVariable)
|
|
||||||
// ino.end
|
|
||||||
// ino.method.addOffsetsToAssumption.23131.body
|
|
||||||
{
|
|
||||||
/*if(localBlock!=null){
|
|
||||||
for(Object vectorObjekt : localBlock.statements) //durchlaufe alle Statements dieses Blocks
|
|
||||||
{
|
|
||||||
if(vectorObjekt instanceof Block) //Bei Block
|
|
||||||
{
|
|
||||||
Block b = (Block)vectorObjekt;
|
|
||||||
addOffsetsToAssumption(localAssumption,b,NameVariable,isMemberVariable);//rekursiver Aufruf
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
String Name_Superklasse = vectorObjekt.getClass().getSuperclass().getSimpleName();
|
|
||||||
if(Name_Superklasse.equals("Statement")) //Bei Statement
|
|
||||||
{
|
|
||||||
Statement s = (Statement)vectorObjekt;
|
|
||||||
try{
|
|
||||||
if(addOffsetsToStatement(localAssumption,s,NameVariable,isMemberVariable)==false)
|
|
||||||
{break;}}
|
|
||||||
catch(NullPointerException NPE){}
|
|
||||||
}
|
|
||||||
else if(Name_Superklasse.equals("Expr") || Name_Superklasse.equals("BinaryExpr") || Name_Superklasse.equals("UnaryExpr")) //Bei Expression
|
|
||||||
{
|
|
||||||
Expr e = (Expr)vectorObjekt;
|
|
||||||
try{
|
|
||||||
addOffsetsToExpression(localAssumption,e,NameVariable,isMemberVariable);}
|
|
||||||
catch(NullPointerException NPE){}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}}*/
|
|
||||||
}
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.method.addOffsetsToStatement.23134.defdescription type=javadoc
|
|
||||||
/**
|
|
||||||
* Hilfs-Methode f�r die Offset-Zuweisung
|
|
||||||
* durchsucht ein Statement rekursiv
|
|
||||||
* <br/>Author: Thomas Hornberger 08.04.2006
|
|
||||||
* <br/>Author: Arne Lüdtke 20.10.2007, Auf Polymorphie umgebaut.
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
// ino.end
|
|
||||||
// ino.method.addOffsetsToStatement.23134.definition
|
|
||||||
public static boolean addOffsetsToStatement(CTypeAssumption localAssumption,Statement statement, String NameVariable, boolean isMemberVariable)
|
|
||||||
// ino.end
|
|
||||||
// ino.method.addOffsetsToStatement.23134.body
|
|
||||||
{
|
|
||||||
return statement.addOffsetsToStatement(localAssumption,NameVariable,isMemberVariable);
|
|
||||||
/*if(statement instanceof Block) //Wenn Block
|
|
||||||
{
|
|
||||||
Block b = (Block)statement;
|
|
||||||
addOffsetsToAssumption(localAssumption,b,NameVariable,isMemberVariable);
|
|
||||||
}
|
|
||||||
else if(statement instanceof IfStmt)//Wenn if
|
|
||||||
{
|
|
||||||
IfStmt i = (IfStmt)statement;
|
|
||||||
addOffsetsToExpression(localAssumption,i.expr,NameVariable,isMemberVariable);
|
|
||||||
addOffsetsToStatement(localAssumption,i.else_block,NameVariable,isMemberVariable);
|
|
||||||
addOffsetsToStatement(localAssumption,i.then_block,NameVariable,isMemberVariable);
|
|
||||||
}
|
|
||||||
else if(statement instanceof Return)//Wenn Return
|
|
||||||
{
|
|
||||||
Return r = (Return)statement;
|
|
||||||
addOffsetsToExpression(localAssumption,r.retexpr,NameVariable,isMemberVariable);
|
|
||||||
}
|
|
||||||
else if(statement instanceof WhileStmt)//Wenn While
|
|
||||||
{
|
|
||||||
WhileStmt w = (WhileStmt)statement;
|
|
||||||
addOffsetsToExpression(localAssumption,w.expr,NameVariable,isMemberVariable);
|
|
||||||
addOffsetsToStatement(localAssumption,w.loop_block,NameVariable,isMemberVariable);
|
|
||||||
}
|
|
||||||
else if(statement instanceof LocalVarDecl)//Wenn Lokale-Variable-Deklaration
|
|
||||||
{
|
|
||||||
isMemberVariable=true;//hoth 02.05.06
|
|
||||||
if(isMemberVariable)//Wenn Objektvariable
|
|
||||||
{
|
|
||||||
LocalVarDecl l = (LocalVarDecl)statement;
|
|
||||||
if(l.get_Name().equals(NameVariable))
|
|
||||||
{
|
|
||||||
if(isFirstLocalVarDecl==false)
|
|
||||||
{return false;}//Wenn jetzt lokale Variable kommt, dann springe raus
|
|
||||||
else
|
|
||||||
{isFirstLocalVarDecl=false;}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;*/
|
|
||||||
}
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.method.addOffsetsToExpression.23137.defdescription type=javadoc
|
|
||||||
/**
|
|
||||||
* Hilfs-Methode f�r die Offset-Zuweisung
|
|
||||||
* durchsucht eine Expression rekursiv
|
|
||||||
* <br/>Author: Thomas Hornberger 07.04.2006
|
|
||||||
* <br/>Authos: Arne Lüdtke 20.01.2007, Auf Polymorphie umgebaut.
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
// ino.end
|
|
||||||
// ino.method.addOffsetsToExpression.23137.definition
|
|
||||||
public static void addOffsetsToExpression(CTypeAssumption localAssumption,Expr expression, String NameVariable,boolean isMemberVariable)
|
|
||||||
// ino.end
|
|
||||||
// ino.method.addOffsetsToExpression.23137.body
|
|
||||||
{
|
|
||||||
expression.addOffsetsToExpression(localAssumption,NameVariable,isMemberVariable);
|
|
||||||
}
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.method.getSimpleName.23140.defdescription type=javadoc
|
// ino.method.getSimpleName.23140.defdescription type=javadoc
|
||||||
/**
|
/**
|
||||||
* HOTI
|
* HOTI
|
||||||
@ -1159,7 +950,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.getSimpleName.23140.body
|
// ino.method.getSimpleName.23140.body
|
||||||
{
|
{
|
||||||
return UsedId.createFromQualifiedName(getName(),-1).getSimpleName();
|
return UsedId.createFromQualifiedName(getName().toString(),-1).getSimpleName();
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
@ -1281,7 +1072,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
parameter.add(((GenericTypeVar)param).getTypePlaceHolder());//(TypePlaceholder.fresh()); //Hier ist kein ReplacementListener notwendig. Der Typ soll nie eingesetzt werden. Der TPH wird nur gebraucht, damit das Unifizieren funktioniert.
|
parameter.add(((GenericTypeVar)param).getTypePlaceHolder());//(TypePlaceholder.fresh()); //Hier ist kein ReplacementListener notwendig. Der Typ soll nie eingesetzt werden. Der TPH wird nur gebraucht, damit das Unifizieren funktioniert.
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
return new RefType(this.getName(), this.get_ParaList(), 0);
|
return new RefType(this.getName().toString(), this.get_ParaList(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1334,10 +1125,19 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!constructorVorhanden){//Falls kein Konstruktor vorhanden ist, muss noch der Standardkonstruktor angefügt werden:
|
if(!constructorVorhanden){//Falls kein Konstruktor vorhanden ist, muss noch der Standardkonstruktor angefügt werden:
|
||||||
Constructor standardKonstruktor = new Constructor(Method.createEmptyMethod(this.getName(), this));
|
Constructor standardKonstruktor = new Constructor(Method.createEmptyMethod(this.getName().toString(), this));
|
||||||
this.addField(standardKonstruktor);
|
this.addField(standardKonstruktor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(this.genericClassParameters == null)this.setGenericParameter(new GenericDeclarationList(new Vector<GenericTypeVar>(), 0));
|
||||||
|
for(Type t : this.get_ParaList()){
|
||||||
|
if(t instanceof GenericTypeVar)this.genericClassParameters.add((GenericTypeVar)t);
|
||||||
|
else this.genericClassParameters.add(new GenericTypeVar(t.get_Name(),this,-1));
|
||||||
|
}
|
||||||
|
for(GenericTypeVar gtv : this.getGenericParameter()){
|
||||||
|
gtv.setParentClass(this);;
|
||||||
|
}
|
||||||
|
|
||||||
//TODO: Umwandlung zu RefTypes funktioniert noch nicht richtig. (siehe LambdaTest2)
|
//TODO: Umwandlung zu RefTypes funktioniert noch nicht richtig. (siehe LambdaTest2)
|
||||||
//Als RefType geparste Generische Variablen umwandeln:
|
//Als RefType geparste Generische Variablen umwandeln:
|
||||||
this.wandleRefTypeAttributes2GenericAttributes();
|
this.wandleRefTypeAttributes2GenericAttributes();
|
||||||
@ -1353,6 +1153,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
Vector<SyntaxTreeNode> ret = new Vector<SyntaxTreeNode>();
|
Vector<SyntaxTreeNode> ret = new Vector<SyntaxTreeNode>();
|
||||||
for(Field f : this.getFields()){
|
for(Field f : this.getFields()){
|
||||||
ret.add(f);
|
ret.add(f);
|
||||||
|
ret.addAll(this.getGenericParameter());
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1367,7 +1168,7 @@ public class Class extends SyntaxTreeNode implements AClassOrInterface, IItemWit
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<GenericTypeVar> getGenericParameter() {
|
public Vector<GenericTypeVar> getGenericParameter() {
|
||||||
if(this.genericClassParameters == null)return new Vector<GenericTypeVar>();
|
if(this.genericClassParameters == null)return new Vector<GenericTypeVar>();
|
||||||
return this.genericClassParameters;
|
return this.genericClassParameters;
|
||||||
}
|
}
|
@ -1,22 +1,28 @@
|
|||||||
// ino.module.ClassBody.8554.package
|
// ino.module.ClassBody.8554.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.ClassBody.8554.import
|
// ino.module.ClassBody.8554.import
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.myexception.SCClassBodyException;
|
|
||||||
import mycompiler.myexception.SCExcept;
|
|
||||||
import mycompiler.myexception.SCMethodException;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
|
||||||
import typinferenz.ResultSet;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.myexception.SCClassBodyException;
|
||||||
|
import de.dhbwstuttgart.myexception.SCExcept;
|
||||||
|
import de.dhbwstuttgart.myexception.SCMethodException;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -157,7 +163,7 @@ throws SCClassBodyException
|
|||||||
SCExcept e = new SCExcept();
|
SCExcept e = new SCExcept();
|
||||||
e.set_error("unbekannte Klasse "+t.getName()+".");
|
e.set_error("unbekannte Klasse "+t.getName()+".");
|
||||||
e.set_function("complete_parahashtable() --> is_declared()");
|
e.set_function("complete_parahashtable() --> is_declared()");
|
||||||
e.set_statement(t.getName());
|
e.set_statement(t.getName().toString());
|
||||||
ex.addException(e);
|
ex.addException(e);
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
// ino.module.ClassHelper.8555.package
|
// ino.module.ClassHelper.8555.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.ClassHelper.8555.import
|
// ino.module.ClassHelper.8555.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.RefType;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
// ino.end
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
|
||||||
// ino.class.ClassHelper.23206.declaration
|
// ino.class.ClassHelper.23206.declaration
|
||||||
public class ClassHelper
|
public class ClassHelper
|
@ -1,25 +1,24 @@
|
|||||||
// ino.module.Constant.8556.package
|
// ino.module.Constant.8556.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.Constant.8556.import
|
// ino.module.Constant.8556.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.bytecode.AttributeInfo;
|
||||||
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
|
import de.dhbwstuttgart.bytecode.JVMCode;
|
||||||
|
import de.dhbwstuttgart.core.MyCompiler;
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.parser.JavaClassName;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Expr;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Literal;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||||||
import typinferenz.JavaCodeResult;
|
|
||||||
import typinferenz.ResultSet;
|
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
|
||||||
import mycompiler.mybytecode.AttributeInfo;
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.mybytecode.JVMCode;
|
|
||||||
import mycompiler.MyCompiler;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
import mycompiler.mystatement.Expr;
|
|
||||||
import mycompiler.mystatement.Literal;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
// ino.end
|
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
|
||||||
|
|
||||||
// ino.class.Constant.23212.description type=javadoc
|
// ino.class.Constant.23212.description type=javadoc
|
||||||
/**
|
/**
|
||||||
@ -118,11 +117,11 @@ public class Constant extends Method
|
|||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.method.getTypeName.23243.definition
|
// ino.method.getTypeName.23243.definition
|
||||||
public String getTypeName()
|
public JavaClassName getTypeName()
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.getTypeName.23243.body
|
// ino.method.getTypeName.23243.body
|
||||||
{
|
{
|
||||||
return name;
|
return new JavaClassName(name);
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
@ -169,7 +168,7 @@ public class Constant extends Method
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Zugehoerigen Typ (I, Z, C, Ljava/lang/String;) fuer den Typ ermitteln
|
// Zugehoerigen Typ (I, Z, C, Ljava/lang/String;) fuer den Typ ermitteln
|
||||||
String bcgType = JVMCode.get_codegen_Type(typ.getName(), paralist);
|
String bcgType = JVMCode.get_codegen_Type(typ.getName().toString(), paralist);
|
||||||
|
|
||||||
if (getValue() == null || !(getValue() instanceof Literal) ) {
|
if (getValue() == null || !(getValue() instanceof Literal) ) {
|
||||||
throw new JVMCodeException("Die Generierung der Konstante wird nicht unterstuetzt!");
|
throw new JVMCodeException("Die Generierung der Konstante wird nicht unterstuetzt!");
|
||||||
@ -224,11 +223,6 @@ public class Constant extends Method
|
|||||||
//return null;
|
//return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void replaceType(CReplaceTypeEvent e) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTypeLineNumber() {
|
public int getTypeLineNumber() {
|
@ -1,24 +1,24 @@
|
|||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.SyntaxTreeNode;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
import de.dhbwstuttgart.parser.JavaClassName;
|
||||||
import mycompiler.mymodifier.Modifiers;
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
||||||
import mycompiler.mystatement.Block;
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import de.dhbwstuttgart.syntaxtree.statement.Block;
|
||||||
import mycompiler.mytype.RefType;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import typinferenz.ConstraintsSet;
|
import de.dhbwstuttgart.typeinference.ConstraintsSet;
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
import typinferenz.SingleConstraint;
|
import de.dhbwstuttgart.typeinference.SingleConstraint;
|
||||||
import typinferenz.assumptions.ConstructorAssumption;
|
import de.dhbwstuttgart.typeinference.assumptions.ConstructorAssumption;
|
||||||
import typinferenz.assumptions.MethodAssumption;
|
import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption;
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
|
||||||
public class Constructor extends Method {
|
public class Constructor extends Method {
|
||||||
private Method methode;
|
private Method methode;
|
||||||
@ -56,7 +56,7 @@ public class Constructor extends Method {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTypeName() {
|
public JavaClassName getTypeName() {
|
||||||
|
|
||||||
return this.getType().getName();
|
return this.getType().getName();
|
||||||
}
|
}
|
||||||
@ -178,12 +178,6 @@ public class Constructor extends Method {
|
|||||||
this.methode.setOffset(Offset);
|
this.methode.setOffset(Offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void replaceType(CReplaceTypeEvent e) {
|
|
||||||
|
|
||||||
this.methode.replaceType(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTypeLineNumber() {
|
public int getTypeLineNumber() {
|
||||||
|
|
||||||
@ -222,7 +216,6 @@ public class Constructor extends Method {
|
|||||||
|
|
||||||
public ConstraintsSet TYPE(TypeAssumptions ass) {
|
public ConstraintsSet TYPE(TypeAssumptions ass) {
|
||||||
ConstraintsSet ret = new ConstraintsSet();
|
ConstraintsSet ret = new ConstraintsSet();
|
||||||
|
|
||||||
ret.add(this.methode.get_Block().TYPEStmt(ass));
|
ret.add(this.methode.get_Block().TYPEStmt(ass));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
@ -1,10 +1,10 @@
|
|||||||
// ino.module.ExceptionList.8559.package
|
// ino.module.ExceptionList.8559.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.ExceptionList.8559.import
|
// ino.module.ExceptionList.8559.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
// ino.end
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,23 +1,22 @@
|
|||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.SyntaxTreeNode;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
import mycompiler.mytype.RefType;
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
import de.dhbwstuttgart.typeinference.ConstraintsSet;
|
||||||
import typinferenz.ConstraintsSet;
|
import de.dhbwstuttgart.typeinference.GenericTypeInsertable;
|
||||||
import typinferenz.GenericTypeInsertable;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.TypeInsertable;
|
||||||
import typinferenz.Typeable;
|
import de.dhbwstuttgart.typeinference.Typeable;
|
||||||
import typinferenz.TypeInsertable;
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
|
||||||
import typinferenz.typedeployment.TypeInsertPoint;
|
|
||||||
|
|
||||||
public abstract class Field extends SyntaxTreeNode implements TypeInsertable, Typeable, Generic, GenericTypeInsertable{
|
public abstract class Field extends SyntaxTreeNode implements TypeInsertable, Typeable, Generic, GenericTypeInsertable{
|
||||||
|
|
||||||
@ -55,7 +54,7 @@ public abstract class Field extends SyntaxTreeNode implements TypeInsertable, Ty
|
|||||||
throws JVMCodeException;
|
throws JVMCodeException;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<GenericTypeVar> getGenericParameter() {
|
public Vector<GenericTypeVar> getGenericParameter() {
|
||||||
Vector<GenericTypeVar> ret = new Vector<>();
|
Vector<GenericTypeVar> ret = new Vector<>();
|
||||||
if(this.genericParameters == null)return ret;
|
if(this.genericParameters == null)return ret;
|
||||||
ret.addAll(this.genericParameters);
|
ret.addAll(this.genericParameters);
|
||||||
@ -154,10 +153,16 @@ public abstract class Field extends SyntaxTreeNode implements TypeInsertable, Ty
|
|||||||
return this.offset;
|
return this.offset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vector<SyntaxTreeNode> getChildren() {
|
||||||
|
Vector<SyntaxTreeNode> ret = new Vector<>();
|
||||||
|
if(this.getType()!=null)ret.add(this.getType());
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setGenericParameter(GenericDeclarationList params) {
|
public void setGenericParameter(GenericDeclarationList params) {
|
||||||
this.genericParameters = params;
|
this.genericParameters = params;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,24 +1,24 @@
|
|||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import typinferenz.ConstraintsSet;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import typinferenz.OderConstraint;
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.syntaxtree.statement.Expr;
|
||||||
import typinferenz.SingleConstraint;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
import typinferenz.assumptions.FieldAssumption;
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
import mycompiler.SyntaxTreeNode;
|
import de.dhbwstuttgart.typeinference.ConstraintType;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
import de.dhbwstuttgart.typeinference.ConstraintsSet;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import mycompiler.mystatement.Expr;
|
import de.dhbwstuttgart.typeinference.OderConstraint;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
import mycompiler.mytype.RefType;
|
import de.dhbwstuttgart.typeinference.SingleConstraint;
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.typeinference.assumptions.FieldAssumption;
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Eine Feldinitialisation steht für eine Felddeklaration mit gleichzeitiger Wertzuweisung
|
* Eine Feldinitialisation steht für eine Felddeklaration mit gleichzeitiger Wertzuweisung
|
||||||
@ -106,28 +106,19 @@ public class FieldDeclaration extends Field{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector<SyntaxTreeNode> getChildren() {
|
public Vector<SyntaxTreeNode> getChildren() {
|
||||||
Vector<SyntaxTreeNode> ret = new Vector<SyntaxTreeNode>();
|
Vector<SyntaxTreeNode> ret = super.getChildren();
|
||||||
if(this.wert!=null)ret.add(this.wert);
|
if(this.wert!=null)ret.add(this.wert);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void replaceType(CReplaceTypeEvent e) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public int getTypeLineNumber() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getVariableLength()
|
public int getVariableLength()
|
||||||
{
|
{
|
||||||
return declid.elementAt(0).get_Name().length();
|
return declid.elementAt(0).get_Name().length();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public ConstraintsSet TYPE(TypeAssumptions publicAssumptions) {
|
public ConstraintsSet TYPE(TypeAssumptions publicAssumptions) {
|
||||||
|
if(this.wert == null && (this.getType() == null || this.getType() instanceof TypePlaceholder))
|
||||||
|
throw new TypeinferenceException("Typlose Felder müssen mit Wert initialisiert werden", this);
|
||||||
ConstraintsSet ret = new ConstraintsSet();
|
ConstraintsSet ret = new ConstraintsSet();
|
||||||
TypeAssumptions localAssumptions = publicAssumptions.clone();
|
TypeAssumptions localAssumptions = publicAssumptions.clone();
|
||||||
|
|
||||||
@ -146,7 +137,7 @@ public class FieldDeclaration extends Field{
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//TypeCheck, falls es sich um einen RefType handelt:
|
//TypeCheck, falls es sich um einen RefType handelt:
|
||||||
this.getType().checkType(localAssumptions, this);
|
ConstraintType thisType = this.getType().TYPE(localAssumptions, this);
|
||||||
/*
|
/*
|
||||||
if(this.getType()!=null && (this.getType() instanceof RefType)){
|
if(this.getType()!=null && (this.getType() instanceof RefType)){
|
||||||
Type replaceType = null;
|
Type replaceType = null;
|
||||||
@ -156,13 +147,13 @@ public class FieldDeclaration extends Field{
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SingleConstraint c1 = new SingleConstraint(this.getType(), this.getType());
|
SingleConstraint c1 = new SingleConstraint(thisType, thisType);
|
||||||
ret.add(c1); //Damit die TypVariable des Felds in den Constraints auftaucht
|
ret.add(c1); //Damit die TypVariable des Felds in den Constraints auftaucht
|
||||||
|
|
||||||
if(this.wert!=null){
|
if(this.wert!=null){
|
||||||
//Falls bei der Deklaration ein Wert zugewiesen wird, verhält sich das Constraintserzeugen wie bei dem Assign-Statement:
|
//Falls bei der Deklaration ein Wert zugewiesen wird, verhält sich das Constraintserzeugen wie bei dem Assign-Statement:
|
||||||
ret.add(this.wert.TYPEExpr(localAssumptions));
|
ret.add(this.wert.TYPEExpr(localAssumptions));
|
||||||
ret.add(new SingleConstraint(this.wert.getType(), this.getType()));
|
ret.add(new SingleConstraint(this.wert.getType().TYPE(localAssumptions,this), thisType));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
@ -1,45 +1,27 @@
|
|||||||
// ino.module.FormalParameter.8561.package
|
// ino.module.FormalParameter.8561.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.FormalParameter.8561.import
|
// ino.module.FormalParameter.8561.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.SyntaxTreeNode;
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.mybytecode.CodeAttribute;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.ITypeReplacementListener;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
|
import de.dhbwstuttgart.bytecode.CodeAttribute;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.TypeInsertable;
|
||||||
|
import de.dhbwstuttgart.typeinference.Typeable;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
|
||||||
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||||||
import typinferenz.JavaCodeResult;
|
|
||||||
import typinferenz.ResultSet;
|
|
||||||
import typinferenz.Typeable;
|
|
||||||
import typinferenz.TypeInsertable;
|
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
|
||||||
import typinferenz.typedeployment.TypeInsertPoint;
|
|
||||||
import typinferenz.typedeployment.TypeInsertSet;
|
|
||||||
|
|
||||||
// ino.class.FormalParameter.23391.declaration
|
// ino.class.FormalParameter.23391.declaration
|
||||||
public class FormalParameter extends SyntaxTreeNode implements ITypeReplacementListener, Typeable, TypeInsertable
|
public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeInsertable
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.class.FormalParameter.23391.body
|
// ino.class.FormalParameter.23391.body
|
||||||
{
|
{
|
||||||
@ -60,7 +42,7 @@ public class FormalParameter extends SyntaxTreeNode implements ITypeReplacementL
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object object) {
|
public boolean equals(Object object) {
|
||||||
if(!super.equals(object))return false;
|
//if(!super.equals(object))return false; //Nicht die Position im SyntaxBaum prüfen.
|
||||||
if(!(object instanceof FormalParameter))return false;
|
if(!(object instanceof FormalParameter))return false;
|
||||||
FormalParameter equals = (FormalParameter)object;
|
FormalParameter equals = (FormalParameter)object;
|
||||||
if((this.type==null)!=(equals.type == null))return false;
|
if((this.type==null)!=(equals.type == null))return false;
|
||||||
@ -82,13 +64,6 @@ public class FormalParameter extends SyntaxTreeNode implements ITypeReplacementL
|
|||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.setType.23404.body
|
// ino.method.setType.23404.body
|
||||||
{
|
{
|
||||||
if(this.type instanceof TypePlaceholder){
|
|
||||||
((TypePlaceholder)this.type).removeReplacementListener(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(t instanceof TypePlaceholder){
|
|
||||||
((TypePlaceholder)t).addReplacementListener(this);
|
|
||||||
}
|
|
||||||
this.type = t;
|
this.type = t;
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
@ -134,7 +109,7 @@ public class FormalParameter extends SyntaxTreeNode implements ITypeReplacementL
|
|||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.getTypeName.23416.body
|
// ino.method.getTypeName.23416.body
|
||||||
{ if(this.getType() == null)return "";
|
{ if(this.getType() == null)return "";
|
||||||
return this.getType().getName();
|
return this.getType().getName().toString();
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
@ -179,24 +154,6 @@ public class FormalParameter extends SyntaxTreeNode implements ITypeReplacementL
|
|||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.method.replaceType.23428.defdescription type=javadoc
|
|
||||||
/**
|
|
||||||
* <br>Author: J<EFBFBD>rg B<EFBFBD>uerle
|
|
||||||
* @param e
|
|
||||||
*/
|
|
||||||
// ino.end
|
|
||||||
// ino.method.replaceType.23428.definition
|
|
||||||
public void replaceType(CReplaceTypeEvent e)
|
|
||||||
// ino.end
|
|
||||||
// ino.method.replaceType.23428.body
|
|
||||||
{
|
|
||||||
inferencelog.debug("Ersetze Typ in FormalParameter \""+this.getIdentifier()+"\"");
|
|
||||||
if(type instanceof TypePlaceholder){
|
|
||||||
((TypePlaceholder)type).removeReplacementListener(this);
|
|
||||||
}
|
|
||||||
this.setType(e.getNewType());
|
|
||||||
}
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.method.getTypeLineNumber.23431.defdescription type=javadoc
|
// ino.method.getTypeLineNumber.23431.defdescription type=javadoc
|
||||||
/**
|
/**
|
@ -1,9 +1,9 @@
|
|||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wird von allen Klassen implementiert, welche generische Parameter halten können. (Class, Method und Field)
|
* Wird von allen Klassen implementiert, welche generische Parameter halten können. (Class, Method und Field)
|
@ -1,9 +1,9 @@
|
|||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myparser.GenericVarDeclarationList;
|
import de.dhbwstuttgart.parser.GenericVarDeclarationList;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,11 +1,13 @@
|
|||||||
// ino.module.ImportDeclarations.8562.package
|
// ino.module.ImportDeclarations.8562.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.ImportDeclarations.8562.import
|
// ino.module.ImportDeclarations.8562.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
|
||||||
|
|
||||||
// ino.class.ImportDeclarations.23434.description type=javadoc
|
// ino.class.ImportDeclarations.23434.description type=javadoc
|
||||||
/**
|
/**
|
@ -1,32 +1,19 @@
|
|||||||
// ino.module.Interface.8582.package
|
// ino.module.Interface.8582.package
|
||||||
package mycompiler.myinterface;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.Interface.8582.import
|
// ino.module.Interface.8582.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.AClassOrInterface;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
import de.dhbwstuttgart.core.AClassOrInterface;
|
||||||
import mycompiler.myclass.Class;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import mycompiler.myclass.ClassHelper;
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
import mycompiler.myclass.Constant;
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
import mycompiler.myclass.FormalParameter;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
import mycompiler.myclass.Method;
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
import mycompiler.myclass.ParameterList;
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import mycompiler.myclass.UsedId;
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.mytypereconstruction.CIntersectionType;
|
|
||||||
import mycompiler.mytypereconstruction.TypeinferenceResultSet;
|
|
||||||
import mycompiler.mytypereconstruction.set.CTypeAssumptionSet;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CInstVarTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CMethodTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CParaTypeAssumption;
|
|
||||||
import mycompiler.SourceFile;
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ein Interface ist eine abstrakte Klasse, erbt daher von Class
|
* Ein Interface ist eine abstrakte Klasse, erbt daher von Class
|
@ -1,18 +1,13 @@
|
|||||||
// ino.module.InterfaceBody.8583.package
|
// ino.module.InterfaceBody.8583.package
|
||||||
package mycompiler.myinterface;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.InterfaceBody.8583.import
|
// ino.module.InterfaceBody.8583.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.myclass.Field;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
import mycompiler.myclass.Constant;
|
|
||||||
import mycompiler.myclass.Method;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.class.InterfaceBody.23984.description type=javadoc
|
// ino.class.InterfaceBody.23984.description type=javadoc
|
||||||
/**
|
/**
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.Method.8564.package
|
// ino.module.Method.8564.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.Method.8564.import
|
// ino.module.Method.8564.import
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
@ -7,41 +7,33 @@ import java.util.Hashtable;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.IItemWithOffset;
|
|
||||||
import mycompiler.SyntaxTreeNode;
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.MyCompiler;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.myexception.SCMethodException;
|
|
||||||
import mycompiler.myexception.SCStatementException;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
import mycompiler.mystatement.Block;
|
|
||||||
import mycompiler.mystatement.Return;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
|
||||||
import mycompiler.mytypereconstruction.replacementlistener.ITypeReplacementListener;
|
|
||||||
import mycompiler.mytypereconstruction.set.CTypeAssumptionSet;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CInstVarTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CLocalVarTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CMethodTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CParaTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CTypeAssumption;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import typinferenz.SingleConstraint;
|
import de.dhbwstuttgart.core.IItemWithOffset;
|
||||||
import typinferenz.ConstraintsSet;
|
import de.dhbwstuttgart.core.MyCompiler;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import typinferenz.TypeInsertable;
|
import de.dhbwstuttgart.myexception.SCMethodException;
|
||||||
import typinferenz.assumptions.MethodAssumption;
|
import de.dhbwstuttgart.myexception.SCStatementException;
|
||||||
import typinferenz.assumptions.ParameterAssumption;
|
import de.dhbwstuttgart.parser.JavaClassName;
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
import typinferenz.typedeployment.TypeInsertPoint;
|
import de.dhbwstuttgart.syntaxtree.statement.Block;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Return;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
|
import de.dhbwstuttgart.typeinference.ConstraintsSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.SingleConstraint;
|
||||||
|
import de.dhbwstuttgart.typeinference.TypeInsertable;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.ParameterAssumption;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -172,7 +164,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable
|
|||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.method.getTypeName.23533.definition
|
// ino.method.getTypeName.23533.definition
|
||||||
public String getTypeName()
|
public JavaClassName getTypeName()
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.getTypeName.23533.body
|
// ino.method.getTypeName.23533.body
|
||||||
{
|
{
|
||||||
@ -203,14 +195,6 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable
|
|||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.setReturnType.23539.body
|
// ino.method.setReturnType.23539.body
|
||||||
{
|
{
|
||||||
if(this.returntype instanceof TypePlaceholder){
|
|
||||||
((TypePlaceholder)this.returntype).removeReplacementListener(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(type instanceof TypePlaceholder){
|
|
||||||
((TypePlaceholder)type).addReplacementListener(this);
|
|
||||||
}
|
|
||||||
// this.returntype = type; //auskommentiert von Andreas Stadelmeier (a10023)
|
|
||||||
this.returntype = type;
|
this.returntype = type;
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
@ -422,24 +406,6 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable
|
|||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.method.replaceType.23599.defdescription type=javadoc
|
|
||||||
/**
|
|
||||||
* <br>Author: Jrg Buerle
|
|
||||||
* @param e
|
|
||||||
*/
|
|
||||||
// ino.end
|
|
||||||
// ino.method.replaceType.23599.definition
|
|
||||||
public void replaceType(CReplaceTypeEvent e)
|
|
||||||
// ino.end
|
|
||||||
// ino.method.replaceType.23599.body
|
|
||||||
{
|
|
||||||
inferencelog.debug("Ersetze Typ in Method \""+this.get_Method_Name()+"()\"\n");
|
|
||||||
if(returntype instanceof TypePlaceholder){
|
|
||||||
((TypePlaceholder)returntype).removeReplacementListener(this);
|
|
||||||
}
|
|
||||||
this.setReturnType(e.getNewType());
|
|
||||||
}
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.method.getTypeLineNumber.23602.defdescription type=javadoc
|
// ino.method.getTypeLineNumber.23602.defdescription type=javadoc
|
||||||
/**
|
/**
|
||||||
@ -561,7 +527,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TypeCheck, falls es sich um einen RefType handelt:
|
//TypeCheck, falls es sich um einen RefType handelt:
|
||||||
this.returntype = this.returntype.checkType(localAss, this);
|
this.returntype = this.returntype.TYPE(localAss, this).getType();
|
||||||
/*
|
/*
|
||||||
if(this.returntype!=null && (this.returntype instanceof RefType)&&
|
if(this.returntype!=null && (this.returntype instanceof RefType)&&
|
||||||
!(this.returntype instanceof mycompiler.mytype.Void)){//Sonderfall der Methode: Ihr Typ darf Void definiert werden.
|
!(this.returntype instanceof mycompiler.mytype.Void)){//Sonderfall der Methode: Ihr Typ darf Void definiert werden.
|
||||||
@ -574,7 +540,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable
|
|||||||
//Die Parameter zu den Assumptions hinzufügen:
|
//Die Parameter zu den Assumptions hinzufügen:
|
||||||
if(this.parameterlist!=null)for(FormalParameter param : this.parameterlist){
|
if(this.parameterlist!=null)for(FormalParameter param : this.parameterlist){
|
||||||
|
|
||||||
param.setType(param.getType().checkType(localAss, this));
|
param.setType(param.getType().TYPE(localAss, this).getType());
|
||||||
/*
|
/*
|
||||||
if(param.getType() instanceof RefType)
|
if(param.getType() instanceof RefType)
|
||||||
{
|
{
|
||||||
@ -590,7 +556,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable
|
|||||||
}
|
}
|
||||||
ret.add(this.block.TYPEStmt(localAss));
|
ret.add(this.block.TYPEStmt(localAss));
|
||||||
//eine Verknüpfung mit der Type Assumption aus dem Assumption Set und dem ermittelten Typ der Methode:
|
//eine Verknüpfung mit der Type Assumption aus dem Assumption Set und dem ermittelten Typ der Methode:
|
||||||
ret.add(new SingleConstraint(this.block.getType(), this.returntype));
|
ret.add(new SingleConstraint(this.block.getType().TYPE(localAss, this), this.returntype.TYPE(localAss, this)));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -717,6 +683,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable
|
|||||||
for(FormalParameter param : this.parameterlist){
|
for(FormalParameter param : this.parameterlist){
|
||||||
ret.add(param);
|
ret.add(param);
|
||||||
}
|
}
|
||||||
|
ret.addAll(this.getGenericParameter());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -1,17 +1,19 @@
|
|||||||
// ino.module.ParameterList.8565.package
|
// ino.module.ParameterList.8565.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.ParameterList.8565.import
|
// ino.module.ParameterList.8565.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
|
||||||
import typinferenz.ResultSet;
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.mybytecode.CodeAttribute;
|
|
||||||
import mycompiler.mytype.*;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
|
import de.dhbwstuttgart.bytecode.CodeAttribute;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.BaseType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.SourceFile.8722.package
|
// ino.module.SourceFile.8722.package
|
||||||
package mycompiler;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.SourceFile.8722.import
|
// ino.module.SourceFile.8722.import
|
||||||
@ -10,56 +10,44 @@ import java.util.Hashtable;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.myclass.BasicAssumptionClass;
|
|
||||||
import mycompiler.myclass.Class;
|
|
||||||
import mycompiler.myclass.Constructor;
|
|
||||||
import mycompiler.myclass.Field;
|
|
||||||
import mycompiler.myclass.FieldDeclaration;
|
|
||||||
import mycompiler.myclass.ImportDeclarations;
|
|
||||||
import mycompiler.myclass.UsedId;
|
|
||||||
import mycompiler.myexception.CTypeReconstructionException;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.myexception.SCClassException;
|
|
||||||
import mycompiler.myexception.SCException;
|
|
||||||
import mycompiler.myinterface.Interface;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
import mycompiler.mymodifier.Public;
|
|
||||||
import mycompiler.mytype.BooleanType;
|
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
|
||||||
import mycompiler.mytype.Pair;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
|
||||||
import mycompiler.mytype.Void;
|
|
||||||
import mycompiler.mytypereconstruction.CIntersectionType;
|
|
||||||
import mycompiler.mytypereconstruction.CSupportData;
|
|
||||||
import mycompiler.mytypereconstruction.TypeinferenceResultSet;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CInstVarTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CMethodTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CParaTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.typeassumption.CTypeAssumption;
|
|
||||||
import mycompiler.mytypereconstruction.unify.FC_TTO;
|
|
||||||
import mycompiler.mytypereconstruction.unify.Unify;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import mycompiler.myclass.*;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import mycompiler.*;
|
import de.dhbwstuttgart.core.AClassOrInterface;
|
||||||
|
import de.dhbwstuttgart.core.MyCompiler;
|
||||||
|
import de.dhbwstuttgart.myexception.CTypeReconstructionException;
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.myexception.SCClassException;
|
||||||
|
import de.dhbwstuttgart.myexception.SCException;
|
||||||
|
import de.dhbwstuttgart.parser.JavaClassName;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.misc.UsedId;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.Public;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.BooleanType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Void;
|
||||||
|
import de.dhbwstuttgart.typeinference.ConstraintsSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.FunN;
|
||||||
|
import de.dhbwstuttgart.typeinference.FunNInterface;
|
||||||
|
import de.dhbwstuttgart.typeinference.FunNMethod;
|
||||||
|
import de.dhbwstuttgart.typeinference.Pair;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.UndConstraint;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.ClassAssumption;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.ParameterAssumption;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.DebugException;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
import de.dhbwstuttgart.typeinference.unify.FC_TTO;
|
||||||
|
import de.dhbwstuttgart.typeinference.unify.Unify;
|
||||||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||||||
import sun.reflect.generics.reflectiveObjects.TypeVariableImpl;
|
import sun.reflect.generics.reflectiveObjects.TypeVariableImpl;
|
||||||
import typinferenz.ConstraintsSet;
|
|
||||||
import typinferenz.FunN;
|
|
||||||
import typinferenz.FunNInterface;
|
|
||||||
import typinferenz.FunNMethod;
|
|
||||||
import typinferenz.ResultSet;
|
|
||||||
import typinferenz.UndConstraint;
|
|
||||||
import typinferenz.assumptions.ClassAssumption;
|
|
||||||
import typinferenz.assumptions.MethodAssumption;
|
|
||||||
import typinferenz.assumptions.ParameterAssumption;
|
|
||||||
import typinferenz.assumptions.TypeAssumptions;
|
|
||||||
import typinferenz.exceptions.DebugException;
|
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -227,7 +215,7 @@ public class SourceFile
|
|||||||
* Startet die Bytecodegenerierung fuer alle in der Datei
|
* Startet die Bytecodegenerierung fuer alle in der Datei
|
||||||
* enthaltenen Klassen und Interfaces.
|
* enthaltenen Klassen und Interfaces.
|
||||||
*
|
*
|
||||||
*/
|
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.codegen.21397.definition
|
// ino.method.codegen.21397.definition
|
||||||
public Vector<ClassFile> codegen(ResultSet result)
|
public Vector<ClassFile> codegen(ResultSet result)
|
||||||
@ -250,7 +238,7 @@ public class SourceFile
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
*/
|
||||||
// ino.method.createPairFromClassAndSuperclass.21400.defdescription type=javadoc
|
// ino.method.createPairFromClassAndSuperclass.21400.defdescription type=javadoc
|
||||||
/**
|
/**
|
||||||
* Erstellt ein Typ-Paar, welches im 1. Durchlauf in die Menge der Finite Closure
|
* Erstellt ein Typ-Paar, welches im 1. Durchlauf in die Menge der Finite Closure
|
||||||
@ -260,7 +248,7 @@ public class SourceFile
|
|||||||
*/
|
*/
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.createPairFromClassAndSuperclass.21400.definition
|
// ino.method.createPairFromClassAndSuperclass.21400.definition
|
||||||
private Pair createPairFromClassAndSuperclass(String className, String superclassName, Vector classParaOrg, Vector superclassParaOrg)
|
private Pair createPairFromClassAndSuperclass(JavaClassName className, JavaClassName superclassName, Vector classParaOrg, Vector superclassParaOrg)
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.createPairFromClassAndSuperclass.21400.body
|
// ino.method.createPairFromClassAndSuperclass.21400.body
|
||||||
{
|
{
|
||||||
@ -272,15 +260,15 @@ public class SourceFile
|
|||||||
superclassParaOrg=null;
|
superclassParaOrg=null;
|
||||||
}
|
}
|
||||||
Pair P = new Pair(
|
Pair P = new Pair(
|
||||||
new RefType( className, classParaOrg,-1),
|
new RefType( className.toString(), classParaOrg,-1),
|
||||||
new RefType( superclassName, superclassParaOrg,-1)
|
new RefType( superclassName.toString(), superclassParaOrg,-1)
|
||||||
);
|
);
|
||||||
//PL 04-12-29 freshe Variablen ANFANG
|
//PL 04-12-29 freshe Variablen ANFANG
|
||||||
RefType r1 = (RefType)P.getTA1Copy();
|
RefType r1 = (RefType)P.getTA1Copy();
|
||||||
RefType r2 = (RefType)P.getTA2Copy();
|
RefType r2 = (RefType)P.getTA2Copy();
|
||||||
// #JB# 05.04.2005
|
// #JB# 05.04.2005
|
||||||
// ###########################################################
|
// ###########################################################
|
||||||
Hashtable<String,Type> substHash = new Hashtable<String,Type>(); //fuer jedes Paar komplett neue Variablen
|
Hashtable<JavaClassName,Type> substHash = new Hashtable<JavaClassName,Type>(); //fuer jedes Paar komplett neue Variablen
|
||||||
Unify.varSubst(r1, substHash);
|
Unify.varSubst(r1, substHash);
|
||||||
Unify.varSubst(r2, substHash);
|
Unify.varSubst(r2, substHash);
|
||||||
// ###########################################################
|
// ###########################################################
|
||||||
@ -326,7 +314,7 @@ public class SourceFile
|
|||||||
Iterator<UsedId> interfaceIterator=tempKlasse.getSuperInterfaces().iterator();
|
Iterator<UsedId> interfaceIterator=tempKlasse.getSuperInterfaces().iterator();
|
||||||
while(interfaceIterator.hasNext()){
|
while(interfaceIterator.hasNext()){
|
||||||
UsedId intf=interfaceIterator.next();
|
UsedId intf=interfaceIterator.next();
|
||||||
String interfaceName=intf.getQualifiedName();
|
JavaClassName interfaceName=intf.getQualifiedName();
|
||||||
Pair P=createPairFromClassAndSuperclass(tempKlasse.getName(),interfaceName,tempKlasse.get_ParaList(),intf.get_ParaList());
|
Pair P=createPairFromClassAndSuperclass(tempKlasse.getName(),interfaceName,tempKlasse.get_ParaList(),intf.get_ParaList());
|
||||||
vFC.add( P );
|
vFC.add( P );
|
||||||
|
|
||||||
@ -339,7 +327,7 @@ public class SourceFile
|
|||||||
Iterator<UsedId> interfaceIterator=intf.getSuperInterfaces().iterator();
|
Iterator<UsedId> interfaceIterator=intf.getSuperInterfaces().iterator();
|
||||||
while(interfaceIterator.hasNext()){
|
while(interfaceIterator.hasNext()){
|
||||||
UsedId superintf=interfaceIterator.next();
|
UsedId superintf=interfaceIterator.next();
|
||||||
String superinterfaceName=superintf.getQualifiedName();
|
JavaClassName superinterfaceName=superintf.getQualifiedName();
|
||||||
Pair P=createPairFromClassAndSuperclass(intf.getName(),superinterfaceName,intf.getParaList(), superintf.get_ParaList());
|
Pair P=createPairFromClassAndSuperclass(intf.getName(),superinterfaceName,intf.getParaList(), superintf.get_ParaList());
|
||||||
vFC.add( P );
|
vFC.add( P );
|
||||||
|
|
||||||
@ -452,7 +440,7 @@ public class SourceFile
|
|||||||
|
|
||||||
//es werden alle Parameter in einem Typeterm, der
|
//es werden alle Parameter in einem Typeterm, der
|
||||||
//der Argumente hat ersetzt PL 04-12-28
|
//der Argumente hat ersetzt PL 04-12-28
|
||||||
Hashtable<String,Type> hts = new Hashtable<String,Type>();
|
Hashtable<JavaClassName,Type> hts = new Hashtable<JavaClassName,Type>();
|
||||||
//for(int u = nSubstStelle; u < vPara.size(); u++) {
|
//for(int u = nSubstStelle; u < vPara.size(); u++) {
|
||||||
for(int u = 0; u < vPara.size(); u++) {
|
for(int u = 0; u < vPara.size(); u++) {
|
||||||
try {
|
try {
|
||||||
@ -463,7 +451,7 @@ public class SourceFile
|
|||||||
// ###########################################################
|
// ###########################################################
|
||||||
inferencelog.debug("Typterm_Name: " + vPara.elementAt(u));
|
inferencelog.debug("Typterm_Name: " + vPara.elementAt(u));
|
||||||
inferencelog.debug("Typterm_Name: " + ((Type)vPara.elementAt(u)).Type2String());
|
inferencelog.debug("Typterm_Name: " + ((Type)vPara.elementAt(u)).Type2String());
|
||||||
hts.put(((RefType)PSuchen.TA1).getParaN(u), vPara.elementAt(u));
|
hts.put(new JavaClassName(((RefType)PSuchen.TA1).getParaN(u)), vPara.elementAt(u));
|
||||||
}
|
}
|
||||||
catch( Exception E ) {
|
catch( Exception E ) {
|
||||||
inferencelog.error(E.getMessage());
|
inferencelog.error(E.getMessage());
|
||||||
@ -528,7 +516,7 @@ public class SourceFile
|
|||||||
RefType RSuch = (RefType)PSuch.TA1;
|
RefType RSuch = (RefType)PSuch.TA1;
|
||||||
|
|
||||||
//if( R.getName().equals(RSuch.getName()) )
|
//if( R.getName().equals(RSuch.getName()) )
|
||||||
if (R.is_Equiv(RSuch, new Hashtable<String,Type>())) //eingefuegt PL 05-01-07
|
if (R.is_Equiv(RSuch, new Hashtable<JavaClassName,Type>())) //eingefuegt PL 05-01-07
|
||||||
{
|
{
|
||||||
// Paar einfuegen, falls noch nicht vorhanden
|
// Paar einfuegen, falls noch nicht vorhanden
|
||||||
RefType L1 = (RefType)PTemp.getTA1Copy();
|
RefType L1 = (RefType)PTemp.getTA1Copy();
|
||||||
@ -539,10 +527,10 @@ public class SourceFile
|
|||||||
//zunaechst Variablen disjunkt machen ANFANG
|
//zunaechst Variablen disjunkt machen ANFANG
|
||||||
// #JB# 05.04.2005
|
// #JB# 05.04.2005
|
||||||
// ###########################################################
|
// ###########################################################
|
||||||
Hashtable<String,Type> substHash1 = new Hashtable<String,Type>();
|
Hashtable<JavaClassName,Type> substHash1 = new Hashtable<JavaClassName,Type>();
|
||||||
Unify.varSubst(L1, substHash1);
|
Unify.varSubst(L1, substHash1);
|
||||||
Unify.varSubst(L2, substHash1);
|
Unify.varSubst(L2, substHash1);
|
||||||
Hashtable<String,Type> substHash2 = new Hashtable<String,Type>();
|
Hashtable<JavaClassName,Type> substHash2 = new Hashtable<JavaClassName,Type>();
|
||||||
Unify.varSubst(R1, substHash2);
|
Unify.varSubst(R1, substHash2);
|
||||||
Unify.varSubst(R2, substHash2);
|
Unify.varSubst(R2, substHash2);
|
||||||
// ###########################################################
|
// ###########################################################
|
||||||
@ -553,9 +541,9 @@ public class SourceFile
|
|||||||
|
|
||||||
// #JB# 05.04.2005
|
// #JB# 05.04.2005
|
||||||
// ###########################################################
|
// ###########################################################
|
||||||
Hashtable<String,Type> h = new Hashtable<String,Type>();
|
Hashtable<JavaClassName,Type> h = new Hashtable<JavaClassName,Type>();
|
||||||
L2.Equiv2Equal(R1, h);
|
L2.Equiv2Equal(R1, h);
|
||||||
Hashtable<String,Type> substHash3 = h;
|
Hashtable<JavaClassName,Type> substHash3 = h;
|
||||||
Unify.varSubst(L1, substHash3);
|
Unify.varSubst(L1, substHash3);
|
||||||
Unify.varSubst(R2, substHash3);
|
Unify.varSubst(R2, substHash3);
|
||||||
// ###########################################################
|
// ###########################################################
|
||||||
@ -687,6 +675,8 @@ public class SourceFile
|
|||||||
}
|
}
|
||||||
typinferenzLog.debug("Karthesisches Produkt der Constraints: "+xConstraints);
|
typinferenzLog.debug("Karthesisches Produkt der Constraints: "+xConstraints);
|
||||||
|
|
||||||
|
finiteClosure.generateFullyNamedTypes(globalAssumptions);
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
// Unifizierung der Constraints:
|
// Unifizierung der Constraints:
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
@ -730,25 +720,27 @@ public class SourceFile
|
|||||||
//Erst die Unifizierung erstellen:
|
//Erst die Unifizierung erstellen:
|
||||||
Vector<Pair> constraintsClone = (Vector<Pair>)constraints.clone();
|
Vector<Pair> constraintsClone = (Vector<Pair>)constraints.clone();
|
||||||
|
|
||||||
|
/*
|
||||||
//Typen kontrollieren:
|
//Typen kontrollieren:
|
||||||
for(Pair p : constraintsClone){
|
for(Pair p : constraintsClone){
|
||||||
Type t = p.TA1;
|
Type t = p.TA1;
|
||||||
//TypeCheck, falls es sich um einen RefType handelt:
|
//TypeCheck, falls es sich um einen RefType handelt:
|
||||||
if(t!=null && (t instanceof RefType)&&
|
if(t!=null && (t instanceof RefType)&&
|
||||||
!(t instanceof mycompiler.mytype.Void)){
|
!(t instanceof de.dhbwstuttgart.syntaxtree.type.Void)){
|
||||||
Type replaceType = null;
|
Type replaceType = null;
|
||||||
replaceType = globalAssumptions.getTypeFor((RefType)t);
|
replaceType = globalAssumptions.getTypeFor((RefType)t, null);
|
||||||
if(!(replaceType == null))p.TA1 = replaceType;
|
if(!(replaceType == null))p.TA1 = replaceType;
|
||||||
}
|
}
|
||||||
t = p.TA2;
|
t = p.TA2;
|
||||||
//TypeCheck, falls es sich um einen RefType handelt:
|
//TypeCheck, falls es sich um einen RefType handelt:
|
||||||
if(t!=null && (t instanceof RefType)&&
|
if(t!=null && (t instanceof RefType)&&
|
||||||
!(t instanceof mycompiler.mytype.Void)){
|
!(t instanceof de.dhbwstuttgart.syntaxtree.type.Void)){
|
||||||
Type replaceType = null;
|
Type replaceType = null;
|
||||||
replaceType = globalAssumptions.getTypeFor((RefType)t);
|
replaceType = globalAssumptions.getTypeFor((RefType)t, null);
|
||||||
if(!(replaceType == null))p.TA2 = replaceType;
|
if(!(replaceType == null))p.TA2 = replaceType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
Vector<Vector<Pair>> unifyResult = Unify.unify(constraintsClone, finiteClosure);
|
Vector<Vector<Pair>> unifyResult = Unify.unify(constraintsClone, finiteClosure);
|
||||||
//Dann den Ergebnissen anfügen
|
//Dann den Ergebnissen anfügen
|
||||||
@ -933,7 +925,7 @@ public class SourceFile
|
|||||||
/**
|
/**
|
||||||
* Erstellt die Basic Assumptions (siehe MakeBasicAssumptions) als AssumptionSet
|
* Erstellt die Basic Assumptions (siehe MakeBasicAssumptions) als AssumptionSet
|
||||||
* @return
|
* @return
|
||||||
*/
|
|
||||||
@Deprecated //angefügt von Andreas Stadelmeier. Grund: Die Funktion wurde neu als makeBasicAssumptionsFromJRE angelegt
|
@Deprecated //angefügt von Andreas Stadelmeier. Grund: Die Funktion wurde neu als makeBasicAssumptionsFromJRE angelegt
|
||||||
private TypeAssumptions getBasicAssumptions() {
|
private TypeAssumptions getBasicAssumptions() {
|
||||||
TypeAssumptions ret = new TypeAssumptions(null);
|
TypeAssumptions ret = new TypeAssumptions(null);
|
||||||
@ -954,7 +946,7 @@ public class SourceFile
|
|||||||
// Properties laden
|
// Properties laden
|
||||||
java.lang.Class<?> x;
|
java.lang.Class<?> x;
|
||||||
try {
|
try {
|
||||||
x = java.lang.Class.forName(importDecl.getQualifiedName());
|
x = java.lang.Class.forName(importDecl.getQualifiedName().toString());
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
throw new CTypeReconstructionException("Fehlerhafte Import-Declaration: "+e.getMessage(),importDecl);
|
throw new CTypeReconstructionException("Fehlerhafte Import-Declaration: "+e.getMessage(),importDecl);
|
||||||
}
|
}
|
||||||
@ -1046,7 +1038,7 @@ public class SourceFile
|
|||||||
for(int k=0;k<gpt.length;k++){
|
for(int k=0;k<gpt.length;k++){
|
||||||
Type type=createTypeFromJavaGenericType(gpt[k],pt[k],jreSpiderRegistry);
|
Type type=createTypeFromJavaGenericType(gpt[k],pt[k],jreSpiderRegistry);
|
||||||
// Fixme HOTI beachte overloaded id
|
// Fixme HOTI beachte overloaded id
|
||||||
method.addParaAssumption(new CParaTypeAssumption(className, methodName, pt.length,0,type.getName(), type, MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>()));
|
method.addParaAssumption(new CParaTypeAssumption(className, methodName, pt.length,0,type.getName().toString(), type, MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>()));
|
||||||
}
|
}
|
||||||
//basicAssumptions.addMethodIntersectionType(new CIntersectionType(method));
|
//basicAssumptions.addMethodIntersectionType(new CIntersectionType(method));
|
||||||
//ret.add(method); //auskommentiert von Andreas Stadelmeier
|
//ret.add(method); //auskommentiert von Andreas Stadelmeier
|
||||||
@ -1076,7 +1068,7 @@ public class SourceFile
|
|||||||
imports.addAll(doneImports);
|
imports.addAll(doneImports);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// ino.method.makeBasicAssumptionsFromJRE.21409.definition
|
// ino.method.makeBasicAssumptionsFromJRE.21409.definition
|
||||||
private TypeAssumptions makeBasicAssumptionsFromJRE(Vector<UsedId> imports)
|
private TypeAssumptions makeBasicAssumptionsFromJRE(Vector<UsedId> imports)
|
||||||
@ -1094,7 +1086,6 @@ public class SourceFile
|
|||||||
mod.addModifier(new Public());
|
mod.addModifier(new Public());
|
||||||
|
|
||||||
//Für Object:
|
//Für Object:
|
||||||
//TODO: toString()-Methode gerät nicht in die BasicAssumptions
|
|
||||||
imports.add(new UsedId("java.lang.Object",-1));
|
imports.add(new UsedId("java.lang.Object",-1));
|
||||||
|
|
||||||
// Für jede einzelne Klasse
|
// Für jede einzelne Klasse
|
||||||
@ -1104,7 +1095,7 @@ public class SourceFile
|
|||||||
// Properties laden
|
// Properties laden
|
||||||
java.lang.Class<?> x;
|
java.lang.Class<?> x;
|
||||||
try {
|
try {
|
||||||
x = java.lang.Class.forName(importDecl.getQualifiedName());
|
x = java.lang.Class.forName(importDecl.getQualifiedName().toString());
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
throw new CTypeReconstructionException("Fehlerhafte Import-Declaration: "+e.getMessage(),importDecl);
|
throw new CTypeReconstructionException("Fehlerhafte Import-Declaration: "+e.getMessage(),importDecl);
|
||||||
}
|
}
|
||||||
@ -1116,19 +1107,19 @@ public class SourceFile
|
|||||||
//String className=x.getSimpleName();
|
//String className=x.getSimpleName();
|
||||||
String className=x.getName();
|
String className=x.getName();
|
||||||
|
|
||||||
// Generische Typen erzeugen
|
|
||||||
|
|
||||||
|
|
||||||
|
Class parentClass = new Class(className, mod, 0);
|
||||||
|
// Generische Typen erzeugen
|
||||||
Hashtable<String,GenericTypeVar> jreSpiderRegistry=new Hashtable<String,GenericTypeVar>();
|
Hashtable<String,GenericTypeVar> jreSpiderRegistry=new Hashtable<String,GenericTypeVar>();
|
||||||
Vector<GenericTypeVar> typeGenPara = new Vector<GenericTypeVar>();
|
Vector<GenericTypeVar> typeGenPara = new Vector<GenericTypeVar>();
|
||||||
for(int j=0;j<tvs.length;j++){
|
for(int j=0;j<tvs.length;j++){
|
||||||
GenericTypeVar gtv=new GenericTypeVar(tvs[j].getName(),-1);
|
GenericTypeVar gtv=new GenericTypeVar(tvs[j].getName(), parentClass,-1);
|
||||||
typeGenPara.addElement(gtv);
|
typeGenPara.addElement(gtv);
|
||||||
jreSpiderRegistry.put(tvs[j].getName(),gtv);
|
jreSpiderRegistry.put(tvs[j].getName(),gtv);
|
||||||
}
|
}
|
||||||
|
|
||||||
//BasicAssumptionClass myCl = new BasicAssumptionClass(className, mod);
|
//BasicAssumptionClass myCl = new BasicAssumptionClass(className, mod);
|
||||||
Class parentClass = new Class(className, mod, 0);
|
|
||||||
|
|
||||||
if(typeGenPara.size()>0){
|
if(typeGenPara.size()>0){
|
||||||
//auskommentiert von Andreas Stadelmeier:
|
//auskommentiert von Andreas Stadelmeier:
|
||||||
@ -1158,7 +1149,7 @@ public class SourceFile
|
|||||||
java.lang.reflect.TypeVariable[] superclassTVS=superClass.getTypeParameters();
|
java.lang.reflect.TypeVariable[] superclassTVS=superClass.getTypeParameters();
|
||||||
Vector<Type> supertypeGenPara = new Vector<Type>();
|
Vector<Type> supertypeGenPara = new Vector<Type>();
|
||||||
for(int tvi=0;tvi<superclassTVS.length;tvi++){
|
for(int tvi=0;tvi<superclassTVS.length;tvi++){
|
||||||
GenericTypeVar newGTV=new GenericTypeVar(superclassTVS[tvi].getName(),-1);
|
GenericTypeVar newGTV=new GenericTypeVar(superclassTVS[tvi].getName(),parentClass,-1);
|
||||||
supertypeGenPara.addElement(newGTV);
|
supertypeGenPara.addElement(newGTV);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1177,30 +1168,27 @@ public class SourceFile
|
|||||||
|
|
||||||
for(int j=0;j<fields.length;j++){
|
for(int j=0;j<fields.length;j++){
|
||||||
if(java.lang.reflect.Modifier.isPublic(fields[j].getModifiers())){
|
if(java.lang.reflect.Modifier.isPublic(fields[j].getModifiers())){
|
||||||
//CInstVarTypeAssumption instVar = new CInstVarTypeAssumption(className, fields[j].getName(), new RefType(fields[j].getType().getSimpleName()), MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>());
|
parentClass.addField(new FieldDeclaration(fields[j].getName(),new RefType(fields[j].getType().getName(),-1)));
|
||||||
CInstVarTypeAssumption instVar = new CInstVarTypeAssumption(className, fields[j].getName(), new RefType(fields[j].getType().getName(),-1), MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>());
|
|
||||||
//basicAssumptions.addFieldOrLocalVarAssumption(instVar);
|
|
||||||
parentClass.addField(new FieldDeclaration(fields[j].getName(),new RefType(fields[j].getType().getName(),-1)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(int j=0;j<methods.length;j++){
|
for(int j=0;j<methods.length;j++){
|
||||||
if(java.lang.reflect.Modifier.isPublic(methods[j].getModifiers())){
|
if(java.lang.reflect.Modifier.isPublic(methods[j].getModifiers())){
|
||||||
String methodName=methods[j].getName();
|
String methodName=methods[j].getName();
|
||||||
if(methodName.equals("add")){
|
//if(methodName.equals("add")){
|
||||||
|
|
||||||
java.lang.reflect.Type genericReturnType=methods[j].getGenericReturnType();
|
java.lang.reflect.Type genericReturnType=methods[j].getGenericReturnType();
|
||||||
Type returnType=createTypeFromJavaGenericType(genericReturnType,methods[j].getReturnType(),jreSpiderRegistry);
|
Type returnType=createTypeFromJavaGenericType(genericReturnType,methods[j].getReturnType(),jreSpiderRegistry, parentClass);
|
||||||
|
|
||||||
java.lang.reflect.Type[] gpt=methods[j].getGenericParameterTypes();
|
java.lang.reflect.Type[] gpt=methods[j].getGenericParameterTypes();
|
||||||
java.lang.Class[] pt=methods[j].getParameterTypes();
|
java.lang.Class[] pt=methods[j].getParameterTypes();
|
||||||
|
|
||||||
//CMethodTypeAssumption method = new CMethodTypeAssumption(new RefType(className, 0), methodName, returnType, pt.length,MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>(),null);
|
//CMethodTypeAssumption method = new CMethodTypeAssumption(new RefType(className, 0), methodName, returnType, pt.length,MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>(),null);
|
||||||
Method method = mycompiler.myclass.Method.createEmptyMethod(methodName, parentClass);
|
Method method = de.dhbwstuttgart.syntaxtree.Method.createEmptyMethod(methodName, parentClass);
|
||||||
method.setType(returnType);
|
method.setType(returnType);
|
||||||
ParameterList parameterList = new ParameterList();
|
ParameterList parameterList = new ParameterList();
|
||||||
|
|
||||||
for(int k=0;k<gpt.length;k++){
|
for(int k=0;k<gpt.length;k++){
|
||||||
Type type=createTypeFromJavaGenericType(gpt[k],pt[k],jreSpiderRegistry);
|
Type type=createTypeFromJavaGenericType(gpt[k],pt[k],jreSpiderRegistry, parentClass);
|
||||||
// Fixme HOTI beachte overloaded id
|
// Fixme HOTI beachte overloaded id
|
||||||
//method.addParaAssumption(new CParaTypeAssumption(className, methodName, pt.length,0,type.getName(), type, MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>()));
|
//method.addParaAssumption(new CParaTypeAssumption(className, methodName, pt.length,0,type.getName(), type, MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>()));
|
||||||
FormalParameter parameter = new FormalParameter(new DeclId(type.get_Name()));
|
FormalParameter parameter = new FormalParameter(new DeclId(type.get_Name()));
|
||||||
@ -1211,22 +1199,25 @@ public class SourceFile
|
|||||||
//basicAssumptions.addMethodIntersectionType(new CIntersectionType(method));
|
//basicAssumptions.addMethodIntersectionType(new CIntersectionType(method));
|
||||||
parentClass.addField(method);
|
parentClass.addField(method);
|
||||||
|
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int j=0;j<constructors.length;j++){
|
for(int j=0;j<constructors.length;j++){
|
||||||
if(java.lang.reflect.Modifier.isPublic(constructors[j].getModifiers())){
|
if(java.lang.reflect.Modifier.isPublic(constructors[j].getModifiers())){
|
||||||
String methodName="<init>";
|
String methodName=className;
|
||||||
CMethodTypeAssumption constructor = new CMethodTypeAssumption(new RefType(className, 0), methodName, new RefType(className,-1), constructors[j].getParameterTypes().length,MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>(),null);
|
ParameterList paraList = new ParameterList();
|
||||||
for(int k=0;k<constructors[j].getParameterTypes().length;k++){
|
for(int k=0;k<constructors[j].getParameterTypes().length;k++){
|
||||||
String paraType=constructors[j].getParameterTypes()[k].getName();
|
String paraType=constructors[j].getParameterTypes()[k].getName();
|
||||||
//String paraType=constructors[j].getParameterTypes()[k].getSimpleName();
|
//String paraType=constructors[j].getParameterTypes()[k].getSimpleName();
|
||||||
// Fixme HOTI beachte overloaded id
|
// Fixme HOTI beachte overloaded id
|
||||||
constructor.addParaAssumption(new CParaTypeAssumption(className, methodName, constructors[j].getParameterTypes().length,0,paraType, new RefType(paraType,-1), MyCompiler.NO_LINENUMBER,MyCompiler.NO_LINENUMBER,new Vector<Integer>()));
|
FormalParameter fpara = new FormalParameter(new DeclId("p"+k));
|
||||||
|
fpara.setType(new RefType(paraType,-1));
|
||||||
|
paraList.formalparameter.add(fpara);
|
||||||
}
|
}
|
||||||
//basicAssumptions.addMethodIntersectionType(new CIntersectionType(constructor));
|
//basicAssumptions.addMethodIntersectionType(new CIntersectionType(constructor));
|
||||||
Method constructorMethod = mycompiler.myclass.Method.createEmptyMethod(methodName, parentClass);
|
Method constructorMethod = de.dhbwstuttgart.syntaxtree.Method.createEmptyMethod(methodName, parentClass);
|
||||||
|
constructorMethod.parameterlist = paraList;
|
||||||
parentClass.addField(new Constructor(constructorMethod));
|
parentClass.addField(new Constructor(constructorMethod));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1235,7 +1226,6 @@ public class SourceFile
|
|||||||
basicAssumptions.addClassAssumption(new ClassAssumption(parentClass));
|
basicAssumptions.addClassAssumption(new ClassAssumption(parentClass));
|
||||||
imports.removeElement(importDecl);
|
imports.removeElement(importDecl);
|
||||||
doneImports.addElement(importDecl);
|
doneImports.addElement(importDecl);
|
||||||
|
|
||||||
}
|
}
|
||||||
imports.addAll(doneImports);
|
imports.addAll(doneImports);
|
||||||
return basicAssumptions;
|
return basicAssumptions;
|
||||||
@ -1262,7 +1252,7 @@ public class SourceFile
|
|||||||
boolean found = false;
|
boolean found = false;
|
||||||
for(UsedId id : searchVector)
|
for(UsedId id : searchVector)
|
||||||
{
|
{
|
||||||
String s = id.getQualifiedName();
|
String s = id.getQualifiedName().toString();
|
||||||
found |= s.equals(searchString);
|
found |= s.equals(searchString);
|
||||||
}
|
}
|
||||||
return found;
|
return found;
|
||||||
@ -1270,13 +1260,13 @@ public class SourceFile
|
|||||||
|
|
||||||
|
|
||||||
// ino.method.createTypeFromJavaGenericType.21415.definition
|
// ino.method.createTypeFromJavaGenericType.21415.definition
|
||||||
private Type createTypeFromJavaGenericType(java.lang.reflect.Type type, java.lang.Class<?> cl, Hashtable<String,GenericTypeVar>jreSpiderRegistry)
|
private Type createTypeFromJavaGenericType(java.lang.reflect.Type type, java.lang.Class<?> cl, Hashtable<String,GenericTypeVar>jreSpiderRegistry, Class parentClass)
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.createTypeFromJavaGenericType.21415.body
|
// ino.method.createTypeFromJavaGenericType.21415.body
|
||||||
{
|
{
|
||||||
if(type instanceof TypeVariableImpl){
|
if(type instanceof TypeVariableImpl){
|
||||||
TypeVariableImpl tvi=((TypeVariableImpl)type);
|
TypeVariableImpl tvi=((TypeVariableImpl)type);
|
||||||
return(new GenericTypeVar(jreSpiderRegistry.get(tvi.getName()).getName(),-1));
|
return(new GenericTypeVar(jreSpiderRegistry.get(tvi.getName()).getName().toString(),parentClass,-1));
|
||||||
}else{
|
}else{
|
||||||
//String jccNameForClass=baseTypeTranslationTable.get(cl.getSimpleName());
|
//String jccNameForClass=baseTypeTranslationTable.get(cl.getSimpleName());
|
||||||
String jccNameForClass=baseTypeTranslationTable.get(cl.getName());
|
String jccNameForClass=baseTypeTranslationTable.get(cl.getName());
|
||||||
@ -1641,5 +1631,21 @@ public class SourceFile
|
|||||||
//this.filename = filename;
|
//this.filename = filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOffset() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getVariableLength() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
@ -1,22 +1,21 @@
|
|||||||
package mycompiler;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.core.IItemWithOffset;
|
||||||
import typinferenz.TypeInsertable;
|
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
|
||||||
import typinferenz.exceptions.DebugException;
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
||||||
import typinferenz.typedeployment.GenericTypeInsertPoint;
|
import de.dhbwstuttgart.typeinference.Pair;
|
||||||
import typinferenz.typedeployment.TypeInsertPoint;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
import typinferenz.typedeployment.TypeInsertSet;
|
import de.dhbwstuttgart.typeinference.TypeInsertable;
|
||||||
import mycompiler.myclass.Class;
|
import de.dhbwstuttgart.typeinference.exceptions.DebugException;
|
||||||
import mycompiler.myclass.Generic;
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import de.dhbwstuttgart.typeinference.typedeployment.GenericTypeInsertPoint;
|
||||||
import mycompiler.mytype.Pair;
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
|
||||||
import mycompiler.mytype.TypePlaceholder;
|
|
||||||
|
|
||||||
public abstract class SyntaxTreeNode{
|
public abstract class SyntaxTreeNode implements IItemWithOffset{
|
||||||
|
|
||||||
protected SyntaxTreeNode parent;
|
protected SyntaxTreeNode parent;
|
||||||
|
|
||||||
@ -31,7 +30,8 @@ public abstract class SyntaxTreeNode{
|
|||||||
*/
|
*/
|
||||||
public void parserPostProcessing(SyntaxTreeNode parent) {
|
public void parserPostProcessing(SyntaxTreeNode parent) {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
for(SyntaxTreeNode node : this.getChildren())node.parserPostProcessing(this);
|
for(SyntaxTreeNode node : this.getChildren())
|
||||||
|
if(node!=null)node.parserPostProcessing(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SyntaxTreeNode getParent() {
|
public SyntaxTreeNode getParent() {
|
@ -1,30 +1,39 @@
|
|||||||
// ino.module.DeclId.8558.package
|
// ino.module.DeclId.8558.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree.misc;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.DeclId.8558.import
|
// ino.module.DeclId.8558.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.mybytecode.Attribute;
|
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.mybytecode.CodeAttribute;
|
|
||||||
import mycompiler.mybytecode.JVMCode;
|
|
||||||
import mycompiler.mybytecode.SignatureInfo;
|
|
||||||
import mycompiler.MyCompiler;
|
|
||||||
import mycompiler.myexception.JVMCodeException;
|
|
||||||
import mycompiler.mymodifier.Final;
|
|
||||||
import mycompiler.mymodifier.Modifiers;
|
|
||||||
import mycompiler.mystatement.Assign;
|
|
||||||
import mycompiler.mystatement.Expr;
|
|
||||||
import mycompiler.mystatement.ExprStmt;
|
|
||||||
import mycompiler.mystatement.InstVar;
|
|
||||||
import mycompiler.mystatement.LocalOrFieldVar;
|
|
||||||
import mycompiler.mytype.RefType;
|
|
||||||
import mycompiler.mytype.Type;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.bytecode.Attribute;
|
||||||
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
|
import de.dhbwstuttgart.bytecode.CodeAttribute;
|
||||||
|
import de.dhbwstuttgart.bytecode.JVMCode;
|
||||||
|
import de.dhbwstuttgart.bytecode.SignatureInfo;
|
||||||
|
import de.dhbwstuttgart.core.MyCompiler;
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.Constant;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.Final;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Assign;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Expr;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.ExprStmt;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.InstVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.LocalOrFieldVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.DeclId.23280.declaration
|
// ino.class.DeclId.23280.declaration
|
||||||
public class DeclId
|
public class DeclId
|
||||||
// ino.end
|
// ino.end
|
||||||
@ -205,7 +214,7 @@ public class DeclId
|
|||||||
if (type instanceof RefType)
|
if (type instanceof RefType)
|
||||||
codegen_type = ((RefType)type).get_codegen_Type(null);
|
codegen_type = ((RefType)type).get_codegen_Type(null);
|
||||||
else
|
else
|
||||||
codegen_type = JVMCode.get_codegen_Type(type.getName(), paralist);
|
codegen_type = JVMCode.get_codegen_Type(type.getName().toString(), paralist);
|
||||||
|
|
||||||
|
|
||||||
// Instanzvariable genenerieren
|
// Instanzvariable genenerieren
|
||||||
@ -216,7 +225,7 @@ public class DeclId
|
|||||||
if(wert instanceof Expr) {
|
if(wert instanceof Expr) {
|
||||||
classfile.add_field_ref(name, null, codegen_type);
|
classfile.add_field_ref(name, null, codegen_type);
|
||||||
Assign assign = new Assign(getOffset(),name.length());
|
Assign assign = new Assign(getOffset(),name.length());
|
||||||
assign.set_Expr(new InstVar(name, type.getName(),getOffset()), (Expr)wert);
|
assign.set_Expr(new InstVar(name, type.getName().toString(),getOffset()), (Expr)wert);
|
||||||
classfile.add_classblock_Element(assign);
|
classfile.add_classblock_Element(assign);
|
||||||
}
|
}
|
||||||
else throw new JVMCodeException("Wertzuweisung der Instanzvariable kann nicht uebersetzt werden!");
|
else throw new JVMCodeException("Wertzuweisung der Instanzvariable kann nicht uebersetzt werden!");
|
@ -1,10 +1,7 @@
|
|||||||
// ino.module.Status.8566.package
|
// ino.module.Status.8566.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree.misc;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.Status.8566.import
|
|
||||||
import mycompiler.unused.Import;
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.class.Status.23644.declaration
|
// ino.class.Status.23644.declaration
|
||||||
public abstract class Status
|
public abstract class Status
|
||||||
@ -14,9 +11,6 @@ public abstract class Status
|
|||||||
// ino.attribute.userdef.23647.declaration
|
// ino.attribute.userdef.23647.declaration
|
||||||
protected UserDef userdef;
|
protected UserDef userdef;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.attribute.imp.23650.declaration
|
|
||||||
protected Import imp;
|
|
||||||
// ino.end
|
|
||||||
|
|
||||||
// ino.method.set_UserDef.23653.definition
|
// ino.method.set_UserDef.23653.definition
|
||||||
public void set_UserDef( UserDef userdef)
|
public void set_UserDef( UserDef userdef)
|
||||||
@ -26,13 +20,6 @@ public abstract class Status
|
|||||||
this.userdef = userdef;
|
this.userdef = userdef;
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.set_Import.23656.definition
|
|
||||||
public void set_Import(Import imp)
|
|
||||||
// ino.end
|
|
||||||
// ino.method.set_Import.23656.body
|
|
||||||
{
|
|
||||||
this.imp = imp;
|
|
||||||
}
|
|
||||||
// ino.end
|
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
@ -1,17 +1,17 @@
|
|||||||
// ino.module.UsedId.8567.package
|
// ino.module.UsedId.8567.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree.misc;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.UsedId.8567.import
|
// ino.module.UsedId.8567.import
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.bytecode.JVMCode;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.core.IItemWithOffset;
|
||||||
import typinferenz.exceptions.TypeinferenceException;
|
import de.dhbwstuttgart.parser.JavaClassName;
|
||||||
import mycompiler.IItemWithOffset;
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
import mycompiler.mybytecode.JVMCode;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import mycompiler.mytype.Type;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
||||||
|
|
||||||
|
|
||||||
// ino.class.UsedId.23659.declaration
|
// ino.class.UsedId.23659.declaration
|
||||||
@ -183,7 +183,7 @@ public class UsedId implements IItemWithOffset
|
|||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.getSignatureUsedId.23717.body
|
// ino.method.getSignatureUsedId.23717.body
|
||||||
{
|
{
|
||||||
String basis = JVMCode.get_codegen_Type(getQualifiedName(),null);
|
String basis = JVMCode.get_codegen_Type(getQualifiedName().toString(),null);
|
||||||
|
|
||||||
if (paralist == null || paralist.size() ==0)
|
if (paralist == null || paralist.size() ==0)
|
||||||
return basis;
|
return basis;
|
||||||
@ -242,7 +242,7 @@ public class UsedId implements IItemWithOffset
|
|||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.method.getQualifiedName.23726.definition
|
// ino.method.getQualifiedName.23726.definition
|
||||||
public String getQualifiedName()
|
public JavaClassName getQualifiedName()
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.getQualifiedName.23726.body
|
// ino.method.getQualifiedName.23726.body
|
||||||
{
|
{
|
||||||
@ -254,7 +254,7 @@ public class UsedId implements IItemWithOffset
|
|||||||
sb.append(".");
|
sb.append(".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(sb.toString());
|
return new JavaClassName(sb.toString());
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
@ -312,8 +312,8 @@ public class UsedId implements IItemWithOffset
|
|||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
public JavaCodeResult printJavaCode(ResultSet resultSet) {
|
public JavaCodeResult printJavaCode(ResultSet resultSet) {
|
||||||
if(this.name.size()>1)throw new TypeinferenceException("Es kann maximal nur eine Superklasse pro Klasse geben", this);
|
if(this.name.size()>1)throw new TypeinferenceException("Es kann maximal nur eine Superklasse pro Klasse geben", null);
|
||||||
JavaCodeResult ret = new JavaCodeResult(this.getQualifiedName());
|
JavaCodeResult ret = new JavaCodeResult(this.getQualifiedName().toString());
|
||||||
if(this.paralist != null){
|
if(this.paralist != null){
|
||||||
ret.attach( "<" );
|
ret.attach( "<" );
|
||||||
Iterator<Type> it = this.paralist.iterator();
|
Iterator<Type> it = this.paralist.iterator();
|
@ -1,5 +1,5 @@
|
|||||||
// ino.module.UserDef.8568.package
|
// ino.module.UserDef.8568.package
|
||||||
package mycompiler.myclass;
|
package de.dhbwstuttgart.syntaxtree.misc;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.class.UserDef.23741.declaration
|
// ino.class.UserDef.23741.declaration
|
||||||
public class UserDef extends Status
|
public class UserDef extends Status
|
@ -1,9 +1,8 @@
|
|||||||
// ino.module.Abstract.8585.package
|
// ino.module.Abstract.8585.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.Abstract.24015.description type=javadoc
|
// ino.class.Abstract.24015.description type=javadoc
|
@ -1,9 +1,8 @@
|
|||||||
// ino.module.Final.8586.package
|
// ino.module.Final.8586.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.Final.24022.description type=javadoc
|
// ino.class.Final.24022.description type=javadoc
|
@ -1,10 +1,10 @@
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Daniel
|
* @author Daniel
|
@ -1,8 +1,8 @@
|
|||||||
// ino.module.Modifier.8587.package
|
// ino.module.Modifier.8587.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.class.Modifier.24029.declaration
|
// ino.class.Modifier.24029.declaration
|
@ -1,15 +1,15 @@
|
|||||||
// ino.module.Modifiers.8588.package
|
// ino.module.Modifiers.8588.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.module.Modifiers.8588.import
|
// ino.module.Modifiers.8588.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.syntaxtree.type.BaseType;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
import mycompiler.mytype.BaseType;
|
|
||||||
|
|
||||||
// ino.class.Modifiers.24035.description type=javadoc
|
// ino.class.Modifiers.24035.description type=javadoc
|
||||||
/**
|
/**
|
@ -1,9 +1,8 @@
|
|||||||
// ino.module.Private.8589.package
|
// ino.module.Private.8589.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.Private.24059.declaration
|
// ino.class.Private.24059.declaration
|
@ -1,9 +1,8 @@
|
|||||||
// ino.module.Protected.8590.package
|
// ino.module.Protected.8590.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.Protected.24066.declaration
|
// ino.class.Protected.24066.declaration
|
@ -1,9 +1,8 @@
|
|||||||
// ino.module.Public.8591.package
|
// ino.module.Public.8591.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.Public.24073.declaration
|
// ino.class.Public.24073.declaration
|
@ -1,9 +1,8 @@
|
|||||||
// ino.module.Static.8592.package
|
// ino.module.Static.8592.package
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
// ino.end
|
|
||||||
|
|
||||||
|
|
||||||
// ino.class.Static.24080.declaration
|
// ino.class.Static.24080.declaration
|
@ -1,10 +1,10 @@
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package mycompiler.mymodifier;
|
package de.dhbwstuttgart.syntaxtree.modifier;
|
||||||
|
|
||||||
import typinferenz.JavaCodeResult;
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
||||||
import typinferenz.ResultSet;
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Daniel
|
* @author Daniel
|
75
src/de/dhbwstuttgart/syntaxtree/operator/AddOp.java
Executable file
75
src/de/dhbwstuttgart/syntaxtree/operator/AddOp.java
Executable file
@ -0,0 +1,75 @@
|
|||||||
|
// ino.module.AddOp.8594.package
|
||||||
|
package de.dhbwstuttgart.syntaxtree.operator;
|
||||||
|
// ino.end
|
||||||
|
// ino.module.AddOp.8594.import
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Hashtable;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
|
import de.dhbwstuttgart.bytecode.CodeAttribute;
|
||||||
|
import de.dhbwstuttgart.myexception.CTypeReconstructionException;
|
||||||
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Binary;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Expr;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.IntegerType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.typeinference.ConstraintType;
|
||||||
|
import de.dhbwstuttgart.typeinference.ConstraintsSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.Pair;
|
||||||
|
import de.dhbwstuttgart.typeinference.SingleConstraint;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
|
import de.dhbwstuttgart.typeinference.exceptions.DebugException;
|
||||||
|
import de.dhbwstuttgart.typeinference.unify.Unify;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ino.class.AddOp.24088.declaration
|
||||||
|
public abstract class AddOp extends Operator
|
||||||
|
// ino.end
|
||||||
|
// ino.class.AddOp.24088.body
|
||||||
|
{
|
||||||
|
// ino.method.AddOp.24092.definition
|
||||||
|
public AddOp(int offset, int variableLength)
|
||||||
|
// ino.end
|
||||||
|
// ino.method.AddOp.24092.body
|
||||||
|
{
|
||||||
|
super(offset,variableLength);
|
||||||
|
}
|
||||||
|
// ino.end
|
||||||
|
|
||||||
|
// ino.method.codegen.24095.declaration
|
||||||
|
public abstract void codegen(ClassFile classfile, CodeAttribute code, Expr expr, boolean neg, Vector paralist)
|
||||||
|
throws JVMCodeException;
|
||||||
|
// ino.end
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Hashtable<RefType,RefType> getOperatorTypes() {
|
||||||
|
Hashtable<RefType, RefType> types = new Hashtable<RefType, RefType>();
|
||||||
|
|
||||||
|
types.put(new RefType("java.lang.Integer",-1),new RefType("java.lang.Integer",-1));
|
||||||
|
types.put(new RefType("java.lang.Double",-1),new RefType("java.lang.Double",-1));
|
||||||
|
types.put(new RefType("java.lang.Float",-1), new RefType("java.lang.Float",-1));
|
||||||
|
types.put(new RefType("java.lang.Long",-1), new RefType("java.lang.Long",-1));
|
||||||
|
types.put(new RefType("java.lang.String",-1), new RefType("java.lang.String",-1));
|
||||||
|
|
||||||
|
return types;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HashMap<ConstraintType,ConstraintType> getReturnTypes(TypeAssumptions ass) {
|
||||||
|
HashMap<ConstraintType,ConstraintType> ret = new HashMap<ConstraintType,ConstraintType>();
|
||||||
|
ret.put(ass.getTypeFor(new RefType("java.lang.Integer",-1), this), ass.getTypeFor(new RefType("java.lang.Integer",-1),this));
|
||||||
|
ret.put(ass.getTypeFor(new RefType("java.lang.Double",-1), this), ass.getTypeFor(new RefType("java.lang.Double",-1),this));
|
||||||
|
ret.put(ass.getTypeFor(new RefType("java.lang.Float",-1), this), ass.getTypeFor(new RefType("java.lang.Float",-1),this));
|
||||||
|
ret.put(ass.getTypeFor(new RefType("java.lang.Long",-1), this), ass.getTypeFor(new RefType("java.lang.Long",-1),this));
|
||||||
|
ret.put(ass.getTypeFor(new RefType("java.lang.String",-1),this), ass.getTypeFor(new RefType("java.lang.String",-1),this));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// ino.end
|
32
src/de/dhbwstuttgart/syntaxtree/operator/AndOp.java
Executable file
32
src/de/dhbwstuttgart/syntaxtree/operator/AndOp.java
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
// ino.module.AndOp.8595.package
|
||||||
|
package de.dhbwstuttgart.syntaxtree.operator;
|
||||||
|
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Expr;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.BooleanType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.IntegerType;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||||
|
import de.dhbwstuttgart.typeinference.ConstraintsSet;
|
||||||
|
import de.dhbwstuttgart.typeinference.SingleConstraint;
|
||||||
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
||||||
|
|
||||||
|
// ino.class.AndOp.24101.declaration
|
||||||
|
public class AndOp extends LogOp
|
||||||
|
// ino.end
|
||||||
|
// ino.class.AndOp.24101.body
|
||||||
|
{
|
||||||
|
|
||||||
|
// ino.method.AndOp.24105.definition
|
||||||
|
public AndOp(int offset, int variableLength)
|
||||||
|
// ino.end
|
||||||
|
// ino.method.AndOp.24105.body
|
||||||
|
{
|
||||||
|
super(offset,variableLength);
|
||||||
|
}
|
||||||
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
// ino.end
|
@ -1,15 +1,16 @@
|
|||||||
// ino.module.DivideOp.8596.package
|
// ino.module.DivideOp.8596.package
|
||||||
package mycompiler.myoperator;
|
package de.dhbwstuttgart.syntaxtree.operator;
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.module.DivideOp.8596.import
|
// ino.module.DivideOp.8596.import
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import mycompiler.mybytecode.ClassFile;
|
|
||||||
import mycompiler.mybytecode.CodeAttribute;
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
||||||
import mycompiler.mybytecode.JVMCode;
|
import de.dhbwstuttgart.bytecode.CodeAttribute;
|
||||||
import mycompiler.myexception.JVMCodeException;
|
import de.dhbwstuttgart.bytecode.JVMCode;
|
||||||
import mycompiler.mystatement.Binary;
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
||||||
import mycompiler.mystatement.Expr;
|
import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode;
|
||||||
// ino.end
|
import de.dhbwstuttgart.syntaxtree.statement.Binary;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.statement.Expr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ public class DivideOp extends MulOp
|
|||||||
code.add_code(JVMCode.ndiv(expr1.getTypeName()));
|
code.add_code(JVMCode.ndiv(expr1.getTypeName()));
|
||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user