:
#
#  tokens.i
#
cp $1 tokens.i
ex tokens.i << \!
set noignorecase
set wrapscan
1d
1,$s/^# define //
1,$s/^Y//
1,$s/./\l&/g
1,$s/^\([a-z]\)\([a-z]*\)/   \u\1\2Token =/
1,$s/$/;/
1i
const
.
wq
!
#
#  tokenstrings.c
#
cp $1 tokenstrings.c
ex tokenstrings.c << \!
set noignorecase
set wrapscan
1d
1,$s/^# define //
1,$s/ [0-9]*$//
1,$s/^Y//
1,$s/^[a-z]/.&/
1,$s/./\l&/g
/firstkeyword
s/^/./
/laststandardkeyword
s/^/./
/lastkeyword
s/^/./
1,$-1s/.*/	"&",/
$s/.*/	"&"/
1i
char *tokenstrings [] = {
.
$a
};
.
wq
!
