mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
1e1215d0d7
llvm-svn: 8875
50 lines
831 B
C
50 lines
831 B
C
char rcsid_nonterminal[] = "$Id$";
|
|
|
|
#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;
|
|
|
|
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);
|
|
}
|