From ecadb3c321b2bf441cb7d34e21941aab7902045d Mon Sep 17 00:00:00 2001 From: Alessandro Coglio Date: Mon, 26 Jul 2021 21:12:30 -0700 Subject: [PATCH 1/2] [ABNF] Make the lexical grammar slightly less ambiguous. Before this commit, 'true' and 'false' were both keywords and boolean literals, making the grammar slightly more ambiguous than it needs to be. This manifests in the formal specification of lexing and parsing, which would need an additional extra-grammatical predicate requiring 'true' and 'false' to be boolean literals and not keywords. By making 'true' and 'false' just boolean literals, we obviate that need. Extend the comment about identifiers and package names not being keywords or aleo1... to also exclude boolean literals. This is similar to the grammar of Java, in which 'true', 'false', and 'null' are not keywords. This does not necessitate any change to the lexer/parser, which already performs its own procedural disambiguation of this and other aspects of the grammar. --- grammar/abnf-grammar.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/grammar/abnf-grammar.txt b/grammar/abnf-grammar.txt index 233f0b4910..124a0f1f37 100644 --- a/grammar/abnf-grammar.txt +++ b/grammar/abnf-grammar.txt @@ -395,7 +395,6 @@ keyword = %s"address" / %s"console" / %s"const" / %s"else" - / %s"false" / %s"field" / %s"for" / %s"function" @@ -416,7 +415,6 @@ keyword = %s"address" / %s"self" / %s"static" / %s"string" - / %s"true" / %s"u8" / %s"u16" / %s"u32" @@ -448,7 +446,8 @@ hexadecimal-digit = digit / "a" / "b" / "c" / "d" / "e" / "f" ; because that is used for address literals: ; this is another extra-grammatical requirement. -identifier = letter *( letter / digit / "_" ) ; but not a keyword or aleo1... +identifier = letter *( letter / digit / "_" ) + ; but not a keyword or a boolean literal or aleo1... ; A package name consists of one or more segments separated by single dashes, ; where each segment is a non-empty sequence of lowercase letters and digits. @@ -457,7 +456,7 @@ identifier = letter *( letter / digit / "_" ) ; but not a keyword or aleo1... package-name = lowercase-letter *( lowercase-letter / digit ) *( "-" 1*( lowercase-letter / digit ) ) - ; but not a keyword or aleo1... + ; but not a keyword or a boolean literal or aleo1... ; Note that, grammatically, identifiers are also package names. ; They are disambiguated from context, based on the syntactic grammar. From ac65ffd67ed3eec917f56bda4ed8b9c52c6da89b Mon Sep 17 00:00:00 2001 From: Alessandro Coglio Date: Mon, 26 Jul 2021 21:16:34 -0700 Subject: [PATCH 2/2] [ABNF] Regenerate the markdown for the ABNF grammar. --- grammar/README.md | Bin 111732 -> 54062 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/grammar/README.md b/grammar/README.md index eef68c73a3dabc6eb17013e957b0affd605a8803..b22bd5ecf0493d8699fab145a83e0dc8e14e08ef 100644 GIT binary patch literal 54062 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