diff options
Diffstat (limited to 'parser_keywords.c')
-rw-r--r-- | parser_keywords.c | 75 |
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" ); +} + |