Source: parser.h


Annotated List
Files
Globals
Hierarchy
Index
#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.