File: newrule.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 (29 lines) | stat: -rw-r--r-- 825 bytes parent folder | download | duplicates (6)
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
#include "rules.ih"
    
bool Rules::newRule(NonTerminal *np, string const &source, size_t lineNr)
{
// If the terminal definition is really requested (it isn't shown in bisonc++
// 2.8.0) then pass yylineno from parser/openrule.cc and
// rules/augmentgrammar.cc to this function so the line can be shown.
//
//  imsg << endl;
//
//  imsg.setLineNr(lineNr);
//  imsg << "Adding production rule for `" << np->name() << "'" << endl;

    s_lastLineNr = lineNr;

    Production::storeFilename(source);

    if (!d_startRule.length())
        d_startRule = np->name();

    d_currentRule = np;

    NFileInfoMap::iterator nfIter = d_location.find(np);
    if (nfIter != d_location.end())
        return false;                   // extending an existing rulename

    d_location[np] = FileInfo(source, lineNr);
    return true;
}