Mercurial > pasana
view parser.c @ 2:ff5e493bc9cb default tip
2003-01-29
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sat, 13 Oct 2012 21:14:50 +0200 |
| parents | 1361f218a6e5 |
| children |
line wrap: on
line source
#include <glib.h> #include "symbols.h" #include "parser.h" #include "keywords.h" /* Funkcja ustawiająca źródło dla flex-a. */ extern void yyrestart(FILE *); /* Tworzy nowy parser. */ Parser * newParser(const char *filename) { Parser *parser; parser = g_new(Parser, 1); parser->source = fopen(filename, "r"); if (parser->source==NULL) { g_free(parser); return NULL; } parser->filename = g_string_new(filename); parser->namespaces = NULL; parser->scopes = NULL; parser->keywords = g_hash_table_new(g_str_hash, g_str_equal); parser->levelup = TRUE; parser->line = 1; parser->root = NULL; parser->codecomment = NULL; parser->blockcomment = NULL; initKeywords(parser); yyrestart(parser->source); /* Każemy flexowi czytać z tego pliku. */ return parser; } /* Niszczy parser. */ void destroyParser(Parser * parser) { g_string_free(parser->filename, TRUE); g_hash_table_destroy(parser->keywords); fclose(parser->source); g_free(parser); parser = NULL; }
