summaryrefslogtreecommitdiff
path: root/Src/zsh.h
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-01-19 21:36:00 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-01-19 21:36:00 +0000
commitde272e0309bc1739f13cc8271a2f94bcde7ba23c (patch)
treed094cb847e41520af34ef250e4c82eea66f52016 /Src/zsh.h
parenta5729be83502b3d2ba93e38a485393c9af13a935 (diff)
downloadzsh-de272e0309bc1739f13cc8271a2f94bcde7ba23c.tar.gz
zsh-de272e0309bc1739f13cc8271a2f94bcde7ba23c.zip
23115: ";|" at end of case clause causes later patterns to be tested
Diffstat (limited to 'Src/zsh.h')
-rw-r--r--Src/zsh.h33
1 files changed, 18 insertions, 15 deletions
diff --git a/Src/zsh.h b/Src/zsh.h
index 27c344809..e2eb2544a 100644
--- a/Src/zsh.h
+++ b/Src/zsh.h
@@ -246,37 +246,38 @@ enum {
DOUTPAR,
AMPERBANG, /* 30 */
SEMIAMP,
+ SEMIBAR,
DOUTBRACK,
STRING,
- ENVSTRING,
- ENVARRAY, /* 35 */
+ ENVSTRING, /* 35 */
+ ENVARRAY,
ENDINPUT,
LEXERR,
/* Tokens for reserved words */
BANG, /* ! */
- DINBRACK, /* [[ */
- INBRACE, /* { */ /* 40 */
+ DINBRACK, /* [[ */ /* 40 */
+ INBRACE, /* { */
OUTBRACE, /* } */
CASE, /* case */
COPROC, /* coproc */
- DOLOOP, /* do */
- DONE, /* done */ /* 45 */
+ DOLOOP, /* do */ /* 45 */
+ DONE, /* done */
ELIF, /* elif */
ELSE, /* else */
ZEND, /* end */
- ESAC, /* esac */
- FI, /* fi */ /* 50 */
+ ESAC, /* esac */ /* 50 */
+ FI, /* fi */
FOR, /* for */
FOREACH, /* foreach */
FUNC, /* function */
- IF, /* if */
- NOCORRECT, /* nocorrect */ /* 55 */
+ IF, /* if */ /* 55 */
+ NOCORRECT, /* nocorrect */
REPEAT, /* repeat */
SELECT, /* select */
THEN, /* then */
- TIME, /* time */
- UNTIL, /* until */ /* 60 */
+ TIME, /* time */ /* 60 */
+ UNTIL, /* until */
WHILE /* while */
};
@@ -783,12 +784,14 @@ struct eccstr {
#define WC_TRY_SKIP(C) wc_data(C)
#define WCB_TRY(O) wc_bld(WC_TRY, (O))
-#define WC_CASE_TYPE(C) (wc_data(C) & 3)
+#define WC_CASE_TYPE(C) (wc_data(C) & 7)
#define WC_CASE_HEAD 0
#define WC_CASE_OR 1
#define WC_CASE_AND 2
-#define WC_CASE_SKIP(C) (wc_data(C) >> 2)
-#define WCB_CASE(T,O) wc_bld(WC_CASE, ((T) | ((O) << 2)))
+#define WC_CASE_TESTAND 3
+#define WC_CASE_FREE (3) /* Next bit available in integer */
+#define WC_CASE_SKIP(C) (wc_data(C) >> WC_CASE_FREE)
+#define WCB_CASE(T,O) wc_bld(WC_CASE, ((T) | ((O) << WC_CASE_FREE)))
#define WC_IF_TYPE(C) (wc_data(C) & 3)
#define WC_IF_HEAD 0