diff --git a/src/main.c b/src/main.c index 8bb8127..38cf9c9 100644 --- a/src/main.c +++ b/src/main.c @@ -4,6 +4,8 @@ #define LOG_LEVEL LOG_LEVEL_DEBUG +extern FILE* yyin; + /** * @brief Log a debug message to inform about beginning exit procedures * @@ -13,6 +15,19 @@ void notify_exit(void) DEBUG("Exiting gemstone..."); } +/** + * @brief Closes File after compiling. + * + */ + +void close_file(void) +{ + if (NULL != yyin) + { + fclose(yyin); + } +} + /** * @brief Run compiler setup here * @@ -29,13 +44,34 @@ void setup(void) #endif // actual setup - + DEBUG("finished starting up gemstone..."); } -int main(void) { - setup(); +int main(int argc, char *argv[]) { + setup(); + atexit(close_file); + + // Check for file input as argument + if (2 != argc) + { + INFO("Usage: %s \n", argv[0]); + PANIC("No File could be found"); + } + + // filename as first argument + char *filename = argv[1]; + + FILE *file = fopen(filename, "r"); + + if (NULL == file) + { + PANIC("File couldn't be opened!"); + } + yyin = file; + yyparse(); + return 0; }