]> git.ipfire.org Git - thirdparty/bash.git/blame - syntax.h
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / syntax.h
CommitLineData
28ef6c31
JA
1/* syntax.h -- Syntax definitions for the shell */
2
8868edaf 3/* Copyright (C) 2000, 2001, 2005, 2008, 2009-2020 Free Software Foundation, Inc.
28ef6c31
JA
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
3185942a
JA
7 Bash is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
28ef6c31 11
3185942a
JA
12 Bash is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
28ef6c31 16
3185942a
JA
17 You should have received a copy of the GNU General Public License
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
28ef6c31
JA
20
21#ifndef _SYNTAX_H_
22#define _SYNTAX_H_
23
24/* Defines for use by mksyntax.c */
25
26#define slashify_in_quotes "\\`$\"\n"
27#define slashify_in_here_document "\\`$"
28
29#define shell_meta_chars "()<>;&|"
30#define shell_break_chars "()<>;&| \t\n"
31
32#define shell_quote_chars "\"`'"
33
34#if defined (PROCESS_SUBSTITUTION)
35# define shell_exp_chars "$<>"
36#else
37# define shell_exp_chars "$"
38#endif
39
40#if defined (EXTENDED_GLOB)
41# define ext_glob_chars "@*+?!"
42#else
43# define ext_glob_chars ""
44#endif
45#define shell_glob_chars "*?[]^"
46
47/* Defines shared by mksyntax.c and the rest of the shell code. */
48
49/* Values for character flags in syntax tables */
50
51#define CWORD 0x0000 /* nothing special; an ordinary character */
52#define CSHMETA 0x0001 /* shell meta character */
53#define CSHBRK 0x0002 /* shell break character */
54#define CBACKQ 0x0004 /* back quote */
55#define CQUOTE 0x0008 /* shell quote character */
56#define CSPECL 0x0010 /* special character that needs quoting */
57#define CEXP 0x0020 /* shell expansion character */
58#define CBSDQUOTE 0x0040 /* characters escaped by backslash in double quotes */
59#define CBSHDOC 0x0080 /* characters escaped by backslash in here doc */
60#define CGLOB 0x0100 /* globbing characters */
61#define CXGLOB 0x0200 /* extended globbing characters */
62#define CXQUOTE 0x0400 /* cquote + backslash */
63#define CSPECVAR 0x0800 /* single-character shell variable name */
7117c2d2 64#define CSUBSTOP 0x1000 /* values of OP for ${word[:]OPstuff} */
0628567a 65#define CBLANK 0x2000 /* whitespace (blank) character */
28ef6c31
JA
66
67/* Defines for use by the rest of the shell. */
b80f6443
JA
68extern int sh_syntaxtab[];
69extern int sh_syntabsiz;
28ef6c31 70
7117c2d2
JA
71#define shellmeta(c) (sh_syntaxtab[(unsigned char)(c)] & CSHMETA)
72#define shellbreak(c) (sh_syntaxtab[(unsigned char)(c)] & CSHBRK)
73#define shellquote(c) (sh_syntaxtab[(unsigned char)(c)] & CQUOTE)
b80f6443
JA
74#define shellxquote(c) (sh_syntaxtab[(unsigned char)(c)] & CXQUOTE)
75
0628567a
JA
76#define shellblank(c) (sh_syntaxtab[(unsigned char)(c)] & CBLANK)
77
a0c0a00f
CR
78#define parserblank(c) ((c) == ' ' || (c) == '\t')
79
7117c2d2
JA
80#define issyntype(c, t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) != 0)
81#define notsyntype(c,t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) == 0)
28ef6c31
JA
82
83#if defined (PROCESS_SUBSTITUTION)
84# define shellexp(c) ((c) == '$' || (c) == '<' || (c) == '>')
85#else
86# define shellexp(c) ((c) == '$')
87#endif
88
89#if defined (EXTENDED_GLOB)
90# define PATTERN_CHAR(c) \
91 ((c) == '@' || (c) == '*' || (c) == '+' || (c) == '?' || (c) == '!')
92#else
93# define PATTERN_CHAR(c) 0
94#endif
95
96#define GLOB_CHAR(c) \
97 ((c) == '*' || (c) == '?' || (c) == '[' || (c) == ']' || (c) == '^')
98
99#define CTLESC '\001'
100#define CTLNUL '\177'
101
b80f6443
JA
102#if !defined (HAVE_ISBLANK) && !defined (isblank)
103# define isblank(x) ((x) == ' ' || (x) == '\t')
104#endif
105
28ef6c31 106#endif /* _SYNTAX_H_ */