aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser_keywords.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2011-12-26 19:11:54 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2011-12-26 19:11:54 -0800
commit3f16ace6784caab54fb054836ee93902e9701913 (patch)
tree6ae6170f86bd45ce7fd0dae4a4242bb8dc67c505 /parser_keywords.cpp
parent834ea94eb97d37c65fcbf2fcc3b69303f6fb7e24 (diff)
Initial C++ conversion
Diffstat (limited to 'parser_keywords.cpp')
-rw-r--r--parser_keywords.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/parser_keywords.cpp b/parser_keywords.cpp
new file mode 100644
index 00000000..1d4958cd
--- /dev/null
+++ b/parser_keywords.cpp
@@ -0,0 +1,72 @@
+/** \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"
+
+
+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" );
+}
+