Related articles |
---|
Parsing C++ manowar@sauropod.engin.umich.edu (1996-11-15) |
Re: Parsing C++ graham.hughes@resnet.ucsb.edu (Graham Hughes) (1996-11-18) |
Re: Parsing C++ nagle@netcom.com (1996-11-18) |
Re: Parsing C++ jsgray@acm.org (Jan Gray) (1996-11-19) |
Re: Parsing C++ jlilley@empathy.com (1996-12-03) |
Re: Parsing C++ dlmoore@ix.netcom.com (David L Moore) (1996-12-07) |
Re: Parsing C++ jlilley@empathy.com (1996-12-09) |
Re: Parsing C++ jlilley@empathy.com (1996-12-09) |
[2 later articles] |
From: | Graham Hughes <graham.hughes@resnet.ucsb.edu> |
Newsgroups: | comp.lang.c++.moderated,comp.compilers |
Date: | 18 Nov 1996 00:35:13 -0500 |
Organization: | University of California, Santa Barbara |
References: | 96-11-102 |
Keywords: | C++, parse |
-----BEGIN PGP SIGNED MESSAGE-----
manowar@sauropod.engin.umich.edu (Krisztian Flautner) writes:
>Could someone give me some examples of language features that cause
>problems ? Has anyone made an analysis of what kind of grammar could
>be used to parse C++ without problems ?
This guy is from C:
Imagine the following code:
typedef int Foo;
int Foo;
int main() {
Foo * bar;
}
Now, in the main function: is that a multiplication, or a type
declaration? It's actually a type declaration, but there's no way an
LALR grammar is going to know that. Traditionally, you solve this
problem by passing symbol table information to the lexer.
Or how about
typedef float T;
void foo (const T) {
}
Is the T in foo a `const int' named T, or is it a `const float' with no
argument name (so we throw away the argument when we're called)? It's
actually the latter, but ...
Now, there exists a public ANSI C lexer/grammar pair. I haven't looked
at it, but extending it to support the profusion of similar C++
constructs would be a pain in the neck.
If you really want to parse C++, PCCTS (another free
lexer/compiler-compiler pair) actually has a C++ grammar written for it.
Warning: I've gone back to lex/yacc from PCCTS because the << >> syntax
for actions tends to get lost in the underflow... I wish vim could
highlight syntax, just so I could nail that one pair down.
- --
Graham Hughes (graham.hughes@resnet.ucsb.edu)
http://A-abe.resnet.ucsb.edu/~graham/ for HTML
-----BEGIN PGP SIGNATURE-----
Version: 2.6.2
iQCVAwUBMozVSSqNPSINiVE5AQFV/wP/UTuCjWWQOsBaU8VdMYvNHuuY/UEjirNl
t/dd2+WYkCqiYwQfr3p2oD60LFLAXr50umJLcO6a9sG+KSiD1YDezE13EMB3vVdp
oehiIBiXDzlE1ozZwlb3a+uE9CvnKP5jlsvbAL9I+LAOR2R34SCaXvCsFYQp/PzP
u7Vyoj0vqQw=
=uvIH
-----END PGP SIGNATURE-----
[ Send an empty e-mail to c++-help@netlab.cs.rpi.edu for info ]
[ about comp.lang.c++.moderated. First time posters: do this! ]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.