On Oct 4, 2007, at 8:32 AM, Chris Lattner wrote: > On Oct 3, 2007, at 12:49 PM, Benjamin Meyer wrote: > >> The past few months I have been writing many tools with Roberto >> Raggi's c++ preprocessor and parser. It is very fast and I have >> enjoyed messing with it. As you (chris) already know exactly what >> you guys need/want and what would make a good parser I am very >> curious what you can say about it (where it is good/bad, what it is >> missing etc) >> >> The one I have been using can be found in this package: >> >> ftp://ftp.trolltech.com/qtjambi/source/qtjambi-gpl- >> src-4.3.0_01.tar.gz >> >> Located in: generator/parser/ and the preprocessor is in generator/ >> parser/rpp > > It is somewhat irritating to me that there is almost no comments > for this: it seems well thought out and written. Is there any out > of line documentation available?
Asking around there doesn't seem to be any that I could find. Sorry :( > Overall, it is an impressive piece of work. There are some minor > strange (to me) design decisions: for example, what is > ConditionAST, why does it exist? Sorry I am not that familiar with the design choice, I have forwarded this to Roberto who will hopefully respond shortly with answers to it and the other ones below. > The ASTs produced seem to be a bit heavier-weight than the clang > ASTs, and relies on the entire lexed token stream being available > to interpret the location info. However, in my first few minutes > looking at it, I don't think that it shares the "fatal flaws" (from > the clang perspective only, obviously) in its design or > implementation that elsa has. As a matter of fact, while the > details differ significantly, its design is somewhat similar to > clangs, validating clang's design ;-). One thing that is > impossible for me to do from inspection is to determine how > complete the parser is. > > Since I don't have it built and you do, here are some questions for > you: :) Having it sitting in the middle of other packages is getting annoying. I have pulled it out and made a quick (and very dirty) example app that can be used to generate preprocessed files (./ example -E file) put it in a git depot and put it up online http://repo.or.cz/w/rpp.git > 1) looking at the preprocessor, the implementation doesn't look > particularly speedy. It is using std::strings to push text > around. Have you timed the preprocessor on large inputs to see how > fast it really is? Did a quick (not scientific) test against gcc on my macbook it is almost twice the speed g++ real 0m0.437s user 0m0.243s sys 0m0.060s rpp real 0m0.248s user 0m0.197s sys 0m0.070s > 5) it looks like a lot of semantic checks are missing. Is there > anything that talks about the current state of the parser? It also > reads and ignores lots of stuff, even simple things like break/ > continue/goto stmts. I know that there are several groups (kdevelop is one group) who wish to use it to parse c++ code beyond Qt so it will be maintained and improved. I don't know their plans though. Sorry I can't be more help. -Benjamin Meyer _______________________________________________ cfe-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
