aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/parser_keywords.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser_keywords.cpp')
-rw-r--r--src/parser_keywords.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/parser_keywords.cpp b/src/parser_keywords.cpp
new file mode 100644
index 00000000..eb47f87f
--- /dev/null
+++ b/src/parser_keywords.cpp
@@ -0,0 +1,63 @@
+/** \file parser_keywords.c
+
+Functions having to do with parser keywords, like testing if a function is a block command.
+*/
+
+#include "config.h"
+
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "fallback.h"
+#include "common.h"
+#include "parser_keywords.h"
+
+bool parser_keywords_skip_arguments(const wcstring &cmd)
+{
+ return contains(cmd,
+ L"else",
+ L"begin");
+}
+
+
+bool parser_keywords_is_subcommand(const wcstring &cmd)
+{
+
+ return parser_keywords_skip_arguments(cmd) ||
+ contains(cmd,
+ L"command",
+ L"builtin",
+ L"while",
+ L"exec",
+ L"if",
+ L"and",
+ L"or",
+ L"not");
+
+}
+
+bool parser_keywords_is_block(const wcstring &word)
+{
+ return contains(word,
+ L"for",
+ L"while",
+ L"if",
+ L"function",
+ L"switch",
+ L"begin");
+}
+
+bool parser_keywords_is_reserved(const wcstring &word)
+{
+ return parser_keywords_is_block(word) ||
+ parser_keywords_is_subcommand(word) ||
+ contains(word,
+ L"end",
+ L"case",
+ L"else",
+ L"return",
+ L"continue",
+ L"break");
+}
+