jehanne/sys/src/cmd/awk/maketab.rc.template

41 lines
921 B
Plaintext

/* automatically generated by maketab.rc.template */
#include <u.h>
#include <lib9.h>
#include <bio.h>
#include "awk.h"
#include "y.tab.h"
#! rfork e
#! . ./maketab.rc.environment
#! GETNAMES='/#define FIRSTTOKEN/,/#define LASTTOKEN/{s/#define //;s/ [0-9]\+$//g;p}'
#! NAMES=`{cat y.tab.h|sed -n $GETNAMES}
#! GETCODES='/#define FIRSTTOKEN/,/#define LASTTOKEN/{s/#define [A-Z0-9]\+ //;p}'
#! CODES=`{cat y.tab.h|sed -n $GETCODES}
static char *printname[$#NAMES] = {
#! for (token in `{seq $#NAMES}) {
(char *) "$NAMES($token)", /* $CODES($token) */
#! }
};
Cell *(*proctab[$#NAMES])(Node **, int) = {
#! for (token in `{seq $#NAMES}) {
#! PROC=$$NAMES($token)
#! if( ~ 0 $#PROC ) PROC=(nullproc '')
$PROC(1), /* $NAMES($token) */
#! }
};
char *
tokname(int n)
{
static char buf[100];
if (n < FIRSTTOKEN || n > LASTTOKEN) {
sprint(buf, "token %d", n);
return buf;
}
return printname[n-FIRSTTOKEN];
}