aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser_keywords.c
diff options
context:
space:
mode:
Diffstat (limited to 'parser_keywords.c')
-rw-r--r--parser_keywords.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/parser_keywords.c b/parser_keywords.c
new file mode 100644
index 00000000..37b3dcd8
--- /dev/null
+++ b/parser_keywords.c
@@ -0,0 +1,75 @@
+/** \file parser_keywords.c
+
+
+*/
+
+#include "config.h"
+
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "fallback.h"
+//#include "util.h"
+
+//#include "wutil.h"
+#include "common.h"
+#include "parser_keywords.h"
+
+
+int parser_keywords_is_switch( const wchar_t *cmd )
+{
+ if( wcscmp( cmd, L"--" ) == 0 )
+ return ARG_SKIP;
+ else
+ return cmd[0] == L'-';
+}
+
+int parser_keywords_skip_arguments( const wchar_t *cmd )
+{
+ return CONTAINS( cmd,
+ L"else",
+ L"begin" );
+}
+
+
+int parser_keywords_is_subcommand( const wchar_t *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" );
+
+}
+
+int parser_keywords_is_block( const wchar_t *word)
+{
+ return CONTAINS( word,
+ L"for",
+ L"while",
+ L"if",
+ L"function",
+ L"switch",
+ L"begin" );
+}
+
+int parser_keywords_is_reserved( const wchar_t *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" );
+}
+