diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2011-12-26 19:11:54 -0800 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2011-12-26 19:11:54 -0800 |
commit | 3f16ace6784caab54fb054836ee93902e9701913 (patch) | |
tree | 6ae6170f86bd45ce7fd0dae4a4242bb8dc67c505 /parser_keywords.cpp | |
parent | 834ea94eb97d37c65fcbf2fcc3b69303f6fb7e24 (diff) |
Initial C++ conversion
Diffstat (limited to 'parser_keywords.cpp')
-rw-r--r-- | parser_keywords.cpp | 72 |
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" ); +} + |