diff --git a/packages/parse-mapping-lookup/src/grammar.ts b/packages/parse-mapping-lookup/src/grammar.ts index 717a64489ff..2f1720819b7 100644 --- a/packages/parse-mapping-lookup/src/grammar.ts +++ b/packages/parse-mapping-lookup/src/grammar.ts @@ -41,8 +41,8 @@ export const definitions: Definitions = { value: ({ construct }) => noCharOf("]").pipe( - many(), - map(characters => construct({ contents: characters.join("") })) + then(noCharOf("]").pipe(many())), + map(([first, rest]) => construct({ contents: [first, ...rest].join("") })) ), indexAccess: ({ construct, tie }) => diff --git a/packages/parse-mapping-lookup/src/parser.spec.ts b/packages/parse-mapping-lookup/src/parser.spec.ts index 0cdc32b8c43..580805469f1 100644 --- a/packages/parse-mapping-lookup/src/parser.spec.ts +++ b/packages/parse-mapping-lookup/src/parser.spec.ts @@ -86,6 +86,12 @@ const testCases = [ position: 2 } }, + { + expression: `m[1].s[]`, + trace: { + position: 7 + } + }, { expression: `m[hex"deadbeef"]`, value: expression({