▲ | fjfaase 8 days ago | |||||||
I recently wrote a small C compiler that uses a recursive decent parser while this should not be possible if you just look at the syntax grammar. Why, because it looks at some semantic information about the class of identifiers, whether they are variables of typedefs for example. On the otherhand this is not very surprising, because in the days C was developed, easy parsing was a practical implication of it not being an academic research thing, but something that just had to work. Recursive decent parsers can simply be implemented with recusive functions. Implementing semantic checks becomes easy with additional parameters. | ||||||||
▲ | ufo 4 days ago | parent | next [-] | |||||||
It sounds like you're describing the Lexer Hack[1]. That trick works just the same in an LR parser, so I wouldn't count it as an advantage of recursive descent. | ||||||||
| ||||||||
▲ | WalterBright 4 days ago | parent | prev [-] | |||||||
When I developed ImportC (which enables D compilers to read and use C code) I tried hard to build it and not require semantic analysis. What a waste of time. I failed miserably. However, I also realized that the only semantic information needed was to keep track of typedefs. That made recursive descent practical and effective. |