leo/docs/grammar
Alessandro Coglio ce2d8f8a51 [ABNF] Add annotations.
This is to match the recent introduction of the `@program` annotation for
external functions (i.e. functions that may be called externally, passing to
them inputs through the input files).

This PR adds not just that annotation, but a more general notion of annotation
as a new kind of token of the form `@<identifier>`, and with the ability to
precede each function declaration with zero or more such annotations.

The fact that it has been added as a token to the lexical grammar, means that
there cannot be any whitespace or comments between the `@` and the identifier.
If that is undesired, we can add it to the syntactic grammar instead, defining
an annotation as consisting of the (new) symbol token `@` followed by an
identifier token.

We can of course extend annotations with arguments at some point, if needed.
2022-08-09 20:45:54 -07:00
..
src forbid unsafe_code in all crates 2022-08-05 00:36:41 +02:00
.gitattributes [ABNF] Simplify .gitattribute file. 2022-05-28 18:35:03 -07:00
abnf-grammar.txt [ABNF] Add annotations. 2022-08-09 20:45:54 -07:00
Cargo.toml restructure compiler and delete unused code 2022-02-22 15:12:52 -08:00
README.md [ABNF] Minor README fixes and improvements. 2022-05-28 18:47:27 -07:00

# ABNF Grammar

This directory contains both the ABNF grammar for the Leo language and a Rust binary to help convert the ABNF grammar file to a markdown file.

Markdown Conversion Instructions

Assuming you are in the grammar directory, run cargo run abnf-grammar.txt > README.md.