1 #define TEOF 0 2 #define TNL 1 3 #define TSEMI 2 4 #define TBACKGND 3 5 #define TAND 4 6 #define TOR 5 7 #define TPIPE 6 8 #define TLP 7 9 #define TRP 8 10 #define TENDCASE 9 11 #define TENDBQUOTE 10 12 #define TREDIR 11 13 #define TWORD 12 14 #define TIF 13 15 #define TTHEN 14 16 #define TELSE 15 17 #define TELIF 16 18 #define TFI 17 19 #define TWHILE 18 20 #define TUNTIL 19 21 #define TFOR 20 22 #define TDO 21 23 #define TDONE 22 24 #define TBEGIN 23 25 #define TEND 24 26 #define TCASE 25 27 #define TESAC 26 28 #define TNOT 27 29 30 /* Array indicating which tokens mark the end of a list */ 31 const char tokendlist[] = { 32 1, 33 0, 34 0, 35 0, 36 0, 37 0, 38 0, 39 0, 40 1, 41 1, 42 1, 43 0, 44 0, 45 0, 46 1, 47 1, 48 1, 49 1, 50 0, 51 0, 52 0, 53 1, 54 1, 55 0, 56 1, 57 0, 58 1, 59 0, 60 }; 61 62 const char *const tokname[] = { 63 "end of file", 64 "newline", 65 "\";\"", 66 "\"&\"", 67 "\"&&\"", 68 "\"||\"", 69 "\"|\"", 70 "\"(\"", 71 "\")\"", 72 "\";;\"", 73 "\"`\"", 74 "redirection", 75 "word", 76 "\"if\"", 77 "\"then\"", 78 "\"else\"", 79 "\"elif\"", 80 "\"fi\"", 81 "\"while\"", 82 "\"until\"", 83 "\"for\"", 84 "\"do\"", 85 "\"done\"", 86 "\"{\"", 87 "\"}\"", 88 "\"case\"", 89 "\"esac\"", 90 "\"!\"", 91 }; 92 93 #define KWDOFFSET 13 94 95 const char *const parsekwd[] = { 96 "if", 97 "then", 98 "else", 99 "elif", 100 "fi", 101 "while", 102 "until", 103 "for", 104 "do", 105 "done", 106 "{", 107 "}", 108 "case", 109 "esac", 110 "!", 111 0 112 }; 113