Types

Number Types

numtype::=i32i32|i64i64|f32f32|f64f64

Vector Types

vectype::=v128v128

Reference Types

reftype::=funcreffuncref|externrefexternrefheaptype::=funcfuncref|externexternref

Value Types

valtype::=t:numtypet|t:vectypet|t:reftypet

Function Types

functype::=( func  t1:vec(param)  t2:vec(result) )[t1][t2]param::=( param  id?  t:valtype )tresult::=( result  t:valtype )t

Note

The optional identifier names for parameters in a function type only have documentation purpose. They cannot be referenced from anywhere.

Abbreviations

Multiple anonymous parameters or results may be combined into a single declaration:

(  param  valtype  )((  param  valtype  ))(  result  valtype  )((  result  valtype  ))

Limits

limits::=n:u32{min n,max ϵ}|n:u32  m:u32{min n,max m}

Memory Types

memtype::=lim:limitslim

Table Types

tabletype::=lim:limits  et:reftypelim et

Global Types

globaltype::=t:valtypeconst t|( mut  t:valtype )var t