Programming languages let you organize code by building things out of small, well-defined pieces. Larger pieces of the program are built by combining smaller pieces. The way that these pieces are allowed to be combined are defined by the language's "grammar".
For example in the C# code:
X = Y + 1;
"X" and "Y" are identifiers (which can be used anywhere an expression is allowed).
"1" is an integer-literal (which can also be used anywhere an expression is allowed).
"Y+1" is an additive-expression (which is a type of expression).
"X = Y+1" is an assignment (which is also a type of expression).
"X = Y+1;" is an expression-statement (which is a type of statement).
A function can contain statements. A class can contain one or more fields, properties, functions. Classes can be put inside namespaces. A program can contain multiple namespaces.
You can see the entire set of what pieces are allowed to be combined in its nitty-gritty detail in a formal grammar. Usually this is too hard to read for day-to-day purposes but sometimes you can find something that you didn't know was possible by reading through them:
https://msdn.microsoft.com/en-us/library/aa664812(v=vs.71).aspx?f=255&MSPPError=-2147217396