Documentation

Lean.Parser.Types

@[reducible, inline]
abbrev Lean.Parser.mkAtom (info : SourceInfo) (val : String) :
Instances For
    @[reducible, inline]
    abbrev Lean.Parser.mkIdent (info : SourceInfo) (rawVal : Substring.Raw) (val : Name) :
    Instances For

      Return character after position pos

      Instances For

        Maximal (and function application) precedence. In the standard lean language, no parser has precedence higher than maxPrec.

        Note that nothing prevents users from using a higher precedence, but we strongly discourage them from doing it.

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

                    Input string and related data. Recall that the FileMap is a helper structure for mapping String.Pos in the input string to line/column information.

                    Instances For
                      def Lean.Parser.InputContext.mk (input fileName : String) (endPos : String.Pos.Raw := input.rawEndPos) (endPos_valid : endPos input.rawEndPos := by simp) (fileMap : FileMap := FileMap.ofString input) :
                      Instances For
                        @[deprecated "Call `InputContext.get`, `InputContext.get'`, `InputContext.next'`, and `InputContext.atEnd` directly" (since := "2025-08-21")]
                        Instances For

                          Returns true if a specified byte position is greater than or equal to the position which points to the end of the input string. Otherwise, returns false.

                          Instances For
                            @[inline]

                            Returns the character at position p of the input string. If p is not a valid position, returns the fallback value (default : Char), which is 'A', but does not panic.

                            Instances For
                              @[inline]

                              Returns the character at position p of the input string. Returns (default : Char), which is 'A', if p is not a valid position.

                              Requires evidence, h, that p is within bounds instead of performing a run-time bounds check as in InputContext.get.

                              A typical pattern combines get' with a dependent if-expression to avoid the overhead of an additional bounds check. For example:

                              def getInBounds? (s : String) (p : String.Pos) : Option Char :=
                                if h : s.atEnd p then none else some (s.get' p h)
                              

                              Even with evidence of ¬ s.atEnd p, p may be invalid if a byte index points into the middle of a multi-byte UTF-8 character.

                              Instances For
                                @[inline]

                                Returns the next position in the input string after position p. If p is not a valid position or p = c.endPos, returns the position one byte after p.

                                A run-time bounds check is performed to determine whether p is at the end of the string. If a bounds check has already been performed, use InputContext.next' to avoid a repeated check.

                                Instances For
                                  @[inline]

                                  Returns the next position in the input string after position p. The result is unspecified if p is not a valid position.

                                  Requires evidence, h, that p is within bounds. No run-time bounds check is performed.

                                  Instances For
                                    @[inline]

                                    Creates a new string that consists of the region of the input string delimited by the two positions.

                                    The result is "" if the start position is greater than or equal to the end position or if the start position is at the end of the string. If either position is invalid (that is, if either points at the middle of a multi-byte UTF-8 character) then the result is unspecified.

                                    Instances For
                                      @[inline]

                                      Extracts a substring of the input string, bounded by startPos and stopPos.

                                      Instances For
                                        @[inline]

                                        Return character after position pos

                                        Instances For
                                          @[inline]

                                          Returns the character position prior to pos

                                          Instances For

                                            Input context derived from elaboration of previous commands.

                                            Instances For

                                              Parser context parts that can be updated without invalidating the parser cache.

                                              Instances For

                                                Modifies the ending position of a parser context.

                                                Instances For
                                                  Instances For
                                                    @[implicit_reducible]
                                                    @[implicit_reducible]
                                                    @[implicit_reducible]
                                                    Instances For
                                                      Instances For
                                                        Instances For

                                                          A syntax array with an inaccessible prefix, used for sound caching.

                                                          Instances For
                                                            Instances For
                                                              Instances For
                                                                Instances For
                                                                  @[inline]
                                                                  Instances For
                                                                    Instances For
                                                                      def Lean.Parser.ParserState.mkUnexpectedError (s : ParserState) (msg : String) (expected : List String := []) (pushMissing : Bool := true) :
                                                                      Instances For
                                                                        Instances For
                                                                          Instances For

                                                                            Reports given 'expected' messages at range of top stack element (assumed to be a single token). Replaces the element with missing and resets position to the token position. iniPos can be specified to avoid this position lookup but still must be identical to the token position.

                                                                            Instances For

                                                                              Reports given 'expected' message at range of top stack element (assumed to be a single token). Replaces the element with missing and resets position to the token position. iniPos can be specified to avoid this position lookup but still must be identical to the token position.

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

                                                                                        Create a simple parser combinator that inherits the info of the nested parser.

                                                                                        Instances For

                                                                                          Run p with a fresh cache, restore outer cache afterwards. p may access the entire syntax stack.

                                                                                          Instances For

                                                                                            Run p with a fresh cache, restore outer cache afterwards. p may access the entire syntax stack.

                                                                                            Instances For

                                                                                              Run p under the given context transformation with a fresh cache (see also withResetCacheFn).

                                                                                              Instances For
                                                                                                def Lean.Parser.withCacheFn (parserName : Name) (p : ParserFn) :

                                                                                                Run p and record result in parser cache for any further invocation with this parserName, parser context, and parser state. p cannot access syntax stack elements pushed before the invocation in order to make caching independent of parser history. As this excludes trailing parsers from being cached, we also reset lhsPrec, which is not read but set by leading parsers, to 0 in order to increase cache hits. Finally, errorMsg is also reset to none as a leading parser should not be called in the first place if there was an error.

                                                                                                Instances For
                                                                                                  def Lean.Parser.withCache (parserName : Name) :

                                                                                                  Run p and record result in parser cache for any further invocation with this parserName, parser context, and parser state. p cannot access syntax stack elements pushed before the invocation in order to make caching independent of parser history. As this excludes trailing parsers from being cached, we also reset lhsPrec, which is not read but set by leading parsers, to 0 in order to increase cache hits. Finally, errorMsg is also reset to none as a leading parser should not be called in the first place if there was an error.

                                                                                                  Instances For