From b4a9564790575c645d855c23f7f2e07ae03c1c19 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Fri, 11 Jun 2010 04:47:46 +0000 Subject: Add my new parser playground to svn. Currently it can load a skin, and walk the parse tree and output the tags as required. It always chooses the first value for a conditional and subline, but a good working start there seems to be a error in the new parser if ROCKBOX is defined... need to fix that git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26757 a1c6a512-1295-4272-9138-f99709370657 --- utils/newparser/newparser.c | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 utils/newparser/newparser.c (limited to 'utils/newparser/newparser.c') diff --git a/utils/newparser/newparser.c b/utils/newparser/newparser.c new file mode 100644 index 0000000000..2f58b64d15 --- /dev/null +++ b/utils/newparser/newparser.c @@ -0,0 +1,81 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id: tag_table.c 26346 2010-05-28 02:30:27Z jdgordon $ + * + * Copyright (C) 2010 Jonathan Gordon + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include +#include +#include +#include +#include + +#include "skin_parser.h" +#include "tag_table.h" +#include "skin_structs.h" + +int handle_tree(struct skin *skin, struct skin_element* tree); +void skin_render(struct skin_element* root); + +int main(int argc, char* argv[]) +{ + char buffer[10*1024], temp[512]; + FILE *in; + int filearg = 1, i=0; + if( (argc < 2) || + strcmp(argv[1],"-h") == 0 || + strcmp(argv[1],"--help") == 0 ) + { + printf("Usage: %s infile \n", argv[0]); + return 0; + } + + while ((argc > filearg) && argv[filearg][0] == '-') + { + i=1; + while (argv[filearg][i]) + { + switch(argv[filearg][i]) + { + } + i++; + } + filearg++; + } + if (argc == filearg) + { + printf("Missing input filename\n"); + return 1; + } + + in = fopen(argv[filearg], "r"); + if (!in) + return 1; + while (fgets(temp, 512, in)) + strcat(buffer, temp); + fclose(in); + filearg++; + + struct skin_element* tree = skin_parse(buffer); + struct skin skin; + skin_render(tree); + //handle_tree(&skin, tree); + + skin_free_tree(tree); + return 0; +} -- cgit v1.2.3