Documentation

Lean.Syntax

Equations
  • One or more equations did not get rendered due to their size.
inductive Lean.IsNode:
Lean.SyntaxProp
def Lean.unreachIsNodeAtom {β : Sort u_1} {info : Lean.SourceInfo} {val : String} (h : Lean.IsNode (Lean.Syntax.atom info val)) :
β
Equations
def Lean.unreachIsNodeIdent {β : Sort u_1} {info : Lean.SourceInfo} {rawVal : Substring} {val : Lean.Name} {preresolved : List (Lean.Name × List String)} (h : Lean.IsNode (Lean.Syntax.ident info rawVal val preresolved)) :
β
Equations
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Lean.SyntaxNode.withArgs {β : Sort u_1} (n : Lean.SyntaxNode) (fn : Array Lean.Syntaxβ) :
β
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
@[inline]
def Lean.Syntax.ifNode {β : Sort u_1} (stx : Lean.Syntax) (hyes : Lean.SyntaxNodeβ) (hno : Unitβ) :
β
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Lean.Syntax.ifNodeKind {β : Sort u_1} (stx : Lean.Syntax) (kind : Lean.SyntaxNodeKind) (hyes : Lean.SyntaxNodeβ) (hno : Unitβ) :
β
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
@[inline]
Equations
@[specialize]
partial def Lean.Syntax.replaceM {m : TypeType} [inst : Monad m] (fn : Lean.Syntaxm (Option Lean.Syntax)) :
@[specialize]
partial def Lean.Syntax.rewriteBottomUpM {m : TypeType} [inst : Monad m] (fn : Lean.Syntaxm Lean.Syntax) :

Set SourceInfo.leading according to the trailing stop of the preceding token. The result is a round-tripping syntax tree IF, in the input syntax tree, * all leading stops, atom contents, and trailing starts are correct * trailing stops are between the trailing start and the next leading stop.

Remark: after parsing, all `SourceInfo.leading` fields are empty.
The `Syntax` argument is the output produced by the parser for `source`.
This function "fixes" the `source.leading` field.

Additionally, we try to choose "nicer" splits between leading and trailing stops
according to some heuristics so that e.g. comments are associated to the (intuitively)
correct token.

Note that the `SourceInfo.trailing` fields must be correct.
The implementation of this Function relies on this property. 
Equations

Split an ident into its dot-separated components while preserving source info. Macro scopes are first erased. For example, `foo.bla.boo._@._hyg.4[`foo, `bla, `boo]. If nFields is set, we take that many fields from the end and keep the remaining components as one name. For example, `foo.bla.boo with (nFields := 1)[`foo.bla, `boo].

Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
structure Lean.Syntax.TopDown:
Type

for _ in stx.topDown iterates through each node and leaf in stx top-down, left-to-right. If firstChoiceOnly is true, only visit the first argument of each choice node.

Equations
Equations
  • One or more equations did not get rendered due to their size.
@[specialize]
partial def Lean.Syntax.instForInTopDownSyntax.loop {m : Type u_1Type u_2} :
{β : Type u_1} → [inst : Monad m] → (Lean.Syntaxβm (ForInStep β)) → BoolLean.Syntaxβ[inst : Inhabited β] → m (ForInStep β)
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
structure Lean.Syntax.Traverser:
Type

Represents a cursor into a syntax tree that can be read, written, and advanced down/up/left/right. Indices are allowed to be out-of-bound, in which case cur is Syntax.missing. If the Traverser is used linearly, updates are linear in the Syntax object as well.

Equations
Equations

Advance to the idx-th child of the current node.

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

Advance to the parent of the current node, if any.

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

Advance to the left sibling of the current node, if any.

Equations

Advance to the right sibling of the current node, if any.

Equations
Equations
Equations
Equations
Equations
def Lean.Syntax.MonadTraverser.getIdx {m : TypeType} [inst : Monad m] [t : Lean.Syntax.MonadTraverser m] :
m Nat
Equations
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
Equations
  • One or more equations did not get rendered due to their size.
def Lean.Syntax.mkAntiquotNode (kind : Lean.Name) (term : Lean.Syntax) (nesting : optParam Nat 0) (name : optParam (Option String) none) (isPseudoKind : optParam Bool false) :
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.

Return kind of parser expected at this antiquotation, and whether it is a "pseudo" kind (see mkAntiquot).

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