Working toward new C inline style
This commit is contained in:
@@ -16,7 +16,7 @@ class Type;
|
||||
enum ASTType {undef, translation_unit, interpreter_directive, import, identifier, type_def,
|
||||
function, code_block, typed_parameter, expression, boolean_expression, statement,
|
||||
if_statement, while_loop, for_loop, return_statement, assignment_statement, declaration_statement,
|
||||
if_comp, simple_passthrough, function_call, value};
|
||||
if_comp, simple_passthrough, passthrough_params, function_call, value};
|
||||
|
||||
class ASTData {
|
||||
public:
|
||||
@@ -34,4 +34,4 @@ class ASTData {
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -47,13 +47,16 @@ class ASTTransformation: public NodeTransformation<Symbol,ASTData> {
|
||||
std::vector<NodeTree<ASTData>*> scopeLookup(NodeTree<ASTData>* scope, std::string lookup, bool includeModules, std::vector<NodeTree<ASTData>*> visited);
|
||||
|
||||
NodeTree<ASTData>* getUpperTranslationUnit(NodeTree<ASTData>* node);
|
||||
NodeTree<ASTData>* addToScope(std::string name, NodeTree<ASTData>* toAdd, NodeTree<ASTData>* addTo);
|
||||
Type* typeFromTypeNode(NodeTree<Symbol>* typeNode, NodeTree<ASTData>* scope, std::map<std::string, Type*> templateTypeReplacements);
|
||||
NodeTree<ASTData>* templateClassLookup(NodeTree<ASTData>* scope, std::string name, std::vector<Type*> templateInstantiationTypes);
|
||||
NodeTree<ASTData>* findOrInstantiateFunctionTemplate(std::vector<NodeTree<Symbol>*> children, NodeTree<ASTData>* scope, std::vector<Type> types, std::map<std::string, Type*> templateTypeReplacements);
|
||||
std::map<std::string, Type*> makeTemplateFunctionTypeMap(NodeTree<Symbol>* templateNode, std::vector<Type*> types);
|
||||
std::vector<std::pair<std::string, std::set<std::string>>> makeTemplateNameTraitPairs(NodeTree<Symbol>* templateNode);
|
||||
|
||||
private:
|
||||
Importer * importer;
|
||||
NodeTree<ASTData>* builtin_trans_unit; // the top scope for language level stuff
|
||||
std::map<std::string, std::vector<NodeTree<ASTData>*>> languageLevelReservedWords;
|
||||
std::map<std::string, std::vector<NodeTree<ASTData>*>> languageLevelOperators;
|
||||
NodeTree<ASTData>* topScope; //maintained for templates that need to add themselves to the top scope no matter where they are instantiated
|
||||
|
||||
@@ -31,6 +31,7 @@ class CGenerator {
|
||||
static std::string ValueTypeToCTypeDecoration(Type *type);
|
||||
static std::string ValueTypeToCTypeThingHelper(Type *type, std::string ptrStr);
|
||||
static std::string CifyName(std::string name);
|
||||
static std::string scopePrefix(NodeTree<ASTData>* from);
|
||||
std::string generateObjectMethod(NodeTree<ASTData>* enclosingObject, NodeTree<ASTData>* from, std::string *functionPrototype);
|
||||
NodeTree<ASTData>* getMethodsObjectType(NodeTree<ASTData>* scope, std::string functionName);
|
||||
std::string generatorString;
|
||||
|
||||
Reference in New Issue
Block a user