Current section

Files

Jump to
caffeine_lang src caffeine_lang@frontend@ast.erl
Raw

src/caffeine_lang@frontend@ast.erl

-module(caffeine_lang@frontend@ast).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/frontend/ast.gleam").
-export_type([blueprints_file/0, type_alias/0, expects_file/0, extendable/0, extendable_kind/0, blueprints_block/0, blueprint_item/0, expects_block/0, expect_item/0, struct/0, field/0, value/0, literal/0]).
-type blueprints_file() :: {blueprints_file,
list(type_alias()),
list(extendable()),
list(blueprints_block())}.
-type type_alias() :: {type_alias,
binary(),
caffeine_lang@common@accepted_types:accepted_types()}.
-type expects_file() :: {expects_file,
list(extendable()),
list(expects_block())}.
-type extendable() :: {extendable, binary(), extendable_kind(), struct()}.
-type extendable_kind() :: extendable_requires | extendable_provides.
-type blueprints_block() :: {blueprints_block,
list(binary()),
list(blueprint_item())}.
-type blueprint_item() :: {blueprint_item,
binary(),
list(binary()),
struct(),
struct()}.
-type expects_block() :: {expects_block, binary(), list(expect_item())}.
-type expect_item() :: {expect_item, binary(), list(binary()), struct()}.
-type struct() :: {struct, list(field())}.
-type field() :: {field, binary(), value()}.
-type value() :: {type_value,
caffeine_lang@common@accepted_types:accepted_types()} |
{literal_value, literal()}.
-type literal() :: {literal_string, binary()} |
{literal_integer, integer()} |
{literal_float, float()} |
literal_true |
literal_false |
{literal_list, list(literal())} |
{literal_struct, list(field())}.