diff -r b0a43002dcac -r 41cb5b80416e absyntax/absyntax.hh --- a/absyntax/absyntax.hh Tue Oct 23 10:33:09 2007 +0200 +++ b/absyntax/absyntax.hh Tue Oct 23 10:35:58 2007 +0200 @@ -51,7 +51,6 @@ class symbol_c; // forward declaration -//extern symbol_c *tree_root; @@ -62,12 +61,19 @@ /* * Line number for the purposes of error checking */ - long lineno; + int first_line; + int first_column; + int last_line; + int last_column; public: /* default constructor */ symbol_c(void); - symbol_c(long lineno); + symbol_c(int fl /* first_line */, + int fc /* first_column */, + int ll = 0 /* last_line */, + int lc = 0 /* last_column */ + ); /* default destructor */ /* must be virtual so compiler does not complain... */ @@ -83,7 +89,7 @@ const char *value; public: - token_c(const char *value); + token_c(const char *value, int fl = 0, int fc = 0, int ll = 0, int lc = 0); }; @@ -94,8 +100,8 @@ symbol_c **elements; public: - list_c(void); - list_c(symbol_c *elem); + 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); /* insert a new element */ virtual void add_element(symbol_c *elem); }; @@ -103,37 +109,71 @@ -#define SYM_LIST(class_name_c) \ -class class_name_c: public list_c { \ - public: \ - 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); \ - 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, 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_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); \ - 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); \ }; @@ -148,8 +188,30 @@ class_name_c(symbol_c *ref1, \ symbol_c *ref2, \ symbol_c *ref3, \ - symbol_c *ref4 = NULL); \ - virtual void *accept(visitor_c &visitor); \ + 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); \ }; @@ -168,7 +230,9 @@ symbol_c *ref3, \ symbol_c *ref4, \ symbol_c *ref5, \ - symbol_c *ref6 = NULL); \ + symbol_c *ref6 = NULL, \ + int fl = 0, int fc = 0, \ + int ll = 0, int lc = 0); \ virtual void *accept(visitor_c &visitor); \ }; @@ -180,8 +244,11 @@ #undef SYM_LIST #undef SYM_TOKEN #undef SYM_REF0 +#undef SYM_REF1 #undef SYM_REF2 +#undef SYM_REF3 #undef SYM_REF4 +#undef SYM_REF5 #undef SYM_REF6