/** <!--******************************************************************--> * * @fn CHKMvardec * * @brief Touched the node and its sons/attributes * * @param arg_node VarDec node to process * @param arg_info pointer to info structure * * @return processed node * ***************************************************************************/ node * CHKMvardec (node * arg_node, info * arg_info) { DBUG_ENTER ("CHKMvardec"); NODE_ERROR (arg_node) = CHKMTRAV (NODE_ERROR (arg_node), arg_info); VARDEC_TYPE (arg_node) = CHKMTRAV (VARDEC_TYPE (arg_node), arg_info); VARDEC_VAR (arg_node) = CHKMTRAV (VARDEC_VAR (arg_node), arg_info); VARDEC_EXPR (arg_node) = CHKMTRAV (VARDEC_EXPR (arg_node), arg_info); DBUG_RETURN (arg_node); }
/** <!--******************************************************************--> * * @fn COPYvardec * * @brief Copies the node and its sons/attributes * * @param arg_node VarDec node to process * @param arg_info pointer to info structure * * @return processed node * ***************************************************************************/ node * COPYvardec (node * arg_node, info * arg_info) { node *result = TBmakeVardec (NULL, NULL, NULL); DBUG_ENTER ("COPYvardec"); LUTinsertIntoLutP (INFO_LUT (arg_info), arg_node, result); /* Copy sons */ VARDEC_TYPE (result) = COPYTRAV (VARDEC_TYPE (arg_node), arg_info); VARDEC_VAR (result) = COPYTRAV (VARDEC_VAR (arg_node), arg_info); VARDEC_EXPR (result) = COPYTRAV (VARDEC_EXPR (arg_node), arg_info); /* Return value */ DBUG_RETURN (result); }
//check vardec type with initialisation node *CTvardec(node *arg_node, info *arg_info){ DBUG_ENTER("CTvardec"); //only check if there is a initialisation if(VARDEC_INIT(arg_node)!= NULL){ VARDEC_INIT(arg_node) = TRAVdo(VARDEC_INIT(arg_node), arg_info); type vartype = INFO_TYPE(arg_info); if(vartype != VARDEC_TYPE(arg_node)){ CTIerrorLine(NODE_LINE(arg_node), "Initialisation value does not match the type of the declared variable"); } } //ga verder met traversal VARDEC_NEXT(arg_node) = TRAVopt(VARDEC_NEXT(arg_node), arg_info); DBUG_RETURN(arg_node); }