Documentation

Lean.DocString.Syntax

This module declares the syntax of Verso documents.

The concrete syntax falls outside what Lean's parsing framework can express, so Verso has a separate parser, in Lean.DocString.Parser, written with the lower-level parts of Lean's parser. The node kinds it produces are declared here, in Lean.Doc.Parser, together with the tokens that store literal content and the accessors that decode them.

Consumers read this syntax through the views in Lean.DocString.View, which is the only place that matches document syntax directly.

Elaboration turns a parsed document into Lean syntax for the Verso document AST of Lean.DocString.Types, and may invoke user-written metaprograms on the way: the concrete syntax is not extensible, but roles, directives, and code blocks are hooks for extension. That step is in Lean.Elab.DocString.

The tokens that store literal Verso content. The Verso parser builds them itself, so each declaration below supplies only the antiquotation that can be used in Lean syntax quasiquotations. Its own name is the token's syntax node kind.

Literal text content.

Instances For

    The name of a footnote or a link reference.

    Instances For

      The URL of a link or an image.

      Instances For

        The URL that a link reference definition provides.

        Instances For

          The alternate text of an image.

          Instances For

            Literal inline code content.

            Instances For

              One source line of inline code or code block content.

              Instances For

                Literal code block content.

                Instances For

                  The kinds of the tokens that store literal content, and the TSyntax types over them. A token contains the source text exactly as written, keeping escape sequences, boundary spaces, and indentation. The getVerso* accessors decode it.

                  Tokens that contain Verso text content.

                  Instances For

                    The name of a Verso footnote or link reference name.

                    Instances For

                      The URL of a Verso link or image.

                      Instances For

                        The URL that a Verso link reference definition provides.

                        Instances For

                          The alternate text of a Verso image.

                          Instances For

                            The contents of Verso inline code.

                            Instances For

                              One source line inside Verso inline code or a Verso code block.

                              Instances For

                                The contents of a Verso code block.

                                Instances For

                                  The text of a Verso docstring whose markup does not parse.

                                  Instances For
                                    @[reducible, inline]

                                    Text content in a Verso document. The token contains the source text with escape sequences intact. Use VersoText.view or TSyntax.getVersoText to decode it.

                                    Instances For
                                      @[reducible, inline]

                                      The name of a footnote or a link reference in a Verso document. Use VersoRefName.view or TSyntax.getVersoRefName to decode its name to a string.

                                      Instances For
                                        @[reducible, inline]

                                        The URL of a link or an image in a Verso document. Use VersoLinkUrl.view or TSyntax.getVersoLinkUrl to decode the URL to a string.

                                        Instances For
                                          @[reducible, inline]

                                          The URL that a link reference definition provides in a Verso document. Use VersoLinkRefUrl.view or TSyntax.getVersoLinkRefUrl to decode the URL to a string.

                                          Instances For
                                            @[reducible, inline]

                                            The alternate text of an image in a Verso document. Use VersoImageAlt.view or TSyntax.getVersoImageAlt to decode the alternate text to a string.

                                            Instances For
                                              @[reducible, inline]

                                              Inline code content in a Verso document, with one versoCodeLine token per source line. Use VersoCode.view or TSyntax.getVersoCode to decode it to a string.

                                              Instances For
                                                @[reducible, inline]

                                                A single source line of code content in a Verso document, inside inline code or a code block. Only indentation that is semantically part of the line of code is included in the atom, while indentation of a code block or docstring as a whole is part of the tokens' whitespace.

                                                Use VersoCodeLine.view or TSyntax.getVersoCodeLine to decode the line to a string.

                                                Instances For
                                                  @[reducible, inline]

                                                  Code block content in a Verso document, with one versoCodeLine token per source line. The code block's indentation is whitespace between tokens. Use VersoCodeBlock.view or TSyntax.getVersoCodeBlock to decode it to a string.

                                                  Instances For

                                                    The length of the longest run of backticks in str. A delimiter of inline code, and the fence of a code block, is longer than every run of backticks in the content it surrounds.

                                                    Instances For

                                                      Whether str begins and ends with a space and contains a character other than a space.

                                                      In a code element, this sequence denotes the content with a space removed from each end. The parser records those two spaces as whitespace rather than content.

                                                      Instances For

                                                        Escapes value so that getVersoLinkUrl reads it back unchanged.

                                                        Instances For

                                                          Escapes value so that getVersoImageAlt reads it back unchanged.

                                                          Instances For

                                                            Decodes the text that a Verso text token denotes, interpreting escape sequences.

                                                            Instances For

                                                              Returns the text of a Verso text token as it was written, with its escape sequences intact.

                                                              Instances For

                                                                Decodes the name that a Verso footnote or link reference token contains.

                                                                Instances For

                                                                  Decodes the URL that a Verso link or image token contains, interpreting escape sequences.

                                                                  Instances For

                                                                    Returns the URL that a Verso link reference definition token contains. These positions do not support escape sequences.

                                                                    Instances For

                                                                      Decodes the alternate text that a Verso image token contains, interpreting escape sequences.

                                                                      Instances For

                                                                        Returns the text of one source line inside Verso inline code or a Verso code block.

                                                                        Instances For
                                                                          def Lean.TSyntax.getVersoCodeLines (s : Doc.VersoCode) :
                                                                          TSyntaxArray `Lean.Doc.Parser.versoCodeLine

                                                                          Returns the source lines of Verso inline code, in order.

                                                                          Instances For

                                                                            Returns the code that Verso inline code content denotes, which is the text of its lines in order.

                                                                            Instances For
                                                                              def Lean.TSyntax.getVersoCodeBlockLines (s : Doc.VersoCodeBlock) :
                                                                              TSyntaxArray `Lean.Doc.Parser.versoCodeLine

                                                                              Returns the source lines of a Verso code block, in order.

                                                                              Instances For

                                                                                Returns the contents of a Verso code block, which are the texts of its lines in order.

                                                                                Instances For

                                                                                  Decodes the text that a Verso text token denotes, interpreting escape sequences.

                                                                                  Instances For

                                                                                    Decodes the name that a Verso footnote or link reference token contains.

                                                                                    Instances For

                                                                                      Decodes the URL that a Verso link or image token contains, interpreting escape sequences.

                                                                                      Instances For

                                                                                        Returns the URL that a Verso link reference definition token contains. These positions do not support escape sequences.

                                                                                        Instances For

                                                                                          Decodes the alternate text that a Verso image token contains, interpreting escape sequences.

                                                                                          Instances For

                                                                                            Returns the text of one source line inside Verso inline code or a Verso code block.

                                                                                            Instances For

                                                                                              Returns the code that Verso inline code content denotes, which is the text of its lines in order.

                                                                                              Instances For

                                                                                                Returns the contents of a Verso code block, which are the texts of its lines in order.

                                                                                                Instances For

                                                                                                  The kinds of the nodes that the Verso parser builds, grouped by syntax category as Lean.Parser.Term and Lean.Parser.Command are. The tokens that store literal content are declared above, with the accessors that decode them.

                                                                                                  Argument values. Quotations may use antiquotations for any of the forms.

                                                                                                  Instances For

                                                                                                    Anonymous positional argument

                                                                                                    Instances For

                                                                                                      Named argument

                                                                                                      Instances For

                                                                                                        Boolean flag, turned on

                                                                                                        Instances For

                                                                                                          Boolean flag, turned off

                                                                                                          Instances For

                                                                                                            Arguments to a role, directive, command, or code block.

                                                                                                            Instances For

                                                                                                              A URL target, written explicitly. Use square brackets for a named target.

                                                                                                              Instances For

                                                                                                                A named reference to a URL defined elsewhere. Use parentheses to write the URL here.

                                                                                                                Instances For

                                                                                                                  The target of a link or image.

                                                                                                                  Instances For

                                                                                                                    The sequence of # characters that introduces a header. Its length determines the header's level.

                                                                                                                    Instances For

                                                                                                                      The marker that introduces a list item. An unordered list uses *, -, or +. An ordered list uses a number followed by . or ).

                                                                                                                      Instances For

                                                                                                                        The run of _ characters that delimits emphasis.

                                                                                                                        Instances For

                                                                                                                          The sequence of * characters that delimits bold text.

                                                                                                                          Instances For

                                                                                                                            The sequence of backticks that delimits inline code. Longer delimiters allow backticks in the content.

                                                                                                                            Instances For

                                                                                                                              The fence that surrounds a code block. Longer fences allow more backticks in the content.

                                                                                                                              Instances For

                                                                                                                                The $ that introduces inline mathematical notation. $ begins an antiquotation, so a quotation splices this atom in as $m:inlineMathMarker.

                                                                                                                                Instances For

                                                                                                                                  The $ that introduces inline mathematical notation. $ begins an antiquotation, so a quotation splices this atom in as $m:inlineMathMarker.

                                                                                                                                  Instances For

                                                                                                                                    The sequence of : characters that delimits a directive.

                                                                                                                                    Instances For

                                                                                                                                      Emphasis, often rendered as italics.

                                                                                                                                      Emphasis may be nested by using longer sequences of _ for the outer delimiters.

                                                                                                                                      Instances For

                                                                                                                                        Bold emphasis.

                                                                                                                                        A single * suffices to make text bold. Use _ for emphasis.

                                                                                                                                        Bold text may be nested by using longer sequences of * for the outer delimiters.

                                                                                                                                        Instances For

                                                                                                                                          Literal code.

                                                                                                                                          Code may begin with any non-zero number of backticks. It must be terminated with the same number, and it may not contain a sequence of backticks that is at least as long as its starting or ending delimiters.

                                                                                                                                          If the first and last characters are space, and it contains at least one non-space character, then the resulting string has a single space stripped from each end. Thus, `` `x `` represents "`x", not " `x ".

                                                                                                                                          Instances For

                                                                                                                                            Inline mathematical notation (equivalent to LaTeX's $ notation)

                                                                                                                                            Instances For

                                                                                                                                              Display-mode mathematical notation

                                                                                                                                              Instances For

                                                                                                                                                An image, with alternate text and a URL.

                                                                                                                                                The alternate text is a plain string, rather than Verso markup.

                                                                                                                                                The image URL may either be a concrete URL (written in parentheses) or a named URL (written in square brackets).

                                                                                                                                                Instances For

                                                                                                                                                  A footnote use site.

                                                                                                                                                  Footnotes must be defined elsewhere using the [^NAME]: TEXT syntax.

                                                                                                                                                  Instances For

                                                                                                                                                    A role is an extension to the Verso document language in an inline position.

                                                                                                                                                    Text is given a role using the following syntax: {NAME ARGS*}[CONTENT]. The NAME is an identifier that determines which role is being used, akin to a function name. Each of the ARGS may have the following forms:

                                                                                                                                                    • A value, which is a string literal, natural number, or identifier
                                                                                                                                                    • A named argument, of the form (NAME := VALUE)
                                                                                                                                                    • A flag, of the form +NAME or -NAME

                                                                                                                                                    The CONTENT is a sequence of inline content. If there is only one piece of content and it has beginning and ending delimiters (e.g. code literals, links, or images, but not ordinary text), then the [ and ] may be omitted. In particular, {NAME ARGS*}`x` is equivalent to {NAME ARGS*}[`x`].

                                                                                                                                                    Instances For

                                                                                                                                                      Any inline element.

                                                                                                                                                      Instances For

                                                                                                                                                        A description of an item

                                                                                                                                                        Instances For

                                                                                                                                                          Unordered List

                                                                                                                                                          Instances For

                                                                                                                                                            Ordered list

                                                                                                                                                            Instances For

                                                                                                                                                              Description list

                                                                                                                                                              Instances For

                                                                                                                                                                A quotation, which contains a sequence of blocks that are at least as indented as the >.

                                                                                                                                                                Instances For

                                                                                                                                                                  A code block that contains literal code. The contents of a code block are not written in Verso syntax.

                                                                                                                                                                  Code blocks have the following syntax:

                                                                                                                                                                  ```(NAME ARGS*)?
                                                                                                                                                                  CONTENT
                                                                                                                                                                  ```
                                                                                                                                                                  

                                                                                                                                                                  CONTENT is a literal string. If the CONTENT contains a sequence of three or more backticks, then the opening and closing ``` (called fences) must have more backticks than the longest sequence in CONTENT. Additionally, the opening and closing fences must have the same number of backticks.

                                                                                                                                                                  If NAME and ARGS are not provided, then the code block represents literal text. If provided, the NAME is an identifier that selects an interpretation of the block. Unlike Markdown, this name is not necessarily the language in which the code is written, though many custom code blocks are, in practice, named after the language that they contain. NAME is more akin to a function name that determines the interpretation of the code block's contents. Each of the ARGS may have the following forms:

                                                                                                                                                                  • A value, which is a string literal, natural number, or identifier
                                                                                                                                                                  • A named argument, of the form (NAME := VALUE)
                                                                                                                                                                  • A flag, of the form +NAME or -NAME

                                                                                                                                                                  The CONTENT is interpreted according to the indentation of the fences. If the fences are indented n spaces, then n spaces are removed from the start of each line of CONTENT.

                                                                                                                                                                  Instances For

                                                                                                                                                                    A directive, which is an extension to the Verso language in block position. The contents of a directive are written in Verso syntax.

                                                                                                                                                                    Directives have the following syntax:

                                                                                                                                                                    :::NAME ARGS*
                                                                                                                                                                    CONTENT*
                                                                                                                                                                    :::
                                                                                                                                                                    

                                                                                                                                                                    The NAME is an identifier that determines which directive is being used, akin to a function name. Each of the ARGS may have the following forms:

                                                                                                                                                                    • A value, which is a string literal, natural number, or identifier
                                                                                                                                                                    • A named argument, of the form (NAME := VALUE)
                                                                                                                                                                    • A flag, of the form +NAME or -NAME

                                                                                                                                                                    The CONTENT is a sequence of block content. Directives may be nested by using more colons in the outer directive. For example:

                                                                                                                                                                    ::::outer +flag (arg := 5)
                                                                                                                                                                    A paragraph.
                                                                                                                                                                    :::inner "label"
                                                                                                                                                                    * 1
                                                                                                                                                                    * 2
                                                                                                                                                                    :::
                                                                                                                                                                    ::::
                                                                                                                                                                    
                                                                                                                                                                    Instances For

                                                                                                                                                                      A header

                                                                                                                                                                      Headers must be correctly nested to form a tree structure. The first header in a document must start with #, and subsequent headers must have at most one more # than the preceding header.

                                                                                                                                                                      Instances For

                                                                                                                                                                        A footnote definition.

                                                                                                                                                                        Instances For

                                                                                                                                                                          Metadata for the preceding header.

                                                                                                                                                                          Instances For

                                                                                                                                                                            A block-level command, which invokes an extension during documentation processing.

                                                                                                                                                                            The NAME is an identifier that determines which command is being used, akin to a function name. Each of the ARGS may have the following forms:

                                                                                                                                                                            • A value, which is a string literal, natural number, or identifier
                                                                                                                                                                            • A named argument, of the form (NAME := VALUE)
                                                                                                                                                                            • A flag, of the form +NAME or -NAME
                                                                                                                                                                            Instances For

                                                                                                                                                                              Any block element.

                                                                                                                                                                              Instances For

                                                                                                                                                                                A Verso document, which is a sequence of blocks.

                                                                                                                                                                                Instances For
                                                                                                                                                                                  @[reducible, inline]

                                                                                                                                                                                  An inline element of a Verso document, such as text, emphasis, or a link.

                                                                                                                                                                                  Use VersoInline.view to inspect it.

                                                                                                                                                                                  Instances For
                                                                                                                                                                                    @[reducible, inline]

                                                                                                                                                                                    A block-level element of a Verso document, such as a paragraph, a list, or a code block.

                                                                                                                                                                                    Use VersoBlock.view to inspect it.

                                                                                                                                                                                    Instances For
                                                                                                                                                                                      @[reducible, inline]

                                                                                                                                                                                      A delimiter of a Verso element, such as the backticks around a code literal or the asterisks around bold text. The markers that introduce a header, a list item, and mathematical notation are delimiters too.

                                                                                                                                                                                      Each sits in a node of its own, so that a quotation can splice one in place of writing it out. Use VersoDelimiter.view or TSyntax.getVersoDelimiter to read its characters.

                                                                                                                                                                                      Instances For
                                                                                                                                                                                        def Lean.TSyntax.getVersoBlocks (doc : Doc.VersoDocument) :
                                                                                                                                                                                        TSyntaxArray `Lean.Doc.Parser.block

                                                                                                                                                                                        Extracts the blocks of a Verso document.

                                                                                                                                                                                        Instances For

                                                                                                                                                                                          Returns the characters that make up a Verso delimiter.

                                                                                                                                                                                          Instances For

                                                                                                                                                                                            Extracts the blocks of a Verso document.

                                                                                                                                                                                            Instances For

                                                                                                                                                                                              Returns the characters that make up a Verso delimiter.

                                                                                                                                                                                              Instances For
                                                                                                                                                                                                @[instance_reducible]

                                                                                                                                                                                                A document stands for the blocks it contains.

                                                                                                                                                                                                Each inline and block element can be used where its category is expected, so an element with a known kind can be spliced into a quotation.

                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.text) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_1 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.emph) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_2 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.bold) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_3 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.code) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_4 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.inline_math) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_5 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.display_math) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_6 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.link) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_7 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.image) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_8 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.footnote) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_9 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.linebreak) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_10 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Inline.role) (TSyntax `Lean.Doc.Parser.inline)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_11 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.para) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_12 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.ul) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_13 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.ol) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_14 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.dl) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_15 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.blockquote) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_16 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.codeblock) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_17 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.directive) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_18 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.header) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_19 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.link_ref) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_20 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.footnote_ref) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_21 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.metadata_block) (TSyntax `Lean.Doc.Parser.block)
                                                                                                                                                                                                @[instance_reducible]
                                                                                                                                                                                                instance Lean.Doc.instCoeTSyntaxConsSyntaxNodeKindMkStr5NilMkStr4_lean_22 :
                                                                                                                                                                                                Coe (TSyntax `Lean.Doc.Parser.Block.command) (TSyntax `Lean.Doc.Parser.block)