Documentation

Lean.Parser.Extension

Extensible parsing via attributes

Instances For
    Instances For
      @[reducible, inline]
      Instances For
        Instances For
          @[reducible, inline]
          Instances For
            def Lean.Parser.addLeadingParser (categories : ParserCategories) (catName declName : Name) (p : Parser) (prio : Nat) :
            Instances For
              def Lean.Parser.addTrailingParser (categories : ParserCategories) (catName declName : Name) (p : TrailingParser) (prio : Nat) :
              Instances For
                def Lean.Parser.addParser (categories : ParserCategories) (catName declName : Name) (leading : Bool) (p : Parser) (prio : Nat) :
                Instances For
                  inductive Lean.Parser.AliasValue (α : Type) :

                  Parser aliases for making ParserDescr extensible

                  Instances For
                    @[reducible, inline]
                    Instances For
                      def Lean.Parser.registerAliasCore {α : Type} (mapRef : IO.Ref (AliasTable α)) (aliasName : Name) (value : AliasValue α) :
                      Instances For
                        def Lean.Parser.getAlias {α : Type} (mapRef : IO.Ref (AliasTable α)) (aliasName : Name) :
                        Instances For
                          def Lean.Parser.getConstAlias {α : Type} (mapRef : IO.Ref (AliasTable α)) (aliasName : Name) :
                          IO α
                          Instances For
                            def Lean.Parser.getUnaryAlias {α : Type} (mapRef : IO.Ref (AliasTable α)) (aliasName : Name) :
                            IO (αα)
                            Instances For
                              def Lean.Parser.getBinaryAlias {α : Type} (mapRef : IO.Ref (AliasTable α)) (aliasName : Name) :
                              IO (ααα)
                              Instances For
                                @[reducible, inline]
                                Instances For
                                  • declName : Name
                                  • stackSz? : Option Nat

                                    Number of syntax nodes produced by this parser. none means "sum of input sizes".

                                  • autoGroupArgs : Bool

                                    Whether arguments should be wrapped in group(·) if they do not produce exactly one syntax node.

                                  Instances For
                                    def Lean.Parser.registerAlias (aliasName declName : Name) (p : ParserAliasValue) (kind? : Option SyntaxNodeKind := none) (info : ParserAliasInfo := { }) :
                                    Instances For
                                      Instances For
                                        Instances For
                                          Instances For
                                            unsafe def Lean.Parser.mkParserOfConstantUnsafe (constName : Name) (compileParserDescr : ParserDescrImportM Parser) :
                                            Instances For
                                              @[implemented_by Lean.Parser.mkParserOfConstantUnsafe]
                                              opaque Lean.Parser.mkParserOfConstantAux (constName : Name) (compileParserDescr : ParserDescrImportM Parser) :
                                              Instances For
                                                • postAdd (catName declName : Name) (builtin : Bool) : AttrM Unit

                                                  Called after a parser attribute is applied to a declaration.

                                                Instances For
                                                  def Lean.Parser.runParserAttributeHooks (catName declName : Name) (builtin : Bool) :
                                                  Instances For
                                                    Instances For
                                                      Instances For
                                                        unsafe def Lean.Parser.evalParserConstUnsafe (declName : Name) (evalFallback? : Option ParserFn := none) :
                                                        Instances For
                                                          @[implemented_by Lean.Parser.evalParserConstUnsafe]
                                                          opaque Lean.Parser.evalParserConst (declName : Name) (evalFallback? : Option ParserFn := none) :

                                                          Interpret declName if possible and inside a quotation, or else run p. The ParserInfo will always be taken from p.

                                                          Instances For
                                                            def Lean.Parser.addBuiltinParser (catName declName : Name) (leading : Bool) (p : Parser) (prio : Nat) :
                                                            Instances For
                                                              def Lean.Parser.addBuiltinLeadingParser (catName declName : Name) (p : Parser) (prio : Nat) :
                                                              Instances For
                                                                def Lean.Parser.addBuiltinTrailingParser (catName declName : Name) (p : TrailingParser) (prio : Nat) :
                                                                Instances For
                                                                  Instances For
                                                                    def Lean.Parser.mkInputContext (input fileName : String) (normalizeLineEndings : Bool := true) (endPos : String.Pos.Raw := input.rawEndPos) (endPos_valid : endPos input.rawEndPos := by simp) :
                                                                    Instances For
                                                                      def Lean.Parser.runParserCategory (env : Environment) (catName : Name) (input : String) (fileName : String := "<input>") :

                                                                      convenience function for testing

                                                                      Instances For
                                                                        def Lean.Parser.declareBuiltinParser (addFnName catName declName : Name) (prio : Nat) :
                                                                        Instances For
                                                                          def Lean.Parser.declareLeadingBuiltinParser (catName declName : Name) (prio : Nat) :
                                                                          Instances For
                                                                            def Lean.Parser.declareTrailingBuiltinParser (catName declName : Name) (prio : Nat) :
                                                                            Instances For
                                                                              def Lean.Parser.registerBuiltinParserAttribute (attrName declName : Name) (behavior : LeadingIdentBehavior := LeadingIdentBehavior.default) (ref : Name := by exact decl_name%) :

                                                                              The parsing tables for builtin parsers are "stored" in the extracted source code.

                                                                              Instances For
                                                                                def Lean.Parser.mkParserAttributeImpl (attrName catName : Name) (ref : Name := by exact decl_name%) :
                                                                                Instances For
                                                                                  def Lean.Parser.registerBuiltinDynamicParserAttribute (attrName catName : Name) (ref : Name := by exact decl_name%) :

                                                                                  A builtin parser attribute that can be extended by users.

                                                                                  Instances For
                                                                                    def Lean.Parser.registerParserCategory (env : Environment) (attrName catName : Name) (behavior : LeadingIdentBehavior := LeadingIdentBehavior.default) (ref : Name := by exact decl_name%) :
                                                                                    Instances For
                                                                                      @[inline]
                                                                                      Instances For
                                                                                        Instances For

                                                                                          If the parsing stack is of the form #[.., openCommand], we process the open command, and execute p

                                                                                          Instances For
                                                                                            @[inline]
                                                                                            Instances For

                                                                                              If the parsing stack is of the form #[.., openDecl], we process the open declaration, and execute p

                                                                                              Instances For
                                                                                                @[inline]
                                                                                                Instances For

                                                                                                  If the parsing stack's last element is a set_option command, then its value is set in the context while parsing p.

                                                                                                  Instances For
                                                                                                    @[inline]
                                                                                                    Instances For

                                                                                                      If the parsing stack ends with an the option name and value, then the option is set in the context while parsing p. The value is the top of the stack and the name is the identifier two entries below it.

                                                                                                      Instances For
                                                                                                        @[inline]
                                                                                                        Instances For

                                                                                                          Helper environment extension that gives us access to built-in aliases in pure parser functions.

                                                                                                          Result of resolving a parser name.

                                                                                                          • category (cat : Name) : ParserResolution

                                                                                                            Reference to a category.

                                                                                                          • parser (decl : Name) (isDescr : Bool) : ParserResolution

                                                                                                            Reference to a parser declaration in the environment. A (Trailing)ParserDescr if isDescr is true.

                                                                                                          • alias (p : ParserAliasValue) : ParserResolution

                                                                                                            Reference to a parser alias. Note that as aliases are built-in, a corresponding declaration may not be in the environment (yet).

                                                                                                          Instances For

                                                                                                            Resolve the given parser name and return a list of candidates.

                                                                                                            Instances For

                                                                                                              Resolve the given parser name and return a list of candidates.

                                                                                                              Instances For
                                                                                                                Instances For
                                                                                                                  def Lean.Parser.parserOfStack (offset : Nat) (prec : Nat := 0) :
                                                                                                                  Instances For