aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--parser.cpp7
-rw-r--r--parser.h12
2 files changed, 14 insertions, 5 deletions
diff --git a/parser.cpp b/parser.cpp
index 1ce6e2c..7c10445 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -80,11 +80,8 @@ State::get_next_state(gchar chr)
StateStart::StateStart() : State()
{
- transitions['\0'] = this;
- transitions[' '] = this;
- transitions['\r'] = this;
- transitions['\n'] = this;
- transitions['\v'] = this;
+ transitions['\0'] = this;
+ init(" \r\n\v");
}
void
diff --git a/parser.h b/parser.h
index dba304d..3c4f543 100644
--- a/parser.h
+++ b/parser.h
@@ -11,6 +11,18 @@ protected:
/* static transitions */
State *transitions[MAX_TRANSITIONS];
+ inline void
+ init(const gchar *chars, State *state)
+ {
+ while (*chars)
+ transitions[(int)*chars++] = state;
+ }
+ inline void
+ init(const gchar *chars)
+ {
+ init(chars, this);
+ }
+
public:
State();