Path: csiph.com!weretis.net!feeder6.news.weretis.net!news.glorb.com!border1.nntp.dca1.giganews.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Kaz Kylheku <686-678-9105@kylheku.com> Newsgroups: comp.compilers Subject: Re: Parsing partial sentences Date: Sun, 30 Apr 2017 16:31:52 +0000 (UTC) Organization: Aioe.org NNTP Server Lines: 35 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <17-04-028@comp.compilers> References: <17-04-001@comp.compilers> <17-04-023@comp.compilers> <17-04-024@comp.compilers> <17-04-027@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Info: miucha.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="77038"; mail-complaints-to="abuse@iecc.com" Keywords: translator, C, Pascal Posted-Date: 30 Apr 2017 15:38:44 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:1867 On 2017-04-29, Marco van de Voort wrote: > On 2017-04-27, Kaz Kylheku <686-678-9105@kylheku.com> wrote: >>> In a word NO. #defines are always strings even when they look like >>> constants, something I have found out the hard way. There have only been >>> two ways that I have successfully dealt with #defines: a preprocessor >>> pass or later and much faster pipeline the processing of C source and >>> add the defined definition processing into part of the source fetch >>> handling. >> >> If we allow Pascal to be extended with a macro preprocessor, > > I think most interest in C->Pascal header translators is for (semi)automated > translation of 3rd party library headers, not converting complete programs. OP wrote that he's writing a C to Pascal translator. The face value interpretation of that is that it handles programs. Handling only headers would be the likely focus of a project for automatically generating Pascal foreign function interface bindings for C libraries: C to Pascal interface translation (C à la SWIG and whatnot). > This means that it cannot be considered a given that a program exists that > uses all macros in the header. A macro that is not used by a C program might be complete gibberish; yet that program may still be well-formed. #define ABC { ( 42 -> * "foo" ] A C to Pascal translator which tries to treat unused macros might needlessly choke on such a thing. It is reasonable, nay wise, for a whole-program C to Pascal translator to ignore C macros that are unused by the C program.