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 }