From: Michael Stapelberg Date: Thu, 20 Oct 2011 21:38:46 +0000 (+0100) Subject: cfgparse: eliminate absolute states, use yy_push_state/yy_pop_state X-Git-Tag: 4.1~92^2~25 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=caee0a0fdac257ea8e4394e26f453007a3e87db5;p=i3%2Fi3 cfgparse: eliminate absolute states, use yy_push_state/yy_pop_state This fixes a problem with workspace assignments. I tested i3 -C with three user configs (Thanks SardemFF7, julien, xeen) and did not notice any problems. --- diff --git a/src/cfgparse.l b/src/cfgparse.l index 2278a81e..88e6ad2c 100644 --- a/src/cfgparse.l +++ b/src/cfgparse.l @@ -136,7 +136,7 @@ EOL (\r?\n) return STR; } [^\n]+ { yy_pop_state(); yylval.string = sstrdup(yytext); return STR; } -[a-zA-Z0-9_-]+ { yylval.string = sstrdup(yytext); return OUTPUT; } +[a-zA-Z0-9_-]+ { yy_pop_state(); yylval.string = sstrdup(yytext); return OUTPUT; } ^[ \t]*#[^\n]* { return TOKCOMMENT; } [0-9a-fA-F]+ { yylval.string = sstrdup(yytext); return HEX; } [ \t]*→[ \t]* { BEGIN(WANT_STRING); } @@ -147,8 +147,8 @@ mode { return TOKMODE; } bind { yy_push_state(WANT_STRING); yy_push_state(EAT_WHITESPACE); yy_push_state(EAT_WHITESPACE); return TOKBINDCODE; } bindcode { yy_push_state(WANT_STRING); yy_push_state(EAT_WHITESPACE); yy_push_state(EAT_WHITESPACE); return TOKBINDCODE; } bindsym { yy_push_state(BINDSYM_COND); yy_push_state(EAT_WHITESPACE); return TOKBINDSYM; } -floating_modifier { BEGIN(INITIAL); return TOKFLOATING_MODIFIER; } -workspace { BEGIN(INITIAL); return TOKWORKSPACE; } +floating_modifier { return TOKFLOATING_MODIFIER; } +workspace { return TOKWORKSPACE; } output { yy_push_state(OUTPUT_COND); yy_push_state(EAT_WHITESPACE); return TOKOUTPUT; } terminal { WS_STRING; return TOKTERMINAL; } font { WS_STRING; return TOKFONT; } @@ -234,7 +234,6 @@ title { yy_push_state(WANT_QSTRING); return TOK_TITLE; /* if ASSIGN_COND then */ if (yy_start_stack_ptr > 0) yy_pop_state(); - else BEGIN(INITIAL); /* yylval will be the string, but without quotes */ char *copy = sstrdup(yytext+1); copy[strlen(copy)-1] = '\0';