Mozilla/mozilla/ef/Tools/Burg/nonterminal.c
fur%netscape.com d6c51785c1 Added Todd Proebsting's BURG to the tree, now that it's in the public domain.
git-svn-id: svn://10.0.0.236/trunk@16557 18797224-902f-48f8-a5cc-f745e15eee43
1998-12-17 06:36:50 +00:00

51 lines
944 B
C

char rcsid_nonterminal[] = "$Id: nonterminal.c,v 1.1 1998-12-17 06:36:48 fur%netscape.com Exp $";
#include "b.h"
#include <stdio.h>
#include <string.h>
NonTerminal start;
NonTerminalNum max_nonterminal = 1;
NonTerminalNum last_user_nonterminal;
List nonterminals;
NonTerminal
newNonTerminal(name) char *name;
{
NonTerminal nt;
nt = (NonTerminal) zalloc(sizeof(struct nonterminal));
assert(nt);
if (max_nonterminal == 1) {
start = nt;
}
nt->name = name;
nt->num = max_nonterminal++;
nonterminals = newList(nt, nonterminals);
return nt;
}
int
nonTerminalName(buf, i) char *buf; int i;
{
List l;
/* extern char *strcpy ARGS((char *, char *));*/
for (l = nonterminals; l; l = l->next) {
NonTerminal nt = (NonTerminal) l->x;
if (nt->num == i) {
strcpy(buf, nt->name);
return 1;
}
}
strcpy(buf, "(Unknown NonTerminal)");
return 0;
}
void
dumpNonTerminal(n) NonTerminal n;
{
printf("%s(%d)", n->name, n->num);
}