00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018
00019
00020 00021 00022 00023 00024 00025 00026 00027 00028
00029 #ifndef __PARSER_H
00030 #define __PARSER_H
00031
00032 #include <stdarg.h>
00033
00034 #define PT_EOF 1
00035 #define PT_WHITE 2
00036 #define PT_BBEGIN 3
00037 #define PT_BEND 4
00038 #define PT_TEXT 5
00039 #define PT_CBEGIN 6
00040 #define PT_CEND 7
00041 #define PT_LINECOM 8
00042
00043
00045 #define MAX_TOK_LENGTH 50
00046
00047
00049 class Parser
00050 {
00051 public:
00056 Parser(const char *_fname);
00057
00062 ~Parser();
00063
00064
00073 void error(int errnum, const char *args, ...);
00074
00076 void print(const char *args, ...);
00077
00079 void printcurtok(void);
00080
00085 int curtok;
00086
00088 char tok_text[MAX_TOK_LENGTH];
00089
00091 void gentoken(void);
00092
00101 bool eatOpen(bool force);
00102
00103
00112 bool eatClose(bool force);
00113
00114
00121 int eatNumber(void);
00122
00123
00132 bool eatSNumber(int &);
00133
00134 private:
00135 int gchar(void);
00136 void push(void);
00137 int type(int);
00138
00139 void skipwhite(void);
00140
00145 void vprint(const char *args, va_list ap);
00146
00147 private:
00148 char *fname;
00149 FILE *f;
00150 int lineno, curch;
00151 };
00152
00153 #endif