PDA

View Full Version : Writting a C++ Parser




Soulstorm
Aug 4, 2007, 12:31 AM
Well, that may sound too vague, but I am trying to improve my skills in writing parsers. So far for C++ I haven't tried to look at any other type of parser other than recursive descent.

All I would like is to have some resources to get started with writing recursive descent parsers. Examples, tutorials, etc.

PS. If the resources are for Cocoa, I still want them :)



kpua
Aug 4, 2007, 01:08 AM
http://en.wikipedia.org/wiki/Recursive_descent_parser

ChrisA
Aug 11, 2007, 08:44 PM
Well, that may sound too vague, but I am trying to improve my skills in writing parsers. So far for C++ I haven't tried to look at any other type of parser other than recursive descent.

All I would like is to have some resources to get started with writing recursive descent parsers. Examples, tutorials, etc.

PS. If the resources are for Cocoa, I still want them :)

Theoretical question: Can you write a recursive descent parser for C++?
I don't know I forgot if C++ is context sensitive or not

I would only do a recurcive decent parser for a simple language. The
last two I wrote I simply used LEX/YACC. It is so much easier and
you can be done in an hour.

But RD is easy, just write some functions that return "true" on a match.
Google found this. Looks good
http://teaching.idallen.com/cst8152/98w/recursive_decent_parsing.html

Catfish_Man
Aug 12, 2007, 03:39 AM
C or Objective-C would likely be a better choice. C++ is horrifyingly complex to parse correctly.

Norton Disney
Aug 12, 2007, 06:32 AM
Flex/Bison are alternatives to Lex/Yacc, that I've personally used.

Probably the best resource that you can have for writing a compiler is the Dragon book. There's quite a lot of theory to wade through before you get to the juicy bits. For example, you're going to need to have a good understanding of BNF.

If I recall correctly, there are a lot of ambiguities in the C++ grammar that make writing a compiler for it difficult. That contrasts with C, which has only one ambiguity, the 'dangling else'.

devman
Aug 12, 2007, 10:23 AM
good luck! A C++ parser is a tough task.