Lambda the Ultimate

inactiveTopic xtc eXTensible C
started 3/7/2004; 10:17:36 PM - last post 3/13/2004; 2:18:30 PM
Mark Evans - xtc eXTensible C  blueArrow
3/7/2004; 10:17:36 PM (reads: 10024, responses: 2)
xtc eXTensible C

Unfortunately, existing solutions for extending C-like languages are either not expressive enough or [they are] targeted at compiler experts, thus preventing other system builders [non-experts] from reaping similar benefits. In particular, the C preprocessor has limited expressive power and, as a textual substitution system, is inherently unsafe. Next, while C++ templates are Turing-complete, they do not allow for the introduction of new abstraction mechanisms, such as a module system, or changing the compiler introduce domain-specific extensions. Finally ... existing compilers ... are very large programs and, if they are extensible at all, [are] targeted [only] at compiler experts...

Just recently released from NYU. Note xtc's usage of a packrat parser generator, which perhaps augments the attraction. Not that I am peddling C derivatives, but Ehud likes news with a DSL angle, and of course C is immensely popular. There are a couple of independent, poorly implemented "hacked C" projects to which some benefit might accrue from xtc.

Posted to DSL by Mark Evans on 3/7/04; 10:18:46 PM

Ehud Lamm - Re: xtc eXTensible C  blueArrow
3/8/2004; 4:30:57 AM (reads: 271, responses: 0)
I like functional programming items as well, all kinds of theory and even the occasional Software-Eng post...

Mark Evans - Re: xtc - eXTensible C  blueArrow
3/13/2004; 2:18:30 PM (reads: 99, responses: 0)

Note a similar project called OpenC++ - perhaps seen here before. The xtc project states explicit reasons for its avoidance of C++, but if you are interested in that DSL basis:

OpenC++ is source-to-source translator facilitating development of C++ language extensions, domain specific compiler optimizations and runtime metaobject protocols. OpenC++ is also a perfect code base for projects requiring C++ parser and static analyzer.