diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2009-12-08 14:24:42 +1100 |
---|---|---|
committer | Jon Loeliger <jdl@jdl.com> | 2010-01-14 07:52:48 -0600 |
commit | 728c5e87c655c17c2fbc1d5386b12ff328e0fc76 (patch) | |
tree | 9650c3532d9d0225f6a5e415a86567502ba12890 /srcpos.h | |
parent | d68cb36b0bebc7711ada9b750f3c19398c44efb7 (diff) | |
download | dtc-728c5e87c655c17c2fbc1d5386b12ff328e0fc76.tar.gz |
dtc: Cleanup line number tracking, add column number tracking
Our YYLTYPE current carries around first and last line and first and
last column information. However, of these, on the first line
information is actually filled in properly.
Furthermore, filling in the line number information from yylineno is
kind of clunky: we have to copy its value to the srcfile stack and
back to handle include file positioning correctly.
This patch cleans this up. We turn off flex's yylineno option and
instead track the line and column number ourselves from
YY_USER_ACTION. The line and column number are stored directly inside
the srcfile_state structure, so it's automatically a per-file
quantity. We now also fill in all the yylloc from YY_USER_ACTION.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'srcpos.h')
-rw-r--r-- | srcpos.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -31,7 +31,7 @@ struct srcfile_state { FILE *f; char *name; char *dir; - int lineno; + int lineno, colno; struct srcfile_state *prev; }; @@ -89,6 +89,7 @@ typedef YYLTYPE srcpos; */ extern srcpos srcpos_empty; +extern void srcpos_update(srcpos *pos, const char *text, int len); extern srcpos *srcpos_copy(srcpos *pos); extern char *srcpos_string(srcpos *pos); extern void srcpos_dump(srcpos *pos); |