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.

  • leadWord : String

    Textual content of stack up to the first whitespace (not enclosed in an escaped ident). We assume that the textual content of stack is modified only by pushText and pushLine, so leadWord is adjusted there accordingly.

  • leadWordIdent : Bool

    When the leadWord is nonempty, whether it is an identifier. Identifiers get space inserted between them.

  • isUngrouped : Bool

    Whether the generated format begins with the result of an ungrouped category formatter.

  • mustBeGrouped : Bool

    Whether the resulting format must be grouped when used in a category formatter. If the flag is set to false, then categoryParser omits the fill+nest operation.

  • Stack of generated Format objects, analogous to the Syntax stack in the parser. Note, however, that the stack is reversed because of the right-to-left traversal.

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

        Execute x at the right-most child of the current node, if any, then advance to the left. Runs x even if there are no children, in which case the current syntax node will be .missing.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

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

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Execute x and concatenate generated Format objects.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                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.

                  Equations
                  Instances For
                    @[extern lean_mk_antiquot_formatter]
                    @[extern lean_pretty_printer_formatter_interpret_parser_descr]
                    @[implemented_by Lean.PrettyPrinter.Formatter.formatterForKindUnsafe]
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[macro_inline]
                                      Equations
                                      Instances For
                                        @[reducible, inline]
                                        Instances For