Related articles |
---|
Implementing types in a compiler pjmlp@students.si.fct.unl.pt (1997-01-29) |
Re: Implementing types in a compiler pertsserver!mkgardne@uunet.uu.net (1997-01-30) |
Re: Implementing types in a compiler jlilley@empathy.com (John Lilley) (1997-01-30) |
From: | pertsserver!mkgardne@uunet.uu.net (Mark K. Gardner) |
Newsgroups: | comp.compilers |
Date: | 30 Jan 1997 22:19:55 -0500 |
Organization: | University of Illinois at Urbana |
References: | 97-01-238 |
Keywords: | OOP, types |
Paulo Jose Pinto - LEI (pjmlp@students.si.fct.unl.pt) wrote:
: I'm implementing an Object Pascal (Turbo Pascal v7.0 variant) compiler
: in C++ and have implemented the information regarding the types in the
: class Type which uses an union to represent all the kinds of types
: (Pointers, Methods, Constants, etc) and I use the methods to acess the
: information.
:
: But I DON'T LIKE this design, when I look at the code it always makes
: more sense to me to create an abstract class Type and then use
: ProcedureType, ConstType and other for all kinds of information. After
: all when we have an union in C, that should be implement in C++ as an
: abstract class and all the cases as descendents of that class. But
: this requires some sort of dynamic_cast so that I know which member
: function I can call, after all doesn't make sense to use a member
: function GetParameter (....) in ConstType.
I used the later (abstract/specific) Type design in a compiler I wrote
in C++ for the language Oberon. At the time, there was not RTTI so I
annotated the abstract Type class with a tag which I could switch upon
and then safely cast to the correct specific Type class. This worked
well for what I was doing (trying to quantify the performance impact
of using C++ in a hog-wild object-oriented way). I suspect it is not
used much in practice.
[Details about the comparison between structured and object-oriented
programming styles and implementations can be obtained via my thesis
"A Comparative Study of the Locality Characteristics of an
Object-Oriented Language" found at
http://pertsserver.cs.uiuc.edu/members/mkgardne/papers/MS-thesis.ps.gz]
--
Mark K. Gardner (mkgardne@cs.uiuc.edu)
University of Illinois at Urbana-Champaign
Real-Time Systems Laboratory
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.