-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PPC0019] - Should it be a sublex? #47
Comments
FWIW, my implementation at https://metacpan.org/pod/Quote::Code goes with interpretation 2. It recursively parses embedded code blocks as it scans through the string. This is different from how perl does things, but I've never found a case where perl's "scan for the end and reparse" approach is actually useful. All it does is cause bizarre problems (e.g. with source filters that want to rewrite code). I'd welcome a change. JavaScript's console.log(`a ${ 'b' } c`); // "a b c"
console.log(`a ${ '}' } c`); // "a } c"
console.log(`a ${ `}` } c`); // "a } c"
console.log(`a ${ `} ${ '}' }` } c`); // "a } } c" |
Oh I don't think anyone ever suggested it was useful. It's relatively simple and cheap to implement which may be why it's done that way currently. I only suggest it as an option for consistency with existing quoting. |
Possibly the main issue is familiarity? Given that all the existing quote-like operators work by scanning for the end and then reparsing, and there is ample (and ancient) documentation about the gory details of parsing quoted constructs. If In my understanding this is only an issue for paired delimiters and interpolation.
In my understanding, Should there be a |
Even though i think that sublexing sucks, and as a parser author i would have to go out of my way to implement the sublexing logic if i cared to parse exactly like perl, there's no real reason to change existing code. |
There's been very little movement on this, so unless anyone screams very loudly, I'm going with option 2. |
Option 2 sounds like the more useful, especially because it will minimize the need for escaping. |
First interesting question: Should
qt()
strings be sub-lexed, or not..?I.e. what do people feel -should- be the behaviour of a construction like
Should it:
I feel that interpretation 2 might be most useful and powerful, but would be inconsistent with existing behaviour of existing operators. Interpretation 1 is certainly easier to achieve as it reüses existing parser structures, but given the whole point is to interpolate code inside the
{braces}
it might lead to weird annoying cases that don't work so well.Does anyone have any good examples one way or other from other languages that have a similar construction?
(Cross-posted to https://www.nntp.perl.org/group/perl.perl5.porters/2024/01/msg267671.html)
The text was updated successfully, but these errors were encountered: