]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - parser.h
Bash-4.3 patch 32
[thirdparty/bash.git] / parser.h
index 3c47dc96f0e226b344bbf7688f9d9a961230be6b..8d396dff08b06e4a927c6254040343e5a5775f8d 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -1,7 +1,7 @@
 /* parser.h -- Everything you wanted to know about the parser, but were
    afraid to ask. */
 
-/* Copyright (C) 1995, 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2010 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 #  include "input.h"
 
 /* Possible states for the parser that require it to do special things. */
-#define PST_CASEPAT    0x00001         /* in a case pattern list */
-#define PST_ALEXPNEXT  0x00002         /* expand next word for aliases */
-#define PST_ALLOWOPNBRC        0x00004         /* allow open brace for function def */
-#define PST_NEEDCLOSBRC        0x00008         /* need close brace */
-#define PST_DBLPAREN   0x00010         /* double-paren parsing */
-#define PST_SUBSHELL   0x00020         /* ( ... ) subshell */
-#define PST_CMDSUBST   0x00040         /* $( ... ) command substitution */
-#define PST_CASESTMT   0x00080         /* parsing a case statement */
-#define PST_CONDCMD    0x00100         /* parsing a [[...]] command */
-#define PST_CONDEXPR   0x00200         /* parsing the guts of [[...]] */
-#define PST_ARITHFOR   0x00400         /* parsing an arithmetic for command */
-#define PST_ALEXPAND   0x00800         /* OK to expand aliases - unused */
-#define PST_CMDTOKEN   0x01000         /* command token OK - unused */
-#define PST_COMPASSIGN 0x02000         /* parsing x=(...) compound assignment */
-#define PST_ASSIGNOK   0x04000         /* assignment statement ok in this context */
-#define PST_EOFTOKEN   0x08000         /* yylex checks against shell_eof_token */
-#define PST_REGEXP     0x10000         /* parsing an ERE/BRE as a single word */
-#define PST_HEREDOC    0x20000         /* reading body of here-document */
-#define PST_REPARSE    0x40000         /* re-parsing in parse_string_to_word_list */
+#define PST_CASEPAT    0x000001        /* in a case pattern list */
+#define PST_ALEXPNEXT  0x000002        /* expand next word for aliases */
+#define PST_ALLOWOPNBRC        0x000004        /* allow open brace for function def */
+#define PST_NEEDCLOSBRC        0x000008        /* need close brace */
+#define PST_DBLPAREN   0x000010        /* double-paren parsing */
+#define PST_SUBSHELL   0x000020        /* ( ... ) subshell */
+#define PST_CMDSUBST   0x000040        /* $( ... ) command substitution */
+#define PST_CASESTMT   0x000080        /* parsing a case statement */
+#define PST_CONDCMD    0x000100        /* parsing a [[...]] command */
+#define PST_CONDEXPR   0x000200        /* parsing the guts of [[...]] */
+#define PST_ARITHFOR   0x000400        /* parsing an arithmetic for command - unused */
+#define PST_ALEXPAND   0x000800        /* OK to expand aliases - unused */
+#define PST_EXTPAT     0x001000        /* parsing an extended shell pattern */
+#define PST_COMPASSIGN 0x002000        /* parsing x=(...) compound assignment */
+#define PST_ASSIGNOK   0x004000        /* assignment statement ok in this context */
+#define PST_EOFTOKEN   0x008000        /* yylex checks against shell_eof_token */
+#define PST_REGEXP     0x010000        /* parsing an ERE/BRE as a single word */
+#define PST_HEREDOC    0x020000        /* reading body of here-document */
+#define PST_REPARSE    0x040000        /* re-parsing in parse_string_to_word_list */
+#define PST_REDIRLIST  0x080000        /* parsing a list of redirections preceding a simple command name */
+
 
 /* Definition of the delimiter stack.  Needed by parse.y and bashhist.c. */
 struct dstack {
@@ -59,4 +61,13 @@ struct dstack {
   int delimiter_space;
 };
 
+/* States we can be in while scanning a ${...} expansion.  Shared between
+   parse.y and subst.c */
+#define DOLBRACE_PARAM 0x01
+#define DOLBRACE_OP    0x02
+#define DOLBRACE_WORD  0x04
+
+#define DOLBRACE_QUOTE 0x40    /* single quote is special in double quotes */
+#define DOLBRACE_QUOTE2        0x80    /* single quote is semi-special in double quotes */
+
 #endif /* _PARSER_H_ */