diff options
Diffstat (limited to 'include/chillAST/chillAST_def.hh')
-rw-r--r-- | include/chillAST/chillAST_def.hh | 158 |
1 files changed, 84 insertions, 74 deletions
diff --git a/include/chillAST/chillAST_def.hh b/include/chillAST/chillAST_def.hh index 0e5832e..289b835 100644 --- a/include/chillAST/chillAST_def.hh +++ b/include/chillAST/chillAST_def.hh @@ -3,6 +3,7 @@ #ifndef _CHILLAST_DEF_H_ #define _CHILLAST_DEF_H_ +#include "chilldebug.h" #define CHILL_INDENT_AMOUNT 2 @@ -15,76 +16,76 @@ #include <ir_enums.hh> // for IR_CONDITION_* -#define CHILLAST_NODETYPE_FORSTMT CHILLAST_NODETYPE_LOOP -#define CHILLAST_NODETYPE_TRANSLATIONUNIT CHILLAST_NODETYPE_SOURCEFILE - -enum CHILL_ASTNODE_TYPE { - CHILLAST_NODETYPE_UNKNOWN = 0, - CHILLAST_NODETYPE_SOURCEFILE, - CHILLAST_NODETYPE_TYPEDEFDECL, - CHILLAST_NODETYPE_VARDECL, - // CHILLAST_NODETYPE_PARMVARDECL, not used any more - CHILLAST_NODETYPE_FUNCTIONDECL, - CHILLAST_NODETYPE_RECORDDECL, // struct or union (or class) - CHILLAST_NODETYPE_MACRODEFINITION, - CHILLAST_NODETYPE_COMPOUNDSTMT, - CHILLAST_NODETYPE_LOOP, // AKA ForStmt - CHILLAST_NODETYPE_TERNARYOPERATOR, - CHILLAST_NODETYPE_BINARYOPERATOR, - CHILLAST_NODETYPE_UNARYOPERATOR, - CHILLAST_NODETYPE_ARRAYSUBSCRIPTEXPR, - CHILLAST_NODETYPE_MEMBEREXPR, // structs/unions - CHILLAST_NODETYPE_DECLREFEXPR, - CHILLAST_NODETYPE_INTEGERLITERAL, - CHILLAST_NODETYPE_FLOATINGLITERAL, - CHILLAST_NODETYPE_IMPLICITCASTEXPR, - CHILLAST_NODETYPE_RETURNSTMT, - CHILLAST_NODETYPE_CALLEXPR, - CHILLAST_NODETYPE_DECLSTMT, - CHILLAST_NODETYPE_PARENEXPR, - CHILLAST_NODETYPE_CSTYLECASTEXPR, - CHILLAST_NODETYPE_CSTYLEADDRESSOF, - CHILLAST_NODETYPE_IFSTMT, - CHILLAST_NODETYPE_SIZEOF, - CHILLAST_NODETYPE_MALLOC, - CHILLAST_NODETYPE_FREE, - CHILLAST_NODETYPE_PREPROCESSING, // comments, #define, #include, whatever else works - CHILLAST_NODETYPE_NOOP, // NO OP +#define CHILLAST_NODE_FORSTMT CHILLAST_NODE_LOOP +#define CHILLAST_NODE_TRANSLATIONUNIT CHILLAST_NODE_SOURCEFILE + +enum CHILLAST_NODE_TYPE { + CHILLAST_NODE_UNKNOWN = 0, + CHILLAST_NODE_SOURCEFILE, + CHILLAST_NODE_TYPEDEFDECL, + CHILLAST_NODE_VARDECL, + // CHILLAST_NODE_PARMVARDECL, not used any more + CHILLAST_NODE_FUNCTIONDECL, + CHILLAST_NODE_RECORDDECL, // struct or union (or class) + CHILLAST_NODE_MACRODEFINITION, + CHILLAST_NODE_COMPOUNDSTMT, + CHILLAST_NODE_LOOP, // AKA ForStmt + CHILLAST_NODE_TERNARYOPERATOR, + CHILLAST_NODE_BINARYOPERATOR, + CHILLAST_NODE_UNARYOPERATOR, + CHILLAST_NODE_ARRAYSUBSCRIPTEXPR, + CHILLAST_NODE_MEMBEREXPR, // structs/unions + CHILLAST_NODE_DECLREFEXPR, + CHILLAST_NODE_INTEGERLITERAL, + CHILLAST_NODE_FLOATINGLITERAL, + CHILLAST_NODE_IMPLICITCASTEXPR, + CHILLAST_NODE_RETURNSTMT, + CHILLAST_NODE_CALLEXPR, + CHILLAST_NODE_DECLSTMT, + CHILLAST_NODE_PARENEXPR, + CHILLAST_NODE_CSTYLECASTEXPR, + CHILLAST_NODE_CSTYLEADDRESSOF, + CHILLAST_NODE_IFSTMT, + CHILLAST_NODE_SIZEOF, + CHILLAST_NODE_MALLOC, + CHILLAST_NODE_FREE, + CHILLAST_NODE_PREPROCESSING, // comments, #define, #include, whatever else works + CHILLAST_NODE_NOOP, // NO OP // CUDA specific - CHILLAST_NODETYPE_CUDAMALLOC, - CHILLAST_NODETYPE_CUDAFREE, - CHILLAST_NODETYPE_CUDAMEMCPY, - CHILLAST_NODETYPE_CUDAKERNELCALL, - CHILLAST_NODETYPE_CUDASYNCTHREADS, - CHILLAST_NODETYPE_NULL // explicit non-statement + CHILLAST_NODE_CUDAMALLOC, + CHILLAST_NODE_CUDAFREE, + CHILLAST_NODE_CUDAMEMCPY, + CHILLAST_NODE_CUDAKERNELCALL, + CHILLAST_NODE_CUDASYNCTHREADS, + CHILLAST_NODE_NULL // explicit non-statement // TODO }; -enum CHILL_FUNCTION_TYPE { - CHILL_FUNCTION_CPU = 0, - CHILL_FUNCTION_GPU +enum CHILLAST_FUNCTION_TYPE { + CHILLAST_FUNCTION_CPU = 0, + CHILLAST_FUNCTION_GPU }; -enum CHILL_MEMBER_EXP_TYPE { - CHILL_MEMBER_EXP_DOT = 0, - CHILL_MEMBER_EXP_ARROW +enum CHILLAST_MEMBER_EXP_TYPE { + CHILLAST_MEMBER_EXP_DOT = 0, + CHILLAST_MEMBER_EXP_ARROW }; -enum CHILL_PREPROCESSING_TYPE { - CHILL_PREPROCESSING_TYPEUNKNOWN = 0, - CHILL_PREPROCESSING_COMMENT, - CHILL_PREPROCESSING_POUNDDEFINE, - CHILL_PREPROCESSING_POUNDINCLUDE, - CHILL_PREPROCESSING_PRAGMA // unused so far +enum CHILLAST_PREPROCESSING_TYPE { + CHILLAST_PREPROCESSING_TYPEUNKNOWN = 0, + CHILLAST_PREPROCESSING_COMMENT, + CHILLAST_PREPROCESSING_POUNDDEFINE, + CHILLAST_PREPROCESSING_POUNDINCLUDE, + CHILLAST_PREPROCESSING_PRAGMA // unused so far }; -enum CHILL_PREPROCESSING_POSITION { // when tied to another statement - CHILL_PREPROCESSING_POSITIONUNKNOWN = 0, - CHILL_PREPROCESSING_LINEBEFORE, // previous line - CHILL_PREPROCESSING_LINEAFTER, // next line - CHILL_PREPROCESSING_TOTHERIGHT, // for this kind of comment, on same line - CHILL_PREPROCESSING_IMMEDIATELYBEFORE // on same line +enum CHILLAST_PREPROCESSING_POSITION { // when tied to another statement + CHILLAST_PREPROCESSING_POSITIONUNKNOWN = 0, + CHILLAST_PREPROCESSING_LINEBEFORE, // previous line + CHILLAST_PREPROCESSING_LINEAFTER, // next line + CHILLAST_PREPROCESSING_TOTHERIGHT, // for this kind of comment, on same line + CHILLAST_PREPROCESSING_IMMEDIATELYBEFORE // on same line }; char *parseUnderlyingType(char *sometype); @@ -95,15 +96,21 @@ bool isRestrict(const char *sometype); char *splitTypeInfo(char *underlyingtype); -char *ulhack(char *brackets); // change "1024UL" to "1024" -char *restricthack(char *typeinfo); // remove __restrict__ , MODIFIES the argument! +//! change "1024UL" to "1024" +char *ulhack(char *brackets); +//! remove __restrict__ , MODIFIES the argument! +char *restricthack(char *typeinfo); -extern const char *Chill_AST_Node_Names[]; // WARNING MUST BE KEPT IN SYNC WITH BELOW LIST +// TODO phase out this one unnecessary as we can write a virtual function that does this +extern const char *ChillAST_Node_Names[]; // WARNING MUST BE KEPT IN SYNC WITH BELOW LIST // fwd declarations -class chillAST_node; // the generic node. specific types derive from this -class chillAST_NULL; // empty -class chillAST_SourceFile; // ast for an entire source file (translationunit) +//! the generic node, who specific types are derived from +class chillAST_Node; +//! empty node +class chillAST_NULL; +//! ast for an entire source file (translationunit) +class chillAST_SourceFile; class chillAST_TypedefDecl; @@ -112,14 +119,18 @@ class chillAST_VarDecl; //class chillAST_ParmVarDecl; class chillAST_FunctionDecl; -class chillAST_RecordDecl; // structs and unions (and classes?) +//! structs and unions (and classes?) +class chillAST_RecordDecl; class chillAST_MacroDefinition; -class chillAST_CompoundStmt; // just a bunch of other statements -class chillAST_ForStmt; // AKA a LOOP -class chillAST_TernaryOperator; +//! A sequence of statements +class chillAST_CompoundStmt; +//! a For LOOP +class chillAST_ForStmt; +class chillAST_UnaryOperator; class chillAST_BinaryOperator; +class chillAST_TernaryOperator; class chillAST_ArraySubscriptExpr; @@ -131,8 +142,6 @@ class chillAST_IntegerLiteral; class chillAST_FloatingLiteral; -class chillAST_UnaryOperator; - class chillAST_ImplicitCastExpr; class chillAST_CStyleCastExpr; @@ -165,10 +174,11 @@ class chillAST_CudaSyncthreads; class chillAST_Preprocessing; +typedef std::vector<chillAST_Node *> chillAST_NodeList; typedef std::vector<chillAST_VarDecl *> chillAST_SymbolTable; // typedef typedef std::vector<chillAST_TypedefDecl *> chillAST_TypedefTable; // typedef -bool symbolTableHasVariableNamed(chillAST_SymbolTable *table, const char *name); // fwd decl +chillAST_VarDecl *symbolTableFindName(chillAST_SymbolTable *table, const char *name); // fwd decl chillAST_VarDecl *symbolTableFindVariableNamed(chillAST_SymbolTable *table, const char *name); // fwd decl TODO too many similar named functions @@ -176,7 +186,7 @@ void printSymbolTable(chillAST_SymbolTable *st); // fwd decl void printSymbolTableMoreInfo(chillAST_SymbolTable *st); // fwd decl -chillAST_node *lessthanmacro(chillAST_node *left, chillAST_node *right); // fwd declaration +chillAST_Node *lessthanmacro(chillAST_Node *left, chillAST_Node *right); // fwd declaration chillAST_SymbolTable *addSymbolToTable(chillAST_SymbolTable *st, chillAST_VarDecl *vd); // fwd decl chillAST_TypedefTable *addTypedefToTable(chillAST_TypedefTable *tt, chillAST_TypedefDecl *td); // fwd decl @@ -187,7 +197,7 @@ void insertNewDeclAtLocationOfOldIfNeeded(chillAST_VarDecl *newdecl, chillAST_Va chillAST_DeclRefExpr *buildDeclRefExpr(chillAST_VarDecl *); -chillAST_FunctionDecl *findFunctionDecl(chillAST_node *node, const char *procname); +chillAST_FunctionDecl *findFunctionDecl(chillAST_Node *node, const char *procname); #endif |