Distinction between statements, declarations, and expressions in formal grammar I am learning basic grammar and parsing concepts and ran into this statement:


  Nonterminal symbols represent syntactic entities: statements, declarations, or expressions.


But the three terms (statements, declarations, expressions) were not really defined. I have plenty of programming experience so I have a fairly intuitive grasp of the terms, but I'm wondering, from a language grammar standpoint, what are the generally accepted definitions for each? When I searched online I found several language-specific discussions but nothing that gave a general definition of these terms that can apply across any language.

Are there such definitions out there? Thanks.
These are informal terms. For example, in the C language:


Statements are things like x = 3;.
Declarations are things like int x;.
Expressions are things like x * y.


So declarations are a particular type of statements, and expressions appear in statements. 

A better formulation of the statement you quoted would be:


  Nonterminal symbols represent syntactic entities such as statements, declarations, or expressions.