1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00
cde/src/cmd/ksh93/data/lexstates.c
Martijn Dekker 441dcc0483 Upgrade licence to EPL 2.0
EPL 1.0 says, in section 7: "The Program (including Contributions)
may always be distributed subject to the version of the Agreement
under which it was received. In addition, after a new version of
the Agreement is published, Contributor may elect to distribute the
Program (including its Contributions) under the new version."

The Eclipse Foundation also encourage everyone to upgrade:
https://www.eclipse.org/legal/epl-2.0/faq.php#h.60mjudroo8e5
https://www.eclipse.org/legal/epl-2.0/faq.php#h.tci84nlsqpgw

Unfortunately the new Secondary License option is not available to
us as we're not the original copyright holders and don't have the
legal power to add one. So, no GPL compatibility. Sorry.
2022-07-28 05:46:08 +02:00

444 lines
16 KiB
C

/***********************************************************************
* *
* This software is part of the ast package *
* Copyright (c) 1982-2011 AT&T Intellectual Property *
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
* and is licensed under the *
* Eclipse Public License, Version 2.0 *
* *
* A copy of the License is available at *
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html *
* (with md5 checksum 84283fa8859daf213bdda5a9f8d1be1d) *
* *
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#include "shopt.h"
#include <ast.h>
#include "FEATURE/options"
#include "lexstates.h"
/* The ST_* state table names are defined in include/lexstates.h */
/*
* ST_BEGIN (0)
* This is the initial state for tokens
*/
static const char sh_lexstate0[256] =
{
S_EOF, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
#if SHOPT_CRNL
S_REG, 0, S_NLTOK,S_REG, S_REG, 0, S_REG, S_REG,
#else
S_REG, 0, S_NLTOK,S_REG, S_REG, S_REG, S_REG, S_REG,
#endif /* SHOPT_CRNL */
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
0, S_REG, S_REG, S_COM, S_REG, S_REG, S_OP, S_REG,
S_OP, S_OP, S_REG, S_REG, S_REG, S_REG, S_NAME, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_OP, S_OP, S_REG, S_OP, S_REG,
S_REG, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
S_NAME, S_NAME, S_NAME, S_REG, S_REG, S_REG, S_REG, S_NAME,
S_REG, S_NAME, S_NAME, S_RES, S_RES, S_RES, S_RES, S_NAME,
#if SHOPT_NAMESPACE
S_NAME, S_RES, S_NAME, S_NAME, S_NAME, S_NAME, S_RES, S_NAME,
#else
S_NAME, S_RES, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME, S_NAME,
#endif /* SHOPT_NAMESPACE */
S_NAME, S_NAME, S_NAME, S_RES, S_RES, S_RES, S_NAME, S_RES,
S_NAME, S_NAME, S_NAME, S_BRACE,S_OP, S_BRACE,S_TILDE,S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
};
/*
* ST_NAME
* This state is for identifiers
*/
static const char sh_lexstate1[256] =
{
S_EOF, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
#if SHOPT_CRNL
S_REG, S_BREAK,S_BREAK,S_REG, S_REG, S_BREAK,S_REG, S_REG,
#else
S_REG, S_BREAK,S_BREAK,S_REG, S_REG, S_REG, S_REG, S_REG,
#endif /* SHOPT_CRNL */
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_BREAK,S_EPAT, S_QUOTE,S_REG, S_DOL, S_EPAT, S_BREAK,S_LIT,
S_BREAK,S_BREAK,S_PAT, S_EPAT, S_REG, S_EPAT, S_DOT, S_REG,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_LABEL,S_BREAK,S_BREAK,S_EQ, S_BREAK,S_PAT,
S_EPAT, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACT,S_ESC, S_REG, S_REG, 0,
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACE,S_BREAK,S_BRACE,S_EPAT, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG, S_REG,
};
/*
* ST_NORM
*/
static const char sh_lexstate2[256] =
{
S_EOF, 0, 0, 0, 0, 0, 0, 0,
#if SHOPT_CRNL
0, S_BREAK,S_BREAK,0, 0, S_BREAK,0, 0,
#else
0, S_BREAK,S_BREAK,0, 0, 0, 0, 0,
#endif /* SHOPT_CRNL */
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S_BREAK,S_EPAT, S_QUOTE,0, S_DOL, S_EPAT, S_BREAK,S_LIT,
S_BREAK,S_BREAK,S_PAT, S_EPAT, 0, S_EPAT, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_COLON,S_BREAK,S_BREAK,0, S_BREAK,S_PAT,
S_EPAT, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_PAT, S_ESC, 0, 0, 0,
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACE,S_BREAK,S_BRACE,S_EPAT, 0,
};
/*
* ST_LIT
* for skipping over '...'
*/
static const char sh_lexstate3[256] =
{
S_EOF, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_NL, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, S_LIT,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, S_ESC2, 0, 0, 0
};
/*
* ST_QUOTE
* for skipping over "..." and `...`
*/
static const char sh_lexstate4[256] =
{
S_EOF, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_NL, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_QUOTE,0, S_DOL, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, S_ESC, 0, 0, 0,
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, S_RBRA, 0, 0
};
/*
* ST_NESTED, ST_QNEST
* for skipping over ?(...), [...]
*/
static const char sh_lexstate5[256] =
{
S_EOF, 0, 0, 0, 0, 0, 0, 0,
0, S_BLNK, S_NL, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S_BLNK, 0, S_QUOTE,0, S_DOL, 0, S_META, S_LIT,
S_PUSH, S_POP, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_POP, S_META, 0, S_META, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACT,S_ESC, S_POP, 0, 0,
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACE,S_META, S_POP, S_TILDE,0
};
/*
* ST_DOL
* Defines valid expansion characters
*/
static const char sh_lexstate6[256] =
{
S_EOF, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_SPC1, S_ERR, S_SPC1, S_SPC2, S_ERR, S_ERR, S_LIT,
S_PAR, S_ERR, S_SPC2, S_ERR, S_ERR, S_SPC2, S_ALP, S_ERR,
S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG,
S_DIG, S_DIG, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_SPC2,
S_SPC1, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
S_ALP, S_ALP, S_ALP, S_ERR, S_ERR, S_ERR, S_ERR, S_ALP,
S_ERR, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP, S_ALP,
S_ALP, S_ALP, S_ALP, S_LBRA, S_ERR, S_RBRA, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
};
/*
* ST_BRACE
* for skipping over ${...} until modifier
*/
static const char sh_lexstate7[256] =
{
S_EOF, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, 0, S_ERR, S_MOD2, 0, S_MOD2, S_ERR, S_ERR,
S_ERR, S_ERR, S_MOD1, S_MOD1, S_ERR, S_MOD1, S_DOT, S_MOD2,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_MOD1, S_ERR, S_ERR, S_MOD1, S_ERR, S_MOD1,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACT,S_ESC, S_ERR, S_ERR, 0,
S_ERR, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_ERR, S_ERR, S_POP, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR, S_ERR,
};
/*
* ST_DOLNAME
* This state is for $name
*/
static const char sh_lexstate8[256] =
{
S_EOF, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_EDOL, S_EDOL, S_EDOL, S_EDOL, 0,
S_EDOL,0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL, S_EDOL,
};
/*
* ST_MACRO
* This is used for macro expansion
*/
static const char sh_lexstate9[256] =
{
S_EOF, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_QUOTE,0, S_DOL, 0, S_PAT, S_LIT,
S_PAT, S_PAT, S_PAT, 0, S_COM, 0, S_DOT, S_SLASH,
S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG,
S_DIG, S_DIG, S_COLON,0, 0, S_EQ, 0, S_PAT,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACT,S_ESC, S_ENDCH,0, 0,
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, S_BRACE,S_PAT, S_ENDCH,0, 0
};
/*
* ST_MOD1
* for skipping over a string S in ${v-S}, ${v+S}, ${v:-S}, ${v:+S}
*/
static const char sh_lexstate11[256] =
{
S_EOF, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_NL, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_QUOTE,0, S_DOL, 0, 0, S_LIT,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, S_ESC, 0, 0, 0,
S_GRAVE,0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, S_RBRA, 0, 0
};
/*
* This must be kept synchronous with all the above and the ST_* definitions in lexstates.h
*/
const char *sh_lexrstates[ST_NONE] =
{
sh_lexstate0, sh_lexstate1, sh_lexstate2, sh_lexstate3,
sh_lexstate4, sh_lexstate5, sh_lexstate6, sh_lexstate7,
sh_lexstate8, sh_lexstate9, sh_lexstate5, sh_lexstate11
};
const char e_lexversion[] = "%d: invalid binary script version";
const char e_lexspace[] = "line %d: use space or tab to separate operators %c and %c";
const char e_lexslash[] = "line %d: $ not preceded by \\";
const char e_lexsyntax1[] = "syntax error at line %d: `%s' %s";
const char e_lexsyntax2[] = "syntax error: `%s' %s";
const char e_lexsyntax3[] = "syntax error at line %d: duplicate label %s";
const char e_lexsyntax4[] = "syntax error at line %d: invalid reference list";
const char e_lexsyntax5[] = "syntax error at line %d: `<<%s' here-document not contained within command substitution";
const char e_lexwarnvar[] = "line %d: in '((%s))', using '$' as in '$%.*s' is slower and can introduce rounding errors";
const char e_lexarithwarn[] = "line %d: %s is slower than ((%.*s%s";
const char e_lexlabignore[] = "line %d: label %s ignored";
const char e_lexlabunknown[] = "line %d: %s unknown label";
const char e_lexobsolete1[] = "line %d: `...` obsolete, use $(...)";
const char e_lexobsolete2[] = "line %d: -a obsolete, use -e";
const char e_lexobsolete3[] = "line %d: '=' obsolete, use '=='";
const char e_lexobsolete4[] = "line %d: [[ ... %s ... ]] obsolete, use ((... %s ...))";
const char e_lexobsolete5[] = "line %d: set %s obsolete";
const char e_lexobsolete6[] = "line %d: `{' instead of `in' is obsolete";
const char e_lexusebrace[] = "line %d: use braces to avoid ambiguities with $id[...]";
const char e_lexusequote[] = "line %d: %c within ${} should be quoted";
const char e_lexescape[] = "line %d: escape %c to avoid ambiguities";
const char e_lexquote[] = "line %d: quote %c to avoid ambiguities";
const char e_lexnested[] = "line %d: spaces required for nested subshell";
const char e_lexbadchar[] = "%c: invalid character in expression - %s";
const char e_lexfuture[] = "line %d: \\ in front of %c reserved for future use";
const char e_lexlongquote[] = "line %d: %c quote may be missing";
const char e_lexzerobyte[] = "zero byte";
const char e_lexemptyfor[] = "line %d: empty for list";
const char e_lextypeset[] = "line %d: %s invalid typeset option order";
const char e_lexcharclass[] = "line %d: '^' as first character in character class not portable";