#! /bin/sh
# $Id: lextoC,v 1.6 1997/04/25 06:40:03 zeller Exp $
# adapt lex template for C++ use

# Copyright (C) 1995 Technische Universitaet Braunschweig, Germany.
# Written by Andreas Zeller <zeller@ips.cs.tu-bs.de>.
# 
# This file is part of the ICE Library.
# 
# The ICE Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
# 
# The ICE Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Library General Public License for more details.
# 
# You should have received a copy of the GNU Library General Public
# License along with the ICE Library -- see the file COPYING.LIB.
# If not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# 
# ICE is the incremental configuration engine.
# Contact ice@ips.cs.tu-bs.de for details.

this=`basename $0`	
path=`dirname $0`

# prefer system V sed (does not strip initial space)
sed=sed
if [ -f /usr/5bin/sed ]; then
  sed=/usr/5bin/sed
fi

static=cat
if [ "$1" = -static ]; then
  static="/bin/sh $path/make-static"
  shift
fi

prefix=cat
if [ "$1" = -prefix ]; then
  prefix="$sed s!yy!$2!"
  shift 2
fi

if [ $# != 0 ]; then
  echo "$this: usage: $this [-static] [-prefix PREFIX]" >&2
  exit 1
fi
  
if [ ! -f lex.yy.c ]; then
  echo $this: lex.yy.c not found >&2
  exit 1
fi

head lex.yy.c | grep $this > /dev/null
if [ $? = 0 ]; then
  echo $this: lex.yy.c is already in C++ format >&2
  exit 1
fi

grep '@(#).*com/lib/l/ncform' lex.yy.c > /dev/null 
if [ $? = 0 ]; then
  lexpar=flex
fi

grep '@(#)ncform.*SMI' lex.yy.c > /dev/null
if [ $? = 0 ]; then
  lexpar=sun
fi

grep 'generated by flex' lex.yy.c > /dev/null
if [ $? = 0 ]; then
  lexpar=flex
fi

if [ "$lexpar" = "" ]; then
  echo "$this: cannot determine lex type -- fix lex.yy.c manually" >&2
  exit 1
fi
  
script=$path/$this.$lexpar

$sed -f $script lex.yy.c | $static | $prefix > lex.yy.C

diff -D__cplusplus lex.yy.c lex.yy.C > lex.tmp
$sed -e 's!#else *__cplusplus$!#else!
s!#endif *__cplusplus$!#endif /* __cplusplus */!' lex.tmp > lex.yy.c

rm -f lex.tmp
exit 0
