Query: Writing a translator for an extended version of C++

raju@cs.utexas.edu (Raju Pandey)
Wed, 13 Apr 1994 20:43:05 GMT

          From comp.compilers

Related articles
Query: Writing a translator for an extended version of C++ raju@cs.utexas.edu (1994-04-13)
RE: Query: Writing a translator for an extended version of C++ cahill@perth.dialix.oz.au (1994-04-27)
| List of all articles for this month |

Newsgroups: comp.compilers
From: raju@cs.utexas.edu (Raju Pandey)
Keywords: C++, parse, question, comment
Organization: Compilers Central
Date: Wed, 13 Apr 1994 20:43:05 GMT

I am working on including a set of concurrency and synchronization
mechanisms to C++. I am looking at techniques for implementing a
translator that will transform the extended C++ code to C++. My focus at
this point is more on verifying the suitability of the language
constructs, and less on their efficient implementation. Hence, I am
looking for mechanisms that will allow me to build this translator quickly
(by utilizing existing tools, and source code).

I have looked at the compiler FAQ as well as the list of compiler
tools that are available. I could think of the following ways of
implementing the translator:
    o Extend an existing C++ grammar (available from many sources), use
        parser generators (such as yacc, yacc++, pccts, and others) to
        parse the extended source file, and manipulate the parse tree to
        generate suitable C++ code.

    o Use "TXL" to create a parse tree from the extended grammar of C++,
        transform the parse tree into one that includes only C++ code, and
        let "txl" traverse the tree to spit out the resulting C++ code.

    o Extend gnu g++ compiler by embedding proper code generation
        capabilities in the compiler.
I am sure that many readers on the net have defined (similar) extensions
to programming languages, and have built similar translators. The
questions that I have are:

    o What do people think about the above mechanisms? Any
        positive/negative experiences with either of the above?

    o Are there other techniques that I have overlooked?

    o Are there translators available that I can look at and modify
        appropriately to suit my purposes?

I apologize if this has been discussed earlier. I will post a summary
of all the replies (and my experiences) I receive.

Raju Pandey
[Parsing C++ is a pain in the neck because it is so ambiguous. I'd suggest
the quick and dirty approach: don't try to parse C++, but rather surround
your extensions with easy to recognize syntax delimiters and pass through
the stuff outside the delimiters. Later you might want to try a better
integrated version of the language, in which case you'd have to bite the
bullet and be prepared to parse the whole thing. -John]

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.