On Feb 7, 2013, at 10:18 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> > On Thu, Feb 7, 2013 at 10:05 PM, Barry Smith <bsmith at mcs.anl.gov> wrote: > The reason I am insistent on minimizing CPP is that it is easy to teach a > pure C manipulator stuff. It is very difficult (I submit) to teach a CPP + C > manipulator much of anything expecially when "nasty" CPP tricks are used. > Plus there are good C manipulation tools coming on line, there are no, and > never will be, good CPP + C manipulation tools. > > But you're still not proposing manipulating pure C. No, you are saying that I am not proposing manipulating pure C. I did not say that. > You're proposing manipulating your new language that looks like C with > annotations in comments or special keywords or new control structures or > something and can be compiled to C by your "preprocessor". You are imagining the "annotations in comments" and the "special keywords" I never said they would be there. I want tools that OPERATE on C code. That is they take a chunk of pure C code as input and return a chunk of pure C code as output (the transformations I want to perform on the code are completely external to that chunk of code). You still want to insist that the transformations I want to perform and the C code I want it performed on MUST be in the same file mixed together in a bunch of ASCII (i.e formatted comments or special keywords). I submit that this is absolutely the wrong way to do it (sorry Boyana). For example, with simple C++ templates you imbed in the ASCII text you write the C code plus the "special symbols" that can transform to different types. The compiler then does the transformation as needed on this beast. This is not what I am wanting to do. > > Sure, some (maybe substantial) parts of the code will be equivalent to pure C > (with programmable semicolons or whatever, in the sense that error handling > gets injected except where it's explicitly told not to), but you can also > "manipulate" C+CPP code in the sense that you can expand all the macros and > then you'll actually have C semantics so that the manipulations make sense.
