baum
annotate baum.c @ 0:2f71d692d4f9
initial commit
author | meillo@marmaro.de |
---|---|
date | Thu, 07 Feb 2008 12:51:54 +0100 |
parents | |
children | 3da0ff17c8e7 |
rev | line source |
---|---|
meillo@0 | 1 /* |
meillo@0 | 2 * baum - an esoteric programming language |
meillo@0 | 3 * |
meillo@0 | 4 * (c) markus schnalke <meillo@marmaro.de> |
meillo@0 | 5 * and julian forster |
meillo@0 | 6 * |
meillo@0 | 7 */ |
meillo@0 | 8 |
meillo@0 | 9 |
meillo@0 | 10 #include <stdio.h> |
meillo@0 | 11 #include <stdlib.h> |
meillo@0 | 12 |
meillo@0 | 13 |
meillo@0 | 14 struct Node { |
meillo@0 | 15 char* name; |
meillo@0 | 16 char value; |
meillo@0 | 17 struct Node* down; |
meillo@0 | 18 struct Node* right; |
meillo@0 | 19 }; |
meillo@0 | 20 |
meillo@0 | 21 struct Node* root; |
meillo@0 | 22 |
meillo@0 | 23 |
meillo@0 | 24 struct Node* newNode(char* name) { |
meillo@0 | 25 struct Node* node; |
meillo@0 | 26 node = (struct Node*) malloc(sizeof(struct Node)); |
meillo@0 | 27 node->name = name; |
meillo@0 | 28 node->value = 0; |
meillo@0 | 29 node->right = 0; |
meillo@0 | 30 node->down = 0; |
meillo@0 | 31 return node; |
meillo@0 | 32 } |
meillo@0 | 33 |
meillo@0 | 34 void init() { |
meillo@0 | 35 root = newNode("print"); |
meillo@0 | 36 root->down = newNode("sum"); |
meillo@0 | 37 } |
meillo@0 | 38 |
meillo@0 | 39 void cleanup(struct Node* node) { |
meillo@0 | 40 if (node->down != NULL) { |
meillo@0 | 41 cleanup(node->down); |
meillo@0 | 42 } |
meillo@0 | 43 if (node->right != NULL) { |
meillo@0 | 44 cleanup(node->right); |
meillo@0 | 45 } |
meillo@0 | 46 free(node); node=0; |
meillo@0 | 47 } |
meillo@0 | 48 |
meillo@0 | 49 void printNode(struct Node* node) { |
meillo@0 | 50 printf("Node: %20s (%c)\n", node->name, node->value); |
meillo@0 | 51 } |
meillo@0 | 52 |
meillo@0 | 53 void printTree(struct Node* root) { |
meillo@0 | 54 printNode(root); |
meillo@0 | 55 if (root->down != NULL) { |
meillo@0 | 56 printTree(root->down); |
meillo@0 | 57 } |
meillo@0 | 58 if (root->right != NULL) { |
meillo@0 | 59 printTree(root->right); |
meillo@0 | 60 } |
meillo@0 | 61 } |
meillo@0 | 62 |
meillo@0 | 63 |
meillo@0 | 64 int main(int argc, char* argv[]) { |
meillo@0 | 65 init(); |
meillo@0 | 66 printTree(root); |
meillo@0 | 67 cleanup(root); |
meillo@0 | 68 |
meillo@0 | 69 return(0); |
meillo@0 | 70 } |