aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/parser_keywords.cpp
blob: 4a99dd94bccb8a53b75b965ddcab91da1740fa5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Functions having to do with parser keywords, like testing if a function is a block command.
#include "config.h"  // IWYU pragma: keep

#include "parser_keywords.h"
#include "common.h"
#include "fallback.h"  // IWYU pragma: keep

bool parser_keywords_skip_arguments(const wcstring &cmd) {
    return contains(cmd, L"else", L"begin");
}

bool parser_keywords_is_subcommand(const wcstring &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");
}

bool parser_keywords_is_block(const wcstring &word) {
    return contains(word, L"for", L"while", L"if", L"function", L"switch", L"begin");
}

bool parser_keywords_is_reserved(const wcstring &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");
}