gardener.h (738B)
1 #include <stdio.h> 2 #include <stdbool.h> 3 #include "schema.h" 4 5 typedef enum { 6 OK, 7 START_WITH_INVALID_CONSTRUCTOR, 8 SUB_INVALID_KEY, 9 START_ON_NONEMPTY_STACK, 10 SUB_WITH_INVALID_CONSTRUCTOR, 11 DONE_ON_INVALID_TREE, 12 OP_AFTER_RESULT, 13 NON_START_OP_ON_EMPTY_STACK 14 } gardener_status; 15 16 typedef struct gardener gardener; 17 18 schema *get_cur_schema(gardener*); 19 symbol get_cur_constructor(gardener*); 20 21 gardener* new_gardener(schema*); 22 gardener_status get_error(gardener*); 23 tree* result(gardener*); 24 25 void fill(gardener*, symbol key, symbol value); 26 void sub(gardener*, symbol key, symbol constructor); 27 void done(gardener*); 28 void sup(gardener*, symbol key, symbol constructor); 29 void start(gardener*, symbol constructor); 30 31 void show(FILE *f, gardener*);