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;
}
;
|