aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser_keywords.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2007-04-22 19:50:26 +1000
committerGravatar axel <axel@liljencrantz.se>2007-04-22 19:50:26 +1000
commit45412f2b1f9b1b97fce85533a9d3fe0309e5c090 (patch)
tree2267da7a24656d95161a900e4a71fceb27df9f94 /parser_keywords.c
parente9790db64a642bedb7c359c634e84980e523e627 (diff)
Move keyword detection code to separate file
darcs-hash:20070422095026-ac50b-77a840e2830370f46b7a48fd8863095d2cd7a5f0.gz
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" );
+}
+