+### Top level structure
+
+All the language elements so far can be used in various places. Now
+it is time to clarify what those places are.
+
+At the top level of a file there will be a number of declarations.
+Many of the things that can be declared haven't been described yet,
+such as functions, procedures, imports, named types, and probably
+more.
+For now there are two sorts of things that can appear at the top
+level. They are predefined constants and the main program. While the
+syntax will allow the main program to appear multiple times, that will
+trigger an error if it is actually attempted.
+
+The various declarations do not return anything. They store the
+various declarations in the parse context.
+
+###### Parser: grammar
+
+ $void
+ Ocean -> DeclarationList
+
+ DeclarationList -> Declaration
+ | DeclarationList Declaration
+
+ Declaration -> DeclareConstant
+ | DeclareProgram
+ | NEWLINE
+
+ ## top level grammar
+