mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-16 08:29:08 +00:00
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);
|
||
|
}
|