home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 mARCH / PCWK3A99.iso / Linux / DDD331 / DDD-3_1_.000 / DDD-3_1_ / ddd-3.1.1 / ddd / lextoC < prev    next >
Text File  |  1998-05-21  |  2KB  |  92 lines

  1. #! /bin/sh
  2. # $Id: lextoC,v 1.9 1998/05/21 18:45:58 zeller Exp $
  3. # adapt lex template for C++ use
  4.  
  5. # Copyright (C) 1995 Technische Universitaet Braunschweig, Germany.
  6. # Written by Andreas Zeller <zeller@ips.cs.tu-bs.de>.
  7. # This file is part of the ICE Library.
  8. # The ICE Library is free software; you can redistribute it and/or
  9. # modify it under the terms of the GNU Library General Public
  10. # License as published by the Free Software Foundation; either
  11. # version 2 of the License, or (at your option) any later version.
  12. # The ICE Library is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. # See the GNU Library General Public License for more details.
  16. # You should have received a copy of the GNU Library General Public
  17. # License along with the ICE Library -- see the file COPYING.LIB.
  18. # If not, write to the Free Software Foundation, Inc.,
  19. # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20. # ICE is the incremental configuration environment.
  21. # For details, see the ICE World-Wide-Web page, 
  22. # `http://www.cs.tu-bs.de/softech/ice/',
  23. # or send a mail to the ICE developers <ice@ips.cs.tu-bs.de>.
  24.  
  25. this=`basename $0`    
  26. path=`dirname $0`
  27.  
  28. # prefer system V sed (does not strip initial space)
  29. sed=sed
  30. if [ -f /usr/5bin/sed ]; then
  31.   sed=/usr/5bin/sed
  32. fi
  33.  
  34. static=cat
  35. if [ "$1" = -static ]; then
  36.   static="/bin/sh $path/make-static"
  37.   shift
  38. fi
  39.  
  40. prefix=cat
  41. if [ "$1" = -prefix ]; then
  42.   prefix="$sed s!yy!$2!g"
  43.   shift 2
  44. fi
  45.  
  46. if [ $# != 0 ]; then
  47.   echo "$this: usage: $this [-static] [-prefix PREFIX]" >&2
  48.   exit 1
  49. fi
  50.   
  51. if [ ! -f lex.yy.c ]; then
  52.   echo $this: lex.yy.c not found >&2
  53.   exit 1
  54. fi
  55.  
  56. head lex.yy.c | grep $this > /dev/null
  57. if [ $? = 0 ]; then
  58.   echo $this: lex.yy.c is already in C++ format >&2
  59.   exit 1
  60. fi
  61.  
  62. grep '@(#)ncform.*SMI' lex.yy.c > /dev/null
  63. if [ $? = 0 ]; then
  64.   lexpar=sun
  65. fi
  66.  
  67. grep 'generated by flex' lex.yy.c > /dev/null
  68. if [ $? = 0 ]; then
  69.   lexpar=flex
  70. fi
  71.  
  72. if [ "$lexpar" = "" ]; then
  73.   echo "$this: cannot determine lex type -- reverting to flex" >&2
  74.   lexpar=flex
  75. fi
  76.   
  77. script=$path/$this.$lexpar
  78.  
  79. $sed -f $script lex.yy.c | $static | $prefix > lex.yy.C
  80.  
  81. diff -D__cplusplus lex.yy.c lex.yy.C > lex.tmp
  82. $sed -e 's!#else *__cplusplus$!#else!
  83. s!#endif *__cplusplus$!#endif /* __cplusplus */!' lex.tmp > lex.yy.c
  84.  
  85. rm -f lex.tmp
  86. exit 0
  87.