diff options
Diffstat (limited to 'src/reader.h')
-rw-r--r-- | src/reader.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/reader.h b/src/reader.h index 16a4ca6..77e7b84 100644 --- a/src/reader.h +++ b/src/reader.h @@ -3,6 +3,32 @@ #include "grammar.h" +/* The class of a general reader, which can read a grammar, either + from a file, or elsewhere, such as from an Emacs buffer, the + standard input, or even from some other places. + + The only expectation, or requirement, of such a reader is to + provide a function with a variable number and type of arguments + which returns a grammar. Then the package provides a function to + properly read a grammar, according to the specifications of the + reader. */ + +typedef Grammar *(*reader_func_t)(List *args); + +typedef struct Reader_s Reader; + +/* contructor */ + +/* Build a reader and assign to *reader. It is expected to be + allocated before this function. */ +void build_reader(Reader *reader, reader_func_t func, List *args); + +/* destructor */ + +/* Does not free READER. + + FLAG is passed to destroy_list, which see. */ +void destroy_reader(Reader *reader, int flag); #endif |