diff options
Diffstat (limited to 'src/ast/types')
| -rw-r--r-- | src/ast/types/AtomType.java | 3 | ||||
| -rw-r--r-- | src/ast/types/BoolType.java | 2 | ||||
| -rw-r--r-- | src/ast/types/ErrorType.java | 2 | ||||
| -rw-r--r-- | src/ast/types/FunctionType.java | 29 | ||||
| -rw-r--r-- | src/ast/types/ImportType.java | 12 | ||||
| -rw-r--r-- | src/ast/types/IntType.java | 2 | ||||
| -rw-r--r-- | src/ast/types/NoneType.java | 17 | ||||
| -rw-r--r-- | src/ast/types/ReservedWordsType.java | 12 | ||||
| -rw-r--r-- | src/ast/types/Type.java | 11 | ||||
| -rw-r--r-- | src/ast/types/VoidType.java | 7 |
10 files changed, 90 insertions, 7 deletions
diff --git a/src/ast/types/AtomType.java b/src/ast/types/AtomType.java index 0387ec1..fc1c69e 100644 --- a/src/ast/types/AtomType.java +++ b/src/ast/types/AtomType.java @@ -2,9 +2,10 @@ package ast.types; /** * An tom type. - * TODO: do I need to use this one? */ public class AtomType extends Type { + + @Override public String toPrint(String prefix) { return prefix + "Atom\n"; } diff --git a/src/ast/types/BoolType.java b/src/ast/types/BoolType.java index 20c2750..01e2cd5 100644 --- a/src/ast/types/BoolType.java +++ b/src/ast/types/BoolType.java @@ -4,6 +4,8 @@ package ast.types; * A boolean type. A bool is True or False. */ public class BoolType extends Type { + + @Override public String toPrint(String prefix) { return prefix + "Bool\n"; } diff --git a/src/ast/types/ErrorType.java b/src/ast/types/ErrorType.java index 4a7a0cf..71176d1 100644 --- a/src/ast/types/ErrorType.java +++ b/src/ast/types/ErrorType.java @@ -4,6 +4,8 @@ package ast.types; * Error type. */ public class ErrorType extends Type { + + @Override public String toPrint(String prefix) { return prefix + "Error\n"; } diff --git a/src/ast/types/FunctionType.java b/src/ast/types/FunctionType.java new file mode 100644 index 0000000..5e6adaa --- /dev/null +++ b/src/ast/types/FunctionType.java @@ -0,0 +1,29 @@ +package ast.types; + +/** + * A Function type. + */ +public class FunctionType extends Type { + + private final int paramNumber; + private final Type returnType; + + public FunctionType(int paramNumber, Type returnType) { + this.paramNumber = paramNumber; + this.returnType = returnType; + } + + // Return the length of the parameters + public int getParamNumber() { + return paramNumber; + } + + public Type getReturnType() { + return returnType; + } + + @Override + public String toPrint(String prefix) { + return prefix + "Function\n"; + } +} diff --git a/src/ast/types/ImportType.java b/src/ast/types/ImportType.java new file mode 100644 index 0000000..892de10 --- /dev/null +++ b/src/ast/types/ImportType.java @@ -0,0 +1,12 @@ +package ast.types; + +/** + * A type for the imported names. + */ +public class ImportType extends Type { + + @Override + public String toPrint(String prefix) { + return prefix + "Import\n"; + } +} diff --git a/src/ast/types/IntType.java b/src/ast/types/IntType.java index a29518b..6483d93 100644 --- a/src/ast/types/IntType.java +++ b/src/ast/types/IntType.java @@ -4,6 +4,8 @@ package ast.types; * An integer type. */ public class IntType extends Type { + + @Override public String toPrint(String prefix) { return prefix + "Int\n"; } diff --git a/src/ast/types/NoneType.java b/src/ast/types/NoneType.java new file mode 100644 index 0000000..730add9 --- /dev/null +++ b/src/ast/types/NoneType.java @@ -0,0 +1,17 @@ +package ast.types; + +/** + * A none type. None return unit. + */ +public class NoneType extends Type { + + @Override + public String toPrint(String prefix) { + return prefix + "None\n"; + } + + @Override + public String toString() { + return "None"; + } +} diff --git a/src/ast/types/ReservedWordsType.java b/src/ast/types/ReservedWordsType.java new file mode 100644 index 0000000..da72890 --- /dev/null +++ b/src/ast/types/ReservedWordsType.java @@ -0,0 +1,12 @@ +package ast.types; + +/** + * A type for the continue and break statements. + */ +public class ReservedWordsType extends Type { + + @Override + public String toPrint(String prefix) { + return prefix + "ReservedWords\n"; + } +} diff --git a/src/ast/types/Type.java b/src/ast/types/Type.java index 6bff8b9..6190106 100644 --- a/src/ast/types/Type.java +++ b/src/ast/types/Type.java @@ -1,26 +1,25 @@ package ast.types; +import ast.nodes.*; import java.util.ArrayList; - import semanticanalysis.SemanticError; import semanticanalysis.SymbolTable; -import ast.nodes.*; /** * A node which represents a type class. */ public class Type implements Node { + public boolean isEqual(Type A, Type B) { - if (A.getClass().equals(B.getClass())) - return true; - else - return false; + return A.getClass().equals(B.getClass()); } + @Override public String toPrint(String s) { return s; } + @Override public ArrayList<SemanticError> checkSemantics(SymbolTable ST, int _nesting) { // It is never invoked return null; diff --git a/src/ast/types/VoidType.java b/src/ast/types/VoidType.java index d15933f..2d21da6 100644 --- a/src/ast/types/VoidType.java +++ b/src/ast/types/VoidType.java @@ -4,7 +4,14 @@ package ast.types; * A void type. Voids return nothing. */ public class VoidType extends Type { + + @Override public String toPrint(String prefix) { return prefix + "Void\n"; } + + @Override + public String toString() { + return "Void"; + } } |
