-module(gwr@parser@module_parser). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([parse_global/1, parse_memory/1, parse_export/1]). -spec parse_global(gwr@parser@binary_reader:binary_reader()) -> {ok, {gwr@parser@binary_reader:binary_reader(), gwr@syntax@module:global()}} | {error, binary()}. parse_global(Reader) -> gleam@result:'try'( gwr@parser@types_parser:parse_global_type(Reader), fun(_use0) -> {Reader@1, Global_type} = _use0, gleam@result:'try'( gwr@parser@instruction_parser:parse_expression(Reader@1), fun(_use0@1) -> {Reader@2, Expression} = _use0@1, {ok, {Reader@2, {global, Global_type, Expression}}} end ) end ). -spec parse_memory(gwr@parser@binary_reader:binary_reader()) -> {ok, {gwr@parser@binary_reader:binary_reader(), gwr@syntax@module:memory()}} | {error, binary()}. parse_memory(Reader) -> gleam@result:'try'( gwr@parser@types_parser:parse_limits(Reader), fun(_use0) -> {Reader@1, Limits} = _use0, {ok, {Reader@1, {memory, Limits}}} end ). -spec parse_export(gwr@parser@binary_reader:binary_reader()) -> {ok, {gwr@parser@binary_reader:binary_reader(), gwr@syntax@module:export()}} | {error, binary()}. parse_export(Reader) -> gleam@result:'try'( gwr@parser@value_parser:parse_name(Reader), fun(_use0) -> {Reader@1, Export_name} = _use0, gleam@result:'try'( case gwr@parser@binary_reader:read(Reader@1, 1) of {ok, {Reader@2, <>}} when Id =:= 16#00 -> gleam@result:'try'( gwr@parser@value_parser:parse_unsigned_leb128_integer( Reader@2 ), fun(_use0@1) -> {Reader@3, Index} = _use0@1, {ok, {Reader@3, {export, Export_name, {function_export, Index}}}} end ); {ok, {Reader@4, <>}} when Id@1 =:= 16#01 -> gleam@result:'try'( gwr@parser@value_parser:parse_unsigned_leb128_integer( Reader@4 ), fun(_use0@2) -> {Reader@5, Index@1} = _use0@2, {ok, {Reader@5, {export, Export_name, {table_export, Index@1}}}} end ); {ok, {Reader@6, <>}} when Id@2 =:= 16#02 -> gleam@result:'try'( gwr@parser@value_parser:parse_unsigned_leb128_integer( Reader@6 ), fun(_use0@3) -> {Reader@7, Index@2} = _use0@3, {ok, {Reader@7, {export, Export_name, {memory_export, Index@2}}}} end ); {ok, {Reader@8, <>}} when Id@3 =:= 16#03 -> gleam@result:'try'( gwr@parser@value_parser:parse_unsigned_leb128_integer( Reader@8 ), fun(_use0@4) -> {Reader@9, Index@3} = _use0@4, {ok, {Reader@9, {export, Export_name, {global_export, Index@3}}}} end ); {ok, {_, <>}} -> {error, <<<<"gwr/parser/module_parser.parse_export: unexpected export id \""/utf8, (gleam@int:to_string(Unknown))/binary>>/binary, "\""/utf8>>}; {error, Reason} -> {error, <<"gwr/parser/module_parser.parse_export: couldn't read export id: "/utf8, Reason/binary>>}; _ -> {error, <<"gwr/parser/module_parser.parse_export: unknown error reading export id"/utf8>>} end, fun(_use0@5) -> {Reader@10, Export} = _use0@5, {ok, {Reader@10, Export}} end ) end ).