From: Stephen Leake <stephen_leake@acm.org>
To: cl1motorsports <cwlambert76@yahoo.com>
Cc: comp.lang.ada@ada-france.org
Subject: Re: how do i implement double-dispatching?
Date: 21 Dec 2003 08:39:59 -0500
Date: 2003-12-21T08:39:59-05:00 [thread overview]
Message-ID: <mailman.150.1072014027.31149.comp.lang.ada@ada-france.org> (raw)
In-Reply-To: <pan.2003.12.20.17.00.33.831421@yahoo.com>
cl1motorsports <cwlambert76@yahoo.com> writes:
> On Sat, 20 Dec 2003 10:56:07 +0100, Martin Krischik wrote:
>
> > Have you considered to send the C file thrue the C preprocessors
> > and convert the output? #if #define etc. pp. will be cone by then.
>
> What's the fun in that? Seriously though, the most common preprocessor is
> the one that comes with gcc, and it puts alot of non standard C stuff in
> its output.
Hmm. I never noticed anything that was not in the ANSI C standard. Are
you sure it is truly not in that standard? Or is it just something you
are not familiar with? In any case, you can disable any non-standard
stuff by specifying -ansi.
> That is one reason I didn't want to do that. Another reason is
> because some people may want to convert a whole project and want to
> keep the preprocessed code.
I think you mean "translate the preprocessor statements into Ada, to
preserve structure". That is a good idea.
> I already have some ideas on this
>
> #define FOO
> Foo : constant Boolean := True
>
> #define FOO "i'm a string"
> Foo : constant String(1..12") := "i'm a string";
>
> #define FOO 12
> Foo : constant := 12;
>
> #define MAX(a,b) (a < b) b ? a;
> generic
> type blah is <>;
> function Max(a : blah; b : blah) return blah is
> begin
> if (a < b) then
> return b;
> else
> return a;
> end if;
> end Max;
> function
>
> that's just a few examples.
This will work for many common uses of the preprocessor. Of course, it
will not be possible for _all_ uses of the preprocessor. But then your
translator can either run the C preprocessor and use the output, or
issue an error about untranslatable code.
> I also want to use the define statements to be able to produce
> generic packages. I've got a direct conversion for most types of
> #define statements (i think) except ones with the stringize and
> concatination operators, and the ones that are just down right messy
> (garbage in garbage out).
Right. Those should be re-written anyway :).
--
-- Stephe
next prev parent reply other threads:[~2003-12-21 13:39 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-17 18:08 how do i implement double-dispatching? cl1motorsports
2003-12-18 2:17 ` Stephen Leake
2003-12-18 9:48 ` Dmitry A. Kazakov
2003-12-18 15:13 ` Martin Krischik
2003-12-20 6:27 ` cl1motorsports
2003-12-20 9:56 ` Martin Krischik
2003-12-20 17:00 ` cl1motorsports
2003-12-21 13:39 ` Stephen Leake [this message]
2003-12-21 17:40 ` cl1motorsports
2003-12-22 22:47 ` Stephen Leake
2003-12-22 21:41 ` cl1motorsports
2003-12-22 21:47 ` cl1motorsports
2003-12-23 11:03 ` Dmitry A. Kazakov
2003-12-22 22:49 ` Stephen Leake
2003-12-22 23:04 ` cl1motorsports
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox