a little more work on the new lexer
This commit is contained in:
parent
682d99dacc
commit
b62a044fec
|
@ -29,8 +29,8 @@
|
|||
#include "4tech_table.cpp"
|
||||
|
||||
#define FCPP_LEXER_IMPLEMENTATION
|
||||
#include "test/4cpp_new_lexer.h"
|
||||
//#include "4cpp_lexer.h"
|
||||
//#include "test/4cpp_new_lexer.h"
|
||||
#include "4cpp_lexer.h"
|
||||
|
||||
#include "4ed_template.cpp"
|
||||
|
||||
|
|
|
@ -807,6 +807,7 @@ Job_Callback_Sig(job_full_lex){
|
|||
i32 buffer_size = file->state.buffer.size;
|
||||
buffer_size = (buffer_size + 3)&(~3);
|
||||
|
||||
#if 0
|
||||
while (memory->size < buffer_size*2){
|
||||
system->grow_thread_memory(memory);
|
||||
}
|
||||
|
@ -818,8 +819,6 @@ Job_Callback_Sig(job_full_lex){
|
|||
tokens.max_count = (memory->size - buffer_size) / sizeof(Cpp_Token);
|
||||
tokens.count = 0;
|
||||
|
||||
#if 1
|
||||
|
||||
b32 still_lexing = 1;
|
||||
|
||||
Lex_Data lex = lex_data_init(tb);
|
||||
|
@ -855,7 +854,16 @@ Job_Callback_Sig(job_full_lex){
|
|||
|
||||
#else
|
||||
|
||||
Cpp_Lex_Data status = {0};
|
||||
while (memory->size < buffer_size){
|
||||
system->grow_thread_memory(memory);
|
||||
}
|
||||
|
||||
Cpp_Token_Stack tokens;
|
||||
tokens.tokens = (Cpp_Token*)(char*)memory->data;
|
||||
tokens.max_count = (memory->size) / sizeof(Cpp_Token);
|
||||
tokens.count = 0;
|
||||
|
||||
Cpp_Lex_Data status = {};
|
||||
|
||||
do{
|
||||
for (i32 r = 2048; r > 0 && status.pos < cpp_file.size; --r){
|
||||
|
@ -991,9 +999,10 @@ file_relex_parallel(System_Functions *system,
|
|||
relex_space.max_count = state.space_request;
|
||||
relex_space.tokens = push_array(part, Cpp_Token, relex_space.max_count);
|
||||
|
||||
char *spare = push_array(part, char, cpp_file.size);
|
||||
// char *spare = push_array(part, char, cpp_file.size);
|
||||
|
||||
if (cpp_relex_nonalloc_main(&state, &relex_space, &relex_end, spare)){
|
||||
// if (cpp_relex_nonalloc_main(&state, &relex_space, &relex_end, spare)){
|
||||
if (cpp_relex_nonalloc_main(&state, &relex_space, &relex_end)){
|
||||
inline_lex = 0;
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -632,6 +632,7 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
|
|||
break;
|
||||
|
||||
case LS_char:
|
||||
case LS_char_slashed:
|
||||
S.token.type = CPP_TOKEN_CHARACTER_CONSTANT;
|
||||
S.token.flags = 0;
|
||||
break;
|
||||
|
@ -642,6 +643,7 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
|
|||
break;
|
||||
|
||||
case LS_string:
|
||||
case LS_string_slashed:
|
||||
S.token.type = CPP_TOKEN_STRING_CONSTANT;
|
||||
S.token.flags = 0;
|
||||
break;
|
||||
|
@ -662,7 +664,10 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
|
|||
}
|
||||
break;
|
||||
|
||||
case LS_comment: case LS_comment_block_ending:
|
||||
case LS_comment:
|
||||
case LS_comment_slashed:
|
||||
case LS_comment_block:
|
||||
case LS_comment_block_ending:
|
||||
S.token.type = CPP_TOKEN_COMMENT;
|
||||
S.token.flags = 0;
|
||||
pos_update_rule = PUR_unget_whitespace;
|
||||
|
|
|
@ -18,13 +18,14 @@
|
|||
|
||||
#include "../4cpp_types.h"
|
||||
#include "../4cpp_lexer_types.h"
|
||||
#define FCPP_LEXER_IMPLEMENTATION
|
||||
#include "../4cpp_lexer.h"
|
||||
|
||||
namespace new_lex{
|
||||
# include "4cpp_new_lexer.h"
|
||||
}
|
||||
|
||||
#define FCPP_LEXER_IMPLEMENTATION
|
||||
#include "../4cpp_lexer.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <intrin.h>
|
||||
|
||||
|
@ -403,12 +404,12 @@ show_time(Times t, int repeats, char *type){
|
|||
|
||||
int main(){
|
||||
int repeats = 1;
|
||||
int verbose_level = 0;
|
||||
int chunk_start = 32;
|
||||
int verbose_level = 1;
|
||||
int chunk_start = 64;
|
||||
int chunk_end = 64;
|
||||
#define TEST_FILE "parser_test1.cpp"
|
||||
#define SINGLE_ITEM 0
|
||||
int token_limit = 2;
|
||||
#define TEST_FILE "lexer_test2.cpp"
|
||||
#define SINGLE_ITEM 1
|
||||
int token_limit = 1;
|
||||
|
||||
int chunks = (chunk_start > 0 && chunk_start <= chunk_end);
|
||||
int c = 0;
|
||||
|
|
Loading…
Reference in New Issue