def lex.token
bend-lint-rules@0.2.0.0 · layout/format.bend:749
import bend-lint-rules@0.2.0.0/layout/format.bend as Format
import Base
749
750
751
752def lex.token(s: String, keep: String, prev: Char) -> Scan:
753 match s:
754 case SNil{}:
755 Eof{}
756 case SCon{' ', +rest}:
757 blanks(rest, rest, 1, ' ')
758 case SCon{'\n', rest}:
759 Tok{"\n", 1, rest, '\n', Newline{}, Word{}, False{}, None{}}
760 case SCon{'#', +rest}:
761 comment(scan(~is_not_line_end, rest, rest, is_not_line_end(rest), "#", 1, '#'))
762 case SCon{'"', +rest}:
763 literal(rest, rest, '"', Inside{}, "\"", 1, '"', None{})
764 case SCon{'\'', +rest}:
765 literal(rest, rest, '\'', Inside{}, "'", 1, '\'', None{})
766 case SCon{'<', +rest}:
767 lex.lt(rest, rest, prev)
768 case SCon{'>', +rest}:
769 lex.gt(rest, rest, prev)
770 case SCon{'.', +rest}:
771 lex.dot(rest, rest)
772 case SCon{'-', +rest}:
773 lex.minus(rest, rest)
774 case SCon{'=', +rest}:
775 lex.eq(rest, rest)
776 case SCon{'!', +rest}:
777 lex.bang(rest, rest)
778 case SCon{'&', +rest}:
779 lex.amp(rest, rest)
780 case SCon{'|', +rest}:
781 lex.bar(rest, rest)
782 case SCon{'+', +rest}:
783 lex.plus(rest, rest)
784 case _:
785 lex.char(keep)