#include <stdio.h> #include <string.h> #include <stddef.h> #include <ctype.h> #include "arena.h" #include "parser.h" #define AST_INTERPRETER_COMMAND "ast_interpret" #define RUN "run" #define MAX_ARG_LEN 20 int main ( int argc, char **argv ) { if ( argc < 2 ) { fprintf( stderr, "Error: expected at least one argument\n" ); return 1; } u8 flag = 0; u8 ast_interpret = 0; size_t len; for ( int arg = 1; arg < argc; ++arg ) { len = strlen ( argv [ arg ] ); if ( len > MAX_ARG_LEN ) { fprintf( stderr, "Error: unsupported argument.\n" ); flag = 1; } for ( size_t j = 0; j < len; j++ ) argv [ arg ] [ j ] = tolower ( argv [ arg ] [ j ] ); if ( strncpy ( argv [ arg ], AST_INTERPRETER_COMMAND, len ) == 0 ) ast_interpret = 1; else if ( strncpy ( argv [ arg ], RUN, len ) == 0 ) ast_interpret = 1; else { fprintf( stderr, "Error: unsupported argument.\n" ); flag = 1; } } if ( flag ) return 1; Arena arena; arena_init( &arena ); Ast *ast = parse_src ( &arena, (Str) { .str = (u8 *) argv[1], .len = strlen(argv[1]) } ); if ( ast == NULL ) { fprintf ( stderr, "Failed to parse source\n" ); arena_destroy ( &arena ); return 1; } if ( ast_interpret ) return 88; arena_destroy( &arena ); return 0; }