mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-30 00:31:25 +00:00
9c9bfa7f29
gram.y to gram.yc so that we don't try to turn it into a .cpp file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3874 91177308-0d34-0410-b5e6-96231b3b80d8
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);
|
|
}
|