From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,87077e61d6b3095b X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-12-20 09:19:02 PST Path: archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-01!sn-post-01!supernews.com!corp.supernews.com!not-for-mail From: cl1motorsports Newsgroups: comp.lang.ada Subject: Re: how do i implement double-dispatching? Date: Sat, 20 Dec 2003 11:00:39 -0600 Organization: Posted via Supernews, http://www.supernews.com Message-Id: User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity. (Debian GNU/Linux)) References: <18484099.QgktZUUZ8s@linux1.krischik.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@supernews.com Xref: archiver1.google.com comp.lang.ada:3631 Date: 2003-12-20T11:00:39-06:00 List-Id: On Sat, 20 Dec 2003 10:56:07 +0100, Martin Krischik wrote: > cl1motorsports wrote: > >> and just to let y'all know. I'm trying to write a C to Ada translator. The >> first task on my list is to handle #define statements. I'm sure this >> should be in another thread if a topic gets started on this. But I thought >> it would be nice to let y'all know what you were helping me with here. > > 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. 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 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. 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 now i'm just trying to work out a framework for accomplishing this because i would also like to make some other tools (maybe converters from other languages). I don't want ada to die. And if there were converters from other langauges that would be a start. Having common API's would be another great place. I think this tool would make that easier as well (ala cbind style). i'm still in the preliminary stages of this. However, I think with this one project i could take the information that i learn from it and apply it to several other development tools, and that would put ada code directly in the programmers hands. > > With Regards > > Martin