diff options
Diffstat (limited to 'yy/main.c')
-rw-r--r-- | yy/main.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/yy/main.c b/yy/main.c deleted file mode 100644 index 52058d3..0000000 --- a/yy/main.c +++ /dev/null @@ -1,65 +0,0 @@ -#include <stdio.h> - -#define YYLTYPE KALMIALTYPE -#define YYSTYPE KALMIASTYPE -#include "kalmia.tab.h" -#include "kalmia.lex.h" - - -void print_attrs(struct kai_attr_t *attr) -{ - while(attr != NULL) { - printf("%s=\"%s\" ", attr->key, attr->value); - attr = attr->next; - } -} - - -void print_tag(char *indent, struct kai_tag_t *tag) -{ - printf("%s%s[ ", indent, tag->type); - print_attrs(tag->attrs); - printf("]\n"); -} - - -void print_level(int indent_level, struct kai_tag_t *tag) -{ - char indent[64]; - for (int i=0; i<indent_level; i++) { - indent[i] = '\t'; - } - indent[indent_level] = 0; - - while (tag != NULL) { - print_tag(indent, tag); - if (tag->children != NULL) { - print_level(indent_level+1, tag->children); - } - if (tag->content != NULL) { - printf("%s\t%s\n", indent, tag->content); - } - tag = tag->next; - } -} - - -int main(int argc, char **argv) -{ - if (argc < 2) { - fprintf(stderr, "You must specify a file to parse!\n"); - return -1; - } - - struct kai_tag_t *document = kai_parse_file(argv[1]); - if (document == NULL) { - return -1; - } - - print_tag("", document); - print_level(1, document->children); - - kai_tag_destroy(document); - - return 0; -} |