1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*3e14f97fSRoger A. Faulkner * Copyright (c) 1982-2010 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6da2e3ebdSchin * Common Public License, Version 1.0 * 77c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10da2e3ebdSchin * http://www.opensource.org/licenses/cpl1.0.txt * 11da2e3ebdSchin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12da2e3ebdSchin * * 13da2e3ebdSchin * Information and Software Systems Research * 14da2e3ebdSchin * AT&T Research * 15da2e3ebdSchin * Florham Park NJ * 16da2e3ebdSchin * * 17da2e3ebdSchin * David Korn <dgk@research.att.com> * 18da2e3ebdSchin * * 19da2e3ebdSchin ***********************************************************************/ 20da2e3ebdSchin #pragma prototyped 21da2e3ebdSchin #include "shtable.h" 22da2e3ebdSchin #include <shell.h> 23da2e3ebdSchin #include "shlex.h" 24da2e3ebdSchin #include "FEATURE/options" 25da2e3ebdSchin 26da2e3ebdSchin /* 27da2e3ebdSchin * table of reserved words in shell language 28da2e3ebdSchin * This list must be in in ascii sorted order 29da2e3ebdSchin */ 30da2e3ebdSchin 31da2e3ebdSchin const Shtable_t shtab_reserved[] = 32da2e3ebdSchin { 33da2e3ebdSchin "!", NOTSYM, 34da2e3ebdSchin "[[", BTESTSYM, 35da2e3ebdSchin "case", CASESYM, 36da2e3ebdSchin "do", DOSYM, 37da2e3ebdSchin "done", DONESYM, 38da2e3ebdSchin "elif", ELIFSYM, 39da2e3ebdSchin "else", ELSESYM, 40da2e3ebdSchin "esac", ESACSYM, 41da2e3ebdSchin "fi", FISYM, 42da2e3ebdSchin "for", FORSYM, 43da2e3ebdSchin "function", FUNCTSYM, 44da2e3ebdSchin "if", IFSYM, 45da2e3ebdSchin "in", INSYM, 46da2e3ebdSchin #if SHOPT_NAMESPACE 47da2e3ebdSchin "namespace", NSPACESYM, 48da2e3ebdSchin #endif /* SHOPT_NAMESPACE */ 49da2e3ebdSchin "select", SELECTSYM, 50da2e3ebdSchin "then", THENSYM, 51da2e3ebdSchin "time", TIMESYM, 52da2e3ebdSchin "until", UNTILSYM, 53da2e3ebdSchin "while", WHILESYM, 54da2e3ebdSchin "{", LBRACE, 55da2e3ebdSchin "}", RBRACE, 56da2e3ebdSchin "", 0, 57da2e3ebdSchin }; 58da2e3ebdSchin 59da2e3ebdSchin const char e_unexpected[] = "unexpected"; 60da2e3ebdSchin const char e_unmatched[] = "unmatched"; 61da2e3ebdSchin const char e_endoffile[] = "end of file"; 62da2e3ebdSchin const char e_newline[] = "newline"; 63da2e3ebdSchin 64