-module(prequel). -compile([no_auto_import, nowarn_unused_vars]). -export([parse/1]). -spec parse(binary()) -> {ok, prequel@ast:module_()} | {error, prequel@error@pipeline_error:pipeline_error()}. parse(Source) -> Parse_result = begin _pipe = prequel@internals@token:scan(Source), _pipe@1 = prequel@internals@parser:parse(_pipe), gleam@result:map_error( _pipe@1, fun(Field@0) -> {parsing_failure, Field@0} end ) end, gleam@result:then( Parse_result, fun(Module) -> case prequel@internals@checker:check_module(Module) of [] -> {ok, Module}; [Error | Errors] -> {error, {validation_failure, non_empty_list:new(Error, Errors)}} end end ).