| The Android Open Source Project | dd7bc33 | 2009-03-03 19:32:55 -0800 | [diff] [blame] | 1 | #!/bin/sh - | 
|  | 2 | #	$NetBSD: mktokens,v 1.10 2003/08/22 11:22:23 agc Exp $ | 
|  | 3 | # | 
|  | 4 | # Copyright (c) 1991, 1993 | 
|  | 5 | #	The Regents of the University of California.  All rights reserved. | 
|  | 6 | # | 
|  | 7 | # This code is derived from software contributed to Berkeley by | 
|  | 8 | # Kenneth Almquist. | 
|  | 9 | # | 
|  | 10 | # Redistribution and use in source and binary forms, with or without | 
|  | 11 | # modification, are permitted provided that the following conditions | 
|  | 12 | # are met: | 
|  | 13 | # 1. Redistributions of source code must retain the above copyright | 
|  | 14 | #    notice, this list of conditions and the following disclaimer. | 
|  | 15 | # 2. Redistributions in binary form must reproduce the above copyright | 
|  | 16 | #    notice, this list of conditions and the following disclaimer in the | 
|  | 17 | #    documentation and/or other materials provided with the distribution. | 
|  | 18 | # 3. Neither the name of the University nor the names of its contributors | 
|  | 19 | #    may be used to endorse or promote products derived from this software | 
|  | 20 | #    without specific prior written permission. | 
|  | 21 | # | 
|  | 22 | # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | 
|  | 23 | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
|  | 24 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
|  | 25 | # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | 
|  | 26 | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 
|  | 27 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | 
|  | 28 | # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 
|  | 29 | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | 
|  | 30 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 
|  | 31 | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 
|  | 32 | # SUCH DAMAGE. | 
|  | 33 | # | 
|  | 34 | #	@(#)mktokens	8.1 (Berkeley) 5/31/93 | 
|  | 35 |  | 
|  | 36 | # The following is a list of tokens.  The second column is nonzero if the | 
|  | 37 | # token marks the end of a list.  The third column is the name to print in | 
|  | 38 | # error messages. | 
|  | 39 |  | 
|  | 40 | cat > /tmp/ka$$ <<\! | 
|  | 41 | TEOF	1	end of file | 
|  | 42 | TNL	0	newline | 
|  | 43 | TSEMI	0	";" | 
|  | 44 | TBACKGND 0	"&" | 
|  | 45 | TAND	0	"&&" | 
|  | 46 | TOR	0	"||" | 
|  | 47 | TPIPE	0	"|" | 
|  | 48 | TLP	0	"(" | 
|  | 49 | TRP	1	")" | 
|  | 50 | TENDCASE 1	";;" | 
|  | 51 | TENDBQUOTE 1	"`" | 
|  | 52 | TREDIR	0	redirection | 
|  | 53 | TWORD	0	word | 
|  | 54 | TIF	0	"if" | 
|  | 55 | TTHEN	1	"then" | 
|  | 56 | TELSE	1	"else" | 
|  | 57 | TELIF	1	"elif" | 
|  | 58 | TFI	1	"fi" | 
|  | 59 | TWHILE	0	"while" | 
|  | 60 | TUNTIL	0	"until" | 
|  | 61 | TFOR	0	"for" | 
|  | 62 | TDO	1	"do" | 
|  | 63 | TDONE	1	"done" | 
|  | 64 | TBEGIN	0	"{" | 
|  | 65 | TEND	1	"}" | 
|  | 66 | TCASE	0	"case" | 
|  | 67 | TESAC	1	"esac" | 
|  | 68 | TNOT	0	"!" | 
|  | 69 | ! | 
|  | 70 | nl=`wc -l /tmp/ka$$` | 
|  | 71 | exec > token.h | 
|  | 72 | awk '{print "#define " $1 " " NR-1}' /tmp/ka$$ | 
|  | 73 | echo ' | 
|  | 74 | /* Array indicating which tokens mark the end of a list */ | 
|  | 75 | const char tokendlist[] = {' | 
|  | 76 | awk '{print "\t" $2 ","}' /tmp/ka$$ | 
|  | 77 | echo '}; | 
|  | 78 |  | 
|  | 79 | const char *const tokname[] = {' | 
|  | 80 | sed -e 's/"/\\"/g' \ | 
|  | 81 | -e 's/[^	 ]*[	 ][	 ]*[^	 ]*[	 ][	 ]*\(.*\)/	"\1",/' \ | 
|  | 82 | /tmp/ka$$ | 
|  | 83 | echo '}; | 
|  | 84 | ' | 
|  | 85 | sed 's/"//g' /tmp/ka$$ | awk ' | 
|  | 86 | /TIF/{print "#define KWDOFFSET " NR-1; print ""; | 
|  | 87 | print "const char *const parsekwd[] = {"} | 
|  | 88 | /TIF/,/neverfound/{print "	\"" $3 "\","}' | 
|  | 89 | echo '	0 | 
|  | 90 | };' | 
|  | 91 |  | 
|  | 92 | rm /tmp/ka$$ |