Documentation

Lean.PrettyPrinter.Formatter

The formatter turns a Syntax tree into a Format object, inserting both mandatory whitespace (to separate adjacent tokens) as well as "pretty" optional whitespace.

The basic approach works much like the parenthesizer: A right-to-left traversal over the syntax tree, driven by parser-specific handlers registered via attributes. The traversal is right-to-left so that when emitting a token, we already know the text following it and can decide whether or not whitespace between the two is necessary.

Instances For
    @[inline, reducible]
    Instances For
      @[inline, reducible]
      Instances For

        Execute x at the right-most child of the current node, if any, then advance to the left.

        Instances For

          Execute x, pass array of generated Format objects to fn, and push result.

          Instances For

            Execute x and concatenate generated Format objects.

            Instances For

              If pos? has a position, run x and tag its results with that position, if they are not already tagged. Otherwise just run x.

              Instances For
                @[extern lean_mk_antiquot_formatter]
                @[extern lean_pretty_printer_formatter_interpret_parser_descr]
                @[implemented_by Lean.PrettyPrinter.Formatter.formatterForKindUnsafe]
                @[inline, reducible]
                Instances For