#pragma prototyped
#ifndef S_BREAK
#define S_BREAK 1
#define S_EOF 2
#define S_NL 3
#define S_RES 4
#define S_NAME 5
#define S_REG 6
#define S_TILDE 7
#define S_PUSH 8
#define S_POP 9
#define S_BRACT 10
#define S_LIT 11
#define S_NLTOK 12
#define S_OP 13
#define S_PAT 14
#define S_EPAT 15
#define S_EQ 16
#define S_COM 17
#define S_MOD1 18
#define S_MOD2 19
#define S_ERR 20
#define S_SPC1 21
#define S_SPC2 22
#define S_DIG 23
#define S_ALP 24
#define S_LBRA 25
#define S_RBRA 26
#define S_PAR 27
#define S_ENDCH 28
#define S_SLASH 29
#define S_COLON 30
#define S_LABEL 31
#define S_EDOL 32
#define S_BRACE 33
#define S_DOT 34
#define S_META 35
#define S_SPACE S_BREAK
#define S_DELIM S_RES
#define S_MBYTE S_NAME
#define S_BLNK 36
#define S_QUOTE 37
#define S_GRAVE 38
#define S_ESC 39
#define S_DOL 40
#define S_ESC2 41
#define ST_BEGIN 0
#define ST_NAME 1
#define ST_NORM 2
#define ST_LIT 3
#define ST_QUOTE 4
#define ST_NESTED 5
#define ST_DOL 6
#define ST_BRACE 7
#define ST_DOLNAME 8
#define ST_MACRO 9
#define ST_QNEST 10
#define ST_NONE 11
#include "FEATURE/locale"
#if _hdr_wchar
# include <wchar.h>
# if _hdr_wctype
# include <wctype.h>
# undef isalpha
# define isalpha(x) iswalpha(x)
# if defined(iswblank) || _lib_iswblank
# undef isblank
# define isblank(x) iswblank(x)
# else
# if _lib_wctype && _lib_iswctype
# define _lib_iswblank -1
# undef isblank
# define isblank(x) local_iswblank(x)
extern int local_iswblank(wchar_t);
# endif
# endif
# endif
#endif
#ifndef isblank
# define isblank(x) ((x)==' '||(x)=='\t')
#endif
#undef LEN
#if SHOPT_MULTIBYTE
static int NXT, LEN;
# define isaname(c) ((c)>0xff?isalpha(c): sh_lexstates[ST_NAME][(c)]==0)
# define isaletter(c) ((c)>0xff?isalpha(c): sh_lexstates[ST_DOL][(c)]==S_ALP && (c)!='.')
#else
# undef mbwide
# define mbwide() (0)
# define LEN 1
# define isaname(c) (sh_lexstates[ST_NAME][c]==0)
# define isaletter(c) (sh_lexstates[ST_DOL][c]==S_ALP && (c)!='.')
#endif
#define STATE(s,c) (mbwide()?(c=fcmbstate(s,&NXT,&LEN),NXT):s[c=fcget()])
#define isadigit(c) (sh_lexstates[ST_DOL][c]==S_DIG)
#define isastchar(c) ((c)=='@' || (c)=='*')
#define isexp(c) (sh_lexstates[ST_MACRO][c]==S_PAT||(c)=='$'||(c)=='`')
#define ismeta(c) (sh_lexstates[ST_NAME][c]==S_BREAK)
extern char *sh_lexstates[ST_NONE];
extern const char *sh_lexrstates[ST_NONE];
extern const char e_lexversion[];
extern const char e_lexspace[];
extern const char e_lexslash[];
extern const char e_lexlabignore[];
extern const char e_lexlabunknown[];
extern const char e_lexsyntax1[];
extern const char e_lexsyntax2[];
extern const char e_lexsyntax3[];
extern const char e_lexobsolete1[];
extern const char e_lexobsolete2[];
extern const char e_lexobsolete3[];
extern const char e_lexobsolete4[];
extern const char e_lexobsolete5[];
extern const char e_lexobsolete6[];
extern const char e_lexusebrace[];
extern const char e_lexusequote[];
extern const char e_lexescape[];
extern const char e_lexquote[];
extern const char e_lexnested[];
extern const char e_lexbadchar[];
extern const char e_lexlongquote[];
extern const char e_lexfuture[];
extern const char e_lexzerobyte[];
extern const char e_lexemptyfor[];
#endif