From d94ebe9eb61b4935c19418fa405d855229325218 Mon Sep 17 00:00:00 2001 From: sebastien Date: Fri, 13 Oct 2006 12:53:35 +0000 Subject: [PATCH] v4 parser: removed bogus files git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@982 ac1d8469-bf42-47a9-8791-bf33cf982152 --- parser.src/include/DataTreeDef.h | 584 --------------------------- parser.src/include/DynareBisonFlex.h | 110 ----- 2 files changed, 694 deletions(-) delete mode 100644 parser.src/include/DataTreeDef.h delete mode 100644 parser.src/include/DynareBisonFlex.h diff --git a/parser.src/include/DataTreeDef.h b/parser.src/include/DataTreeDef.h deleted file mode 100644 index 4448ed2e4..000000000 --- a/parser.src/include/DataTreeDef.h +++ /dev/null @@ -1,584 +0,0 @@ -#ifndef DATATREEDEF_H -#define DATATREEDEF_H -#include -#include -#include -using namespace std; -//------------------------------------------------------------------------------ -#include "VariableTable.h" -#include "DynareBison.h" -#include "NumericalConstants.h" -#include "DataTree.h" -//------------------------------------------------------------------------------ -inline int DataTree::PushToken(int iArg1,int iOpCode, int iArg2, Type iType1) -{ - //cout << "ModeltreeSize = " << mModelTree.size() << endl; - - //cout << "PushToken 3\n"; - MetaToken lToken(iArg1, iType1, iArg2, iOpCode); - - if (iOpCode != NoOpCode) - { - lToken.op_name = operator_table.str(iOpCode); - } - else - { - lToken.op_name = ""; - } - lToken.reference_count.resize(current_order+1,0); - //lToken.reference_count[current_order] = 1; - //for (int i=0; i < current_order; i++) - // lToken.reference_count[current_order] += lToken.reference_count[i]; - mModelTree.push_back(lToken); - //Updating refernce counters - if(iType1 == eTempResult && iOpCode != EQUAL) - { - //cout << mModelTree.size()-1 << ":" << iArg1.id << ":" << mModelTree[iArg1.id].reference_count[current_order] << endl; - int s = mModelTree[iArg1].reference_count.size(); - for (int i = s; i <= current_order; i++) - { - int rc = mModelTree[iArg1].reference_count[i-1]; - mModelTree[iArg1].reference_count.push_back(rc); - } - mModelTree[iArg1].reference_count[current_order]++; - //cout << mModelTree.size()-1 << ":" << iArg1.id << ":" << mModelTree[iArg1.id].reference_count[current_order] << endl; - - } - if(iArg2 != -1 && iOpCode != EQUAL) - { - //cout << mModelTree.size()-1 << ":" << iArg2.id << ":" << mModelTree[iArg2.id].reference_count[current_order] << endl; - int s = mModelTree[iArg2].reference_count.size(); - for (int i = s; i <= current_order; i++) - { - int rc = mModelTree[iArg2].reference_count[i-1]; - mModelTree[iArg2].reference_count.push_back(rc); - } - mModelTree[iArg2].reference_count[current_order]++; - //cout << mModelTree.size()-1 << ":" << iArg2.id << ":" << mModelTree[iArg2.id].reference_count[current_order] << endl; - } - int ID = mModelTree.size()-1; - mIndexOfTokens.insert(make_pair(lToken,ID)); - //cout << "PushToken 3 : end\n"; - return ID; - -} -//------------------------------------------------------------------------------ -inline bool DataTree::Exist(MToken iToken) -{ - map::iterator iter; - iter = mIndexOfTokens.find(iToken); - //Testing if token exists - if (iter == mIndexOfTokens.end()) return false; - else return true; -} -inline int DataTree::AddTerminal(int iArg1, Type iType1) -{ - if (iType1 == eTempResult) - { - return iArg1; - } - else - { - MetaToken lToken(iArg1, iType1, -1, NoOpCode); - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - return PushToken(iArg1, NoOpCode, -1, iType1); - } -} -inline int DataTree::AddTerminal(string iArgName, int iLag) -{ - int id; - Type type; - - if (!SymbolTable::Exist(iArgName)) - { - cout << "ModelTree::AddToken : Error : Unknown symbol: " << iArgName << endl; - exit(-1); - } - type = SymbolTable::getType(iArgName); - if (type != eUNDEF) - { - if (type == eEndogenous || - type == eExogenousDet || - type == eExogenous || - type == eRecursiveVariable) - { - id = VariableTable::getID(iArgName,iLag); - if (id == -1) - { - cout << "ModelTree::AddToken : Error : Unknown variable " << iArgName << " from VariableTable\n"; - exit(-1); - } - } - else - id = SymbolTable::getID(iArgName); - - } - else - { - cout << "ModelTree::AddToken : Error : Unknown parameter: " << iArgName << endl; - exit(-1); - } - return AddTerminal(id, type); -} -inline int DataTree::AddPlus(int iArg1, int iArg2) -{ - MetaToken lToken(iArg1, eTempResult, iArg2, PLUS); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - - if (iArg1 != 0 && iArg2 != 0) - { - return PushToken(iArg1,PLUS,iArg2); - } - else if (iArg1 != 0) - { - return iArg1; - } - else if (iArg2 != 0) - { - return iArg2; - } - else - { - return 0; - } -} -inline int DataTree::AddMinus(int iArg1, int iArg2) -{ - MetaToken lToken(iArg1, eTempResult, iArg2, MINUS); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - - if (iArg1 != 0 && iArg2 != 0) - { - return PushToken(iArg1,MINUS, iArg2); - } - else if (iArg1 != 0) - { - return iArg1; - } - else if (iArg2 != 0) - { - return PushToken(iArg2, UMINUS); - } - else - { - return 0; - } -} -inline int DataTree::AddUMinus(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, UMINUS); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - - if (iArg1 != 0 ) - { - return PushToken(iArg1, UMINUS); - } - else - { - return 0; - } - -} -inline int DataTree::AddTimes(int iArg1, int iArg2) -{ - MetaToken lToken(iArg1, eTempResult, iArg2, TIMES); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - - if (iArg1 != 0 && iArg1 != 1 && iArg2 != 0 && iArg2 != 1) - { - return PushToken(iArg1, TIMES, iArg2); - } - else if (iArg1 != 0 && iArg1 != 1 && iArg2 == 1) - { - return iArg1; - } - else if (iArg2 != 0 && iArg2 != 1 && iArg1 == 1) - { - return iArg2; - } - else if (iArg2 == 1 && iArg1 == 1) - { - return 1; - } - else - { - return 0; - } -} -inline int DataTree::AddDivide(int iArg1, int iArg2) -{ - MetaToken lToken(iArg1, eTempResult, iArg2, DIVIDE); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - - if (iArg1 != 0 && iArg2 != 0 && iArg2 != 1) - { - return PushToken(iArg1,DIVIDE,iArg2); - } - else if (iArg2 == 1) - { - return iArg1; - } - else if (iArg1 == 0 && iArg2 != 0) - { - return 0; - } - else - { - cout << "DIVIDE 0/0 non available\n"; - exit(-1); - } -} -inline int DataTree::AddPower(int iArg1, int iArg2) -{ - MetaToken lToken(iArg1, eTempResult, iArg2, POWER); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - - if (iArg1 != 0 && iArg2 != 0 && iArg2 != 1) - { - return PushToken(iArg1,POWER,iArg2); - } - else if (iArg2 == 1) - { - return iArg1; - } - else if (iArg2 == 0) - { - return 1; - } - else - { - return 0; - } - -} -inline int DataTree::AddExp(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, EXP); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - - if (iArg1 != 0) - { - return PushToken(iArg1, EXP); - } - else - { - return 1; - } -} -inline int DataTree::AddLog(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, LOG); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0 && iArg1 != 1) - { - return PushToken(iArg1, LOG); - } - else if (iArg1 == 1) - { - return 0; - } - else - { - cout << "log(0) isn't available\n"; - exit(-1); - } -} -inline int DataTree::AddLog10(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, LOG10); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0 && iArg1 != 1) - { - return PushToken(iArg1, LOG); - } - else if (iArg1 == 1) - { - return 0; - } - else - { - cout << "log10(0) isn't available\n"; - exit(-1); - } -} -inline int DataTree::AddCos(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, COS); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, COS); - } - else - { - return 1; - } -} -inline int DataTree::AddSin(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, SIN); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, SIN); - } - else - { - return 0; - } -} -inline int DataTree::AddTan(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, TAN); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, TAN); - } - else - { - return 0; - } -} -inline int DataTree::AddACos(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, ACOS); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - return PushToken(iArg1, COS); -} -inline int DataTree::AddASin(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, ASIN); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, SIN); - } - else - { - return 0; - } -} -inline int DataTree::AddATan(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, ATAN); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, ATAN); - } - else - { - return 0; - } -} -inline int DataTree::AddCosH(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, COSH); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, COSH); - } - else - { - return 0; - } -} -inline int DataTree::AddSinH(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, SINH); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, SINH); - } - else - { - return 0; - } -} -inline int DataTree::AddTanH(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, TANH); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, TANH); - } - else - { - return 0; - } -} -inline int DataTree::AddACosH(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, ACOSH); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - return PushToken(iArg1, ACOSH); -} -inline int DataTree::AddASinH(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, ASINH); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, ASINH); - } - else - { - return 0; - } -} -inline int DataTree::AddATanH(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, ATANH); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, ATANH); - } - else - { - return 0; - } -} -inline int DataTree::AddSqRt(int iArg1) -{ - MetaToken lToken(iArg1, eTempResult, -1, SQRT); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - if (iArg1 != 0) - { - return PushToken(iArg1, SQRT); - } - else - { - return 0; - } -} -inline int DataTree::AddEqual(int iArg1, int iArg2) -{ - MetaToken lToken(iArg1, eTempResult, iArg2, EQUAL); - - if (Exist(lToken)) - { - int ID = mIndexOfTokens[lToken]; - return ID; - } - return PushToken(iArg1,EQUAL,iArg2); -} -#endif diff --git a/parser.src/include/DynareBisonFlex.h b/parser.src/include/DynareBisonFlex.h deleted file mode 100644 index b65e4023a..000000000 --- a/parser.src/include/DynareBisonFlex.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef DYNARE_BISON_FLEX_H -#define DYNARE_BISON_FLEX_H - -#include -#include -#include - -using namespace std; - -#include "SymbolTable.h" - -// Parse function of 'bison' is defined externally -extern "C" int yyparse(void *); - -// The error function that 'bison' calls -inline void yyerror(char const *what_error) { cerr << what_error << endl; } - - -// Control class for a flex-scanner -// It has a pointer to the compiler in which it is contained -class FlexerClass//sem_flexer - : public yyFlexLexer -{ -public: - FlexerClass(void *_compiler) : Compiler(_compiler) {} - - void * getCompiler() const { return Compiler; } - -private: - void *Compiler; -}; - - -// Base class for compilers which use 'flex' and 'bison' as scanner/parser -class FlexBisonClass//flex_bison_compiler -{ -public: - friend int yylex(string *new_token, void *compiler); - - FlexBisonClass() : flexer(this) {} - - // Compiles program from a stream - void Compile(istream &program_strm = cin) - { - // Tells 'flex' the right stream - flexer.switch_streams(&program_strm, 0); - - // If there is an error parsing the source - if (! parse()) - { - cerr << "How bad! A parse error has occurred!" << endl; - exit(1); - } - } - -private: - // The scanner used in this compiler (it is a flex-scanner) - FlexerClass flexer; - - int scan() { return flexer.yylex(); } - bool parse() { return ! yyparse((void *) this); } -}; - - -// Directs the call from 'bison' to the scanner in the right compiler -// "new_token" is not needed in this case... -inline int yylex(string *new_token, void *compiler) -{ - FlexBisonClass &what_compiler - = *static_cast(compiler); - cout << *new_token; - return what_compiler.scan(); -} - - -// Definitions for 'flex' and 'bison' -// Read the manuals of the two beasties to see what these macros mean! - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -#define YYPARSE_PARAM parm -#define YYLEX_PARAM parm -#define YYSTYPE string - -/* -// A test compiler -class some_compiler - : public FlexBisonClass -{ -public: - void just_a_flex_test(string const &some_string) const - { - cout << some_string << endl; - } - - void just_a_bison_test() const - { - cout << "Cool! Even bison has found something!" << endl; - } -}; - - -// Important! These are the "shortcuts" which you can use in your -// ".l"- and ".y"-files to access the corresponding compiler-object! -#define my_flex_compiler (*static_cast (static_cast(this)->getCompiler())) -#define my_bison_compiler (*static_cast (parm)) - -*/ - -#endif