source: trunk/minix/commands/ash/mktokens@ 9

Last change on this file since 9 was 9, checked in by Mattia Monga, 14 years ago

Minix 3.1.2a

File size: 3.2 KB
Line 
1#!/bin/sh -
2#
3# Copyright (c) 1991 The Regents of the University of California.
4# All rights reserved.
5#
6# This code is derived from software contributed to Berkeley by
7# Kenneth Almquist.
8#
9# Redistribution and use in source and binary forms, with or without
10# modification, are permitted provided that the following conditions
11# are met:
12# 1. Redistributions of source code must retain the above copyright
13# notice, this list of conditions and the following disclaimer.
14# 2. Redistributions in binary form must reproduce the above copyright
15# notice, this list of conditions and the following disclaimer in the
16# documentation and/or other materials provided with the distribution.
17# 3. All advertising materials mentioning features or use of this software
18# must display the following acknowledgement:
19# This product includes software developed by the University of
20# California, Berkeley and its contributors.
21# 4. Neither the name of the University nor the names of its contributors
22# may be used to endorse or promote products derived from this software
23# without specific prior written permission.
24#
25# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35# SUCH DAMAGE.
36#
37# @(#)mktokens 5.1 (Berkeley) 3/7/91
38
39# All calls to awk removed, because Minix bawk is deficient. (kjb)
40
41# The following is a list of tokens. The second column is nonzero if the
42# token marks the end of a list. The third column is the name to print in
43# error messages.
44
45cat > /tmp/ka$$ <<\!
46TEOF 1 end of file
47TNL 0 newline
48TSEMI 0 ";"
49TBACKGND 0 "&"
50TAND 0 "&&"
51TOR 0 "||"
52TPIPE 0 "|"
53TLP 0 "("
54TRP 1 ")"
55TENDCASE 1 ";;"
56TENDBQUOTE 1 "`"
57TREDIR 0 redirection
58TWORD 0 word
59TIF 0 "if"
60TTHEN 1 "then"
61TELSE 1 "else"
62TELIF 1 "elif"
63TFI 1 "fi"
64TWHILE 0 "while"
65TUNTIL 0 "until"
66TFOR 0 "for"
67TDO 1 "do"
68TDONE 1 "done"
69TBEGIN 0 "{"
70TEND 1 "}"
71TCASE 0 "case"
72TESAC 1 "esac"
73!
74nl=`wc -l /tmp/ka$$`
75exec > token.def
76i=0
77while read line
78do
79 set -$- $line
80 echo "#define $1 $i"
81 i=`expr $i + 1`
82done </tmp/ka$$
83echo '
84/* Array indicating which tokens mark the end of a list */
85const char tokendlist[] = {'
86while read line
87do
88 set -$- $line
89 echo " $2,"
90done </tmp/ka$$
91echo '};
92
93char *const tokname[] = {'
94sed -e 's/"/\\"/g' \
95 -e 's/[^ ]*[ ][ ]*[^ ]*[ ][ ]*\(.*\)/ "\1",/' \
96 /tmp/ka$$
97echo '};
98'
99i=0
100go=
101sed 's/"//g' /tmp/ka$$ |
102 while read line
103 do
104 set -$- $line
105 if [ "$1" = TIF ]
106 then
107 echo "#define KWDOFFSET $i"
108 echo
109 echo "char *const parsekwd[] = {"
110 go=true
111 fi
112 if [ "$go" ]
113 then
114 echo " \"$3\","
115 fi
116 i=`expr $i + 1`
117 done
118echo ' 0
119};'
120
121rm /tmp/ka$$
Note: See TracBrowser for help on using the repository browser.