Zulip Chat Archive

Stream: lean4

Topic: reusing the Lean compiler in my program?


Jason Gross (Mar 19 2021 at 15:10):

How much of the lean compiler can I reuse in a Lean program? Like, suppose I want to open a file from disk, run it through lean, and get:

  • the list of lines
  • the list of error messages and their associated row:col ranges
  • a structured representation of the document where I have nodes for each namespace, section, command, etc, and where I can walk the AST and get source ranges for each node

Is this mostly straightforward by using the right stdlib functions, or do I have to rewrite some of it myself?

(I'm getting sufficiently tired of minimizing examples by hand that I'd like to start porting my Coq bug minimizer to Lean for auto-minimizing test cases.)

Sebastian Ullrich (Mar 19 2021 at 15:18):

Yes, this is absolutely possible and how the language server works. The server is a bit complicated by asynchronicity etc, so it's probably better to look at the noninteractive top level function: https://github.com/leanprover/lean4/blob/54405c4543dab3d3c537d0c26965e186e9ce42c4/src/Lean/Elab/Frontend.lean#L92-L99
You can see how it prints the error messages, and s.commands : Array Syntax gives you access to the file's concrete syntax tree

Jason Gross (Mar 19 2021 at 16:46):

Thanks!


Last updated: Dec 20 2023 at 11:08 UTC