git.maugern.fr Git - T7/blob - name.c
First improvements
[T7] / name.c
1 /*
2  * Temporary-Variable Allocation Routines
3  *
4  * Copyright (C) 2018 Nicolas Mauger
5  * This file is subject to the terms and conditions of the
6  * CeCILL free software license agreement. See the file
7  * LICENSE in the main directory of T7 for more details.
8  */
9
10 #include <stdio.h>
11 #include <stdlib.h>
12
13 #include "lex.h"
14
15 char  *Names[] = { "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7" };
16 char **Namep   = Names;
17
18 char *newname()
19 {
20
21     if ( Namep >= &Names[sizeof(Names) / sizeof(*Names)])
22     {
23         fprintf(stderr, "%d: Expression too complex\n", yylineno);
24         exit(1);
25     }
26
27     return (*Namep++);
28 }
29
30 void freename(char *s)
31 {
32     if (Namep > Names)
33     {
34         *--Namep = s;
35     }
36     else
37     {
38         fprintf(stderr, "%d: (Internal error) Name stack underflow\n", yylineno);
39     }
40 }