From c6b6aefd36d49aaf873bca20175b929f828589df Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Thu, 28 Mar 2013 18:33:13 +0100 Subject: String::get_coord() calculates line and column of a string position * use to get line and column into a stack frame --- src/parser.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src/parser.h') diff --git a/src/parser.h b/src/parser.h index 8aa7ef5..a829b6d 100644 --- a/src/parser.h +++ b/src/parser.h @@ -44,10 +44,13 @@ public: public: gint pos; + gint line, column; class Frame { public: gint pos; + gint line, column; + virtual ~Frame() {} virtual void display(gint nr) = 0; @@ -69,8 +72,8 @@ public: display(gint nr) { interface.msg(Interface::MSG_INFO, - "#%d in Q-Register \"%s\" at %d", - nr, name, pos); + "#%d in Q-Register \"%s\" at %d (%d:%d)", + nr, name, pos, line, column); } }; @@ -90,8 +93,8 @@ public: display(gint nr) { interface.msg(Interface::MSG_INFO, - "#%d in file \"%s\" at %d", - nr, name, pos); + "#%d in file \"%s\" at %d (%d:%d)", + nr, name, pos, line, column); } }; @@ -101,19 +104,15 @@ public: display(gint nr) { interface.msg(Interface::MSG_INFO, - "#%d in toplevel macro at %d", nr, pos); + "#%d in toplevel macro at %d (%d:%d)", + nr, pos, line, column); } }; Error(const gchar *fmt, ...) G_GNUC_PRINTF(2, 3); ~Error(); - inline void - add_frame(Frame *frame) - { - frame->pos = pos; - frames = g_slist_prepend(frames, frame); - } + void add_frame(Frame *frame); void display_short(void); void display_full(void); -- cgit v1.2.3