File: symbolicnames.cc

package info (click to toggle)
bisonc%2B%2B 6.09.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,984 kB
  • sloc: cpp: 9,375; ansic: 1,505; fortran: 1,134; makefile: 1,062; sh: 526; yacc: 84; lex: 60
file content (31 lines) | stat: -rw-r--r-- 956 bytes parent folder | download | duplicates (2)
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
#include "writer.ih"

void Writer::symbolicNames() const
{
    *d_out <<  
        "using SMap = std::unordered_map<int, char const *>;\n"
        "using SMapVal = SMap::value_type;\n"
        "\n"
        "SMapVal s_symArr[] =\n"
        "{\n"
             // Reserved_::UNDETERMINED_ is also used in generator/print.cc
        "    SMapVal(-2, \"Reserved_::UNDETERMINED_\"),  "
                                                    "// predefined symbols\n"
        "    SMapVal(-1, \"Reserved_::EOF_\"),\n"
        "    SMapVal(256, \"errTok_\"),\n"
        "\n";

    for (auto terminal: d_rules.terminals())
        terminalSymbol(terminal, *d_out);

    for (auto nonTerminal: d_rules.nonTerminals())
        nonTerminalSymbol(nonTerminal, *d_out);

    *d_out <<  "};\n"
            "\n"
            "SMap s_symbol\n"
            "(\n"
            "    s_symArr, s_symArr + sizeof(s_symArr) / sizeof(SMapVal)\n"
            ");\n"
            "\n";
}