00001 #ifndef MISTRAL_PARSER_DEFS_H_
00002 #define MISTRAL_PARSER_DEFS_H_
00003
00004 #include "cnode.h"
00005 #include "term.h"
00006 #include <string>
00007 using namespace std;
00008
00009 union parse_res_union
00010 {
00011 CNode* c;
00012 Term* t;
00013 string* s;
00014 };
00015
00016 enum PARSE_KIND {PARSE_CNODE, PARSE_TERM, PARSE_STRING};
00017
00018 struct parse_result
00019 {
00020 PARSE_KIND kind;
00021 parse_res_union res;
00022 };
00023
00024
00025
00026
00027 #define YYSTYPE parse_result
00028
00029 extern YYSTYPE yylval;
00030
00031 #define YYINITDEPTH 100000
00032
00033
00034 extern CNode* res_constraint;
00035 extern Term* res_term;
00036
00037 extern int curr_lineno;
00038 extern void (*parser_error_fn)(string);
00039
00040 #endif