From 5da84c52ff696203e2bb004b503816cc2547e5d5 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 10 Jun 2023 22:23:43 +0200 Subject: [PATCH] Berry Allow comments in multi-line strings (#18848) --- lib/libesp32/berry/src/be_lexer.c | 4 +++- lib/libesp32/berry/tests/string.be | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/libesp32/berry/src/be_lexer.c b/lib/libesp32/berry/src/be_lexer.c index 7b3f05726..904ab0769 100644 --- a/lib/libesp32/berry/src/be_lexer.c +++ b/lib/libesp32/berry/src/be_lexer.c @@ -394,7 +394,9 @@ static int skip_delimiter(blexer *lexer) { int c = lgetc(lexer); int delimeter_present = 0; while (1) { - if (c == '\r' || c == '\n') { + if (c == '#') { + skip_comment(lexer); + } else if (c == '\r' || c == '\n') { skip_newline(lexer); } else if (c == ' ' || c == '\t' || c == '\f' || c == '\v') { next(lexer); diff --git a/lib/libesp32/berry/tests/string.be b/lib/libesp32/berry/tests/string.be index aeb0d0ad5..e7d91e8dd 100644 --- a/lib/libesp32/berry/tests/string.be +++ b/lib/libesp32/berry/tests/string.be @@ -88,3 +88,25 @@ assert(string.replace("hellollo", "aa", "xx") == "hellollo") assert(string.replace("hello", "ll", "") == "heo") assert(string.replace("hello", "", "xx") == "hello") assert(string.replace("hello", "", "") == "hello") + +# multi-line strings +var s = "a" "b""c" +assert(s == 'abc') + +s = 'a'"b"'''c' +assert(s == 'abc') + +s = "a" +'b' + "" + "c" +assert(s == 'abc') + +s = "a" #- b -# "b" #--# "c" +assert(s == 'abc') + +s = "a"# + # "z" + "b" # zz + "c" +assert(s == 'abc')