-module(eyg@parser). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/eyg/parser.gleam"). -export([from_string/1, all_from_string/1, block_from_string/1]). -file("src/eyg/parser.gleam", 8). -spec from_string(binary()) -> {ok, {{eyg@ir@tree:expression({integer(), integer()}), {integer(), integer()}}, list({eyg@parser@token:token(), integer()})}} | {error, eyg@parser@parser:reason()}. from_string(Src) -> _pipe = Src, _pipe@1 = eyg@parser@lexer:lex(_pipe), _pipe@2 = eyg@parser@token:drop_whitespace(_pipe@1), _pipe@3 = eyg@parser@token:drop_comments(_pipe@2), eyg@parser@parser:expression(_pipe@3). -file("src/eyg/parser.gleam", 16). -spec all_from_string(binary()) -> {ok, {eyg@ir@tree:expression({integer(), integer()}), {integer(), integer()}}} | {error, eyg@parser@parser:reason()}. all_from_string(Src) -> gleam@result:'try'( from_string(Src), fun(_use0) -> {Source, Remaining} = _use0, case Remaining of [] -> {ok, Source}; [{Token, At} | _] -> {error, {unexpected_token, Token, At}} end end ). -file("src/eyg/parser.gleam", 37). -spec do_gather( {eyg@ir@tree:expression(GDU), GDU}, list({binary(), {eyg@ir@tree:expression(GDU), GDU}, GDU}) ) -> {list({binary(), {eyg@ir@tree:expression(GDU), GDU}, GDU}), gleam@option:option({eyg@ir@tree:expression(GDU), GDU})}. do_gather(Exp, Acc) -> {Exp@1, Span} = Exp, case Exp@1 of {'let', Label, Value, Then} -> do_gather(Then, [{Label, Value, Span} | Acc]); vacant -> {Acc, none}; _ -> {Acc, {some, {Exp@1, Span}}} end. -file("src/eyg/parser.gleam", 24). -spec block_from_string(binary()) -> {ok, {{list({binary(), {eyg@ir@tree:expression({integer(), integer()}), {integer(), integer()}}, {integer(), integer()}}), gleam@option:option({eyg@ir@tree:expression({integer(), integer()}), {integer(), integer()}})}, list({eyg@parser@token:token(), integer()})}} | {error, eyg@parser@parser:reason()}. block_from_string(Src) -> Parsed = begin _pipe = Src, _pipe@1 = eyg@parser@lexer:lex(_pipe), _pipe@2 = eyg@parser@token:drop_whitespace(_pipe@1), _pipe@3 = eyg@parser@token:drop_comments(_pipe@2), eyg@parser@parser:block(_pipe@3) end, case Parsed of {ok, {Exp, Left}} -> {ok, {do_gather(Exp, []), Left}}; {error, Reason} -> {error, Reason} end.