aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'parser.h')
-rw-r--r--parser.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/parser.h b/parser.h
index 3eba297..8ceb3e2 100644
--- a/parser.h
+++ b/parser.h
@@ -50,6 +50,14 @@ private:
State *custom(gchar chr);
};
+class StateControl : public State {
+public:
+ StateControl();
+
+private:
+ State *custom(gchar chr);
+};
+
#include "goto.h"
extern gint macro_pc;
@@ -57,6 +65,7 @@ extern gint macro_pc;
extern struct States {
StateStart start;
StateLabel label;
+ StateControl control;
} states;
extern enum Mode {
@@ -64,6 +73,11 @@ extern enum Mode {
MODE_PARSE_ONLY
} mode;
+#define BEGIN_EXEC(STATE) G_STMT_START { \
+ if (mode != MODE_NORMAL) \
+ return STATE; \
+} G_STMT_END
+
extern gchar *strings[2];
bool macro_execute(const gchar *macro);