def lex.go

bend-lint-rules@0.2.0.0 · layout/format.bend:796

import bend-lint-rules@0.2.0.0/layout/format.bend as Format
import Base

796# Each step reads at least one character, so the text's length is fuel.
797def lex.go(
798  fuel: Nat,
799  sc: Scan,
800  from: String,
801  +at: U32,
802  +col: U32,
803  acc: List<&2, Token>
804) -> List<&2, Token>:
805  match fuel sc:
806    case 1n+k Tok{text, +len, +rest, last, +lex, sym, name, +tail}:
807      lex.go(
808        k,
809        lex.token(rest, rest, last),
810        rest,
811        (at + len: U32),
812        next_col(lex, tail, col, len),
813        Con{Token{text, at, (at + len: U32), col, lex, sym, name, tail, from}, acc}
814      )
815    case 1n+k Blank{+rest, last, +len}:
816      lex.go(k, lex.token(rest, rest, last), rest, (at + len: U32), (col + len: U32), acc)
817    case _ _:
818      List.reverse(&2, Token, acc)

Uses (10)

Used by (1)