Given that we have string literals now, there is no need for the special notion
of format strings. Some other grammar rules go away as they were only involved
in the definition of format strings.
The well-formedness of containers in format strings is now delegated to the
static semantics of Leo: at the grammar level, any string literals is accepted
in console print calls.
Explain the new syntax for circuit member variables.
Explain the tighter syntax for import declarations.
Keep lines to 80 columns max, so that they fit well in the figures in the LaTeX
document.
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.
This was
affine-group-literal = "(" group-coordinate "," group-coordinate ")" %s"group"
instead of
affine-group-literal = "(" group-coordinate "," group-coordinate %s")group"
(note the different ending).
This change should have been part of the PR for whitespace in group literals,
but apparently I failed to do that, along with the other changes.
This commit rectifies that omission.
Make this more concise and clear by just presenting the lexical and syntactic
grammar as the way we define the Leo syntax, as opposed to discussing
alternatives like PEGs.
Explicate references to RFCs a bit.
Use the term 'sequence of terminals' instead of 'string' to avoid any confusion.
(Still use 'string' to refer to the actual strings in double quotes that are
part of the ABNF notation itself.)
Update to say that grammar is no longer just a draft.
Put primary motivation and purpose of grammar first.
Mention use in formalization second, and slightly simplify that part, given that
the formalization is not public yet.