meillo@0: /* meillo@0: * baum - an esoteric programming language meillo@0: * meillo@0: * (c) markus schnalke meillo@0: * and julian forster meillo@0: * meillo@0: */ meillo@0: meillo@0: meillo@0: #include meillo@0: #include meillo@0: meillo@0: meillo@0: struct Node { meillo@0: char* name; meillo@0: char value; meillo@0: struct Node* down; meillo@0: struct Node* right; meillo@0: }; meillo@0: meillo@0: struct Node* root; meillo@0: meillo@0: meillo@0: struct Node* newNode(char* name) { meillo@0: struct Node* node; meillo@0: node = (struct Node*) malloc(sizeof(struct Node)); meillo@0: node->name = name; meillo@0: node->value = 0; meillo@0: node->right = 0; meillo@0: node->down = 0; meillo@0: return node; meillo@0: } meillo@0: meillo@0: void init() { meillo@0: root = newNode("print"); meillo@0: root->down = newNode("sum"); meillo@0: } meillo@0: meillo@0: void cleanup(struct Node* node) { meillo@0: if (node->down != NULL) { meillo@0: cleanup(node->down); meillo@0: } meillo@0: if (node->right != NULL) { meillo@0: cleanup(node->right); meillo@0: } meillo@0: free(node); node=0; meillo@0: } meillo@0: meillo@0: void printNode(struct Node* node) { meillo@0: printf("Node: %20s (%c)\n", node->name, node->value); meillo@0: } meillo@0: meillo@0: void printTree(struct Node* root) { meillo@0: printNode(root); meillo@0: if (root->down != NULL) { meillo@0: printTree(root->down); meillo@0: } meillo@0: if (root->right != NULL) { meillo@0: printTree(root->right); meillo@0: } meillo@0: } meillo@0: meillo@0: meillo@0: int main(int argc, char* argv[]) { meillo@0: init(); meillo@0: printTree(root); meillo@0: cleanup(root); meillo@0: meillo@0: return(0); meillo@0: }