|
|
#ifndef _PARSER_H_ #define _PARSER_H_ #define WELCOME " *** Brahms Interpreter, introduced 2001 by the incredible brain power of Dr. Jan M. Würthner\n(type help if you need help)\n" #define HELPMSG "(funlist) shows all functions. Type in a functions name to get the functions usage.\n(oblist) shows all defined objects.\n(enzymes) shows all enzymes\n" /* enum Function {plus,plus1,minus,minus1,times,times1,eval,setq,sett,oblist,funlist,car,cdr,nth,replacenth,remo,delet,load,seto, setv,setl,enzymes,dump,forn,list,newo,equal,eq,notequal,neq,lessthan,lth,greaterthan,gth,ifn,edit,appndvlu,addmem,makeenz,enzyme, adjoint,appnd,connecto,rnd,lngth,valencs,nthvl,rn}; */ enum Function {plus,plus1,minus,minus1,times,times1,eval,setq,sett,oblist,funlist,car,cdr,nth,replacenth,load, dump,forn,list,equal,eq,notequal,neq,lessthan,lth,greaterthan,gth,ifn, appnd,rnd,lngth}; enum ElementNamesIndex {LIST,INT,DOUBLE,STRING,FUNCTION,OBJECT,VALENCE,ENZYME,ERR,BOOLL}; class pList; class pElement; class ElPtr; void addToElList(ElPtr*); // ******************************************** // // class Id for Debugging purposes // ------------------------------- // class Id { int id; static int idcounter; public: Id(); virtual ~Id(); void print(); }; // ******************************************** // // Element Pointer (Lisp's ObList) // ------------------------------- // class ElPtr { private: ElPtr * next; pElement * element; char * name; public: ElPtr(); ElPtr(pElement*); ElPtr(pElement*,char*); ~ElPtr(); //void eraseElement(); void setNext(ElPtr*); ElPtr * Next(); char * Name(); void setName(char*); pElement * Element(); }; // ******************************************** // // abstract classes pElement and pAtom // ----------------------------------- // class pElement : public Id { protected: bool qtd; public: pElement(){} virtual ~pElement(){}; virtual void setNext(pElement*)=0; virtual pElement * Next()=0; virtual pElement * Eval(pList * li=0)=0; virtual char * get()=0; virtual char * dumpit()=0; virtual void set(char*)=0; virtual ElementNamesIndex isA() const = 0; virtual const char * elementName() const = 0; virtual pElement * copy() const = 0; virtual int compare(pElement*)=0; virtual void quote(bool)=0; virtual bool quoted() const=0; virtual bool isList() const = 0; virtual bool isAtom() const=0; virtual bool isInt() const=0; virtual bool isDouble() const=0; virtual bool isFunction() const=0; virtual bool isString() const=0; virtual bool isError() const=0; }; class pAtom : public pElement { private: public: pAtom(){} virtual ~pAtom(){}; virtual void setNext(pElement*)=0; virtual pElement * Next()=0; virtual pElement * Eval(pList * li=0)=0; virtual char * get()=0; virtual char * dumpit(); virtual void set(char*)=0; virtual ElementNamesIndex isA() const = 0; virtual const char * elementName() const = 0; virtual pElement * copy() const = 0; virtual int compare(pElement*)=0; virtual void quote(bool)=0; virtual bool quoted() const=0; virtual bool isList() const=0; virtual bool isAtom() const=0; virtual bool isInt() const=0; virtual bool isDouble() const=0; virtual bool isFunction() const=0; virtual bool isString() const=0; virtual bool isError() const=0; }; // ******************************************** // // pList // ----- // class pList : public pElement { private: pElement * next; pElement * top; public: pList(); virtual ~pList(); pList(pElement*); pList(bool); void setTop(pElement*); pElement * Top() const { return top; } bool appendElement(pElement*); bool removeElement(pElement*); bool exchange(pElement*,pElement*); int length(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual char * dumpit(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; void print(); }; // ********************************************** // // Following: Concrete classes derived from pAtom // // pInt // ---- // class pInt : public pAtom { private: pElement * next; long int value; public: pInt(); pInt(int); int getInt(); void setInt(int); virtual ~pInt(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; // ******************************************** // // pDouble // ------- // class pDouble : public pAtom { private: pElement * next; double value; public: pDouble(); pDouble(double); double getDouble(); virtual ~pDouble(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; // ******************************************** // // pString // ------- // class pString : public pAtom { private: pElement * next; char * value; public: pString(); pString(const char*); pString(const char*,bool); char * getQuoted(); char * getPtr(); virtual ~pString(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; // ******************************************** // // pError // ------ // class pError : public pAtom { private: pElement * next; int value; public: pError(); pError(int); int getValue(); virtual ~pError(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; // ******************************************** // // pFunction // --------- // pElement * PARSE(char*); class pFunction : public pAtom { private: pElement * next; Function value; public: pFunction(); pFunction(Function); Function getValue(); bool ForceQuote(); virtual ~pFunction(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; /* // ******************************************** // // pObject // ------- // class SyclRadical; class pObject : public pAtom { private: pElement * next; SyclRadical * value; public: pObject(); pObject(SyclRadical*); SyclRadical * getValue(); void deleteRadical(); virtual ~pObject(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; // ******************************************** // // pValence // -------- // class SyclValence; class pValence : public pAtom { private: pElement * next; SyclValence * value; public: pValence(); pValence(SyclValence*); SyclValence * getValue(); void deleteValence(); virtual ~pValence(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; // ******************************************** // // pEnzyme // ------- // class SyclEnzyme; class pEnzyme : public pAtom { private: pElement * next; char * value; public: pEnzyme(); pEnzyme(char*); char * getValue(); virtual ~pEnzyme(); virtual void setNext(pElement*); virtual pElement * Next(); virtual pElement * Eval(pList * li=0); virtual char * get(); virtual void set(char*); virtual ElementNamesIndex isA() const; virtual const char * elementName() const; virtual pElement * copy() const; virtual int compare(pElement*); virtual void quote(bool); virtual bool quoted() const; virtual bool isList() const; virtual bool isAtom() const; virtual bool isInt() const; virtual bool isDouble() const; virtual bool isFunction() const; virtual bool isString() const; virtual bool isError() const; }; */ #endif
Generated by: wuerthne on clouseau on Fri Sep 21 19:20:46 2001, using kdoc 2.0a53. |