#!/bin/bash

if [ ! $# = 4 ]; then
	echo Usage: makekeywords \{ def \| dec \} enum-type-name search-for output-file;
	exit 0;
fi

KW=`cat keyword.list | grep ^$3 | cut -f 2`
TOKEN=`cat keyword.list | tr -s ' ' ',' | tr -s '\t' ',' | tr -s ',' ',' | grep ^$3 | cut -d ',' -f 2,3`
SUFFIX=$3_

rm -f $4

if [ $1 = "def" ]; then

    echo -n Making $2 definitions\ 

    echo static struct \{          >>$4
    echo "  ""$2"Id id\;           >>$4
    echo "  "const char\* name\;   >>$4
    echo "  "const Value\* value\; >>$4  
    echo \} s"$2"Token[] = \{      >>$4
    echo { "$SUFFIX"NOTVALID, 0, NULL }, >>$4
    for i in $TOKEN
    do
	TOKENID=`echo $i | cut -d ',' -f 1`
	TOKENNAME=`echo $i | cut -d ',' -f 2`
	echo { $SUFFIX$TOKENID, $TOKENNAME, NULL }, >>$4
	echo -n .
    done
    echo { "$SUFFIX"NOT_LISTED_ABOVE_AND_WITHOUT_TRAILING_COMMA, NULL, NULL } >>$4
    echo }\; >>$4
    echo

else

    echo -n Making $2 declarations\ 

    echo enum "$2"Id {      >>$4
    echo "$SUFFIX"NOTVALID, >>$4
    for i in $KW
    do
	    echo $SUFFIX$i, >>$4
	    echo -n .
    done
    echo "$SUFFIX"NOT_LISTED_ABOVE_AND_WITHOUT_TRAILING_COMMA >>$4
    echo }\; >>$4
    echo

fi
