--- 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