forked from GitHub/haskell-wasm
56 lines
1.4 KiB
Haskell
56 lines
1.4 KiB
Haskell
module Language.Wasm (
|
|
Module,
|
|
ValidModule,
|
|
ValidationError(..),
|
|
parse,
|
|
validate,
|
|
Language.Wasm.parseScript,
|
|
encode,
|
|
encodeLazy,
|
|
decode,
|
|
decodeLazy,
|
|
Script,
|
|
Command(..),
|
|
ModuleDef(..),
|
|
Action(..),
|
|
Assertion(..),
|
|
Ident(..),
|
|
Meta(..),
|
|
runScript,
|
|
Valid.getModule
|
|
) where
|
|
|
|
import qualified Data.ByteString as BS
|
|
import qualified Data.ByteString.Lazy as LBS
|
|
|
|
import Language.Wasm.Structure as Struct
|
|
import Language.Wasm.Script as Script
|
|
import Language.Wasm.Lexer as Lexer
|
|
import Language.Wasm.Parser as Parser
|
|
import Language.Wasm.Validate as Valid
|
|
import Language.Wasm.Binary as Binary
|
|
|
|
-- | Parse WebAssembly text representation to `Module`
|
|
parse :: LBS.ByteString -> Either String Module
|
|
parse content = Lexer.scanner content >>= Parser.parseModule
|
|
|
|
-- | Parse WebAssembly extended script grammar
|
|
parseScript :: LBS.ByteString -> Either String Script
|
|
parseScript content = Lexer.scanner content >>= Parser.parseScript
|
|
|
|
-- | Dump `Module` to binary representation
|
|
encode :: Module -> BS.ByteString
|
|
encode = dumpModule
|
|
|
|
-- | Dump `Module` to binary representation lazily
|
|
encodeLazy :: Module -> LBS.ByteString
|
|
encodeLazy = dumpModuleLazy
|
|
|
|
-- | Decode `Module` from binary representation
|
|
decode :: BS.ByteString -> Either String Module
|
|
decode = decodeModule
|
|
|
|
-- | Decode `Module` from binary representation lazily
|
|
decodeLazy :: LBS.ByteString -> Either String Module
|
|
decodeLazy = decodeModuleLazy
|