From fad36d9324fd13d720bc9366f4de6e968d8b8963 Mon Sep 17 00:00:00 2001 From: Tuowen Zhao Date: Sun, 25 Sep 2016 00:52:59 -0600 Subject: dump tested --- src/printer/generic.cpp | 200 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 src/printer/generic.cpp (limited to 'src/printer/generic.cpp') diff --git a/src/printer/generic.cpp b/src/printer/generic.cpp new file mode 100644 index 0000000..67c694f --- /dev/null +++ b/src/printer/generic.cpp @@ -0,0 +1,200 @@ +// +// Created by ztuowen on 9/24/16. +// + +#include "printer/generic.h" + +using namespace chill::printer; + +void GenericPrinter::print(std::string ident, chillAST_Node *n, std::ostream &o) { + switch (n->getType()) { + case CHILLAST_NODE_ARRAYSUBSCRIPTEXPR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_BINARYOPERATOR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_CALLEXPR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_COMPOUNDSTMT: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_CSTYLEADDRESSOF: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_CSTYLECASTEXPR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_CUDAFREE: + printS(ident, dynamic_cast(n), o); + break; +// case CHILLAST_NODE_CUDAKERNELCALL: +// printS(ident, dynamic_cast(n), o); +// break; + case CHILLAST_NODE_CUDAMALLOC: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_CUDAMEMCPY: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_CUDASYNCTHREADS: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_DECLREFEXPR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_FLOATINGLITERAL: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_LOOP: +// case CHILLAST_NODE_FORSTMT: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_FREE: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_FUNCTIONDECL: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_IFSTMT: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_IMPLICITCASTEXPR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_INTEGERLITERAL: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_MACRODEFINITION: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_MALLOC: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_MEMBEREXPR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_NOOP: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_NULL: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_PARENEXPR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_PREPROCESSING: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_RECORDDECL: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_RETURNSTMT: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_SIZEOF: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_TRANSLATIONUNIT: +// case CHILLAST_NODE_SOURCEFILE: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_TERNARYOPERATOR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_TYPEDEFDECL: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_UNARYOPERATOR: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_VARDECL: + printS(ident, dynamic_cast(n), o); + break; + case CHILLAST_NODE_UNKNOWN: + default: + CHILL_ERROR("Printing an unknown type of Node: %s\n", n->getTypeString()); + } + o.flush(); +} + +int GenericPrinter::getPrec(chillAST_Node *n) { + switch (n->getType()) { + case CHILLAST_NODE_ARRAYSUBSCRIPTEXPR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_BINARYOPERATOR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_CALLEXPR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_COMPOUNDSTMT: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_CSTYLEADDRESSOF: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_CSTYLECASTEXPR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_CUDAFREE: + return getPrecS(dynamic_cast(n)); +// case CHILLAST_NODE_CUDAKERNELCALL: +// return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_CUDAMALLOC: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_CUDAMEMCPY: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_CUDASYNCTHREADS: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_DECLREFEXPR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_FLOATINGLITERAL: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_LOOP: +// case CHILLAST_NODE_FORSTMT: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_FREE: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_FUNCTIONDECL: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_IFSTMT: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_IMPLICITCASTEXPR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_INTEGERLITERAL: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_MACRODEFINITION: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_MALLOC: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_MEMBEREXPR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_NOOP: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_NULL: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_PARENEXPR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_PREPROCESSING: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_RECORDDECL: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_RETURNSTMT: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_SIZEOF: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_TRANSLATIONUNIT: +// case CHILLAST_NODE_SOURCEFILE: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_TERNARYOPERATOR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_TYPEDEFDECL: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_UNARYOPERATOR: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_VARDECL: + return getPrecS(dynamic_cast(n)); + case CHILLAST_NODE_UNKNOWN: + default: + CHILL_ERROR("Getting precedence an unknown type of Node: %s\n", n->getTypeString()); + return INT8_MAX; + } +} + -- cgit v1.2.3-70-g09d2