From 7e378545e07b5488c7cfcf54662b81ceb7a7b691 Mon Sep 17 00:00:00 2001 From: Alessandro Coglio Date: Wed, 12 May 2021 19:08:02 -0700 Subject: [PATCH] [ABNF] Replace format strings with string literals. 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. --- grammar/abnf-grammar.txt | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/grammar/abnf-grammar.txt b/grammar/abnf-grammar.txt index 0e038c2fb3..a2cc280003 100644 --- a/grammar/abnf-grammar.txt +++ b/grammar/abnf-grammar.txt @@ -333,8 +333,6 @@ single-quote = %x27 ; ' ; We give names to complements of certain ASCII characters. ; These consist of all the Unicode characters except for one or two. -not-double-quote = %x0-22 / %x24-10FFFF ; anything but " - not-star = %x0-29 / %x2B-10FFFF ; anything but * not-line-feed-or-carriage-return = %x0-9 / %xB-C / %xE-10FFFF @@ -346,12 +344,6 @@ not-double-quote-or-backslash = %x0-21 / %x23-5B / %x5D-10FFFF not-single-quote-or-backslash = %x0-26 / %x28-5B / %x5D-10FFFF ; anything but ' or \ -not-double-quote-or-open-brace = %x0-22 / %x24-7A / %x7C-10FFFF - ; anything but " or { - -not-double-quote-or-close-brace = %x0-22 / %x24-7C / %x7E-10FFFF - ; anything but " or } - not-star-or-slash = %x0-29 / %x2B-2E / %x30-10FFFF ; anything but * or / @@ -464,21 +456,6 @@ identifier = letter *( letter / digit / "_" ) ; but not a keyword or aleo1... package-name = 1*( lowercase-letter / digit ) *( "-" 1*( lowercase-letter / digit ) ) -; A format string is a sequence of characters, other than double quote, -; surrounded by double quotes. -; Within a format string, sub-strings `{}` are distinguished as containers -; (these are the ones that may be matched with values -; whose textual representation replaces the containers -; in the printed string). - -format-string-container = "{}" - -format-string-element = not-double-quote-or-open-brace - / "{" not-double-quote-or-close-brace - / format-string-container - -format-string = double-quote *format-string-element double-quote - ; Annotations have names, which are identifiers immediately preceded by `@`. annotation-name = "@" identifier @@ -629,7 +606,6 @@ token = keyword / identifier / atomic-literal / package-name - / format-string / annotation-name / symbol @@ -986,7 +962,7 @@ assert-call = %s"assert" "(" expression ")" print-function = %s"debug" / %s"error" / %s"log" -print-arguments = "(" [ format-string *( "," expression ) ] ")" +print-arguments = "(" [ string-literal *( "," expression ) ] ")" print-call = print-function print-arguments