123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081moduletypeS=sigmoduleValue:Luavalue.Stypevalue=Value.valuetypename=stringtypelocation=int(* character position *)typestmt=|Stmt'oflocation*stmt|Assignoflvallist*explist|WhileDoofexp*block|RepeatUntilofblock*exp|Ifofexp*block*(exp*block)list*blockoption|Returnofexplist|Callstmtofcall|Localofnamelist*explistandblock=stmtlistandlval=|Lvarofname|Lindexofexp*expandexp=|Varofname|Litofvalue|Binopofexp*op*exp|Unopofop*exp|Indexofexp*exp|Tableofexplist*(name*exp)list|Callofcallandcall=|Funcallofexp*explist|Methcallofexp*name*explistandop=And|Or|Lt|Le|Gt|Ge|Eq|Ne|Concat|Plus|Minus|Times|Div|Mod|Not|Powtypechunk=|Debugofbool(* turn debugging on/off *)|Statementofstmt|Fundefoflocation*lval*namelist*varargs*block|Methdefoflocation*exp*name*namelist*varargs*blockandvarargs=boolendmoduleMake(V:Luavalue.S):SwithmoduleValue=V=structmoduleValue=Vtypevalue=Value.valuetypename=stringtypelocation=int(* character position *)typestmt=|Stmt'oflocation*stmt|Assignoflvallist*explist|WhileDoofexp*block|RepeatUntilofblock*exp|Ifofexp*block*(exp*block)list*blockoption|Returnofexplist|Callstmtofcall|Localofnamelist*explistandblock=stmtlistandlval=|Lvarofname|Lindexofexp*expandexp=|Varofname|Litofvalue|Binopofexp*op*exp|Unopofop*exp|Indexofexp*exp|Tableofexplist*(name*exp)list|Callofcallandcall=|Funcallofexp*explist|Methcallofexp*name*explistandop=And|Or|Lt|Le|Gt|Ge|Eq|Ne|Concat|Plus|Minus|Times|Div|Mod|Not|Powtypechunk=|Debugofbool(* turn debugging on/off *)|Statementofstmt|Fundefoflocation*lval*namelist*varargs*block|Methdefoflocation*exp*name*namelist*varargs*blockandvarargs=boolend