This is as discussed at today's sync.
The rule for package names is gone (but it will be re-introduced later to define
formally the format of certain TOML strings, not as part of the grammar of Leo
code, but as a separate grammar component).
Uses of package names in import declarations have been replaced with uses of
identifiers.
The changes to the grammar are fairly contained, as should be the changes to the
parser. Import resolution will have to translate between dashes and underscores.
The ending semicolon was missing.
This was found by @bendyarm, while investigating a discrepancy between the Leo
parser in Rust and the Leo parser in ACL2: the latter was correctly following
the erroneous grammar rule; it will be changed to be consistent with the fixed
rule.
Now the comment says that an identifier must not only be distinct from a
keyword, but also not be or start with 'aleo1'. Even though the grammar does not
capture these extra-grammatical requirements, we use comments to at least
mention them prominently.
Explain better variable and constant declarations.
Leave one blank line between the rules for variable and constant declarations
(not necessary for ABNF, but consistent with the rest of the file and actually
expected by the ABNF-to-LaTeX converter).
Limit lines to 80 columns, by putting the rules for variable and constant
declarations over two lines each, with proper indentation.
By using markdown in the documentation comments of the grammar, the markdown
file generated from the grammar includes those markdown features in the text,
making it more readable and better-looking.
Also fixed a few typos in the documentation comments.
Also updated a few documentation comments that were out of date after making
changes to the grammar.
Also removed a now-obsolete grammar rule for "input" parameters of functions.
For both uniformity and clarity of reference from other documentation comments,
add some documentation comments next to every single character definition.
No change to the grammar itself.