aboutsummaryrefslogtreecommitdiff
path: root/parts/grammar.h
blob: a02a99eaff14af93fb9161e28f84ad64867dc81f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef GRAMMAR_H
#define GRAMMAR_H

extern struct production {
    symbol LHS;
    symbol *RHS;
    size_t nRHS;
} *grammar;

extern size_t total_productions;

void grammar_print()
{
    for(size_t i = 0; i < total_productions; i++) {
        printf("%d --> ", grammar[i].LHS);
        for(size_t j = 0; j < grammar[i].nRHS; j++)
            printf("%d ", grammar[i].RHS[j]);
        printf("\n");
    }
}
void grammar_print_cstyle()

{
    for(size_t i = 0; i < total_productions; i++) {
        printf("{%d, (symbol[]){", grammar[i].LHS);
        for(size_t j = 0; j < grammar[i].nRHS; j++)
            printf("%d, ", grammar[i].RHS[j]);
        printf("}, %zu},\n", grammar[i].nRHS);
    }
}

#endif