caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] line number information in abstract syntax trees
@ 2003-09-15  7:53 Rafael 'Dido' Sevilla
  2003-09-15 11:14 ` Michal Moskal
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Rafael 'Dido' Sevilla @ 2003-09-15  7:53 UTC (permalink / raw)
  To: caml-list

As some of you have suggested earlier, I have foregone doing some
preliminary semantic analysis for my compiler in my ocamlyacc grammar,
and instead am using the grammar solely to do syntactic analysis.  Which
then brings me to another problem.  I've created an abstract syntax tree
data type, but now I need to somehow embed line number information
obtained from the syntactic analysis phase so that I can later do error
reporting.  I can't think of a clean way to do this.  So far, I have a
syntax tree data type that kind of looks like:

type program = { impmodule: string ; tdecls: topdecl list; plineno:int}
and topdecl =
    Declaration of decl * int
and decl = { idents: string list ; dtype: xtype ; dlineno:int}
and xtype =
    Data of datatype * int
  | Func of fntype * int
  | Alias of xtype * int
and datatype =
    Byte of int
  | Int of int
  | Big of int
  | Real of int
  | String of int
  | Tuple of (datatype list * int)
  | Array of (datatype * int)
  | List of (datatype * int)
  | Chan of (datatype * int)

Note that all the record types have additional fields that look like
'plineno:int' and every variant type has an int tacked on somewhere.
That int is supposed to contain the line number.

This works just fine, but it just seems to me like such a grossly ugly
hack into what is otherwise an elegant-looking data structure.  Anyone
have style guidelines 

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2003-09-19  6:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-15  7:53 [Caml-list] line number information in abstract syntax trees Rafael 'Dido' Sevilla
2003-09-15 11:14 ` Michal Moskal
2003-09-16 20:07 ` skaller
2003-09-17  8:44 ` Christian Lindig
2003-09-18 19:01   ` skaller
2003-09-19  6:50     ` Christian Lindig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).