diff options
Diffstat (limited to 'tools/bison++/bison.h')
-rw-r--r-- | tools/bison++/bison.h | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/tools/bison++/bison.h b/tools/bison++/bison.h new file mode 100644 index 000000000..da4423726 --- /dev/null +++ b/tools/bison++/bison.h @@ -0,0 +1,270 @@ +/* before anything */ +#ifdef c_plusplus + #ifndef __cplusplus + #define __cplusplus + #endif +#endif + +$ /* If we generate a class #define YY_USE_CLASS goes here*/ + +#ifndef __cplusplus + #ifdef YY_USE_CLASS + #error "This is a C++ header generated by bison++, use a C++ compiler!" + #endif +#else + #ifndef YY_USE_CLASS +/* #warning "For C++ its recomended to use bison++, otherwise classes won't be generated"*/ + #endif +#endif + +#include <stdio.h> +$ /* %{ and %header{ and %union, during decl */ +#ifndef YY_@_COMPATIBILITY + #ifndef YY_USE_CLASS + #define YY_@_COMPATIBILITY 1 + #else + #define YY_@_COMPATIBILITY 0 + #endif +#endif + +#if YY_@_COMPATIBILITY != 0 +/* backward compatibility */ + #ifdef YYLTYPE + #ifndef YY_@_LTYPE + #define YY_@_LTYPE YYLTYPE +/* WARNING obsolete !!! user defined YYLTYPE not reported into generated header */ +/* use %define LTYPE */ + #endif + #endif +/*#ifdef YYSTYPE*/ + #ifndef YY_@_STYPE + #define YY_@_STYPE YYSTYPE + /* WARNING obsolete !!! user defined YYSTYPE not reported into generated header */ + /* use %define STYPE */ + #endif +/*#endif*/ + #ifdef YYDEBUG + #ifndef YY_@_DEBUG + #define YY_@_DEBUG YYDEBUG + /* WARNING obsolete !!! user defined YYDEBUG not reported into generated header */ + /* use %define DEBUG */ + #endif + #endif + /* use goto to be compatible */ + #ifndef YY_@_USE_GOTO + #define YY_@_USE_GOTO 1 + #endif +#endif + +/* use no goto to be clean in C++ */ +#ifndef YY_@_USE_GOTO + #define YY_@_USE_GOTO 0 +#endif + +#ifndef YY_@_PURE +$/* YY_@_PURE */ +#endif + +$/* prefix */ + +#ifndef YY_@_DEBUG +$/* YY_@_DEBUG */ +#endif + +#ifndef YY_@_LSP_NEEDED +$ /* YY_@_LSP_NEEDED*/ +#endif + +/* DEFAULT LTYPE*/ +#ifdef YY_@_LSP_NEEDED + #ifndef YY_@_LTYPE + #ifndef BISON_YYLTYPE_ISDECLARED + #define BISON_YYLTYPE_ISDECLARED +typedef + struct yyltype + { + int timestamp; + int first_line; + int first_column; + int last_line; + int last_column; + char *text; + } + yyltype; + #endif + + #define YY_@_LTYPE yyltype + #endif +#endif + +/* DEFAULT STYPE*/ +#ifndef YY_@_STYPE + #define YY_@_STYPE int +#endif + +/* DEFAULT MISCELANEOUS */ +#ifndef YY_@_PARSE + #define YY_@_PARSE yyparse +#endif + +#ifndef YY_@_LEX + #define YY_@_LEX yylex +#endif + +#ifndef YY_@_LVAL + #define YY_@_LVAL yylval +#endif + +#ifndef YY_@_LLOC + #define YY_@_LLOC yylloc +#endif + +#ifndef YY_@_CHAR + #define YY_@_CHAR yychar +#endif + +#ifndef YY_@_NERRS + #define YY_@_NERRS yynerrs +#endif + +#ifndef YY_@_DEBUG_FLAG + #define YY_@_DEBUG_FLAG yydebug +#endif + +#ifndef YY_@_ERROR + #define YY_@_ERROR yyerror +#endif + +#ifndef YY_@_PARSE_PARAM + #ifndef __STDC__ + #ifndef __cplusplus + #ifndef YY_USE_CLASS + #define YY_@_PARSE_PARAM + #ifndef YY_@_PARSE_PARAM_DEF + #define YY_@_PARSE_PARAM_DEF + #endif + #endif + #endif + #endif + #ifndef YY_@_PARSE_PARAM + #define YY_@_PARSE_PARAM void + #endif +#endif + +/* TOKEN C */ +#ifndef YY_USE_CLASS + + #ifndef YY_@_PURE + #ifndef yylval + extern YY_@_STYPE YY_@_LVAL; + #else + #if yylval != YY_@_LVAL + extern YY_@_STYPE YY_@_LVAL; + #else + #warning "Namespace conflict, disabling some functionality (bison++ only)" + #endif + #endif + #endif + +$ /* #defines token */ +/* after #define tokens, before const tokens S5*/ +#else + #ifndef YY_@_CLASS + #define YY_@_CLASS @ + #endif + + #ifndef YY_@_INHERIT + #define YY_@_INHERIT + #endif + + #ifndef YY_@_MEMBERS + #define YY_@_MEMBERS + #endif + + #ifndef YY_@_LEX_BODY + #define YY_@_LEX_BODY + #endif + + #ifndef YY_@_ERROR_BODY + #define YY_@_ERROR_BODY + #endif + + #ifndef YY_@_CONSTRUCTOR_PARAM + #define YY_@_CONSTRUCTOR_PARAM + #endif + /* choose between enum and const */ + #ifndef YY_@_USE_CONST_TOKEN + #define YY_@_USE_CONST_TOKEN 0 + /* yes enum is more compatible with flex, */ + /* so by default we use it */ + #endif + #if YY_@_USE_CONST_TOKEN != 0 + #ifndef YY_@_ENUM_TOKEN + #define YY_@_ENUM_TOKEN yy_@_enum_token + #endif + #endif + +class YY_@_CLASS YY_@_INHERIT +{ +public: + #if YY_@_USE_CONST_TOKEN != 0 + /* static const int token ... */ + $ /* decl const */ + #else + enum YY_@_ENUM_TOKEN { YY_@_NULL_TOKEN=0 + $ /* enum token */ + }; /* end of enum declaration */ + #endif +public: + int YY_@_PARSE(YY_@_PARSE_PARAM); + virtual void YY_@_ERROR(char *msg) YY_@_ERROR_BODY; + #ifdef YY_@_PURE + #ifdef YY_@_LSP_NEEDED + virtual int YY_@_LEX(YY_@_STYPE *YY_@_LVAL,YY_@_LTYPE *YY_@_LLOC) YY_@_LEX_BODY; + #else + virtual int YY_@_LEX(YY_@_STYPE *YY_@_LVAL) YY_@_LEX_BODY; + #endif + #else + virtual int YY_@_LEX() YY_@_LEX_BODY; + YY_@_STYPE YY_@_LVAL; + #ifdef YY_@_LSP_NEEDED + YY_@_LTYPE YY_@_LLOC; + #endif + int YY_@_NERRS; + int YY_@_CHAR; + #endif + #if YY_@_DEBUG != 0 + public: + int YY_@_DEBUG_FLAG; /* nonzero means print parse trace */ + #endif +public: + YY_@_CLASS(YY_@_CONSTRUCTOR_PARAM); +public: + YY_@_MEMBERS +}; +/* other declare folow */ +#endif + + +#if YY_@_COMPATIBILITY != 0 + /* backward compatibility */ + /* Removed due to bison problems + /#ifndef YYSTYPE + / #define YYSTYPE YY_@_STYPE + /#endif*/ + + #ifndef YYLTYPE + #define YYLTYPE YY_@_LTYPE + #endif + #ifndef YYDEBUG + #ifdef YY_@_DEBUG + #define YYDEBUG YY_@_DEBUG + #endif + #endif + +#endif +/* END */ +$ /* section 3 %header{ */ + /* AFTER END , NEVER READ !!! */ + + |