gentab.sh revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This software is part of the ast package #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Copyright (c) 1986-2007 AT&T Knowledge Ventures #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and is licensed under the #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Public License, Version 1.0 #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# by AT&T Knowledge Ventures #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# A copy of the License is available at #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Information and Software Systems Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Florham Park NJ #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Glenn Fowler <gsf@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Glenn Fowler
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Bell Laboratories
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# @(#)gentab (gsf@research.att.com) 07/17/94
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# C table generator
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# %flags [ prefix=<prefix> ] [ index=<index> ] [ init=<init> ]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# %keyword <name> [ prefix=<prefix> ] [ index=<index> ] [ init=<init> ] [ first=<id> ] [ last=<id> ]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# %sequence [ prefix=<prefix> ] [ index=<index> ] [ init=<init> ]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincase `(typeset -u s=a n=0; ((n=n+1)); print $s$n) 2>/dev/null` in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin typeset -u ID
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) break ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*) exec <$1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin [#]*) echo "/*"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin [#]*) shift
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin echo " * $*"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin echo " */"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) n=`expr $counter - 1` ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin echo "#define $prefix$last $n"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then echo " 0, 0"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin "") echo "$command: ${err_file}line $err_line: $type table name omitted" >&2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin %*) echo "$command: ${err_file}line $err_line: $1: unknown keyword" >&2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) while :
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ksh) ID=${1#[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]} ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) ID=`echo $1 | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | sed 's/^[^ABCDEFGHIJKLMNOPQRSTUVWXYZ_]//'` ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin 32) echo "$command: ${err_file}line $err_line: warning: $1: too many flag bits" >&2 ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) long= ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then echo "#define $prefix$ID $counter"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then echo " \"$1\", $prefix$ID,"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then echo "#define $prefix$ID $counter"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) n=`expr $counter - 1` ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin echo "#define $prefix$last $n"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then echo " 0, 0"