home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / bin / sh / mktokens < prev    next >
Encoding:
Text File  |  1991-04-15  |  3.0 KB  |  94 lines

  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. # The following is a list of tokens.  The second column is nonzero if the
  40. # token marks the end of a list.  The third column is the name to print in
  41. # error messages.
  42.  
  43. cat > /tmp/ka$$ <<\!
  44. TEOF    1    end of file
  45. TNL    0    newline
  46. TSEMI    0    ";"
  47. TBACKGND 0    "&"
  48. TAND    0    "&&"
  49. TOR    0    "||"
  50. TPIPE    0    "|"
  51. TLP    0    "("
  52. TRP    1    ")"
  53. TENDCASE 1    ";;"
  54. TENDBQUOTE 1    "`"
  55. TREDIR    0    redirection
  56. TWORD    0    word
  57. TIF    0    "if"
  58. TTHEN    1    "then"
  59. TELSE    1    "else"
  60. TELIF    1    "elif"
  61. TFI    1    "fi"
  62. TWHILE    0    "while"
  63. TUNTIL    0    "until"
  64. TFOR    0    "for"
  65. TDO    1    "do"
  66. TDONE    1    "done"
  67. TBEGIN    0    "{"
  68. TEND    1    "}"
  69. TCASE    0    "case"
  70. TESAC    1    "esac"
  71. !
  72. nl=`wc -l /tmp/ka$$`
  73. exec > token.def
  74. awk '{print "#define " $1 " " NR-1}' /tmp/ka$$
  75. echo '
  76. /* Array indicating which tokens mark the end of a list */
  77. const char tokendlist[] = {'
  78. awk '{print "\t" $2 ","}' /tmp/ka$$
  79. echo '};
  80.  
  81. char *const tokname[] = {'
  82. sed -e 's/"/\\"/g' \
  83.     -e 's/[^     ]*[     ][     ]*[^     ]*[     ][     ]*\(.*\)/    "\1",/' \
  84.     /tmp/ka$$
  85. echo '};
  86. '
  87. sed 's/"//g' /tmp/ka$$ | awk '
  88. /TIF/{print "#define KWDOFFSET " NR-1; print ""; print "char *const parsekwd[] = {"}
  89. /TIF/,/neverfound/{print "    \"" $3 "\","}'
  90. echo '    0
  91. };'
  92.  
  93. rm /tmp/ka$$
  94.