/* * Mr. 4th Dimention - Allen Webster * * 21.1.2015 * * Test for CPP lexer & parser layer for project codename "4ed" * */ // TOP #include "../4ed_meta.h" #define FCPP_STRING_IMPLEMENTATION #include "../4coder_string.h" #include "../4cpp_types.h" #define FCPP_LEXER_IMPLEMENTATION #include "../4cpp_lexer.h" #include "../4cpp_preprocessor.cpp" #include #include Data file_dump(char *filename){ Data result; FILE *file; result = {}; file = fopen(filename, "rb"); if (file){ fseek(file, 0, SEEK_END); result.size = ftell(file); fseek(file, 0, SEEK_SET); result.data = (byte*)malloc(result.size); fread(result.data, 1, result.size, file); fclose(file); } return(result); } int main(int argc, char **argv){ Data target_file; Cpp_File file; Cpp_Token_Stack tokens; Cpp_Token *token; int i; if (argc != 2){ printf("usage: %s \n", argv[0]); exit(1); } target_file = file_dump(argv[1]); if (target_file.data == 0){ printf("couldn't open file %s\n", argv[1]); exit(1); } tokens = cpp_make_token_stack(1 << 10); file = data_as_cpp_file(target_file); cpp_lex_file(file, &tokens); token = tokens.tokens; for (i = 0; i < tokens.count; ++i, ++token){ printf("%.*s\n", token->size, file.data + token->start); } return(0); } // BOTTOM