#!/bin/sh
#------------------------------------------------------------------------------
# generate NeWSSysTokens from systokenlist
# afb 2/92
#------------------------------------------------------------------------------

	infile=systokenlist
	modulename=NeWSSysTokens

definition=`echo $modulename | sed 's/\(...........\).*/\1/'`.od
module=`echo $modulename | sed 's/\(...........\).*/\1/'`.om

for file in "$definition" "$module"
do	if [ -r "$file" ]
	then	[ -d old ] || mkdir old
		mv "$file" old
	fi
done

#------------------------------------------------------------------------------
script1='
BEGIN	{	noftokens = 0; maxtokenlen = 0;
	}
	{	++ noftokens;
		if (length($1) > maxtokenlen)
			maxtokenlen = length($1);
	}
END	{	printf "numberOfTokens = %d;\n", noftokens
		printf "maxtokenlen = %d;\n", maxtokenlen
	}
'
#------------------------------------------------------------------------------

date=`date +'AFB %m/%y' | sed 's/AFB 0\([0-9]\)/ AFB \1/`

#------------------------------------------------------------------------------
{	echo '(* Ulm'"'"'s Oberon Library   --    '"$date"' *)'
	echo '(* (c) University of Ulm, SAI, D-7900 Ulm *)'
	echo; echo "DEFINITION $modulename;"; echo;
	echo "   CONST"
	sed '/^#/d; /^$/d; s/^[0-9]//' <"$infile" |
		awk "$script1" |
		sed 's/^/      /'
	cat <<"eof"

   TYPE
      TokenName = ARRAY maxtokenlen + 1 OF CHAR;
      SysToken =
	 RECORD
	    name: TokenName;
	    group: SHORTINT;
	    code: INTEGER;
	 END;

   VAR
      systoken: ARRAY numberOfTokens OF SysToken;

eof
	echo "END $modulename."
} >"$definition" && sed 's/DEFINITION/MODULE/' <"$definition" >"$module"

#------------------------------------------------------------------------------
script2='
BEGIN	{	code = 0; i = 0; group = 0;
	}
NF==2	{	name = $2;
		if (group == 0 && i == 32)
		{	code = 0;
			group = 1;
		}
		printf "systoken[%2d].name := \"%s\";\n", i, name
		printf "systoken[%2d].group := %d;\n", i, group
		printf "systoken[%2d].code := %d;\n", i, code
		++ i; ++ code;
	}
'
#------------------------------------------------------------------------------

{	echo '/^END/i'
	echo BEGIN
	sed '/^#/d; /^$/d; s/^[0-9]/& /' <"$infile" |
	awk "$script2" |
	sed 's/^/   /'
	echo '.'
	echo 'w'
	echo 'q'
} | ed - "$module"
