ES4 draft last call: line continuation in string and regex literals
On Mar 8, 2008, at 8:20 AM, Lars Hansen wrote:
Last call for the line continuation spec:
spec:line_continuation_in_strings
("Last call" = it will be taken into the language spec within a week
or so unless there's opposition now.)
This (and the line terminator normalization draft) seem to be in
restricted parts of the wiki. Could they go somewhere public?
The character sequence BACKSLASH <lineterminator> (where <lineterminator> will be one of the characters LF, LS, or PS) is removed from string literals delimited by either single or triple SINGLEQUOTE or DOUBLEQUOTE characters. (Triple-quoting is defined in [5].)
This states that:
"abc\ tde"
evaluates to the string "abc<tab>de".
Is this really what we want? I'd find such nested escape sequences really strange.
Waldemar
-----Original Message----- From: Waldemar Horwat [mailto:waldemar at google.com] Sent: 10. mars 2008 18:59 To: Lars Hansen Cc: es4-discuss Discuss Subject: Re: ES4 draft last call: line continuation in string and regex literals
The character sequence BACKSLASH <lineterminator> (where <lineterminator> will be one of the characters LF, LS, or PS) is removed from string literals delimited by either single or triple SINGLEQUOTE or DOUBLEQUOTE characters. (Triple-quoting is defined in [5].)
This states that:
"abc\ tde"
evaluates to the string "abc<tab>de".
Is this really what we want? I'd find such nested escape sequences really strange.
That looks like an illegal token to me, since the lexer will read "a" "b" "c" "" and then see an unescaped linefeed.
Since the speclet states nothing about changing the way strings are lexed, normal escape character processing should be in effect, and that dictates that \ is processed into \ independently of what follows.
Lars Hansen wrote:
The character sequence BACKSLASH <lineterminator> (where <lineterminator> will be one of the characters LF, LS, or PS) is removed from string literals delimited by either single or triple SINGLEQUOTE or DOUBLEQUOTE characters. (Triple-quoting is defined in [5].) This states that:
"abc\ tde"
evaluates to the string "abc<tab>de".
Is this really what we want? I'd find such nested escape sequences really strange.
That looks like an illegal token to me, since the lexer will read "a" "b" "c" "" and then see an unescaped linefeed.
Since the speclet states nothing about changing the way strings are lexed, normal escape character processing should be in effect, and that dictates that \ is processed into \ independently of what follows.
It's what we all want. As written, that's not what it states. This isn't ready to go in until this bug is corrected.
Waldemar
-----Original Message----- From: es4-discuss-bounces at mozilla.org [mailto:es4-discuss- bounces at mozilla.org] On Behalf Of Waldemar Horwat Sent: Monday, March 10, 2008 6:29 PM To: Lars Hansen Cc: es4-discuss Discuss Subject: Re: ES4 draft last call: line continuation in string and regexliterals
Lars Hansen wrote:
The character sequence BACKSLASH <lineterminator> (where <lineterminator> will be one of the characters LF, LS, or PS) is removed from string literals delimited by either single or triple SINGLEQUOTE or DOUBLEQUOTE characters. (Triple-quoting is defined in [5].) This states that:
"abc\ tde"
evaluates to the string "abc<tab>de".
Is this really what we want? I'd find such nested escape sequences really strange.
That looks like an illegal token to me, since the lexer will read "a"
"b" "c" "" and then see an unescaped linefeed.
Since the speclet states nothing about changing the way strings are lexed, normal escape character processing should be in effect, and
that
dictates that \ is processed into \ independently of what follows.
It's what we all want. As written, that's not what it states. This
isn't
ready to go in until this bug is corrected.
Waldemar, can you suggest a fix?
Jeff Dyer wrote:
Waldemar, can you suggest a fix?
The correct fix is to add the relevant productions to the lexer grammar. It's fairly straightforward in the string literal grammar. It's painful in the regexp grammar.
Waldemar
OK. I'll make a brief annotation on the proposal page about left-to-right interpretation so that we can move on and say that we've accepted the proposal; when the grammar is later written up there should be no room for confusion about what the intent of this proposal was.
Last call for the line continuation spec:
spec:line_continuation_in_strings
("Last call" = it will be taken into the language spec within a week or so unless there's opposition now.)