#define NIL ((Node *) 0) #define NULL 0 typedef void (*PF)(); // pointer to function type class Node { char *datum; Node *next; public: Node(char *); ~Node(); char *get_datum(); char *set_datum(char *); Node *get_next(); Node *set_next(Node *); }; class List { Node *head; int list_length; public: List(); List(char *); ~List(); Node *get_head(); Node *set_head(Node *); int get_length(); int set_length(int); List *cons(char *); int length(); int traverse(); char *car(); List *cdr(); List *append(List *); }; class Universal { public: char *father; char *attribute; }; class Construction : public Universal { }; class Repetition : public Universal { public: List child; List get_child(); List set_child(List); }; class Terminal : public Universal { public: char *val; char *get_val(); char *set_val(char *); }; /* * class Ident : public Terminal { * public: * Ident(char *); * ~Ident(); * }; * * class Number : public Terminal { * public: * Number(int); * Number(char *); * ~Number(); * * int get_val(); * int set_val(int); * int set_val(char *); * }; */