FQN means "fully qualified name". $(BNF ModuleFQN := Identifier ("." Identifier)*)
$(BNF ColonBlockDecl := ":" CompoundDecl)
Single semicolon.
Illegal declarations encompass all tokens that don't start a DeclarationDefinition.
$(BNF VariablesDecl := Type? Identifier ("=" Init)? ("," Identifier ("=" Init)?)* ";")