One possibility to find such names is to have a look at language syntaxes. Because every interpreter/compiler has to parse some source code, these well-known elements (declaration, statement, etc.) must be defined in some grammar.
Let's take a look at the Java syntax (I take Java because it's the language I'm the more comfortable with): https://docs.oracle.com/javase/specs/jls/se7/html/jls-18.html
Let's begin with Statement
Statement:
Block
;
Identifier : Statement
StatementExpression ;
if ParExpression Statement [else Statement]
assert Expression [: Expression] ;
switch ParExpression { SwitchBlockStatementGroups }
while ParExpression Statement
do Statement while ParExpression ;
for ( ForControl ) Statement
break [Identifier] ;
continue [Identifier] ;
return [Expression] ;
throw Expression ;
synchronized ParExpression Block
try Block (Catches | [Catches] Finally)
try ResourceSpecification Block [Catches] [Finally]
Let's have a look at class declaration now:
ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
Now a method declaration:
MethodDeclaratorRest:
FormalParameters {[]} [throws QualifiedIdentifierList] (Block | ;)
And finally the import (why not after all):
ImportDeclaration:
import [static] Identifier { . Identifier } [. *] ;
Now if we want to find the most common term for a statement, a class declaration, a method declaration and an import one "simply" have to go up the syntax tree until we find the first common ancestor.
Doing so, we end up (not so surprisingly) at the top of the tree on the rule
CompilationUnit:
[[Annotations] package QualifiedIdentifier ;]
{ImportDeclaration} {TypeDeclaration}
So, syntactically speaking the answer to your question is Compilation Unit. However, this ancestor is so far from the four base elements that it would be crazy to call a statement a compilation unit. Morality: don't try to unify many terms under a same term when it rightly exists different terms ! (otherwise any language's grammar would consist of only one big rule instead of many)
It's like trying to find a word that means either apple or banana but not orange, himbeer, etc.
Bonus answer: comment are not statements because they are not present in the language grammar.
Many languages (e.g. C) make a distinction between statements and definitions, with a statement only containing executable code and a definition instantiating an identifier, while an expression evaluates to a value only.
What, specifically, is confusing? – Thomas Owens♦ Oct 3 '16 at 10:56