From af2eb9e8cd9fc6d3d796fe54a67356457b4d139f Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Mon, 3 Nov 2025 14:16:18 -0600 Subject: [PATCH 1/3] Add a compact binary encoding for the import section The import section of a wasm binary must repeat the first name for each import (the "module name"). This can be costly if there are many imports in the same module, which is common. This patch adds a new encoding for the import section in which the module name occurs only once. This new encoding is disambiguated from previous encodings by means of an invalid UTF-8 `name` consisting of a single 0xFF byte. 0xFF is never valid in UTF-8; therefore, compliant implementations today should reject the new encoding as having an invalid module name. --- document/core/binary/modules.rst | 6 +++- document/core/util/macros.def | 1 + .../wasm-3.0/5.4-binary.modules.spectec | 10 ++++-- .../wasm-3.0/6.3-text.modules.spectec | 31 ++++++++++--------- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/document/core/binary/modules.rst b/document/core/binary/modules.rst index 5f99c745a..d2f937a87 100644 --- a/document/core/binary/modules.rst +++ b/document/core/binary/modules.rst @@ -139,6 +139,7 @@ $${grammar: {Btypesec Btype}} pair: binary format; import pair: section; import .. _binary-import: +.. _binary-imports: .. _binary-importdesc: .. _binary-importsec: @@ -148,7 +149,10 @@ Import Section The *import section* has the id 2. It decodes into the list of :ref:`imports ` of a :ref:`module `. -$${grammar: {Bimportsec Bimport}} +$${grammar: {Bimportsec Bimports Bimport}} + +.. note:: + The encoding of :ref:`imports ` beginning with ${:0x01 0xFF} allows multiple imports to be expressed without repeating the module name. ${:0x01 0xFF} decodes as an invalid :ref:`name ` for compatibility with older implementations. .. index:: ! function section, function, type index, function type diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 00b8213d3..2e8fea27d 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -887,6 +887,7 @@ .. |Bglobal| mathdef:: \xref{binary/modules}{binary-global}{\B{global}} .. |Btag| mathdef:: \xref{binary/modules}{binary-tag}{\B{tag}} .. |Bimport| mathdef:: \xref{binary/modules}{binary-import}{\B{import}} +.. |Bimports| mathdef:: \xref{binary/modules}{binary-imports}{\B{imports}} .. |Bexport| mathdef:: \xref{binary/modules}{binary-export}{\B{export}} .. |Belem| mathdef:: \xref{binary/modules}{binary-elem}{\B{elem}} .. |Belemkind| mathdef:: \xref{binary/modules}{binary-elemkind}{\B{elemkind}} diff --git a/specification/wasm-3.0/5.4-binary.modules.spectec b/specification/wasm-3.0/5.4-binary.modules.spectec index 6a0900aab..e7d86b687 100644 --- a/specification/wasm-3.0/5.4-binary.modules.spectec +++ b/specification/wasm-3.0/5.4-binary.modules.spectec @@ -31,11 +31,15 @@ grammar Btypesec : type* hint(desc "type section") = ;; Import section -grammar Bimport : import = - | nm_1:Bname nm_2:Bname xt:Bexterntype => IMPORT nm_1 nm_2 xt +grammar Bimport : (name, externtype) = + | nm_2:Bname xt:Bexterntype => (nm_2, xt) + +grammar Bimports : import* = + | nm_1:Bname (nm_2, xt):Bimport => IMPORT nm_1 nm_2 xt + | 0x01 0xFF nm_1:Bname (nm_2, xt)*:Blist(Bimport) => $concat_(import, IMPORT nm_1 nm_2 xt) grammar Bimportsec : import* hint(desc "import section") = - | im*:Bsection_(2, Blist(Bimport)) => im* + | im*:Bsection_(2, Blist(Bimports)) => im* ;; Function section diff --git a/specification/wasm-3.0/6.3-text.modules.spectec b/specification/wasm-3.0/6.3-text.modules.spectec index 48e877ad8..c35e2f9bb 100644 --- a/specification/wasm-3.0/6.3-text.modules.spectec +++ b/specification/wasm-3.0/6.3-text.modules.spectec @@ -130,33 +130,36 @@ grammar Tstart_(I) : (start, idctxt) = ;; Imports -grammar Timport_(I)/plain : (import, idctxt) = - | "(" "import" nm_1:Tname nm_2:Tname (xt,I'):Texterntype_(I) ")" => (IMPORT nm_1 nm_2 xt, I') +grammar Timport_(I)/plain : (name, externtype, idctxt) = + | "(" "item" nm_2:Tname (xt,I'):Texterntype_(I) ")" => (nm_2, xt, I') + +grammar Timports_(I)/plain : (import*, idctxt) = + | "(" "import" nm_1:Tname (nm_2,xt,I')*:Timport_(I)* ")" => ($concat_(import, IMPORT nm_1 nm_2 xt), I') | ... -grammar Timport_(I)/abbrev-tag : (import, idctxt) = ... +grammar Timports_(I)/abbrev-tag : (import*, idctxt) = ... | "(" "tag" Tid? "(" "import" Tname^2 ")" Ttagtype_(I) ")" == - "(" "import" Tname^2 "(" "tag" Tid? Ttagtype_(I) ")" ")" + "(" "import" Tname "(" "item" Tname "(" "tag" Tid? Ttagtype_(I) ")" ")" ")" | ... -grammar Timport_(I)/abbrev-global : (import, idctxt) = ... +grammar Timports_(I)/abbrev-global : (import*, idctxt) = ... | "(" "global" Tid? "(" "import" Tname^2 ")" Tglobaltype_(I) ")" == - "(" "import" Tname^2 "(" "global" Tid? Tglobaltype_(I) ")" ")" + "(" "import" Tname "(" "item" Tname "(" "global" Tid? Tglobaltype_(I) ")" ")" ")" | ... -grammar Timport_(I)/abbrev-mem : (import, idctxt) = ... +grammar Timports_(I)/abbrev-mem : (import*, idctxt) = ... | "(" "memory" Tid? "(" "import" Tname^2 ")" Tmemtype_(I) ")" == - "(" "import" Tname^2 "(" "memory" Tid? Tmemtype_(I) ")" ")" + "(" "import" Tname "(" "item" Tname "(" "memory" Tid? Tmemtype_(I) ")" ")" ")" | ... -grammar Timport_(I)/abbrev-table : (import, idctxt) = ... +grammar Timports_(I)/abbrev-table : (import*, idctxt) = ... | "(" "table" Tid? "(" "import" Tname^2 ")" Ttabletype_(I) ")" == - "(" "import" Tname^2 "(" "table" Tid? Ttabletype_(I) ")" ")" + "(" "import" Tname "(" "item" Tname "(" "table" Tid? Ttabletype_(I) ")" ")" ")" | ... -grammar Timport_(I)/abbrev-func : (import, idctxt) = ... +grammar Timports_(I)/abbrev-func : (import*, idctxt) = ... | "(" "func" Tid? "(" "import" Tname^2 ")" Ttypeuse_(I) ")" == - "(" "import" Tname^2 "(" "func" Tid? Ttypeuse_(I) ")" ")" + "(" "import" Tname "(" "item" Tname "(" "func" Tid? Ttypeuse_(I) ")" ")" ")" ;; Exports @@ -253,7 +256,7 @@ grammar Telemtable_(I)/abbrev : () hint(show Ttable_(%)) = ;; Modules syntax decl hint(name "declaration") = - type | import | tag | global | mem | table | func | data | elem | start | export + type | import* | tag | global | mem | table | func | data | elem | start | export def $typesd(decl*) : type* hint(show $types(%)) hint(macro "typesd") def $importsd(decl*) : import* hint(show $imports(%)) hint(macro "importsd") @@ -320,7 +323,7 @@ def $ordered(decl_1* import decl_2*) = grammar Tdecl_(I) : (decl, idctxt) = - | Ttype_(I) | Timport_(I) | Ttag_(I) | Tglobal_(I) | Tmem_(I) | Ttable_(I) + | Ttype_(I) | Timports_(I) | Ttag_(I) | Tglobal_(I) | Tmem_(I) | Ttable_(I) | Tfunc_(I) | Tdata_(I) | Telem_(I) | Tstart_(I) | Texport_(I) From 73058b03b6fb2b3867ee2445253e4870d25dcef5 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Thu, 6 Nov 2025 10:33:11 -0600 Subject: [PATCH 2/3] Updates per Rossberg's feedback --- document/core/text/modules.rst | 7 +++- document/core/util/macros.def | 1 + .../wasm-3.0/5.4-binary.modules.spectec | 4 +-- .../wasm-3.0/6.3-text.modules.spectec | 36 +++++++++---------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/document/core/text/modules.rst b/document/core/text/modules.rst index 167b4f451..f222e83f9 100644 --- a/document/core/text/modules.rst +++ b/document/core/text/modules.rst @@ -344,6 +344,7 @@ $${grammar: Tstart_} .. index:: import, name, tag type, global type, memory type, table type, function type pair: text format; import .. _text-import: +.. _text-imports: Imports ~~~~~~~ @@ -356,7 +357,11 @@ $${grammar: Timport_/plain} Abbreviations ............. -As an abbreviation, imports may also be specified inline with +Multiple imports with the same ${:nm_1} may be declared together: + +$${grammar: Timports_/abbrev} + +Imports may also be specified inline with :ref:`tag `, :ref:`global `, :ref:`memory `, diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 2e8fea27d..148fb3061 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -1072,6 +1072,7 @@ .. |Tglobal| mathdef:: \xref{text/modules}{text-global}{\T{global}} .. |Ttag| mathdef:: \xref{text/modules}{text-tag}{\T{tag}} .. |Timport| mathdef:: \xref{text/modules}{text-import}{\T{import}} +.. |Timports| mathdef:: \xref{text/modules}{text-imports}{\T{imports}} .. |Texport| mathdef:: \xref{text/modules}{text-export}{\T{export}} .. |Texternidx| mathdef:: \xref{text/modules}{text-externidx}{\T{externidx}} .. |Telem| mathdef:: \xref{text/modules}{text-elem}{\T{elem}} diff --git a/specification/wasm-3.0/5.4-binary.modules.spectec b/specification/wasm-3.0/5.4-binary.modules.spectec index e7d86b687..cc33191cc 100644 --- a/specification/wasm-3.0/5.4-binary.modules.spectec +++ b/specification/wasm-3.0/5.4-binary.modules.spectec @@ -36,10 +36,10 @@ grammar Bimport : (name, externtype) = grammar Bimports : import* = | nm_1:Bname (nm_2, xt):Bimport => IMPORT nm_1 nm_2 xt - | 0x01 0xFF nm_1:Bname (nm_2, xt)*:Blist(Bimport) => $concat_(import, IMPORT nm_1 nm_2 xt) + | 0x01 0xFF nm_1:Bname (nm_2, xt)*:Blist(Bimport) => (IMPORT nm_1 nm_2 xt)* grammar Bimportsec : import* hint(desc "import section") = - | im*:Bsection_(2, Blist(Bimports)) => im* + | im**:Bsection_(2, Blist(Bimports)) => $concat_(import, im**) ;; Function section diff --git a/specification/wasm-3.0/6.3-text.modules.spectec b/specification/wasm-3.0/6.3-text.modules.spectec index c35e2f9bb..7cee6a76a 100644 --- a/specification/wasm-3.0/6.3-text.modules.spectec +++ b/specification/wasm-3.0/6.3-text.modules.spectec @@ -130,37 +130,37 @@ grammar Tstart_(I) : (start, idctxt) = ;; Imports -grammar Timport_(I)/plain : (name, externtype, idctxt) = - | "(" "item" nm_2:Tname (xt,I'):Texterntype_(I) ")" => (nm_2, xt, I') - -grammar Timports_(I)/plain : (import*, idctxt) = - | "(" "import" nm_1:Tname (nm_2,xt,I')*:Timport_(I)* ")" => ($concat_(import, IMPORT nm_1 nm_2 xt), I') +grammar Timport_(I)/plain : (import, idctxt) = + | "(" "import" nm_1:Tname nm_2:Tname (xt,I'):Texterntype_(I) ")" => (IMPORT nm_1 nm_2 xt, I') | ... -grammar Timports_(I)/abbrev-tag : (import*, idctxt) = ... +grammar Timports_(I)/abbrev : (import*, idctxt) = + | "(" "import" nm_1:Tname ("(" "item" nm_2:Tname Texterntype_(I) ")")* ")" == + ("(" "import" nm_1:Tname nm_2:Tname Texterntype_(I) ")")* + +grammar Timport_(I)/abbrev-tag : (import, idctxt) = ... | "(" "tag" Tid? "(" "import" Tname^2 ")" Ttagtype_(I) ")" == - "(" "import" Tname "(" "item" Tname "(" "tag" Tid? Ttagtype_(I) ")" ")" ")" + "(" "import" Tname^2 "(" "tag" Tid? Ttagtype_(I) ")" ")" | ... -grammar Timports_(I)/abbrev-global : (import*, idctxt) = ... +grammar Timport_(I)/abbrev-global : (import, idctxt) = ... | "(" "global" Tid? "(" "import" Tname^2 ")" Tglobaltype_(I) ")" == - "(" "import" Tname "(" "item" Tname "(" "global" Tid? Tglobaltype_(I) ")" ")" ")" + "(" "import" Tname^2 "(" "global" Tid? Tglobaltype_(I) ")" ")" | ... -grammar Timports_(I)/abbrev-mem : (import*, idctxt) = ... +grammar Timport_(I)/abbrev-mem : (import, idctxt) = ... | "(" "memory" Tid? "(" "import" Tname^2 ")" Tmemtype_(I) ")" == - "(" "import" Tname "(" "item" Tname "(" "memory" Tid? Tmemtype_(I) ")" ")" ")" + "(" "import" Tname^2 "(" "memory" Tid? Tmemtype_(I) ")" ")" | ... -grammar Timports_(I)/abbrev-table : (import*, idctxt) = ... +grammar Timport_(I)/abbrev-table : (import, idctxt) = ... | "(" "table" Tid? "(" "import" Tname^2 ")" Ttabletype_(I) ")" == - "(" "import" Tname "(" "item" Tname "(" "table" Tid? Ttabletype_(I) ")" ")" ")" + "(" "import" Tname^2 "(" "table" Tid? Ttabletype_(I) ")" ")" | ... -grammar Timports_(I)/abbrev-func : (import*, idctxt) = ... +grammar Timport_(I)/abbrev-func : (import, idctxt) = ... | "(" "func" Tid? "(" "import" Tname^2 ")" Ttypeuse_(I) ")" == - "(" "import" Tname "(" "item" Tname "(" "func" Tid? Ttypeuse_(I) ")" ")" ")" - + "(" "import" Tname^2 "(" "func" Tid? Ttypeuse_(I) ")" ")" ;; Exports @@ -256,7 +256,7 @@ grammar Telemtable_(I)/abbrev : () hint(show Ttable_(%)) = ;; Modules syntax decl hint(name "declaration") = - type | import* | tag | global | mem | table | func | data | elem | start | export + type | import | tag | global | mem | table | func | data | elem | start | export def $typesd(decl*) : type* hint(show $types(%)) hint(macro "typesd") def $importsd(decl*) : import* hint(show $imports(%)) hint(macro "importsd") @@ -323,7 +323,7 @@ def $ordered(decl_1* import decl_2*) = grammar Tdecl_(I) : (decl, idctxt) = - | Ttype_(I) | Timports_(I) | Ttag_(I) | Tglobal_(I) | Tmem_(I) | Ttable_(I) + | Ttype_(I) | Timport_(I) | Ttag_(I) | Tglobal_(I) | Tmem_(I) | Ttable_(I) | Tfunc_(I) | Tdata_(I) | Telem_(I) | Tstart_(I) | Texport_(I) From 4ce8e3a5aa268ac9224a001f7146dcceef625c31 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Thu, 6 Nov 2025 11:42:19 -0600 Subject: [PATCH 3/3] Update test expectations --- spectec/doc/example/output/NanoWasm.pdf | Bin 245571 -> 244263 bytes spectec/test-frontend/TEST.md | 104 ++-- spectec/test-latex/TEST.md | 13 +- spectec/test-latex/test-test.el | 611 ++++++++++++++++++++++++ spectec/test-middlend/TEST.md | 312 ++++++------ spectec/test-splice/TEST.md | 2 + 6 files changed, 852 insertions(+), 190 deletions(-) create mode 100644 spectec/test-latex/test-test.el diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 3401b402bf0e00a21ab9bde6998f8a7301d274b4..2a0cbb015a581d3ea39a2e3ecac8807d39d9db43 100644 GIT binary patch delta 14334 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 CJBBR) delta 15673 zcmajGQ;aW66aP83ZQHhO+twNL41Z&vv2EM7ZQHiF&;Q-*UhK`L(&?mANvAuVPkmEW zUHXJD_=5mNt|TTw&&BIVE-5c**0?b4i-&!0PX$vzxOqAqLi#L+LK#DnikDAdwQ%%Yzyhf>k5m?KxcQ%7OwV=BwzgGm>CEe2%@JB2-;>!^LluXEmbTB34xRmwi%n61PU|5DiNB>U+_?-{zp-V@FU-(I zwig&*da_OS!Yz6tw@(qcEcf9{(C~%xKa$)J2v1>iS-^63$sI|Wsi#>4+4JB=OX`wV zc6*4;J>$m*1}L==r$OAP$3xU@UCN`@PEI7zI;znf#EkTEJOC=*h8q+9Y7{f?H4iR6 zOxCBuvurS{F3^Q*eeJv$FZl0OO@P#z=ku-uL!26~xx~+Oqe6TdVEsjhP=+0BN`0>L zu^;RYd}h;=mRCZFMpcJ1qld`8x4NKy>!ns|Ml&Nk&-xyZe!Q*zCj8aAQoqiEoHNipCt_+A+Q-ZhvD zYn}IZpwvy3oBI#arht++LtYN_RltC~H`2-2!hkiPLD@qVx<2UfSuaElsg(-Z(n1;>Mz3J22FKRK*fMc z7#k>vOuYY`2-@@Js!*8{kK4oc`PY~CEC>zKo!AY2yY~`~2|*YQ*eimB6oCymM@(A` zTN?-hn{j|xhFhs-3HWqq3iyNs+x29ZAL_=@x>hcayQ_DD%Tb~fBZE+2wkzD|n#fMV zpt8{ZsW+0|D6$^lq#6TGrpET{5<=xcWC(*{2!5+5tViAbSjD7YB&(h;;FYw+kFIsT zh~KabQZeRd#u?6Tg-v$dOy6yWrX((9@<=6?aJ9MPI`h)?>t<5Dh&H9*2IAxqyVr;I zj5~J#>kV)8;+O-2O)unE=J;0A6T7f2$>#p0FHV5cK9vg)q8<98#qRZh^a z&vW3vdqGWX!Ey&)Nu!-N@!S@Dxy(#f4J==B8n(7)~#SojFM8G^!;?lbO1(n4TAbG zm-u?##SWnrMzaoWBGF=sh+MuJlnj*l`vZY&8!htMy$k~_&AbS6lX_!O&6qtD09OMp&@wL{ezT=r_x-J4)Ed`Aw^4#DLa#tMre$n93Lr z_hRSo>&t@93`3)Iw3zAe+i!#u(3omKvQ)eZ9_t|zqk;Y~%fyc1ke)(DLTd>SkI(+2)X(gy%eP z9@+eh?Ba1Qs1Oo0FxIbgr{l?Xs#~*LYjf|(Pe(X-#Kv($v(F9vnEOqT3TUr2%)aOa zHO7dgN%LhEF)l=(KVk7F(8(iVH!DX|fGbRMEB6~VFh!r3P&z72J=#?I&arGBiY$&g zu$3^NubL0C;{^kc+Llex8+Hou{cvg!jxGN(vdCJUx>2&!ZYcb9JS&*cYTyaf`URV6#IdN8uk0*Tgb`9zDlR#6a~ zkD4hV&r-4y5*v$_kWN|-`?5Kx*q{~gM`*c7oqZ4YIAG1F^Ecys=* zy^K*cIo-cVAM8CLcndwgQQ=#7`w9j?8<+9OB`|>!Ro33}@hK8Aw3yaKM45w-87>7# zrUb(*F$o;S-a%L7nkNz&aCII;#dDxdk!V$^EHQ8*fE1!MiMY>*CBq*iWPjD+&$5wf zj^l9k5r3L;KpmRdzd6VY4v_+Cg=ylNhUQEs*!iYy`sjvRP(d!H@b3X4Tq;{M_816r?W@)Aq~kW8{^f{HyTXXz`&wd$dWT2^3~Q9 z@s-;(--p%4$l$t*bS%Ij$nLwAVWj#Q<`AdlpJN=Zo2GVkWyzJLpeEA`J-2nimM?fZ z-DQu|_hRQyU(=R4mqL=sXGa2n@`A@+YM`DkQWeuiI;1@TIGunukeMb{BcRCoEG7t~ z+GBIG!Zp9+0|@(aGr0^}xQ{y--}_EGye7MiFd2}<_=b!_TZ^0Nriq2%GbYx4G5YG_ zsjQ|8=(Vke=p1dqz5b^e{Ijz>#a;e*Y2G~ieed@xIP{dp7{F;YaFm2ID?Fs|ODVG9 z%V^t{zf1Mpi7z1jjabVHd-Ok4ArW8zGyhK=CC9bHfG{J4e)0_`N!K&KDp!;l5r+fA zZky;UIiC+!uF4tr0rY2r8!_-`S(LTgIvHBgDG|+LkwV40bSxJD~M58)$@fUUiSf1m52jn6|2WCwKW~2ceYs>y068HQc z5#myyfY%8&w%Zjjr`%;eOHlBpxzcTlk(2d_k z@Wn;o^V^s-6~t+^26&66t_)a&ssx)>v*j}#T|e|GYc!1U!x!{S%#F##R1F3xhYRI? zvS~6EP1+OZHqAm*w!C#dTCZd>zcbr{PSIte>LpuCu_VV=+8U7(GW7bPZ{_3ly1y#b zySSqA;KLR4er|xtY}MdN8VMd3wd?P&DQ0wm@pf+Z!lY1G0i+sZ^XckUyW}@cvwx2_ zA}&swh#N-cQmj5Mw9M0QiV#5^Qa=q`oZP-X?z5%xb*5p)3Z6EKiRlEW6y!YZ+i>*O zWF^I(U)ZoBPJVPz3)(VJEN_~18)U6AgL^z*Rv7f#GH2IHs#ld{LmmsmY9}Fz>I6Mn z*N9_m#aEiZ09ruFZK-yv?Ag53{#j?juOyX^W~s;2+ktoe(eUok`)1azLA{q238}w! zB5oN^(7-mRctX8_|4XZnZrI0Ata|CZ0e#wlgO!gDVy}DXCpA(&xBQbzoX?P1Vk!== zGwyXYx*ux@D4@chjKU%IlyRX zQW*Pp4G18_eHVrmDdVBltbC3CR%i)ZJ|iY6mXUPf@j({bqG!RlT%aTJAjXg-5aw15 zUH_IcZa56YA%vY^#B8LhxENK8nidD)ERxIM%u#Hsi|Fu->*{~?fTk4zEm&(tp;rOc zl)o|31jx=S6+q`^sKR@It9z|N(VS-^3#=?s>0KE`Q#VIfsEOk z;608~6Ki`}kSJ#hO0iK)f#(Y7)|RMi_;bXt7F4vFgQ`M)ty=cyWv{!z(%qNJmkjFq zKpNjFAINw(=)QCvk0YW1;wudhzz3z^Swf||0XR2!m}9WEWAvoaRpVtlm>FxNCvcA} zP2x@C&m?mznnx7Fe~`~Kl*U(8mE56qTX{V8>1b#7Y+3Ah$_Eo9^1W(lGOtVpQn3=X z6D<^H7isB0lJNp1iJ)#G!8$~+G@(%yV{rJil7eNKVJ;8HS$UnGQ~k3lIk15OENio@ z2pI51W9u9{Pf$WVb`Tx-ky)>;M03bon>?M)j$hZZX^og0B$s*tR8=%gz+C_eO`2AZtTu|EPU!;*1EmLI)yh4?w13iN5Rq&Hy(Mv2IUN2L%+Yr)S#!$l+7Q=zr034VV z6H-$B#U!m)DZ5_YJ@lcHYbYY))?3HDO+FA1MXAmRAuM$b0cvP{gWp$FZH*mTqqus= za8fq#uF2<=&ahCCnZ(=wrId`ih;eh%*d3XfOl{PgUwvqJV*z&qE&IC0If;QLr49g2 zEwW$O@x(dqVcQ6DJ7EiNoFph7laV8@52neEdTih6u7qSB!^P-U@!Al-*|mP`j|i?{Ew_}q-bEw zOf1}q{h(BU>vVYsTu!9W+Yj_BdGEP2yaZ7eAtWMUeWEZByWpoitTLO)79eUF`sVT3 z+pAY+@me#{8q_sN)8pkUM=sXSnL>T)nh>KS!;SU#g0bjunPo59&qP1GIiYL=P z2ucQx!bTTrhW9UTVqr+e9t;gy<0=r>q1@Di!L!!*sso#tJT5wDDW2Yhq_$&5cZHvw z8!_y;(7K&Sx4dTB)<7ZgEJVYjqa|_LJkVk|Ug|H#RZsg7%trGbxXp>N6r$jbCv|gV z&qX8v*$PJHI|t0m5t@0a9O|X83<~Pf9$Lz(Pl85D%)0TP%KlC+sa=SO?So37GI_?a zG0Z^H)u{U0V2>g@yT|H=GYE$OkwzHEY8l+^X5tyoL$i8n7ho!1gMU7}MtsR37r93w z5slC~+&`S6H`~VtEHdWL$E(9H6vzS|Mak0uj7xZx(Se{=HQcYH34ib*cfbVstK}vc zeT~6$&S+BS&T1kG%{?5If+;}7n^g`SA%NiNX=ro00V`Jmc zO5x9%?&qVJ375ypD#WAQ<~=8a;Ga2n&>-mspJEU7n5V~aWXsaC(`R+ht(~b!M9p-- zeq-xbEMBcjwt_#!6A!Ti}w)Qg=tBBnr^LXEA71s&4ei5 zWE{J2eOKIJXG$z6C_NFF>ogy2i3*g2Pbwbq=R!VbOy z?5ej_z?(r_M*+AS7riTK^yV5+GfGoyam^yVd4JQ#Lr|g!?`dHQLf+=)n}U{-D9zNv z(RY7YU-J0)!TqSwIDi0To6ya*mLnzn_Rbr*uO^v1YReD2&{A+6=QN zApllRFyquDFT?K(QA9BFa}E*EGdKJDmNi5WBLIphGc|YyX?S)T;+GTZ_tD#%d`cH-aD{?>ESQr9JgJ#nxGl=cT4PA2LrD{l)u(Rb=wlUfM2~x}0yoCF3WGp?LB8a3%pn1Q3eubw|4IxEATVgP-mTu?Pn->IfmLszM*^i<<`J#xGEE z0s%o{ETt4M$N#9%t-b5;pXBm;HS8aK2_f<9B83J6|1jNwuoap|8*E`iEH`!SXX$jr zBl^C5&8DMuI?__8I_fVV%Z=If_2Ai#@8=>7&5|DZH0fd$Fu9{xDy0}Q;>#pje}m)R zq6>xkg%lMj6r$h>kBA_nAVXDEa*NK4GjR$n*bmIKB@+RNb0j!5rlEBQyd+tnjhlsw zGix)EsRmXsg#;Np$V`Ni_5q`^O7M*X9ia%b&w-QymBzB5um}LvLrGYnU`ZIrfjAF* zjStfKE6!o&vk4PIZiNYiE`a%pi~|*7QWr*_qE^kuO)ALsKVoa3n-}EZp{B@{AaMcL zfp9?Sz-j?ZHRXWmQAneK_}Bl*aO49i0mmY|csj}mRB{tcK{TVpL@DlhqcW})pv z#Axine)c7rBcH@X;Z#%-L8$L5#P!eAVSPx2n~8|Xc#@$d(w-3dw_!jKiQ4?Jlu5w% zkNQoVxv|`QlxUe@^uqn2_Hd0;maOZzL!yzL!8-XVvz7w6_KzebB};fXmS-PlT~vLU zYAFD}S-yq}m@B;;4m;5XzWHQt#f*33y8J%NgUJLbURr1Sa)^m9JD8Z+F{55@`C;0h zhV)*KAN|&%9vgxirwq@I`C*SQI}P2OwU!qZJsAoqn2+i3o3l%o=I{v)R6Q<7w*QK0p&wiU~ zKhNiRkBLdQVm%1Q^a{V_F+cJELqUef^KoUlFmYyh^x-D@$k&*@PUsVhRWctTt{eUc zJe*AL*(3z`rJVE?<<4Qw+l{@fW>vb4t)3Nb`+%k2Z;#A;-o)%YD5sOe@)68Q)oj4c znU$LF&%LirMXcp+N#Vt}PfONJiY8U2nxmR;hQV|#X5xAB3hi_DZs{qeh2p$1{wH+g}bk(XGaQ-sdHiYXz&C5>cd;* zM_Za=OsT93ND|>l$p>GzcE(G2^&LPNuoYyuwYa|vTIX$3jek2`%|3rfS-Uf1;X=hX zFQe2><-~qx6So|vF&J5+BB+zr=GvL}nS!JI|$ay=&^8R~j3`_ZJ}w4(q?SXbGAzJqDFX$Lq3o$0$2Ad2z3=b6STr zY;n)Ko@Xg#!c0Wv+FmYgg3MS;%g+=#YdjAs5pIVN1w4ZCy7w2NH4nhH9Kta>&T|xZ z*8N-_8@um7<{OOMo|c%Cvyk#V`%U(u^g7j#3mGv#*MEj%k32IlSrL z8j2E>Bfzt;*B(S-HTTT%((Db@PIpwt>R}588R;|a+p6BfxlXReYTP(=J9fPbuV$)W z{aoHo6c+U?`0Qn8%>W3jq3;mofg&tZ9f1TW!4_SHbYH=(fxX9dP}~JjjQJt##Cb;t zxlw26t@bM(`*+wEfo@ANUP)YZ#1kA#5Eh#b=J*x)3ECr@#=QHccT2$#OGb5zpo1DLqm4N!9JOU<1&^_$-DAyf3Rr0;5 zpGANw^{Z*0U`Jba^I%1avl-Pq`wYnH7r-J3$&-rD)hBA^d@#x*5AxU?!FMuO?ztpk(Kt?LzGEQ;4N1NuS##P0pL5=ArGq+O&I)v{ejUIOCH zB&*4INRGLFdtgy~`~&I7o3oGhkjWV_qP}~4g$L%vg9|lDuM7lZp}G#j#UdqSOoqzC zDJJK~v13Z^-ZP;{P0gN)6Lci>ki?RMPsN{3&tm5p59eolSun88$N}# zV(E4L=&S3obYT%m6&5l1?&JI2QN|yf-)aYC}17VZnCiL!vjAA{W{vI1|Ce zZ|eKS0ATri`q_thcI6IX)G+(Zg1x@Em zCMLKJ=UsP3WqbxMkGsLw@-7-kqQQT{LxOHS?SP>P^!pR1N?pRV1%RwIzK`w~br=3vFww(}a!3xIz7Ywa>SV-%ak_!3j?O{?{J^pyz;yMa*P zA+GUfYJHKYJ_36teDIRZN?zQTxLADARFsyNQIH+qUPGY$S;EfX?Yr$yQX|Py>}F+0 zhox1mfZZdo28qodE|UbYKX0QeVYh~M`UECiK;k9k32?}U_xK!2I}mdLs0#zl69C4b zk1z#raFnNFG+Wi1m;@pRYgdqN<`~11=2#8ScW4V3v^uiXKJ!8@-IiAIOxP}?{E_^XICinyqnpX!Lv0>z*NSsMriS|7uvuZL{6ze`^p zGQ16e5R?Kf8Yx|JRx0+;SIfu_zt z{VIt1jNQ|Y(I%1~GjVP{2<4<}=KdGQ4%yH_S-DyN@2rlFtiz_n|4EtGal%khe)_GQ zq%qqqAhy2$eTa8t zCZMNy1gzgJo^SS#pYPoQi+7XdCldfKT$uT=a(#*=z;^v`5cgF}_av!sM#Q0|X}o!6 z_+Whr5H;%$HO9JLv4R92MWpP!KYpKOprl3v!H+D2f)ZAFw{J*$2(YuzECBasRbRo4M{3H z>@Y@MYREtDKgJnbluUN92zeSX85Ou4K3eIFD`isEWn?Z$A;=x9TUC@DSq-5lX-Z34 zFe6S;g=!H+&Ho*f`p`7;mM9mRHM=IRR7)!hqg*6G92mrcs*3sL<7-GT-5enG4x_9i z2e1m!4F;iM)!ZgCDH^8L^>kc03^Smv>EoA61K_^l0(1S~?jB(?a9{)5dXkC2y{XSr6Lt(1 zsx+l%kyUT&uB1N9RgQMhh=lGLK;Tq^aYGBn@%`%E?_)WaJAyje`=HuQ%vaj~4NqVz zDHn17&9;Tz&Y%4(51B{LT2)QM>80tyTZ zf54b$lORl)IRDlz%Zo}t-gNTm)IebU>HeZj(12HIPRTv(uft>14>b2moyFLB(>vO? z=qI;Ay@IgqEH^0sC}}Cisd4gJ9y;|b`lbRmO-|K3eCP;FuFH+ks01<>DH?4vq1891 zT4D&$>Dk%NNk*v9ksM&sh7E=i1ju~}(I#mJ2-_t&GA2x!EEG@4>n?a0AY(4G zQ(oTR^1qa_)5va=(L8eWpgQeD+NyHPuN^`LzGmOgxSoi7hWpg{+m3S+F_q7WZ+3$` z^c+n}RC`C3<0yw!Se;-2dEeBAZ>Aq*_zVNZ-d|GR*xY8Cc@P~ zQg)jiKV?;pghve_(r)%vKnszJT1FMO&!iH>5I4yGJ+Ml1npreVnf6KZ{>#=*MaZ+% zhYNAtBj^P zsRdtP;r+Y#{h4bA@kL+R4EPHN#c+TW4L)_87-F=p{f`#vB+qJ_n#_d0!`6wyy(oq> ztljK9Sy63N)3$-dlhl;0Q?8^_F6DS(mAxI}`PeQ(XKhyA<1EI0|8B&t@EBt*DXM8K zs7RXg9|EcPLc8f=(-}s-AYIJikOXr_;hXHwI~J%ol~QmRs5t+H5THF{X7+Hfs7Zt{ zH23VgBx1x32D2a2&sot=h1?C5vtH_Fit~sf35rRLU)4EK0@vmxr?Puox)oRyp}gq) z+sYc2nYpus~{327*pFgWeZKh5@<8qYW|oKje3PH=DlyC8QQZhb`R#b=~g ze>y{e^+=luJO?z2Y@(En~1DKDuY1QmL3*S(XoH9NOzZuO_ zW8^6ykdV|X=Mq7w=9360E0q!-z+^8HQrf-b|99q18c6)Y`Fr32Niu;uN1yiP!{32V z!nCIdU5VwW_rgMM>-DfKEFoaf!kFl4`;EEbcJK;gZg1w|n!1_-4Bt4&?E(VI$;J6U zA|LD6xonCd{p1)D_l%4BZhgw;O_7mPyAla84>HN8JAI){tvT1BZ+v-c2xzZRS86#Y zE0yG${Za6qzM_2ni6!}F{SyrU!6WHY!n8kWEXRBf|^+0;_aRtw-d*Tz9~erjsk>p}7{Evq%c=PT2z3@&f%;wUnd$4UR_b+9|K%ZAdvNgwh8OxfGD zj=;C}Xdybk>%ktOhY|SU*d#jV(}3kMkkK zWAg-Xa*VQKzq$K+mm$1h#8fZd(4JB@&Z5a6G$%D%$nWG>D#$w0gbovmJb7He{5`Wt zoc2I-1s0s6u$ok7kegqRlTa?RJX`XeD01;bUAy>74HTyB=NGv;8ZbQ(00h>H0f{t5 zNt0us;cuR+q`B1$k_~JM3R+SlZvv7fQsK0_(0IA|g{_1?ywG;o0QYk}sklI=B_^t7qB5A0c7w z;*7uqbfqj!p?a1wSTMC*0O&5?WTSRpx)(6h-FD%d!P13ez?6wFhs7=%cnr@z+uXm3 z3yL^S(!h!AWRmjW1Lw{%=3=25GMLFatJ3Cq15E!aUmy@?IemdF!aI;4UvMEOT4_r)1AQs?MBc%9nP!N#+QmxUfFiwpF`AO!s3qt5 zOV~dLwfBywoo}4sV;_N_cXlgre43eiY3$-nHqFwU%GG)J`;%hZ>WV zpe5$`Ol5`WOGrwrNFDU_rG$qwe#x;)!dMm|E*M4~bLB$lB~^%G+kUiEw+2W?F%BTP zmn0_nH$E{|U}|LgfPL~PC^2Cv)^^|#w2w{0MI6T9dEmFC@ZP6p;t}Gc6}<*g zsVZ1%giaPBICHLRsnErm|9eVdfx~4@apRic#M(OX)kYjb-rbg~z@H|=rXSt3w`d#5 zXsv41F;%v2^kZ`{)2n#}gg&B`^!wBh=U2FQM{|$T0ATF$GLv6rVb%mM2Ygauk<5Wn zlx-cv#X^cn)r0#nFuAZV-2yj|jdJ;suSj+X{Hrque@aN#RKZ&O%bx@~h{ejR6knrC z2fB|t6N<>R%2!~bHk%kQ!x3;kHjeq{#6@a2xo-V>Z6@`Hn&d7!GN+)UpoHm{&r_&DphgXBKC&oULBF|3uxx1lXHx6x>~L@rdxwEiwf_ zr9rM!imK8i%?V5i0kkz0`Qs2(Tt$xISd7V`08JsGbc~a7HB;wyEEU?7CPND;-n}K> zvx+K35YIQlvU7PwC3CexigBs*RW(w_VmR}2tFLNG5;b`oEfwBJU&?WpI^Qjkbk9m= z&CbyX3MnCQE3fN4hg~;!j!)|0@k3_l9`0-6^6%RsELpRSARjfQ>R+~>3w^ytcMj0@ z0LkK4Y))vzmkzQg?ExXTYM-IPOYXlvGd7A42jlSv!|E|ixL>tNt{J*`U4G4`0 zRB^`HEQT>Q*nN#Nzv;lF;c6sRY{XeaNptX_^(~CCOx@h!Z5q#d4PE^gawF{ZUB14v z3LQY~25!+8O|WX0<321huZK1}!}s5xfRlb>16wTg<@1fM#qi*Fl!e@X{bVU)_)A3v zfplyd7<R=%Q?31=Lz4y@pkz@4!wnA-|0s|yRwJR5esG>Y@62s6;Lp*fIZwq z{x3_ygQ7OvdGk)zfbv^|cH7H6XEJ_6UzX8%3B?5Y_`Cp^Y zf3@h;{0vZXgyLwjS+kSNS2cENcIxrgr3}z(V8Cug0biC}NmS6o*Ue*KZEh@uA>u^g z`Bg=RFIu?jeK{Zf?8ISg0wcl%=kjsE8&o{Rk&a^+aN2N(1rgu69K0A?9xt8WM>*AO z)Wi9ciB3{%6kv+kg)JM7=`nY>_t)3IH_V6(j^toenwtqtTLBJ_ZZC-d3-#wUTIe*W z43HA7MGVWk$Wy__|A;Sl+-{fP+fNC_o)=QusS{rAh76n}1h7`V;|H@(qVh`ICM zj18w_N$bwIYlD%pLK8*q0W@W>rve9NU^btA+%B%NVO-~c=Ou4OA&EW`$%F;F7{a?p zH%>9MzG2-dZV!;)apn5cLs#HW)Wh;&BA}qFtcNjDQ9rQ<$3PSEn0c*+B8nTBU7m7q zy40g_(q?9EMwGFla{kWhquWSz(+V=&@(5=wPVUWyYY+v^RxXEnrgHmgIe*i(mLNUG z1Za0d#^TUFVOxVIVh03j0KKw&kHvj&d;co5i%1VFV2%T8xT@w z(uvl$-|xN*{0-S}cgg?){!yVz$c5kQ0X?`1ra(!;6R-$RJ$atjbI6TY1+7%doyeyp z1>TFI(*H9Z2V>tFcQI#&P%e=E+;@3xCINTlP80HU+VXgkCDySOfN-vUdA-FQoV4gn zi%$~`yzHZUUWN6BKV~*$y6w)B4}jdU)6A{MXjx;Z3CI{^xXj0jbMM3ht2DU0c9lR> z+xpQ%>j7;K!Yw(=VW~JUr+hkAhYcna`h*_Xlh`n z9(z$EU#CfQDA45U{RyWwBVh49rB>|3b8CWP4j?392w$2}?3f^Z=3+CCe_4DkMDmwJ z-bf?0g|bAnbUWSL1`==k8pnpEA|3oTX}VEs3Z?ra03Ec%_&6)R zI=vJ~dKQyA@;dV0Y_<`X%jM=nop3bWT8BiQVx{XtJ5&l;;m>Y4@GdR8e^t5Kv68$T z>XYm?s%s2x1#?;Ju1C)a!e#q(9CXLDsg00ZOX9HL* zb#L-+#k!T3`pl&GyZ3wd*JZABWFm4-b<@=Dl*8i0`y*m69zI2N8N5#XKaC`BqH3;A zW!h%j-AbfQ8rl#ofJb z_>)EAEzZ1_^iVHpqLm#Qrwm(gsb3B}W3NWkQERy%sgApGo4u#HhWYd6wxgb3|L&8$ zhC%9~vyK8KdOOp1%ur%`YKb52?)0Rm8?OxQROK#hQ{nC1Wrlob z$J6K8!`1Np`X^=4B>YYQV4=Vrv6w(C*{_ktGtTW{Q=h$*G2W)0*hX`tEjHRgF;^e2 zJ0SY>G!t)RSy)K$qabFRj!gfC#B3~>t>l(5^$N+q(HV@B2rqL0-U80V17CXD0O;lF z>FRl3I>8mxpF7k|CM@`3|5o>L%K^|G z*yEHLi=Sd%7cNdKb4zpBLjFoD7&D>HOK2R=F(GZ8BlL; z%aliYFg0kb9PS1JTtB}vDjMWAU~nGua!EBkc{Ufz*Lp#b?<5kO#5u72dhzNBovfd= zT)?zqCg^wZ__}`(4Cvc3Y}!Vxp5((MIXXQ2>ARY=;?Hr?ezBCa>BOwa_IrE&8g@zX z(oImYm#voR>(Z^hXn~rB?xI~bka~F%q#UJGvo+AOr86Z0pkEWkE$F+ZE2+2#7ffnU z6)*jWPZ@g#qkK8N7xA5MuqD&TR+a>Y&~=s*8ULwGA$Mn_zRcq}Q*~#PId}?(zxfcsYGg ze=p%)S& z56?R6azyr&S+p*9XCNSClqmi**CmBMfCK`WqxMkMQ+LZ`cNXh9$u2x_vt_iKS9Y;i z=-O0OR-;30!2Zn@@cr69J>_TbF0Z-$uLT`K-Wc!(kOE&p^R+Z%&Al?iu3t)6DHOO1Ff7`^6{4y2qwr30$^!|Ri z`sym(DT;(2!-B%)|BZtAEtNxf4|Yi>TrfWgYe9T(p?{K#iLL0g`(}6P%X~PQb>N&E zUNxuz=*|yhMBkY?b9dv&*Yq!)O=2zypne?P6~Ztc-h7R3+L@-uGEBW=-G2yh+A|T(yW*lavWK8hgxbmiBQ=O{WL>RCb%xKlv;2O4Bq~ z`aUjJ0L*^RM1q8Z3irDX9EdaxblkQge&M44f*X9;(CLfbvxL1`hGFrEFugpsT!zIhHC+vp&!8k1zGQ!~eoyi;l!J1jb{Obh5^hZ)c zG2v}ac3;1N$bQ!_!dz^*=Xd3qn^~n-H_6!Cr)Aq2#N}stK?TbTXxfYTPnSgi^ZY5m zayY+mw~X)?3GR89@Clnm7t1+4lpr+!#=UoTHd0j8-uAtoVlmbS%Kbz4NkEVmA-j=O zyo7*U<8A))adGqNWv!m}Co3!!I=%it)Nye)`(<5w*m5~QG`(C>Fu2_dcT_-dvy1ys zQUFTuo8B-tAKin)I5F^uh9HuVX`LVMvr52)wx^ndrS#9}9~hvY*F%EN>W?2-lsM6o z|0&|u&Pq^jP++#!=NeFUV0sp2CN^evPFf~rN+u>sY8Xa&2Qx8aS92mNF&-8s7IxF$jb8v`=FmbbUb1*S+i*t%I3yU+ev5K;Ca&ZfDG7Av#{r|e?!!XL3+grL? z5pi&{{qHLRc@noGx-wR1?`=#UxR{b2k~YI<%|Q%RLv0{kL0J`wEGjLpsd;H}2y{d; zxMAVQ(8x&6nV|pB#+prj#LVLcpXX_|%S@KbX}hV#%j&cYy=h9C?xsUAF7{&qDj6hp zot&n$OrJoVh(}fuD=K6p8hSwGG;vkEa4$fYYlQhL}(a4nBlga#N=Wk{f7P%kBr zrGu}-nE^3S)b-u9NQ^TLS=<$;K-^OYZLwaa0KR^aDu3~T2d*@lg~vVaEUc`cGJkQU zLKt43Kil09*4b6wl}7`=tn^Re;yA7l={7abH<^4Mc2gVq=6U59p^Wkyi}<)^cM?ad zD0eYHt?gvY*?LKo1DBpL`CKA;`cHTo2rL4+je@ z`+RZd()!!TzZlNqxOhP{G=j&32gi)SbMLs{n7 z$yTIZ$7)8Y5SleKB-9<}1%-))!2(xY04|l`KDWP;TKeor+OhS)=@!A(e{UL5_}~FR zn1cS#BE1l)%X;nFvvwhT^M$r}DRrB=n7LJu zU*_iNK&d9cm7ZUEGf2crh+OKKyGumtQ&iX%iicbbpgR(K$P5o&HC4gn)U}1(KCl^ ty*{ty <- `ty*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import +grammar Bimport : (name, externtype) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + prod{nm_2 : name, xt : externtype} {{nm_2:Bname} {xt:Bexterntype}} => (nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimports : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {(nm_2, xt):Bimport}} => [IMPORT_import(nm_1, nm_2, xt)] + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, `nm_2*` : name*, `xt*` : externtype*} {{0x01} {0xFF} {nm_1:Bname} {(nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`}:Blist(syntax (name, externtype), grammar Bimport)}} => IMPORT_import(nm_1, nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bimportsec : import* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + prod{`im**` : import**} im*{im <- `im*`}*{`im*` <- `im**`}:Bsection_(2, syntax import*, grammar Blist(syntax import*, grammar Bimports)) => $concat_(syntax import, im*{im <- `im*`}*{`im*` <- `im**`}) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* @@ -10863,6 +10870,9 @@ grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Timports_(I : I) : (import*, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec @@ -10963,13 +10973,13 @@ syntax decl = ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:273.1-273.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -10977,13 +10987,13 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:277.1-277.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -10991,13 +11001,13 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:281.1-281.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11005,13 +11015,13 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:285.1-285.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11019,13 +11029,13 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:289.1-289.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11033,13 +11043,13 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:293.1-293.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11047,13 +11057,13 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:297.1-297.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11061,13 +11071,13 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:301.1-301.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11075,13 +11085,13 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:269.1-269.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:305.1-305.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11089,13 +11099,13 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:309.1-309.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11103,13 +11113,13 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:313.1-313.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:314.1-314.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:315.1-315.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index ba981cc99..15cc55116 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -12024,8 +12024,10 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{import}} & ::= & {\mathit{nm}}_1{:}{\mathtt{name}}~~{\mathit{nm}}_2{:}{\mathtt{name}}~~{\mathit{xt}}{:}{\mathtt{externtype}} & \quad\Rightarrow\quad{} & \mathsf{import}~{\mathit{nm}}_1~{\mathit{nm}}_2~{\mathit{xt}} \\ -\mbox{(import section)} & {\mathtt{importsec}} & ::= & {{\mathit{im}}^\ast}{:}{{\mathtt{section}}}_{2}({\mathtt{list}}({\mathtt{import}})) & \quad\Rightarrow\quad{} & {{\mathit{im}}^\ast} \\ +& {\mathtt{import}} & ::= & {\mathit{nm}}_2{:}{\mathtt{name}}~~{\mathit{xt}}{:}{\mathtt{externtype}} & \quad\Rightarrow\quad{} & ({\mathit{nm}}_2, {\mathit{xt}}) \\ +& {\mathtt{imports}} & ::= & {\mathit{nm}}_1{:}{\mathtt{name}}~~({\mathit{nm}}_2, {\mathit{xt}}){:}{\mathtt{import}} & \quad\Rightarrow\quad{} & \mathsf{import}~{\mathit{nm}}_1~{\mathit{nm}}_2~{\mathit{xt}} \\ +& & | & \mathtt{0x01}~~\mathtt{0xFF}~~{\mathit{nm}}_1{:}{\mathtt{name}}~~{({\mathit{nm}}_2, {\mathit{xt}})^\ast}{:}{\mathtt{list}}({\mathtt{import}}) & \quad\Rightarrow\quad{} & {(\mathsf{import}~{\mathit{nm}}_1~{\mathit{nm}}_2~{\mathit{xt}})^\ast} \\ +\mbox{(import section)} & {\mathtt{importsec}} & ::= & {{{\mathit{im}}^\ast}^\ast}{:}{{\mathtt{section}}}_{2}({\mathtt{list}}({\mathtt{imports}})) & \quad\Rightarrow\quad{} & {\bigoplus}\, {{{\mathit{im}}^\ast}^\ast} \\ \end{array} $$ @@ -13581,6 +13583,13 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} & {{\mathtt{import}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{import}’}~~{\mathit{nm}}_1{:}{\mathtt{name}}~~{\mathit{nm}}_2{:}{\mathtt{name}}~~({\mathit{xt}}, {I'}){:}{{\mathtt{externtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{import}~{\mathit{nm}}_1~{\mathit{nm}}_2~{\mathit{xt}}, {I'}) \\ +& {{\mathtt{imports}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{import}’}~~{\mathit{nm}}_1{:}{\mathtt{name}}~~{(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{item}’}~~{\mathit{nm}}_2{:}{\mathtt{name}}~~{{\mathtt{externtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ +&&& \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{import}’}~~{\mathit{nm}}_1{:}{\mathtt{name}}~~{\mathit{nm}}_2{:}{\mathtt{name}}~~{{\mathtt{externtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ +\end{array} +} \\ +& {{\mathtt{import}}}_{I} & ::= & \dots \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{tag}’}~~{{\mathtt{id}}^?}~~\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{import}’}~~{{\mathtt{name}}^{2}}~~\mbox{‘\texttt{{)}}’}~~{{\mathtt{tagtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} diff --git a/spectec/test-latex/test-test.el b/spectec/test-latex/test-test.el new file mode 100644 index 000000000..3c8bbed6a --- /dev/null +++ b/spectec/test-latex/test-test.el @@ -0,0 +1,611 @@ +== Parsing... +var XYZ : nat +def $test_sub_ATOM_22(nat : nat) : nat +def $test_sub_ATOM_22(n_1_xyz_y) = 0 +def $test_sub_ATOM_22(n_2_XYZ_y) = 0 +def $test_sub_ATOM_22(n_3_ATOM_y) = 0 +def $curried_(nat : nat, nat : nat) : nat +def $curried_(n_1, n_2) = n_1 + n_2 +syntax testfuse = | {AB_ nat nat nat} | {CD nat nat nat} | {EF nat nat nat} | {GH nat nat nat} | {IJ nat nat nat} | {KL nat nat nat} | {MN nat nat nat} | {OP nat nat nat} | {QR nat nat nat} + + + +syntax InfixArrow = | nat* ->_ {(nat*) nat*} +syntax InfixArrow2 = | nat* =>_ {(nat*) nat*} +syntax AtomArrow = {nat? ->_ (nat*) nat*} +syntax AtomArrow2 = {nat? =>_ (nat*) nat*} +def $InfixArrow(InfixArrow : InfixArrow) : nat +def $InfixArrow(a ->_ c) = 0 +def $InfixArrow(a ->_ {c b}) = 0 +def $InfixArrow(a ->_ {(c*) b}) = 0 +def $InfixArrow(a ->_ {c b_1 b_2}) = 0 +def $InfixArrow(a ->_ {(c*) b_1 b_2}) = 0 +def $InfixArrow(a ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $InfixArrow({} ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $InfixArrow2(InfixArrow2 : InfixArrow2) : nat +def $InfixArrow2(a =>_ c) = 0 +def $InfixArrow2(a =>_ {c b}) = 0 +def $InfixArrow2(a =>_ {(c*) b}) = 0 +def $InfixArrow2(a =>_ {c b_1 b_2}) = 0 +def $InfixArrow2(a =>_ {(c*) b_1 b_2}) = 0 +def $InfixArrow2(a =>_ {({c_1 c_2}) b_1 b_2}) = 0 +def $InfixArrow2({} =>_ {({c_1 c_2}) b_1 b_2}) = 0 +def $AtomArrow(AtomArrow : AtomArrow) : nat +def $AtomArrow({a ->_ c}) = 0 +def $AtomArrow({a ->_ c b}) = 0 +def $AtomArrow({a ->_ (c*) b}) = 0 +def $AtomArrow({a ->_ c b_1 b_2}) = 0 +def $AtomArrow({a ->_ (c*) b_1 b_2}) = 0 +def $AtomArrow({a ->_ ({c_1 c_2}) b_1 b_2}) = 0 +def $AtomArrow({->_ ({c_1 c_2}) b_1 b_2}) = 0 +def $AtomArrow2(AtomArrow2 : AtomArrow2) : nat +def $AtomArrow2({a =>_ c}) = 0 +def $AtomArrow2({a =>_ c b}) = 0 +def $AtomArrow2({a =>_ (c*) b}) = 0 +def $AtomArrow2({a =>_ c b_1 b_2}) = 0 +def $AtomArrow2({a =>_ (c*) b_1 b_2}) = 0 +def $AtomArrow2({a =>_ ({c_1 c_2}) b_1 b_2}) = 0 +def $AtomArrow2({=>_ ({c_1 c_2}) b_1 b_2}) = 0 +syntax MacroInfixArrow = | nat* ->_ {nat* nat*} +syntax MacroAtomArrow = | nat* ->_ {nat* nat*} +def $MacroInfixArrow(MacroInfixArrow : MacroInfixArrow) : nat +def $MacroInfixArrow(a ->_ c) = 0 +def $MacroInfixArrow(a ->_ {c b}) = 0 +def $MacroInfixArrow(a ->_ {(c*) b}) = 0 +def $MacroInfixArrow(a ->_ {c b_1 b_2}) = 0 +def $MacroInfixArrow(a ->_ {(c*) b_1 b_2}) = 0 +def $MacroInfixArrow(a ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $MacroInfixArrow({} ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $MacroAtomArrow(MacroAtomArrow : MacroAtomArrow) : nat +def $MacroAtomArrow(a ->_ c) = 0 +def $MacroAtomArrow(a ->_ {c b}) = 0 +def $MacroAtomArrow(a ->_ {(c*) b}) = 0 +def $MacroAtomArrow(a ->_ {c b_1 b_2}) = 0 +def $MacroAtomArrow(a ->_ {(c*) b_1 b_2}) = 0 +def $MacroAtomArrow(a ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $MacroAtomArrow({} ->_ {({c_1 c_2}) b_1 b_2}) = 0 +syntax ShowInfixArrow = | nat* ->_ {nat* nat*} +syntax ShowAtomArrow = | nat* ->_ {nat* nat*} +def $ShowInfixArrow(ShowInfixArrow : ShowInfixArrow) : nat +def $ShowInfixArrow(a ->_ c) = 0 +def $ShowInfixArrow(a ->_ {c b}) = 0 +def $ShowInfixArrow(a ->_ {(c*) b}) = 0 +def $ShowInfixArrow(a ->_ {c b_1 b_2}) = 0 +def $ShowInfixArrow(a ->_ {(c*) b_1 b_2}) = 0 +def $ShowInfixArrow(a ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $ShowInfixArrow({} ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $ShowAtomArrow(ShowAtomArrow : ShowAtomArrow) : nat +def $ShowAtomArrow(a ->_ c) = 0 +def $ShowAtomArrow(a ->_ {c b}) = 0 +def $ShowAtomArrow(a ->_ {(c*) b}) = 0 +def $ShowAtomArrow(a ->_ {c b_1 b_2}) = 0 +def $ShowAtomArrow(a ->_ {(c*) b_1 b_2}) = 0 +def $ShowAtomArrow(a ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $ShowAtomArrow({} ->_ {({c_1 c_2}) b_1 b_2}) = 0 +syntax ShowMacroInfixArrow = | nat* ->_ {nat* nat*} +syntax ShowMacroAtomArrow = | nat* ->_ {nat* nat*} +def $ShowMacroInfixArrow(ShowMacroInfixArrow : ShowMacroInfixArrow) : nat +def $ShowMacroInfixArrow(a ->_ c) = 0 +def $ShowMacroInfixArrow(a ->_ {c b}) = 0 +def $ShowMacroInfixArrow(a ->_ {(c*) b}) = 0 +def $ShowMacroInfixArrow(a ->_ {c b_1 b_2}) = 0 +def $ShowMacroInfixArrow(a ->_ {(c*) b_1 b_2}) = 0 +def $ShowMacroInfixArrow(a ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $ShowMacroInfixArrow({} ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $ShowMacroAtomArrow(ShowMacroAtomArrow : ShowMacroAtomArrow) : nat +def $ShowMacroAtomArrow(a ->_ c) = 0 +def $ShowMacroAtomArrow(a ->_ {c b}) = 0 +def $ShowMacroAtomArrow(a ->_ {(c*) b}) = 0 +def $ShowMacroAtomArrow(a ->_ {c b_1 b_2}) = 0 +def $ShowMacroAtomArrow(a ->_ {(c*) b_1 b_2}) = 0 +def $ShowMacroAtomArrow(a ->_ {({c_1 c_2}) b_1 b_2}) = 0 +def $ShowMacroAtomArrow({} ->_ {({c_1 c_2}) b_1 b_2}) = 0 + + + + + + +syntax xfoo = | XFOONULL | {XFOOUN0 nat} | {XFOOUN1N nat} | {XFOOUN11 nat} | {XFOOUNREST nat} | {XFOOBIN0 nat nat} | {XFOOBIN1N nat nat} | {XFOOBIN11 nat nat} | {XFOOBIN1N2N nat nat} | {XFOOBIN1N22 nat nat} | {XFOOBIN112N nat nat} | {XFOOBIN1122 nat nat} | {XFOOBIN22 nat nat} | {XFOOBIN2211 nat nat} | {XFOOBINREST nat nat} | {XFOOBIN1NREST nat nat} | {XFOOBIN11REST nat nat} | {XFOOBIN22REST nat nat} | {XFOOBIN1N2NREST nat nat} | {XFOOBIN1122REST nat nat} | {XFOOBIN2211REST nat nat} | {XFOONAME1N2NREST nat nat} | {XFOONAME1122REST nat nat} | {XFOONAME2211REST nat nat} +syntax xxfoo = {xfoo nat} +syntax xxxfoo = {nat xfoo nat} +def $xfoo(xfoo : xfoo) : nat +def $xfoo(XFOONULL) = 0 +def $xfoo({XFOOUN0 2}) = 0 +def $xfoo({XFOOUN1N 2}) = 0 +def $xfoo({XFOOUN11 2}) = 0 +def $xfoo({XFOOUNREST 2}) = 0 +def $xfoo({XFOOBIN0 2 3}) = 0 +def $xfoo({XFOOBIN1N 2 3}) = 0 +def $xfoo({XFOOBIN11 2 3}) = 0 +def $xfoo({XFOOBIN1N2N 2 3}) = 0 +def $xfoo({XFOOBIN1N22 2 3}) = 0 +def $xfoo({XFOOBIN112N 2 3}) = 0 +def $xfoo({XFOOBIN1122 2 3}) = 0 +def $xfoo({XFOOBIN22 2 3}) = 0 +def $xfoo({XFOOBIN2211 2 3}) = 0 +def $xfoo({XFOOBINREST 2 3}) = 0 +def $xfoo({XFOOBIN1NREST 2 3}) = 0 +def $xfoo({XFOOBIN11REST 2 3}) = 0 +def $xfoo({XFOOBIN22REST 2 3}) = 0 +def $xfoo({XFOOBIN1N2NREST 2 3}) = 0 +def $xfoo({XFOOBIN1122REST 2 3}) = 0 +def $xfoo({XFOOBIN2211REST 2 3}) = 0 +def $xfoo({XFOONAME1N2NREST 2 3}) = 0 +def $xfoo({XFOONAME1122REST 2 3}) = 0 +def $xfoo({XFOONAME2211REST 2 3}) = 0 +def $xxfoo(xxfoo : xxfoo) : nat +def $xxfoo({XFOONULL 9}) = 0 +def $xxxfoo(xxxfoo : xxxfoo) : nat +def $xxxfoo({1 XFOONULL 9}) = 0 + + + + + + +syntax fii = | FII +syntax faa = | FAA +syntax foo = | FOO +syntax fuu = | FUU +syntax bar = | BAR +syntax boo = | BOO +syntax baz = | BAZ +syntax boi = | BOI +def $macros1 : nat +def $macros1 = 0 + -- if fii = FII + -- if faa = FAA + -- if foo = FOO + -- if fuu = FUU + -- if bar = BAR + -- if boo = BOO + -- if baz = BAZ + -- if boi = BOI +syntax ufii_(nat_1, nat_2) = | UFII +syntax ufaa_(nat_1, nat_2) = | UFAA +syntax ufoo_(nat_1, nat_2) = | UFOO +syntax ufuu_(nat_1, nat_2) = | UFUU +syntax ubar_(nat_1, nat_2) = | UBAR +syntax uboo_(nat_1, nat_2) = | UBOO +syntax ubaz_(nat_1, nat_2) = | UBAZ +syntax uboi_(nat_1, nat_2) = | UBOI +def $macros2 : nat +def $macros2 = 0 + -- var ufii: ufii_(0, 0) + -- if ufii = UFII + -- var ufaa: ufaa_(0, 0) + -- if ufaa = UFAA + -- var ufoo: ufoo_(0, 0) + -- if ufoo = UFOO + -- var ufuu: ufuu_(0, 0) + -- if ufuu = UFUU + -- var ubar: ubar_(0, 0) + -- if ubar = UBAR + -- var uboo: uboo_(0, 0) + -- if uboo = UBOO + -- var ubaz: ubaz_(0, 0) + -- if ubaz = UBAZ + -- var uboi: uboi_(0, 0) + -- if uboi = UBOI + + + +def $fii : nat +def $fii = 0 +def $faa : nat +def $faa = 0 +def $foo : nat +def $foo = 0 +def $fuu : nat +def $fuu = 0 +def $bar : nat +def $bar = 0 +def $boo : nat +def $boo = 0 +def $baz : nat +def $baz = 0 +def $boi : nat +def $boi = 0 +def $ufii_(nat_1 : nat, nat_2 : nat) : nat +def $ufii_(x, y) = 0 +def $ufaa_(nat_1 : nat, nat_2 : nat) : nat +def $ufaa_(x, y) = 0 +def $ufoo_(nat_1 : nat, nat_2 : nat) : nat +def $ufoo_(x, y) = 0 +def $ufuu_(nat_1 : nat, nat_2 : nat) : nat +def $ufuu_(x, y) = 0 +def $ubar_(nat_1 : nat, nat_2 : nat) : nat +def $ubar_(x, y) = 0 +def $uboo_(nat_1 : nat, nat_2 : nat) : nat +def $uboo_(x, y) = 0 +def $ubaz_(nat_1 : nat, nat_2 : nat) : nat +def $ubaz_(x, y) = 0 +def $uboi_(nat_1 : nat, nat_2 : nat) : nat +def $uboi_(x, y) = 0 +def $foo__bar : nat +def $foo__bar = 0 +def $foo_boo : nat +def $foo_boo = 0 +def $ufoo__bar_(nat_1 : nat, nat_2 : nat) : nat +def $ufoo__bar_(x, y) = 0 +def $ufoo_boo_(nat_1 : nat, nat_2 : nat) : nat +def $ufoo_boo_(x, y) = 0 + + + +syntax parent = | AA | AAX | AAY | AAZ | BB | BBX | BBY | BBZ | {CC nat CCCC} | {CCX nat CCXX} | {CCY nat CCYY} | {CCZ nat CCZZ} | {DD nat} | {DDX nat} | {DDY nat} | {DDZ nat} | {EE nat} | {EEX nat} | {EEY nat} | {EEZ nat} +def $parent(parent : parent) : nat +def $parent(AA) = 0 +def $parent(AAX) = 0 +def $parent(AAY) = 0 +def $parent(AAZ) = 0 +def $parent(BB) = 0 +def $parent(BBX) = 0 +def $parent(BBY) = 0 +def $parent(BBZ) = 0 +def $parent({CC n CCCC}) = 0 +def $parent({CCX n CCXX}) = 0 +def $parent({CCY n CCYY}) = 0 +def $parent({CCZ n CCZZ}) = 0 +def $parent({DD n}) = 0 +def $parent({DDX n}) = 0 +def $parent({DDY n}) = 0 +def $parent({DDZ n}) = 0 +def $parent({EE n}) = 0 +def $parent({EEX n}) = 0 +def $parent({EEY n}) = 0 +def $parent({EEZ n}) = 0 +syntax parentimplicit(syntax t) = | PP | PPX | PPY | PPZ | QQ | QQX | QQY | QQZ | {RR t} | {RRX t} | {RRY t} | {RRZ t} +def $parentimpl(parentimplicit : parentimplicit(text)) : nat +def $parentimpl(PP) = 0 +def $parentimpl(PPX) = 0 +def $parentimpl(PPY) = 0 +def $parentimpl(PPZ) = 0 +def $parentimpl(QQ) = 0 +def $parentimpl(QQX) = 0 +def $parentimpl(QQY) = 0 +def $parentimpl(QQZ) = 0 +def $parentimpl({RR n}) = 0 +def $parentimpl({RRX n}) = 0 +def $parentimpl({RRY n}) = 0 +def $parentimpl({RRZ n}) = 0 +syntax indirect = parentimplicit(nat) +def $indirect(indirect : indirect) : nat +def $indirect(PP) = 0 +def $indirect(PPX) = 0 +def $indirect(PPY) = 0 +def $indirect(PPZ) = 0 +def $indirect(QQ) = 0 +def $indirect(QQX) = 0 +def $indirect(QQY) = 0 +def $indirect(QQZ) = 0 +def $indirect({RR n}) = 0 +def $indirect({RRX n}) = 0 +def $indirect({RRY n}) = 0 +def $indirect({RRZ n}) = 0 +syntax family(nat : nat) +syntax family(0) = | FF +syntax family(1) = | GG +syntax family(2) = | HH +def $family(nat : nat, family : family(nat)) : nat +def $family(0, FF) = 0 +def $family(1, GG) = 0 +def $family(2, HH) = 0 +syntax child = | parent | family(0) | indirect | ZZZ +def $child(child : child) : nat +def $child(AA) = 0 +def $child(AAX) = 0 +def $child(AAY) = 0 +def $child(AAZ) = 0 +def $child(BB) = 0 +def $child(BBX) = 0 +def $child(BBY) = 0 +def $child(BBZ) = 0 +def $child({CC n CCCC}) = 0 +def $child({CCX n CCXX}) = 0 +def $child({CCY n CCYY}) = 0 +def $child({CCZ n CCZZ}) = 0 +def $child({DD n}) = 0 +def $child({DDX n}) = 0 +def $child({DDY n}) = 0 +def $child({DDZ n}) = 0 +def $child({EE n}) = 0 +def $child({EEX n}) = 0 +def $child({EEY n}) = 0 +def $child({EEZ n}) = 0 +def $child(FF) = 0 +def $child(PP) = 0 +def $child(PPX) = 0 +def $child(PPY) = 0 +def $child(PPZ) = 0 +def $child(QQ) = 0 +def $child(QQX) = 0 +def $child(QQY) = 0 +def $child(QQZ) = 0 +def $child({RR n}) = 0 +def $child({RRX n}) = 0 +def $child({RRY n}) = 0 +def $child({RRZ n}) = 0 +def $child(ZZZ) = 0 +syntax grandchild = | child | ZZZZ +def $grandchild(grandchild : grandchild) : nat +def $grandchild(AA) = 0 +def $grandchild(AAX) = 0 +def $grandchild(AAY) = 0 +def $grandchild(AAZ) = 0 +def $grandchild(BB) = 0 +def $grandchild(BBX) = 0 +def $grandchild(BBY) = 0 +def $grandchild(BBZ) = 0 +def $grandchild({CC n CCCC}) = 0 +def $grandchild({CCX n CCXX}) = 0 +def $grandchild({CCY n CCYY}) = 0 +def $grandchild({CCZ n CCZZ}) = 0 +def $grandchild({DD n}) = 0 +def $grandchild({DDX n}) = 0 +def $grandchild({DDY n}) = 0 +def $grandchild({DDZ n}) = 0 +def $grandchild({EE n}) = 0 +def $grandchild({EEX n}) = 0 +def $grandchild({EEY n}) = 0 +def $grandchild({EEZ n}) = 0 +def $grandchild(FF) = 0 +def $grandchild(PP) = 0 +def $grandchild(PPX) = 0 +def $grandchild(PPY) = 0 +def $grandchild(PPZ) = 0 +def $grandchild(QQ) = 0 +def $grandchild(QQX) = 0 +def $grandchild(QQY) = 0 +def $grandchild(QQZ) = 0 +def $grandchild({RR n}) = 0 +def $grandchild({RRX n}) = 0 +def $grandchild({RRY n}) = 0 +def $grandchild({RRZ n}) = 0 +def $grandchild(ZZZ) = 0 +def $grandchild(ZZZZ) = 0 + + + +syntax rec = {FA nat*, FB nat*, FC nat*, FD nat*, FE nat*, FF nat*, FG nat*, FH nat*} +def $proj(rec : rec, nat : nat) : nat* +def $proj(r, 0) = r.FA +def $proj(r, 1) = r.FB +def $proj(r, 2) = r.FC +def $proj(r, 3) = r.FD +def $proj(r, 4) = r.FE +def $proj(r, 5) = r.FF +def $proj(r, 6) = r.FG +def $proj(r, 7) = r.FH +def $upd(rec : rec, nat : nat) : rec +def $upd(r, 0) = r[FA = 0] +def $upd(r, 1) = r[FB = 0] +def $upd(r, 2) = r[FC = 0] +def $upd(r, 3) = r[FD = 0] +def $upd(r, 4) = r[FE = 0] +def $upd(r, 5) = r[FF = 0] +def $upd(r, 6) = r[FG = 0] +def $upd(r, 7) = r[FH = 0] +def $ext(rec : rec, nat : nat) : rec +def $ext(r, 0) = r[FA =++ 0] +def $ext(r, 1) = r[FB =++ 0] +def $ext(r, 2) = r[FC =++ 0] +def $ext(r, 3) = r[FD =++ 0] +def $ext(r, 4) = r[FE =++ 0] +def $ext(r, 5) = r[FF =++ 0] +def $ext(r, 6) = r[FG =++ 0] +def $ext(r, 7) = r[FH =++ 0] +syntax recimpl = {FIA nat*, FIB nat*, FIC nat*, FID nat*, FIE nat*, FIF nat*, FIG nat*, FIH nat*} +def $rproj(recimpl : recimpl, nat : nat) : nat* +def $rproj(r, 0) = r.FIA +def $rproj(r, 1) = r.FIB +def $rproj(r, 2) = r.FIC +def $rproj(r, 3) = r.FID +def $rproj(r, 4) = r.FIE +def $rproj(r, 5) = r.FIF +def $rproj(r, 6) = r.FIG +def $rproj(r, 7) = r.FIH + + + +syntax cona = {nat COA nat} +syntax conb = {nat COB nat} +syntax conc = {nat COC nat} +syntax cond = {nat COD nat} +syntax cone = {nat COE nat} +syntax conf = {nat COF nat} +syntax cong = {nat COG nat} +syntax conh = {nat COH nat} + + + +syntax C = {} +relation Rok: C |- parent : OK +relation Rsub: C |- parent <: parent +relation Reval: parent ; child ~> parent ; child +rule Rok: + C |- AA : OK +rule Rsub: + C |- parent <: AA +rule Reval: + parent ; child ~> AA ; BB +relation Rok_macro: C |- parent : OK +relation Rsub_macro: C |- parent <: parent +relation Reval_macro: parent ; child ~> parent ; child +rule Rok_macro: + C |- AA : OK +rule Rsub_macro: + C |- parent <: AA +rule Reval_macro: + parent ; child ~> AA ; BB +relation Rok_nomacro: C |- parent : OK +relation Rsub_nomacro: C |- parent <: parent +relation Reval_nomacro: parent ; child ~> parent ; child +rule Rok_nomacro: + C |- AA : OK +rule Rsub_nomacro: + C |- parent <: AA +rule Reval_nomacro: + parent ; child ~> AA ; BB + + + + + + +syntax argh = | ARGH +syntax borg = | BORG +syntax curb = | CURB +syntax dork = | DORK +syntax eerk = | EERK + + + +syntax dotstypex/1 = | argh | DX1 | ... +syntax dotstypey/1 = | argh | DY1 | ... +syntax dotstypex/2 = | ... | borg | DX2 | ... +syntax dotstypesep = borg +syntax dotstypex/3 = | ... | curb | DX3 | DX4 | DX5 | DX6 | ... +syntax dotstypey/2 = | ... | borg | DY2 | DY3 | DY4 | ... +syntax dotstypex/4 = | ... | dork | DX7 +syntax dotstypey/3 = | ... | dork | DY5 + + + +syntax casetype = | {LA nat argh} + -- if nat = 0 + -- if argh =/= ARGH | {LB borg curb} | {LC dork_1 dork_2} + -- if dork_1 =/= dork_2 | {LD argh nat} + -- if nat > 0 + -- if argh =/= ARGH | {LE nat_1 nat_2} + -- if nat_1 <= nat_2 | {LFA borg} | {LFB borg} | {LFC borg} | {LH borg argh eerk} | {LI borg argh eerk} + -- if 0 < 1 + -- if 1 > 0 | {LJ borg} + -- if 0 < 1 + -- if 1 > 0 | {LK borg argh eerk} + -- if 0 < 1 + -- if 1 > 0 + + + +grammar gram : nat* = + | {"GA" "GB"} => 0 + -- if 0 < 1 + (; \n ;) + | {"GB" "GC" "GD"} => 0 + (; \n ;) + | {"GC" "GD"} => 0 + -- if 0 < 1 + (; \n ;) + | {"GD" "GE"} => 0 + -- if 0 < 1 + -- if 1 > 0 + (; \n ;) + | {"GE" "GF"} => 0 + -- if 0 < 1 + (; \n ;) + | {"GFA" "GF"} => 0 + | {"GFB" "GF"} => 1 + | "GFC" => 2 + (; \n ;) + | "GG" => 0 + -- if 1 > 0 + (; \n ;) + | "GH" => 0 + -- if 1 > 0 + (; \n ;) + | "GI" => {0 1 2} + -- if 0 < 1 + -- if 1 > 0 + (; \n ;) + | {"GJ" "GJ" "G" "J"} => 0 + (; \n ;) + | {"GK" "GJ" "G" "J"} => 0 + -- if 0 < 1 + -- if 1 > 0 + (; \n ;) + | "GI" => {0 1 2} + ---- + -- if 0 < 1 + -- if 1 > 0 + (; \n ;) + | "GI" => {0 1 2} + ---- + -- if 0 < 1 + -- if 1 > 0 + + + +def $func(nat : nat, nat : nat) : nat* +def $func(n, m) = 0 +def $func(n, m) = 0 + -- if n < m +def $func(n, m) = 0 + -- if n > m + -- if m < n +def $func(n, m) = {0 1} + -- if n < m + -- if m > n +def $func(n, m) = {0 1} + -- if n < m + -- if m > n +def $func(n, m) = {0 1 2} + -- if n < m + -- if m > n +def $func(n, m) = {0 1 2} + -- if n < m + -- if m > n +def $func(n, m) = {0 1 2} + -- if n < m + -- if m > n + + + +relation Rel: {argh borg} -> {curb dork} +rule Rel/A: + {argh borg} -> {curb dork} +rule Rel/B: + {argh borg} -> {curb dork} + -- if 0 < 1 +rule Rel/C: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/D: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/E: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/F: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/G: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/DD: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/EE: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/FF: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 +rule Rel/GG: + {argh borg} -> {curb dork} + -- if 0 < 1 + -- if 1 > 0 + +== Elaboration... +== IL Validation... +== Latex Generation... +== Complete. diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index c86bb6dfa..f75b85ed8 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -8698,14 +8698,21 @@ grammar Btypesec : type* prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import +grammar Bimport : (name, externtype) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + prod{nm_2 : name, xt : externtype} {{nm_2:Bname} {xt:Bexterntype}} => (nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimports : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {(nm_2, xt):Bimport}} => [IMPORT_import(nm_1, nm_2, xt)] + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, `nm_2*` : name*, `xt*` : externtype*} {{0x01} {0xFF} {nm_1:Bname} {(nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`}:Blist(syntax (name, externtype), grammar Bimport)}} => IMPORT_import(nm_1, nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bimportsec : import* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + prod{`im**` : import**} im*{im <- `im*`}*{`im*` <- `im**`}:Bsection_(2, syntax import*, grammar Blist(syntax import*, grammar Bimports)) => $concat_(syntax import, im*{im <- `im*`}*{`im*` <- `im**`}) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* @@ -10853,6 +10860,9 @@ grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Timports_(I : I) : (import*, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec @@ -10953,13 +10963,13 @@ syntax decl = ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:273.1-273.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -10967,13 +10977,13 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:277.1-277.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -10981,13 +10991,13 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:281.1-281.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -10995,13 +11005,13 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:285.1-285.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11009,13 +11019,13 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:289.1-289.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11023,13 +11033,13 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:293.1-293.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11037,13 +11047,13 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:297.1-297.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11051,13 +11061,13 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:301.1-301.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11065,13 +11075,13 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:269.1-269.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:305.1-305.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11079,13 +11089,13 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:309.1-309.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -11093,13 +11103,13 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:313.1-313.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:314.1-314.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:315.1-315.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -20039,14 +20049,21 @@ grammar Btypesec : type* prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import +grammar Bimport : (name, externtype) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_2 : name, xt : externtype} {{nm_2:Bname} {xt:Bexterntype}} => (nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimports : import* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {(nm_2, xt):Bimport}} => [IMPORT_import(nm_1, nm_2, xt)] + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, `nm_2*` : name*, `xt*` : externtype*} {{0x01} {0xFF} {nm_1:Bname} {(nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`}:Blist(syntax (name, externtype), grammar Bimport)}} => IMPORT_import(nm_1, nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bimportsec : import* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + prod{`im**` : import**} im*{im <- `im*`}*{`im*` <- `im**`}:Bsection_(2, syntax import*, grammar Blist(syntax import*, grammar Bimports)) => $concat_(syntax import, im*{im <- `im*`}*{`im*` <- `im**`}) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* @@ -22194,6 +22211,9 @@ grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Timports_(I : I) : (import*, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec @@ -22294,13 +22314,13 @@ syntax decl = ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:273.1-273.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22308,13 +22328,13 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:277.1-277.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22322,13 +22342,13 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:281.1-281.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22336,13 +22356,13 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:285.1-285.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22350,13 +22370,13 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:289.1-289.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22364,13 +22384,13 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:293.1-293.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22378,13 +22398,13 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:297.1-297.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22392,13 +22412,13 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:301.1-301.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22406,13 +22426,13 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:269.1-269.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:305.1-305.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22420,13 +22440,13 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:309.1-309.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -22434,13 +22454,13 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:313.1-313.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:314.1-314.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:315.1-315.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -31559,14 +31579,21 @@ grammar Btypesec : type* prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import +grammar Bimport : (name, externtype) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + prod{nm_2 : name, xt : externtype} {{nm_2:Bname} {xt:Bexterntype}} => (nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimports : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {(nm_2, xt):Bimport}} => [IMPORT_import(nm_1, nm_2, xt)] + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, `nm_2*` : name*, `xt*` : externtype*} {{0x01} {0xFF} {nm_1:Bname} {(nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`}:Blist(syntax (name, externtype), grammar Bimport)}} => IMPORT_import(nm_1, nm_2, xt)*{nm_2 <- `nm_2*`, xt <- `xt*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bimportsec : import* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + prod{`im**` : import**} im*{im <- `im*`}*{`im*` <- `im**`}:Bsection_(2, syntax import*, grammar Blist(syntax import*, grammar Bimports)) => $concat_(syntax import, im*{im <- `im*`}*{`im*` <- `im**`}) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* @@ -33714,6 +33741,9 @@ grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Timports_(I : I) : (import*, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec @@ -33814,13 +33844,13 @@ syntax decl = ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:273.1-273.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33828,13 +33858,13 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:277.1-277.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33842,13 +33872,13 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:281.1-281.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33856,13 +33886,13 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:285.1-285.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33870,13 +33900,13 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:289.1-289.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33884,13 +33914,13 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:293.1-293.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33898,13 +33928,13 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:297.1-297.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33912,13 +33942,13 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:301.1-301.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33926,13 +33956,13 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:269.1-269.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:305.1-305.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33940,13 +33970,13 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:309.1-309.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } @@ -33954,13 +33984,13 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:313.1-313.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:314.1-314.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:315.1-315.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 8b4853429..db9142492 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -546,6 +546,7 @@ warning: grammar `Bglobaltype` was never spliced warning: grammar `Bheaptype` was never spliced warning: grammar `BiN` was never spliced warning: grammar `Bimport` was never spliced +warning: grammar `Bimports` was never spliced warning: grammar `Bimportsec` was never spliced warning: grammar `Binstr/parametric` was never spliced warning: grammar `Binstr/block` was never spliced @@ -768,6 +769,7 @@ warning: grammar `Timport_/abbrev-mem` was never spliced warning: grammar `Timport_/abbrev-table` was never spliced warning: grammar `Timport_/abbrev-func` was never spliced warning: grammar `Timportdots` was never spliced +warning: grammar `Timports_/abbrev` was never spliced warning: grammar `Tinstr_` was never spliced warning: grammar `Tinstrs_/unfolded` was never spliced warning: grammar `Tinstrs_/folded` was never spliced