feat: implement string interpolation with %(expr) syntax in compiler and core library
Add lexer support for `TOKEN_INTERPOLATION` to split string literals at interpolation points, introduce `MAX_INTERPOLATION_NESTING` limit of 8, and compile interpolated strings by emitting calls to `String.interpolate_()`. Optimize list and map literal construction with new `addCore_` primitives to reduce stack churn. Update `String`, `List`, and `Map` `toString` methods in core library to use interpolation syntax, and migrate all benchmark and test files from explicit concatenation to interpolated strings.
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
// Full string.
|
||||
System.print("%(1 + 2)") // expect: 3
|
||||
|
||||
// Multiple in one string.
|
||||
System.print("str%(1 + 2)(%(3 + 4)\%%(5 + 6)") // expect: str3(7%11
|
||||
|
||||
// Nested.
|
||||
System.print("[%("{%("in" + "ner")}")]") // expect: [{inner}]
|
||||
|
||||
// Ignore newlines in template.
|
||||
System.print("[%(
|
||||
|
||||
"template"
|
||||
|
||||
)]") // expect: [template]
|
||||
Reference in New Issue
Block a user