File: grammar

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 (59 lines) | stat: -rw-r--r-- 631 bytes parent folder | download | duplicates (11)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
%union
{
    int
        i;
    size_t/*unsigned*/
        u;
    std::string
        *s;
};

%type<i>
    NUMBER
    number

%class-name Parser
%filenames parser
%parsefun-source parse.cc
%debug

%token NUMBER

%%

startrule:
    expressions
    'q'
    {
        cout << "Done\n";
        ACCEPT();
    }
;

expressions:
    expressions
    expression
|
    expression
;

expression:
    number
    '+'
    number
    '='
    {
        cout << $1 << " + " << $3 << " = " << $1 + $3 << endl;
    }
;

number:
    NUMBER
    {
        $$ = atoi(d_scanner.YYText());
        cout << "Saw " << d_scanner.YYText() << endl;
    }
;