#ifndef ASTTRANSFORMATION_H #define ASTTRANSFORMATION_H #include #include #include "Type.h" #include "ASTData.h" #include "NodeTransformation.h" #include "Importer.h" class Importer; class ASTTransformation: public NodeTransformation { public: ASTTransformation(Importer* importerIn); ~ASTTransformation(); virtual NodeTree* transform(NodeTree* from); NodeTree* transform(NodeTree* from, NodeTree* scope, std::vector types = std::vector()); std::vector*> transformChildren(std::vector*> children, std::set skipChildren, NodeTree* scope, std::vector types); std::vector mapNodesToTypes(std::vector*> nodes); std::string concatSymbolTree(NodeTree* root); NodeTree* doFunction(NodeTree* scope, std::string lookup, std::vector*> nodes); NodeTree* scopeLookup(NodeTree* scope, std::string lookup, std::vector types = std::vector()); Type* typeFromString(std::string type, NodeTree* scope); private: Importer * importer; std::map*>> languageLevelScope; }; #endif