--- 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); \
};