diff options
Diffstat (limited to 'src/parser.cpp')
-rw-r--r-- | src/parser.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 6fefe80..6e32d87 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -274,10 +274,7 @@ StringBuildingMachine::input(gchar chr) throw (State::Error) return NULL; } - if (state) - goto *state; - - /* NULL state */ +MICROSTATE_START; switch (chr) { case CTL_KEY('Q'): case CTL_KEY('R'): set(&&StateEscaped); break; @@ -291,7 +288,7 @@ StringBuildingMachine::input(gchar chr) throw (State::Error) return NULL; StateLower: - set(NULL); + set(StateStart); if (chr != CTL_KEY('V')) return g_strdup(CHR2STR(g_ascii_tolower(chr))); @@ -300,7 +297,7 @@ StateLower: return NULL; StateUpper: - set(NULL); + set(StateStart); if (chr != CTL_KEY('W')) return g_strdup(CHR2STR(g_ascii_toupper(chr))); @@ -319,7 +316,7 @@ StateCtlE: set(&&StateCtlEU); break; default: - set(NULL); + set(StateStart); return g_strdup((gchar []){CTL_KEY('E'), chr, '\0'}); } @@ -331,7 +328,7 @@ StateCtlEU: return NULL; undo.push_obj(qregspec_machine) = NULL; - set(NULL); + set(StateStart); return g_strdup(CHR2STR(reg->get_integer())); StateCtlEQ: @@ -340,11 +337,11 @@ StateCtlEQ: return NULL; undo.push_obj(qregspec_machine) = NULL; - set(NULL); + set(StateStart); return reg->get_string(); StateEscaped: - set(NULL); + set(StateStart); return g_strdup(CHR2STR(chr)); } |