-module(glexer@token).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).

-export_type([token/0]).

-type token() :: {name, binary()} |
    {upper_name, binary()} |
    {discard_name, binary()} |
    {int, binary()} |
    {float, binary()} |
    {string, binary()} |
    {comment_doc, binary()} |
    as |
    assert |
    'case' |
    const |
    external |
    fn |
    'if' |
    import |
    'let' |
    opaque |
    panic |
    pub |
    todo |
    type |
    use |
    left_paren |
    right_paren |
    left_brace |
    right_brace |
    left_square |
    right_square |
    plus |
    minus |
    star |
    slash |
    less |
    greater |
    less_equal |
    greater_equal |
    percent |
    plus_dot |
    minus_dot |
    star_dot |
    slash_dot |
    less_dot |
    greater_dot |
    less_equal_dot |
    greater_equal_dot |
    less_greater |
    at |
    colon |
    comma |
    hash |
    bang |
    equal |
    equal_equal |
    not_equal |
    v_bar |
    v_bar_v_bar |
    amper_amper |
    less_less |
    greater_greater |
    pipe |
    dot |
    dot_dot |
    left_arrow |
    right_arrow |
    end_of_file |
    comment_normal |
    comment_module |
    empty_line |
    {unterminated_string, binary()} |
    {unexpected_grapheme, binary()}.


