#include #include "init.h" #include "debug.h" #include "object.h" #include "globals.h" #include "arifmetic.h" #include "parser/parser.h" #include "parser/grammatical.h" #include "parser/lexical.h" int ParseConfigFile(char* config) { yyscan_t scanner; struct lexical_extra extra; FILE* conffd; int ret; conffd=fopen(config,"r"); if(conffd==0) { COUT(ERROR)<<"Can't open file "<0);} ret=confparse(scanner); conflex_destroy(scanner); fclose(conffd); return ret; } int RegisterArifmeticFunctions() { RegisterFunction("ADD",Arifm_Add); RegisterFunction("SUB",Arifm_Sub); RegisterFunction("MUL",Arifm_Mul); RegisterFunction("DIV",Arifm_Div); RegisterFunction("POW",Arifm_Pow); RegisterFunction("POS",Arifm_Pos); RegisterFunction("NEG",Arifm_Neg); RegisterFunction("GET",Get); RegisterFunction("GET",Get); return 0; } int BuildDepTree(DepTree* deptree,std::set& used) { return deptree->CreateGlobalTree(used); } int CheckFunctions() { std::set funcs; for(auto& i:G_tosave) { i->UsedFuncs(funcs); for(auto& f:funcs) if(G_funcs.find(f)==G_funcs.end()) { COUT(ERROR)<<"Unknown function "<Dump()<UsedFuncs(funcs); for(auto& f:funcs) if(G_funcs.find(f)==G_funcs.end()) { COUT(ERROR)<<"Unknown function "<Dump()<UsedFuncs(funcs); for(auto& f:funcs) if(G_funcs.find(f)==G_funcs.end()) { COUT(ERROR)<<"Unknown function "<Dump()<<";"<Dump()<<";"<