on master help sign in
local-asmnt
02b8a53iko
zod/luau/lib/lua/parser.hoon+38
@@ -314,6 +314,44 @@ apex
314 %+ cook
314 %+ cook
315 |= =local-function [%local-function local-function]
315 |= =local-function [%local-function local-function]
316 parse-local-function
316 parse-local-function
317+ ::
318+ %+ cook
319+ |= =local-asmnt [%local-asmnt local-asmnt]
320+ parse-local-asmnt
321+ ==
322+++ parse-local-asmnt
323+ %^ tnee %parse-local-asmnt local-asmnt
324+ %+ cook
325+ |= [* * =attnamelist rhs=(unit explist)] [attnamelist rhs]
326+ ;~ plug
327+ (jest 'local')
328+ wss
329+ parse-attnamelist
330+ %- punt
331+ ;~ pfix
332+ ws
333+ (just '=')
334+ ws
335+ parse-explist
336+ ==
337+ ==
338+++ parse-attnamelist
339+ %^ tnee %parse-attnamelist attnamelist
340+ %+ most (ifix [ws ws] com)
341+ ;~ plug
342+ parse-name
343+ ::
344+ %- punt
345+ %+ cook |= [* * =attrib *] attrib
346+ ;~ plug
347+ ws
348+ (just '<')
349+ ;~ pose
350+ %+ cold %const (jest 'const')
351+ %+ cold %close (jest 'close')
352+ ==
353+ (just '>')
354+ ==
317 ==
355 ==
318++ parse-for-range
356++ parse-for-range
319 %^ tnee %for-range for-range
357 %^ tnee %for-range for-range
zod/luau/lib/lua/printer.hoon+31
@@ -209,6 +209,37 @@ print
209 %for-in (print-for-in +.stat)
209 %for-in (print-for-in +.stat)
210 %function (print-function +.stat)
210 %function (print-function +.stat)
211 %local-function (print-local-function +.stat)
211 %local-function (print-local-function +.stat)
212+ %local-asmnt (print-local-asmnt +.stat)
213+ ==
214+:: local-asmnt
215+::
216+++ print-local-asmnt
217+ |= =local-asmnt
218+ ^- tape
219+ %- zing
220+ :~
221+ "local "
222+ (print-attnamelist attnamelist.local-asmnt)
223+ ?~ rhs.local-asmnt "" (print-explist u.rhs.local-asmnt)
224+ ==
225+:: attnamelist
226+::
227+++ print-attnamelist
228+ |= =attnamelist
229+ ^- tape
230+ %- commaed
231+ %+ turn attnamelist
232+ |= [=name attr=(unit attrib)]
233+ %- zing
234+ :~
235+ (trip name)
236+ ?~ attr ""
237+ %- zing
238+ :~
239+ " <"
240+ (trip `@t`u.attr)
241+ ">"
242+ ==
212 ==
243 ==
213:: for-in
244:: for-in
214::
245::
zod/luau/sur/lua.hoon+8
@@ -82,6 +82,7 @@
82 [%for-in for-in]
82 [%for-in for-in]
83 [%function function]
83 [%function function]
84 [%local-function local-function]
84 [%local-function local-function]
85+ [%local-asmnt local-asmnt]
85 [%empty ~]
86 [%empty ~]
86 ==
87 ==
87+$ explist (lest expr)
88+$ explist (lest expr)
@@ -93,6 +94,13 @@
93+$ funcbody [pars=parlist body=blok]
94+$ funcbody [pars=parlist body=blok]
94+$ parlist [pars=(list name) wildcard=?]
95+$ parlist [pars=(list name) wildcard=?]
95+$ local-function [=name body=funcbody]
96+$ local-function [=name body=funcbody]
97++$ local-asmnt [=attnamelist rhs=(unit exprlist)]
98++$ attnamelist (lest [=name attr=(unit attrib)])
99++$ attrib
100+ $?
101+ %const
102+ %close
103+ ==
96+$ functioncall
104+$ functioncall
97 $%
105 $%
98 [%call func=prefix-expr =args]
106 [%call func=prefix-expr =args]
zod/luau/tests/foo.lua+5
@@ -99,3 +99,8 @@ end
99
99
100
100
101local function g(x) return math.sin(x) end
101local function g(x) return math.sin(x) end
102+
103+
104+
105+local a = require('mod2')
106+local b = require('mod2')