int main(int argc, char *argv[]) { printf("command argument: %s\n", argv[1]); // io_tools //gpchar(); // data_type printf("------------ data_type example ------------\n"); print_sizeof (); // pointer printf("\n------------ pointer example --------------\n"); address(); // string printf("\n------------ string example ---------------\n"); char_to_string(); // struct printf("\n------------ struct example ---------------\n"); structure(); // union printf("\n------------ union example ----------------\n"); union_test(); // bit_field printf("\n------------ bit_field example -----------\n"); bit_field_test(); // file_io printf("\n------------ file_io example -------------\n"); file_io_test(); // recursion printf("\n------------ recusion example -------------\n"); recursion_test(); // variable_args printf("\n------------ valist example -------------\n"); varargs_test(); // memory printf("\n------------ memory example -------------\n"); memory_mgmt_test(); return 0; }
int print_compozite(FILE* dest, struct ast_node_t* node, int padding, int wrap) { ast_node_t* child = node->value.child; int new_pad = padding + (wrap ? 1 : 1); //lol, wtf? switch (node->type) { //absolutelly syntactically specifically printed case JST_PROGRAM: print_whole_program(dest, child, padding, wrap); break; case JST_VARIABLE_DECL: { int done = print_variable_decl(dest, node, padding, wrap); return done; break; } case JST_VARIABLE: { print_single_node(dest, child, padding, wrap); break; } case JST_PROCEDURE: { print_procedure(dest, node, padding, wrap); return 1; break; } case JST_PROCCALL: print_proccal(dest, node, padding, wrap); break; case JST_ARRAY: print_array(dest, node, padding, wrap); break; case STK_SIZEOF: print_sizeof(dest, node, padding, wrap); break; // printing of containers case CNT_PARAMETERS: print_scheme_list(dest, child, new_pad, 0); break; case CNT_STATEMENTS: print_renamed(dest, "begin", child, new_pad, 1); break; case CNT_EXPRESSIONS: print_renamed(dest, "list", child, new_pad, 0); break; case JST_EXPRESSION: print_single_node(dest, child, new_pad, 0); break; // renaming case STK_ASSIGNMENT: print_renamed(dest, "set-at", child, new_pad, 0); break; case OPT_INDEX: print_renamed(dest, "at", child, new_pad, 0); break; case OPT_DEREFERENCE: print_renamed(dest, "adress-of", child, new_pad, 0); break; case OPT_REFERENCE: print_renamed(dest, "at-adress", child, new_pad, 0); break; case OPT_TERNARY: print_renamed(dest, "if", child, new_pad, 0); break; case OPT_NOT: print_renamed(dest, "not", child, new_pad, 0); break; case OPT_AND: print_renamed(dest, "and", child, new_pad, 0); break; case OPT_OR: print_renamed(dest, "or", child, new_pad, 0); break; case OPT_BITWISE_NOT: print_renamed(dest, "bit-not", child, new_pad, 0); break; case OPT_BITWISE_AND: print_renamed(dest, "bit-and", child, new_pad, 0); break; case OPT_BITWISE_OR: print_renamed(dest, "bit-or", child, new_pad, 0); break; case OPT_BITWISE_XOR: print_renamed(dest, "bit-xor", child, new_pad, 0); break; case OPT_MODULO: print_renamed(dest, "mod", child, new_pad, 0); break; case STK_DO: print_renamed(dest, "do-while", child, new_pad, 1); break; //normally printed, but with wrap case STK_IF: case STK_WHILE: case STK_FOR: { const char* str = to_string(node->type); print_labeled_scheme_list(dest, str, child, new_pad, 1); } break; default: { //print inline (operators) const char* str = to_string(node->type); print_labeled_scheme_list(dest, str, child, new_pad, 0); } } return 0; }
int main(int argc, char*argv[]){ char s[20] = "skskfksjakfdksjd"; printf("sizeof:%d %d\n", sizeof(s), sizeof(*s)); print_sizeof(s); }