Start working on type checker
This commit is contained in:
72
src/typechecker/typechecker.cpp
Normal file
72
src/typechecker/typechecker.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
#include "typechecker.hpp"
|
||||
|
||||
namespace Solstice {
|
||||
|
||||
void TypeChecker::initOverloads() {
|
||||
addOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Int},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||||
{{BaseType::String, BaseType::String}, BaseType::String},
|
||||
{{BaseType::String, BaseType::Char}, BaseType::String},
|
||||
{{BaseType::Char, BaseType::String}, BaseType::String},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||||
};
|
||||
subtractOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Int},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||||
};
|
||||
multiplyOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Int},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||||
};
|
||||
divideOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Double},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||||
};
|
||||
equalOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::String, BaseType::String}, BaseType::Bool},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||||
{{BaseType::Bool, BaseType::Bool}, BaseType::Bool},
|
||||
};
|
||||
notEqualOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::String, BaseType::String}, BaseType::Bool},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||||
{{BaseType::Bool, BaseType::Bool}, BaseType::Bool},
|
||||
};
|
||||
greaterThanOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||||
};
|
||||
lesserThanOverloads = {
|
||||
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||||
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||||
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user