fixed set map bug
parent
5857726201
commit
bcd6922aef
|
@ -7,13 +7,6 @@
|
||||||
#define UseInterfacesThatArePhasingOut 0
|
#define UseInterfacesThatArePhasingOut 0
|
||||||
#include "4coder_helper.h"
|
#include "4coder_helper.h"
|
||||||
|
|
||||||
// NOTE(allen|a3.3): All of your custom ids should be enumerated
|
|
||||||
// as shown here, they may start at 0, and you can only have
|
|
||||||
// 2^24 of them so don't be wasteful!
|
|
||||||
enum My_Maps{
|
|
||||||
my_code_map
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_string(Application_Links *app, String string){
|
write_string(Application_Links *app, String string){
|
||||||
Buffer_Summary buffer = app->get_active_buffer(app);
|
Buffer_Summary buffer = app->get_active_buffer(app);
|
||||||
|
|
|
@ -3,6 +3,14 @@
|
||||||
|
|
||||||
unsigned char blink_t = 0;
|
unsigned char blink_t = 0;
|
||||||
|
|
||||||
|
// NOTE(allen|a3.3): All of your custom ids should be enumerated
|
||||||
|
// as shown here, they may start at 0, and you can only have
|
||||||
|
// 2^24 of them so don't be wasteful!
|
||||||
|
enum My_Maps{
|
||||||
|
my_code_map,
|
||||||
|
my_html_map
|
||||||
|
};
|
||||||
|
|
||||||
HOOK_SIG(my_start){
|
HOOK_SIG(my_start){
|
||||||
exec_command(app, cmdid_open_panel_vsplit);
|
exec_command(app, cmdid_open_panel_vsplit);
|
||||||
exec_command(app, cmdid_change_active_panel);
|
exec_command(app, cmdid_change_active_panel);
|
||||||
|
@ -101,6 +109,19 @@ CUSTOM_COMMAND_SIG(write_allen_note){
|
||||||
write_string(app, make_lit_string("// NOTE(allen): "));
|
write_string(app, make_lit_string("// NOTE(allen): "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(write_h){
|
||||||
|
write_string(app, make_lit_string("<h1></h1>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(write_div){
|
||||||
|
write_string(app, make_lit_string("<div></div>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(begin_html_mode){
|
||||||
|
push_parameter(app, par_key_mapid, my_html_map);
|
||||||
|
exec_command(app, cmdid_set_settings);
|
||||||
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(write_capital){
|
CUSTOM_COMMAND_SIG(write_capital){
|
||||||
User_Input command_in = app->get_command_input(app);
|
User_Input command_in = app->get_command_input(app);
|
||||||
char c = command_in.key.character_no_caps_lock;
|
char c = command_in.key.character_no_caps_lock;
|
||||||
|
@ -291,7 +312,6 @@ void default_get_bindings(Bind_Helper *context){
|
||||||
bind(context, 'o', MDFR_ALT, open_in_other);
|
bind(context, 'o', MDFR_ALT, open_in_other);
|
||||||
|
|
||||||
bind(context, 'm', MDFR_ALT, build_search);
|
bind(context, 'm', MDFR_ALT, build_search);
|
||||||
bind(context, ',', MDFR_ALT, switch_to_compilation);
|
|
||||||
bind(context, 'x', MDFR_ALT, execute_arbitrary_command);
|
bind(context, 'x', MDFR_ALT, execute_arbitrary_command);
|
||||||
bind(context, 'z', MDFR_ALT, execute_any_cli);
|
bind(context, 'z', MDFR_ALT, execute_any_cli);
|
||||||
|
|
||||||
|
@ -306,6 +326,13 @@ void default_get_bindings(Bind_Helper *context){
|
||||||
end_map(context);
|
end_map(context);
|
||||||
|
|
||||||
|
|
||||||
|
begin_map(context, my_html_map);
|
||||||
|
inherit_map(context, mapid_file);
|
||||||
|
bind(context, 'h', MDFR_ALT, write_h);
|
||||||
|
bind(context, 'd', MDFR_ALT, write_div);
|
||||||
|
end_map(context);
|
||||||
|
|
||||||
|
|
||||||
begin_map(context, my_code_map);
|
begin_map(context, my_code_map);
|
||||||
|
|
||||||
// NOTE(allen|a3.1): Set this map (my_code_map == mapid_user_custom) to
|
// NOTE(allen|a3.1): Set this map (my_code_map == mapid_user_custom) to
|
||||||
|
@ -419,6 +446,7 @@ void default_get_bindings(Bind_Helper *context){
|
||||||
bind(context, 'w', MDFR_ALT | MDFR_CTRL, write_capital);
|
bind(context, 'w', MDFR_ALT | MDFR_CTRL, write_capital);
|
||||||
bind(context, 'e', MDFR_ALT | MDFR_CTRL, write_capital);
|
bind(context, 'e', MDFR_ALT | MDFR_CTRL, write_capital);
|
||||||
|
|
||||||
|
bind(context, 'T', MDFR_CTRL | MDFR_ALT, begin_html_mode);
|
||||||
|
|
||||||
end_map(context);
|
end_map(context);
|
||||||
}
|
}
|
||||||
|
|
23
4ed.cpp
23
4ed.cpp
|
@ -120,7 +120,12 @@ app_get_map_index(Models *models, i32 mapid){
|
||||||
internal Command_Map*
|
internal Command_Map*
|
||||||
app_get_map(Models *models, i32 mapid){
|
app_get_map(Models *models, i32 mapid){
|
||||||
Command_Map *map = 0;
|
Command_Map *map = 0;
|
||||||
if (mapid < mapid_global) map = models->user_maps + mapid;
|
if (mapid < mapid_global){
|
||||||
|
mapid = app_get_map_index(models, mapid);
|
||||||
|
if (mapid < models->user_map_count){
|
||||||
|
map = models->user_maps + mapid;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (mapid == mapid_global) map = &models->map_top;
|
else if (mapid == mapid_global) map = &models->map_top;
|
||||||
else if (mapid == mapid_file) map = &models->map_file;
|
else if (mapid == mapid_file) map = &models->map_file;
|
||||||
return map;
|
return map;
|
||||||
|
@ -1597,6 +1602,9 @@ COMMAND_DECL(set_settings){
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_MODELS(models);
|
USE_MODELS(models);
|
||||||
|
|
||||||
|
b32 set_mapid = 0;
|
||||||
|
i32 new_mapid = 0;
|
||||||
|
|
||||||
Command_Parameter *end = param_stack_end(&command->part);
|
Command_Parameter *end = param_stack_end(&command->part);
|
||||||
Command_Parameter *param = param_stack_first(&command->part, end);
|
Command_Parameter *param = param_stack_first(&command->part, end);
|
||||||
for (; param < end; param = param_next(param, end)){
|
for (; param < end; param = param_next(param, end)){
|
||||||
|
@ -1649,17 +1657,26 @@ COMMAND_DECL(set_settings){
|
||||||
|
|
||||||
case par_key_mapid:
|
case par_key_mapid:
|
||||||
{
|
{
|
||||||
|
set_mapid = 1;
|
||||||
int v = dynamic_to_int(¶m->param.value);
|
int v = dynamic_to_int(¶m->param.value);
|
||||||
if (v == mapid_global) file->settings.base_map_id = mapid_global;
|
if (v == mapid_global) file->settings.base_map_id = mapid_global;
|
||||||
else if (v == mapid_file) file->settings.base_map_id = mapid_file;
|
else if (v == mapid_file) file->settings.base_map_id = mapid_file;
|
||||||
else if (v < mapid_global){
|
else if (v < mapid_global){
|
||||||
int index = app_get_map_index(models, v);
|
new_mapid = app_get_map_index(models, v);
|
||||||
if (index < models->user_map_count) file->settings.base_map_id = v;
|
if (new_mapid < models->user_map_count) file->settings.base_map_id = v;
|
||||||
else file->settings.base_map_id = mapid_file;
|
else file->settings.base_map_id = mapid_file;
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (set_mapid){
|
||||||
|
for (View_Iter iter = file_view_iter_init(&models->layout, file, 0);
|
||||||
|
file_view_iter_good(iter);
|
||||||
|
iter = file_view_iter_next(iter)){
|
||||||
|
iter.view->map = app_get_map(models, file->settings.base_map_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_DECL(command_line){
|
COMMAND_DECL(command_line){
|
||||||
|
|
|
@ -1007,6 +1007,7 @@ cpp_lex_nonalloc(Lex_Data *S_ptr, char *chunk, int size, Cpp_Token_Stack *token_
|
||||||
int max_token_i = token_stack_out->max_count;
|
int max_token_i = token_stack_out->max_count;
|
||||||
|
|
||||||
Lex_FSM fsm = {0};
|
Lex_FSM fsm = {0};
|
||||||
|
Whitespace_FSM wfsm = {0};
|
||||||
Pos_Update_Rule pos_update_rule = PUR_none;
|
Pos_Update_Rule pos_update_rule = PUR_none;
|
||||||
|
|
||||||
char c = 0;
|
char c = 0;
|
||||||
|
@ -1028,7 +1029,16 @@ cpp_lex_nonalloc(Lex_Data *S_ptr, char *chunk, int size, Cpp_Token_Stack *token_
|
||||||
for(;;){
|
for(;;){
|
||||||
for (; S.wfsm.white_done == 0 && S.pos < end_pos;){
|
for (; S.wfsm.white_done == 0 && S.pos < end_pos;){
|
||||||
c = chunk[S.pos++];
|
c = chunk[S.pos++];
|
||||||
S.wfsm = whitespace_skip_fsm(S.wfsm, c);
|
wfsm = S.wfsm;
|
||||||
|
{
|
||||||
|
if (wfsm.pp_state != LSPP_default){
|
||||||
|
if (c == '\n') wfsm.pp_state = LSPP_default;
|
||||||
|
}
|
||||||
|
if (!(c == ' ' || c == '\n' || c == '\t' || c == '\r' || c == '\f' || c == '\v')){
|
||||||
|
wfsm.white_done = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
S.wfsm = wfsm;
|
||||||
}
|
}
|
||||||
if (S.wfsm.white_done == 0){
|
if (S.wfsm.white_done == 0){
|
||||||
DrYield(4, 1);
|
DrYield(4, 1);
|
||||||
|
@ -1047,7 +1057,395 @@ cpp_lex_nonalloc(Lex_Data *S_ptr, char *chunk, int size, Cpp_Token_Stack *token_
|
||||||
S.tb[S.tb_pos++] = c;
|
S.tb[S.tb_pos++] = c;
|
||||||
|
|
||||||
fsm = S.fsm;
|
fsm = S.fsm;
|
||||||
fsm = main_fsm(fsm, S.pp_state, c);
|
|
||||||
|
{
|
||||||
|
if (c == 0) fsm.emit_token = 1;
|
||||||
|
else
|
||||||
|
switch (S.pp_state){
|
||||||
|
case LSPP_error:
|
||||||
|
fsm.state = LS_error_message;
|
||||||
|
if (c == '\n') fsm.emit_token = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LSPP_include:
|
||||||
|
switch (fsm.state){
|
||||||
|
case LSINC_default:
|
||||||
|
switch (c){
|
||||||
|
case '"': fsm.state = LSINC_quotes; break;
|
||||||
|
case '<': fsm.state = LSINC_pointy; break;
|
||||||
|
default: fsm.state = LSINC_junk; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LSINC_quotes:
|
||||||
|
if (c == '"') fsm.emit_token = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LSINC_pointy:
|
||||||
|
if (c == '>') fsm.emit_token = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LSINC_junk:
|
||||||
|
if (c == '\n') fsm.emit_token = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
switch (fsm.state){
|
||||||
|
case LS_default:
|
||||||
|
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_'){
|
||||||
|
fsm.state = LS_identifier;
|
||||||
|
}
|
||||||
|
else if (c >= '1' && c <= '9'){
|
||||||
|
fsm.state = LS_number;
|
||||||
|
}
|
||||||
|
else if (c == '0'){
|
||||||
|
fsm.state = LS_number0;
|
||||||
|
}
|
||||||
|
else switch (c){
|
||||||
|
case '\'': fsm.state = LS_char; break;
|
||||||
|
case '"': fsm.state = LS_string; break;
|
||||||
|
|
||||||
|
case '/': fsm.state = LS_comment_pre; break;
|
||||||
|
|
||||||
|
case '.': fsm.state = LS_dot; break;
|
||||||
|
|
||||||
|
case '<': fsm.state = LS_less; break;
|
||||||
|
case '>': fsm.state = LS_more; break;
|
||||||
|
|
||||||
|
case '-': fsm.state = LS_minus; break;
|
||||||
|
|
||||||
|
case '&': fsm.state = LS_and; break;
|
||||||
|
case '|': fsm.state = LS_or; break;
|
||||||
|
|
||||||
|
case '+': fsm.state = LS_plus; break;
|
||||||
|
|
||||||
|
case ':': fsm.state = LS_colon; break;
|
||||||
|
|
||||||
|
case '*': fsm.state = LS_star; break;
|
||||||
|
|
||||||
|
case '%': fsm.state = LS_modulo; break;
|
||||||
|
case '^': fsm.state = LS_caret; break;
|
||||||
|
|
||||||
|
case '=': fsm.state = LS_eq; break;
|
||||||
|
case '!': fsm.state = LS_bang; break;
|
||||||
|
|
||||||
|
case '#': fsm.state = LS_pound; break;
|
||||||
|
|
||||||
|
#define OperCase(op,type) case op: fsm.emit_token = 1; break;
|
||||||
|
OperCase('{', CPP_TOKEN_BRACE_OPEN);
|
||||||
|
OperCase('}', CPP_TOKEN_BRACE_CLOSE);
|
||||||
|
|
||||||
|
OperCase('[', CPP_TOKEN_BRACKET_OPEN);
|
||||||
|
OperCase(']', CPP_TOKEN_BRACKET_CLOSE);
|
||||||
|
|
||||||
|
OperCase('(', CPP_TOKEN_PARENTHESE_OPEN);
|
||||||
|
OperCase(')', CPP_TOKEN_PARENTHESE_CLOSE);
|
||||||
|
|
||||||
|
OperCase('~', CPP_TOKEN_TILDE);
|
||||||
|
OperCase(',', CPP_TOKEN_COMMA);
|
||||||
|
OperCase(';', CPP_TOKEN_SEMICOLON);
|
||||||
|
OperCase('?', CPP_TOKEN_TERNARY_QMARK);
|
||||||
|
|
||||||
|
OperCase('@', CPP_TOKEN_JUNK);
|
||||||
|
OperCase('$', CPP_TOKEN_JUNK);
|
||||||
|
OperCase('\\', CPP_TOKEN_JUNK);
|
||||||
|
#undef OperCase
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_identifier:
|
||||||
|
if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_')){
|
||||||
|
fsm.emit_token = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_pound:
|
||||||
|
if (S.pp_state == LSPP_default){
|
||||||
|
if (c == ' ' || c == '\t' || c == '\r' || c == '\f' || c == '\v'){
|
||||||
|
fsm.state = LS_pound;
|
||||||
|
}
|
||||||
|
else if (c == '\n'){
|
||||||
|
fsm.emit_token = 1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
fsm.state = LS_pp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
switch (c){
|
||||||
|
case '#': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_pp:
|
||||||
|
if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_')){
|
||||||
|
fsm.emit_token = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_char:
|
||||||
|
switch(c){
|
||||||
|
case '\'': fsm.emit_token = 1; break;
|
||||||
|
case '\\': fsm.state = LS_char_slashed; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_char_slashed:
|
||||||
|
switch (c){
|
||||||
|
case '\r': case '\f': case '\v': break;
|
||||||
|
case '\n': fsm.state = LS_string; fsm.multi_line |= 1; break;
|
||||||
|
default: fsm.state = LS_char; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_string:
|
||||||
|
switch(c){
|
||||||
|
case '\"': fsm.emit_token = 1; break;
|
||||||
|
case '\\': fsm.state = LS_string_slashed; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_string_slashed:
|
||||||
|
switch (c){
|
||||||
|
case '\r': case '\f': case '\v': break;
|
||||||
|
case '\n': fsm.state = LS_string; fsm.multi_line |= 1; break;
|
||||||
|
default: fsm.state = LS_string; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_number:
|
||||||
|
if (c >= '0' && c <= '9'){
|
||||||
|
fsm.state = LS_number;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
switch (c){
|
||||||
|
case '.': fsm.state = LS_float; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_number0:
|
||||||
|
if (c >= '0' && c <= '9'){
|
||||||
|
fsm.state = LS_number;
|
||||||
|
}
|
||||||
|
else if (c == 'x'){
|
||||||
|
fsm.state = LS_hex;
|
||||||
|
}
|
||||||
|
else if (c == '.'){
|
||||||
|
fsm.state = LS_float;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
fsm.emit_token = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_float:
|
||||||
|
if (!(c >= '0' && c <= '9')){
|
||||||
|
switch (c){
|
||||||
|
case 'e': fsm.state = LS_crazy_float0; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_crazy_float0:
|
||||||
|
{
|
||||||
|
if ((c >= '0' && c <= '9') || c == '-'){
|
||||||
|
fsm.state = LS_crazy_float1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
fsm.emit_token = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_crazy_float1:
|
||||||
|
{
|
||||||
|
if (!(c >= '0' && c <= '9')){
|
||||||
|
fsm.emit_token = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_hex:
|
||||||
|
if (!(c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F')){
|
||||||
|
fsm.emit_token = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_dot:
|
||||||
|
if (c >= '0' && c <= '9'){
|
||||||
|
fsm.state = LS_float;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
switch (c){
|
||||||
|
case '.': fsm.state = LS_ellipsis; break;
|
||||||
|
case '*': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_ellipsis: fsm.emit_token = 1; break;
|
||||||
|
|
||||||
|
case LS_less:
|
||||||
|
switch (c){
|
||||||
|
case '<': fsm.state = LS_less_less; break;
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_less_less:
|
||||||
|
switch (c){
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_more:
|
||||||
|
switch (c){
|
||||||
|
case '>': fsm.state = LS_more_more; break;
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_more_more:
|
||||||
|
switch (c){
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_comment_pre:
|
||||||
|
switch (c){
|
||||||
|
case '/': fsm.state = LS_comment; break;
|
||||||
|
case '*': fsm.state = LS_comment_block; break;
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_comment:
|
||||||
|
switch (c){
|
||||||
|
case '\\': fsm.state = LS_comment_slashed; break;
|
||||||
|
case '\n': fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_comment_slashed:
|
||||||
|
switch (c){
|
||||||
|
case '\r': case '\f': case '\v': break;
|
||||||
|
default: fsm.state = LS_comment; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_comment_block:
|
||||||
|
switch (c){
|
||||||
|
case '*': fsm.state = LS_comment_block_ending; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_comment_block_ending:
|
||||||
|
switch (c){
|
||||||
|
case '*': fsm.state = LS_comment_block_ending; break;
|
||||||
|
case '/': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.state = LS_comment_block; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_minus:
|
||||||
|
switch (c){
|
||||||
|
case '>': fsm.state = LS_arrow; break;
|
||||||
|
case '-': fsm.emit_token = 1; break;
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_arrow:
|
||||||
|
switch (c){
|
||||||
|
case '*': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_and:
|
||||||
|
switch (c){
|
||||||
|
case '&': fsm.emit_token = 1; break;
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_or:
|
||||||
|
switch (c){
|
||||||
|
case '|': fsm.emit_token = 1; break;
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_plus:
|
||||||
|
switch (c){
|
||||||
|
case '+': fsm.emit_token = 1; break;
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_colon:
|
||||||
|
switch (c){
|
||||||
|
case ':': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_star:
|
||||||
|
switch (c){
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_modulo:
|
||||||
|
switch (c){
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_caret:
|
||||||
|
switch (c){
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_eq:
|
||||||
|
switch (c){
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LS_bang:
|
||||||
|
switch (c){
|
||||||
|
case '=': fsm.emit_token = 1; break;
|
||||||
|
default: fsm.emit_token = 1; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//fsm = main_fsm(fsm, S.pp_state, c);
|
||||||
S.fsm = fsm;
|
S.fsm = fsm;
|
||||||
}
|
}
|
||||||
if (S.fsm.emit_token == 0){
|
if (S.fsm.emit_token == 0){
|
||||||
|
|
|
@ -317,7 +317,7 @@ run_experiment(Experiment *exp, char *filename, int verbose, int chunks){
|
||||||
|
|
||||||
void
|
void
|
||||||
show_time(Times t, int repeats, char *type){
|
show_time(Times t, int repeats, char *type){
|
||||||
f32 speed_up = ((f32)t.handcoded) / t.fsm;
|
f32 speed_up = ((f32)t.handcoded) / (t.fsm);
|
||||||
printf(
|
printf(
|
||||||
"\n%s time for %d repeates\n"
|
"\n%s time for %d repeates\n"
|
||||||
OUTLINE("%lld")
|
OUTLINE("%lld")
|
||||||
|
@ -337,8 +337,8 @@ int main(){
|
||||||
|
|
||||||
int repeats = 100;
|
int repeats = 100;
|
||||||
int verbose_level = -1;
|
int verbose_level = -1;
|
||||||
int chunk_start = 0;
|
int chunk_start = 1;
|
||||||
int chunk_end = 1024;
|
int chunk_end = 16;
|
||||||
#define TEST_FILE "lexer_test.cpp"
|
#define TEST_FILE "lexer_test.cpp"
|
||||||
#define SINGLE_ITEM 0
|
#define SINGLE_ITEM 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue