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) |
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]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.