From 12f606ce06ef926f366a03079c5e3107c23f18af Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 19 Nov 2010 13:18:48 +0000 Subject: Added tool bison++-1.21.11 --- tools/bison++/Example/MyParser.y | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tools/bison++/Example/MyParser.y (limited to 'tools/bison++/Example/MyParser.y') diff --git a/tools/bison++/Example/MyParser.y b/tools/bison++/Example/MyParser.y new file mode 100644 index 000000000..f8787eb34 --- /dev/null +++ b/tools/bison++/Example/MyParser.y @@ -0,0 +1,55 @@ +%{ +#define YY_MyParser_STYPE yy_MyParser_stype +%} +%name MyParser +%define LSP_NEEDED +%define ERROR_BODY =0 +%define LEX_BODY =0 +%header{ +#include +#include + using namespace std; +#define YY_DECL int yyFlexLexer::yylex(YY_MyParser_STYPE *val) +#ifndef FLEXFIX +#define FLEXFIX YY_MyParser_STYPE *val +#define FLEXFIX2 val +#endif +%} + +%union { + int num; + bool statement; + } + + + +%token PLUS INTEGER MINUS AND OR NOT LPARA RPARA +%token BOOLEAN +%type exp result +%type bexp +%start result + +%left OR +%left AND +%left PLUS MINUS +%left NOT +%left LPARA RPARA + +%% + +result : exp {cout << "Result = " << $1 << endl;} + | bexp {cout << "Result = " << $1 << endl;} + +exp : exp PLUS exp {$$ = $1 + $3;} + | INTEGER {$$ = $1;} + | MINUS exp { $$ = -$2;} + | exp MINUS exp {$$ = $1 - $3;} + +bexp : BOOLEAN {$$ = $1;} + | bexp AND bexp { $$ = $1 && $3;} + | bexp OR bexp { $$ = $1 || $3;} + | NOT bexp {$$ = !$2;} + | LPARA bexp RPARA {$$ = $2} +%% +/* -------------- body section -------------- */ +// feel free to add your own C/C++ code here -- cgit v1.2.3