blob: 71fd7d49442c4aff97fecde2bdff35500ec08810 [file] [log] [blame]
Chris Lattnerf5bd1b72003-10-05 19:27:59 +00001char rcsid_nonterminal[] = "$Id$";
2
3#include "b.h"
4#include <stdio.h>
5#include <string.h>
6
7NonTerminal start;
8NonTerminalNum max_nonterminal = 1;
9NonTerminalNum last_user_nonterminal;
10List nonterminals;
11
12NonTerminal
13newNonTerminal(name) char *name;
14{
15 NonTerminal nt;
16
17 nt = (NonTerminal) zalloc(sizeof(struct nonterminal));
18 assert(nt);
19 if (max_nonterminal == 1) {
20 start = nt;
21 }
22 nt->name = name;
23 nt->num = max_nonterminal++;
24 nonterminals = newList(nt, nonterminals);
25
26 return nt;
27}
28
29int
30nonTerminalName(buf, i) char *buf; int i;
31{
32 List l;
33
34 for (l = nonterminals; l; l = l->next) {
35 NonTerminal nt = (NonTerminal) l->x;
36 if (nt->num == i) {
37 strcpy(buf, nt->name);
38 return 1;
39 }
40 }
41 strcpy(buf, "(Unknown NonTerminal)");
42 return 0;
43}
44
45void
46dumpNonTerminal(n) NonTerminal n;
47{
48 printf("%s(%d)", n->name, n->num);
49}