[KDevelop-PG-Qt] [Patch] Full CC-Example
Andreas Pakulat
apaku at gmx.de
Sun Oct 18 13:52:50 UTC 2009
On 18.10.09 15:32:43, Milian Wolff wrote:
> On Sunday 18 October 2009 16:50:57 Jonathan Schmidt-Dominé - Developer wrote:
> > Hi!
> >
> > The cc-example for the parser-generator KDevelop-PG-Qt is very outdated
> > (wrong syntax, no functionality). So I decided to learn the syntax be
> > patching the cc-example. I have added a Lexer and corrected the Parser. A
> > Visitor dumps the parse-tree to console. I have not corrected everything,
> > a few syntax-elements like export are still missing. So the small test
> > works, but the bigger test does not. (I have added it to check the
> > functionality after changes) I hope you can apply the patch. ;)
> >
> > Jonathan
> >
> > PS:
> > The patch was created from /playground/devtools.
>
> Nice! The patch looks good.
>
> What is
>
> #line 2 "cclexer.cpp"
>
> #line 4 "cclexer.cpp"
>
> supposed to do in cclexer.cpp ?
Thats probably generated. I guess the cpp/h file are coming from some
kind of lexer-generator like flex.
> On a different matter:
> David Nolden, who wrote the Cpp support for KDevelop, wrote is parser by hand
> afaik.
Actually the parser itself was written by Roberto Raggi.
> Maybe one should investigate whether one should take the cc approach.
> Of course that won't happen before 4.0 as it might break a lot, yet in the
> future it could make sense...
Well, I doubt that it makes a lot of difference wether the C++ parser is
written in C++ or in a grammar thats used to generate C++. In both cases
somebody who wants to fix a bug or add a feature needs to sit down and
understand how the grammar or the c++ code works. Having recently had a
quick look at my QMake grammer and the python one too, I know that after
not looking at those files for a few months it'll simply take some time
until you're "back in".
All that the parser-generator takes away is the decision which C++ code
to write for the parser, i.e. you're using a limited set of language
elements to express the grammar instead of being forced to "choose" from
the huge variety of C++ constructs you could potentially use...
> If you are up to it, please contribute :D I once started with Css but failed
> horribly, because I could not find much documentation on the *.g syntax, did
> you find any? If not, I would also appreciate it greatly if you could write
> some documentation!
Well, personally I find the bison-file in
kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy not sooo bad as far as
documenting the syntax goes. However its true that its not so easy to
put that syntax into the right use. And you'll need a fair bit of
parser-theory background for more complex languages to be able to solve
the possible grammar-conflicts without plain "try&error".
Andreas
--
Go to a movie tonight. Darkness becomes you.
More information about the KDevelop-devel
mailing list