From 035ec47885db08eddfc5ed6177932f8debd095ab Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Sat, 25 Oct 2025 17:22:26 -0700 Subject: [PATCH] allow func defs in parens --- src/parser/shrimp.grammar | 2 +- src/parser/shrimp.terms.ts | 27 ++++++++++----------- src/parser/shrimp.ts | 48 ++++++++++++++------------------------ 3 files changed, 33 insertions(+), 44 deletions(-) diff --git a/src/parser/shrimp.grammar b/src/parser/shrimp.grammar index 9a8790f..741dad0 100644 --- a/src/parser/shrimp.grammar +++ b/src/parser/shrimp.grammar @@ -150,7 +150,7 @@ BinOp { } ParenExpr { - leftParen (ambiguousFunctionCall | BinOp | expressionWithoutIdentifier | ConditionalOp | PipeExpr) rightParen + leftParen (ambiguousFunctionCall | BinOp | expressionWithoutIdentifier | ConditionalOp | PipeExpr | FunctionDef) rightParen } expression { diff --git a/src/parser/shrimp.terms.ts b/src/parser/shrimp.terms.ts index b39e11d..75f88be 100644 --- a/src/parser/shrimp.terms.ts +++ b/src/parser/shrimp.terms.ts @@ -1,5 +1,6 @@ // This file was generated by lezer-generator. You probably shouldn't edit it. -export const Star = 1, +export const + Star = 1, Slash = 2, Plus = 3, Minus = 4, @@ -23,19 +24,19 @@ export const Star = 1, FunctionCallOrIdentifier = 22, BinOp = 23, ConditionalOp = 24, - String = 25, - StringFragment = 26, - Interpolation = 27, - EscapeSeq = 28, - Number = 29, - Boolean = 30, - Regex = 31, - Null = 32, - DotGet = 33, - FunctionDef = 34, + FunctionDef = 25, keyword = 50, - Params = 36, - colon = 37, + Params = 27, + colon = 28, + String = 30, + StringFragment = 31, + Interpolation = 32, + EscapeSeq = 33, + Number = 34, + Boolean = 35, + Regex = 36, + Null = 37, + DotGet = 38, Underscore = 39, NamedArg = 40, NamedArgPrefix = 41, diff --git a/src/parser/shrimp.ts b/src/parser/shrimp.ts index 548273d..1db89f9 100644 --- a/src/parser/shrimp.ts +++ b/src/parser/shrimp.ts @@ -1,39 +1,27 @@ // This file was generated by lezer-generator. You probably shouldn't edit it. -import { LRParser, LocalTokenGroup } from '@lezer/lr' -import { operatorTokenizer } from './operatorTokenizer' -import { tokenizer } from './tokenizer' -import { trackScope } from './scopeTracker' -import { highlighting } from './highlight' -const spec_Identifier = { - __proto__: null, - null: 64, - do: 70, - end: 76, - if: 88, - elseif: 96, - else: 100, -} +import {LRParser, LocalTokenGroup} from "@lezer/lr" +import {operatorTokenizer} from "./operatorTokenizer" +import {tokenizer} from "./tokenizer" +import {trackScope} from "./scopeTracker" +import {highlighting} from "./highlight" +const spec_Identifier = {__proto__:null,do:52, end:58, null:74, if:88, elseif:96, else:100} export const parser = LRParser.deserialize({ version: 14, - states: - ".jQVQbOOO#XQcO'#CrO$RQRO'#CsO$aQcO'#DmO$xQbO'#CqO%gOSO'#CuOOQa'#Dq'#DqO%uOpO'#C}O%zQcO'#DpO&cQbO'#D|OOQ`'#DO'#DOOOQ`'#Dn'#DnO&kQbO'#DmO&yQbO'#EQOOQ`'#DX'#DXO'hQRO'#DaOOQ`'#Dm'#DmO'mQQO'#DlOOQ`'#Dl'#DlOOQ`'#Db'#DbQVQbOOOOQa'#Dp'#DpOOQ`'#Cp'#CpO'uQbO'#DUOOQ`'#Do'#DoOOQ`'#Dc'#DcO(PQbO,59ZO&yQbO,59_O&yQbO,59_O)XQRO'#CsO)iQRO,59]O)zQRO,59]O)uQQO,59]O*uQQO,59]O*}QbO'#CwO+VQWO'#CxOOOO'#Du'#DuOOOO'#Dd'#DdO+kOSO,59aOOQa,59a,59aO+yO`O,59iOOQ`'#De'#DeO,OQbO'#DQO,WQQO,5:hO,]QbO'#DgO,bQbO,59YO,sQRO,5:lO,zQQO,5:lO-PQbO,59{OOQ`,5:W,5:WOOQ`-E7`-E7`OOQ`,59p,59pOOQ`-E7a-E7aOOQa1G.y1G.yO-^QcO1G.yO&yQbO,59`O&yQbO,59`OOQa1G.w1G.wOOOO,59c,59cOOOO,59d,59dOOOO-E7b-E7bOOQa1G.{1G.{OOQa1G/T1G/TOOQ`-E7c-E7cO-xQbO1G0SO!QQbO'#CrOOQ`,5:R,5:ROOQ`-E7e-E7eO.YQbO1G0WOOQ`1G/g1G/gOOQO1G.z1G.zO.jQRO1G.zO.tQbO7+%nO.yQbO7+%oOOQ`'#DZ'#DZOOQ`7+%r7+%rO/ZQbO7+%sOOQ`<uAN>uO&yQbO'#D]OOQ`'#Dh'#DhO0nQbOAN>yO0yQQO'#D_OOQ`AN>yAN>yO1OQbOAN>yO1TQRO,59wO1[QQO,59wOOQ`-E7f-E7fOOQ`G24eG24eO1aQbOG24eO1fQQO,59yO1kQQO1G/cOOQ`LD*PLD*PO.yQbO1G/eO/ZQbO7+$}OOQ`7+%P7+%POOQ`<lAN>lO&|QbO'#D]OOQ`'#Dh'#DhO0_QbOAN>yO0jQQO'#D_OOQ`AN>yAN>yO0oQbOAN>yO0tQRO,59wO0{QQO,59wOOQ`-E7f-E7fOOQ`G24eG24eO1QQbOG24eO1VQQO,59yO1[QQO1G/cOOQ`LD*PLD*PO.iQbO1G/eO/QQbO7+$}OOQ`7+%P7+%POOQ`< spec_Identifier[value] || -1 }, - ], - tokenPrec: 768, + tokenData: "<}~RyOX#rXY$aYZ$zZp#rpq$aqt#rtu%euw#rwx%jxy%oyz&Yz{#r{|&s|}#r}!O&s!O!P#r!P!Q)g!Q!['b![!]2S!]!^$z!^#O#r#O#P2m#P#R#r#R#S2r#S#T#r#T#Y3]#Y#Z4k#Z#b3]#b#c8y#c#f3]#f#g9p#g#h3]#h#i:g#i#o3]#o#p#r#p#q<_#q;'S#r;'S;=`$Z<%l~#r~O#r~~ spec_Identifier[value] || -1}], + tokenPrec: 753 })