Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.compilers > #1845

Re: Parsing partial sentences

From Hans-Peter Diettrich <DrDiettrich1@netscape.net>
Newsgroups comp.compilers
Subject Re: Parsing partial sentences
Date 2017-04-07 22:24 +0200
Organization Compilers Central
Message-ID <17-04-006@comp.compilers> (permalink)
References <17-04-001@comp.compilers> <17-04-002@comp.compilers> <17-04-003@comp.compilers> <17-04-004@comp.compilers>

Show all headers | View raw


Am 07.04.2017 um 18:59 schrieb George Neuner:
> On Fri, 7 Apr 2017 11:16:18 -0400 (EDT), Hans-Peter Diettrich
> <DrDiettrich1@netscape.net> wrote:

>> The purpose is just what I wrote: parse #defines into constructs which
>> can be translated into some other programming language. It shall become
>> part of my C-to-Pascal converter, written in Pascal (OPL).
>
> Unfortunately, #define is a textual substition ... the preprocessor
> doesn't care whether the body is legal C, and the compiler itself
> doesn't look at the raw #define bodies.

Right, but in a language translation I want to retain as much of the
original code as possible. Then a Pascal compiler can find bugs which
escape the C compiler.

> It might be easiest to just run the C preprocessor as a 1st pass and
> then attempt to convert the result.

That would obfuscate the source code widely :-(


> Since a #define body is just text, it can be anything - people have
> created whole DSLs using #define.  If you really need to figure them
> out, I'm afraid you'll need (almost) the whole C language parser to do
> it.

I already wrote the parser, but it's LL. For code snippets a LR parser
looks like the only solution?

DoDi

[Since preprocessor macros are text macros, there's no reason to
expect a macro's expansion can be parsed at all.  Consider this:

# define FOO 42 +
int a, b;
...
	a = FOO b;

A notorious example of preprocessor abuse was the Bourne shell, where
Steve Bourne wrote preprocessor macros to make C look like Algol 68.
-John]

Back to comp.compilers | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Parsing partial sentences Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-04-03 09:57 +0200
  Re: Parsing partial sentences Fernando <pronesto@gmail.com> - 2017-04-04 06:05 -0700
    Re: Parsing partial sentences Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-04-07 11:16 -0400
      Re: Parsing partial sentences George Neuner <gneuner2@comcast.net> - 2017-04-07 12:59 -0400
        Re: Parsing partial sentences Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-04-07 22:24 +0200
          Re: Parsing partial sentences George Neuner <gneuner2@comcast.net> - 2017-04-10 20:22 -0400
            Re: Parsing partial sentences Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-04-11 10:31 +0200
              Re: Parsing partial sentences Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-04-11 19:40 +0200
              Re: Parsing partial sentences George Neuner <gneuner2@comcast.net> - 2017-04-11 23:05 -0400
                Re: Parsing partial sentences Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-04-12 13:45 +0200
          Re: Parsing partial sentences Martin Ward <martin@gkc.org.uk> - 2017-04-11 10:30 +0100
  Re: Parsing partial sentences Walter Banks <walter@bytecraft.com> - 2017-04-27 10:58 -0400
    Re: Parsing partial sentences Kaz Kylheku <686-678-9105@kylheku.com> - 2017-04-27 19:08 +0000
      Re: Parsing partial sentences rugxulo@gmail.com - 2017-04-28 16:32 -0700
      Re: Parsing partial sentences Marco van de Voort <marcov@toad.stack.nl> - 2017-04-29 14:57 +0000
        Re: Parsing partial sentences Kaz Kylheku <686-678-9105@kylheku.com> - 2017-04-30 16:31 +0000
    Re: Parsing partial sentences Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2017-04-28 02:48 +0200

csiph-web