+1  A: 

There don't exist any, as far as I know. The C++ syntax can't even be expressed in a proper EBNF - it's a context-sensitive grammar, and anything attempting to parse it has to be capable of processing C++ code at least as far as template instantiation and overload resolution (not to mention macros).

coppro
It depends on what the OP wanted. If a full-and-complete syntax description as railroad diagrams, that's one thing. If just a guide to the main parts of the language syntax (which might be the case, given the other questions posted by them) then a partial set might do. A Google search turns up some
Paul
A: 

There isn't one - the C++ grammar is not only not context-free, it's undecidable. See http://yosefk.com/c++fqa/defective.html#defect-2 and the associated links for a more in-depth discussion.

Adam Rosenfield
undecidable in that context refers to context-sensitivity. The FQA, like all rants, tends to skip the facts slightly (it's still a good source of criticism). The expression AA BB(CC) does depend on the context, but won't give an error for ambiguity. It is very easily decidable based on context.
coppro
Why would being not context-free mean the grammar is undecidable? That's just nonsense, it just means that the grammar is context-dependent. These "ambiguous" constructs like `int a();` are interpreted always and consistently in well-defined ways. That the interpretation, which is dictated by the grammar, might not be what the programmer *wanted* doesn't mean anything is undecidable.
sth
A: 

I don't know if there are some railroad diagrams for the C++ diagrams (I don't value these image much) but it is a purely mechanical work to transform EBNF to these diagrams.

About the grammar of C++: If you look at the grammar in the appendix of the C++ standard, that is a context-free grammar. The problem with this grammar is that it is an ambiguous grammar. Another thing is, the grammar accepts strings that are not valid C++ programs - but this is true about every typed languages with variable declarations. If the gramar was undecidable, it would mean that you could not tell for some string if it was generated according to the grammar or not. BTW, it really is undecidable problem whether given C++ file compiles, because templates are Turing-complete.

The reason why this ambiguous grammar is frowned upon is that it makes the parser much more complex, slower and/or needing more memory.

jpalecek