diff -r 64a4504633d4 -r a4f4990d5c66 absyntax/absyntax.hh --- a/absyntax/absyntax.hh Tue Apr 05 19:42:33 2011 +0100 +++ b/absyntax/absyntax.hh Thu Apr 14 17:35:25 2011 +0100 @@ -70,16 +70,15 @@ */ int first_line; int first_column; + const char *first_file; /* filename referenced by first line/column */ int last_line; int last_column; + const char *last_file; /* filename referenced by last line/column */ public: /* default constructor */ - symbol_c(void); - symbol_c(int fl /* first_line */, - int fc /* first_column */, - int ll = 0 /* last_line */, - int lc = 0 /* last_column */ + symbol_c(int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */ ); /* default destructor */ @@ -96,7 +95,10 @@ const char *value; public: - token_c(const char *value, int fl = 0, int fc = 0, int ll = 0, int lc = 0); + token_c(const char *value, + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */ + ); }; @@ -107,8 +109,14 @@ symbol_c **elements; public: - list_c(int fl = 0, int fc = 0, int ll = 0, int lc = 0); - list_c(symbol_c *elem, int fl = 0, int fc = 0, int ll = 0, int lc = 0); + list_c(int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */ + ); + + list_c(symbol_c *elem, + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */ + ); /* insert a new element */ virtual void add_element(symbol_c *elem); }; @@ -116,131 +124,138 @@ -#define SYM_LIST(class_name_c) \ -class class_name_c: public list_c { \ - public: \ - class_name_c(int fl = 0, int fc = 0, int ll = 0, int lc = 0); \ - class_name_c(symbol_c *elem, int fl = 0, int fc = 0, int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_TOKEN(class_name_c) \ -class class_name_c: public token_c { \ - public: \ - class_name_c(const char *value, int fl = 0, int fc = 0, int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_REF0(class_name_c) \ -class class_name_c: public symbol_c { \ - public: \ - class_name_c(int fl = 0, int fc = 0, \ - int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_REF1(class_name_c, ref1) \ -class class_name_c: public symbol_c { \ - public: \ - symbol_c *ref1; \ - public: \ - class_name_c(symbol_c *ref1, \ - int fl = 0, int fc = 0, \ - int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_REF2(class_name_c, ref1, ref2) \ -class class_name_c: public symbol_c { \ - public: \ - symbol_c *ref1; \ - symbol_c *ref2; \ - public: \ - class_name_c(symbol_c *ref1, \ - symbol_c *ref2 = NULL, \ - int fl = 0, int fc = 0, \ - int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_REF3(class_name_c, ref1, ref2, ref3) \ -class class_name_c: public symbol_c { \ - public: \ - symbol_c *ref1; \ - symbol_c *ref2; \ - symbol_c *ref3; \ - public: \ - class_name_c(symbol_c *ref1, \ - symbol_c *ref2, \ - symbol_c *ref3, \ - int fl = 0, int fc = 0, \ - int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4) \ -class class_name_c: public symbol_c { \ - public: \ - symbol_c *ref1; \ - symbol_c *ref2; \ - symbol_c *ref3; \ - symbol_c *ref4; \ - public: \ - class_name_c(symbol_c *ref1, \ - symbol_c *ref2, \ - symbol_c *ref3, \ - symbol_c *ref4 = NULL, \ - int fl = 0, int fc = 0, \ - int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5) \ -class class_name_c: public symbol_c { \ - public: \ - symbol_c *ref1; \ - symbol_c *ref2; \ - symbol_c *ref3; \ - symbol_c *ref4; \ - symbol_c *ref5; \ - public: \ - class_name_c(symbol_c *ref1, \ - symbol_c *ref2, \ - symbol_c *ref3, \ - symbol_c *ref4, \ - symbol_c *ref5, \ - int fl = 0, int fc = 0, \ - int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ -}; - - -#define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6) \ -class class_name_c: public symbol_c { \ - public: \ - symbol_c *ref1; \ - symbol_c *ref2; \ - symbol_c *ref3; \ - symbol_c *ref4; \ - symbol_c *ref5; \ - symbol_c *ref6; \ - public: \ - class_name_c(symbol_c *ref1, \ - symbol_c *ref2, \ - symbol_c *ref3, \ - symbol_c *ref4, \ - symbol_c *ref5, \ - symbol_c *ref6 = NULL, \ - int fl = 0, int fc = 0, \ - int ll = 0, int lc = 0); \ - virtual void *accept(visitor_c &visitor); \ +#define SYM_LIST(class_name_c) \ +class class_name_c: public list_c { \ + public: \ + class_name_c( \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + class_name_c(symbol_c *elem, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_TOKEN(class_name_c) \ +class class_name_c: public token_c { \ + public: \ + class_name_c(const char *value, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_REF0(class_name_c) \ +class class_name_c: public symbol_c { \ + public: \ + class_name_c( \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_REF1(class_name_c, ref1) \ +class class_name_c: public symbol_c { \ + public: \ + symbol_c *ref1; \ + public: \ + class_name_c(symbol_c *ref1, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_REF2(class_name_c, ref1, ref2) \ +class class_name_c: public symbol_c { \ + public: \ + symbol_c *ref1; \ + symbol_c *ref2; \ + public: \ + class_name_c(symbol_c *ref1, \ + symbol_c *ref2 = NULL, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_REF3(class_name_c, ref1, ref2, ref3) \ +class class_name_c: public symbol_c { \ + public: \ + symbol_c *ref1; \ + symbol_c *ref2; \ + symbol_c *ref3; \ + public: \ + class_name_c(symbol_c *ref1, \ + symbol_c *ref2, \ + symbol_c *ref3, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4) \ +class class_name_c: public symbol_c { \ + public: \ + symbol_c *ref1; \ + symbol_c *ref2; \ + symbol_c *ref3; \ + symbol_c *ref4; \ + public: \ + class_name_c(symbol_c *ref1, \ + symbol_c *ref2, \ + symbol_c *ref3, \ + symbol_c *ref4 = NULL, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5) \ +class class_name_c: public symbol_c { \ + public: \ + symbol_c *ref1; \ + symbol_c *ref2; \ + symbol_c *ref3; \ + symbol_c *ref4; \ + symbol_c *ref5; \ + public: \ + class_name_c(symbol_c *ref1, \ + symbol_c *ref2, \ + symbol_c *ref3, \ + symbol_c *ref4, \ + symbol_c *ref5, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ +}; + + +#define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6) \ +class class_name_c: public symbol_c { \ + public: \ + symbol_c *ref1; \ + symbol_c *ref2; \ + symbol_c *ref3; \ + symbol_c *ref4; \ + symbol_c *ref5; \ + symbol_c *ref6; \ + public: \ + class_name_c(symbol_c *ref1, \ + symbol_c *ref2, \ + symbol_c *ref3, \ + symbol_c *ref4, \ + symbol_c *ref5, \ + symbol_c *ref6 = NULL, \ + int fl = 0, int fc = 0, const char *ffile = NULL /* filename */, \ + int ll = 0, int lc = 0, const char *lfile = NULL /* filename */); \ + virtual void *accept(visitor_c &visitor); \ };