chore: Version 0.3 #136
|
@ -148,7 +148,7 @@ def execute (command: Protocol.Command): MainM Lean.Json := do
|
||||||
| .some branchId, .none => do
|
| .some branchId, .none => do
|
||||||
match state.goalStates.find? branchId with
|
match state.goalStates.find? branchId with
|
||||||
| .none => return .error $ errorIndex s!"Invalid state index {branchId}"
|
| .none => return .error $ errorIndex s!"Invalid state index {branchId}"
|
||||||
| .some branch => pure $ target.continue branch
|
| .some branch => pure $ goalContinue target branch
|
||||||
| .none, .some goals =>
|
| .none, .some goals =>
|
||||||
pure $ goalResume target goals
|
pure $ goalResume target goals
|
||||||
| _, _ => return .error <| errorI "arguments" "Exactly one of {branch, goals} must be supplied"
|
| _, _ => return .error <| errorI "arguments" "Exactly one of {branch, goals} must be supplied"
|
||||||
|
|
|
@ -109,9 +109,9 @@ def envAdd (name: String) (type: String) (value: String) (isTheorem: Bool):
|
||||||
Lean.CoreM (Protocol.CR Protocol.EnvAddResult) :=
|
Lean.CoreM (Protocol.CR Protocol.EnvAddResult) :=
|
||||||
Environment.addDecl { name, type, value, isTheorem }
|
Environment.addDecl { name, type, value, isTheorem }
|
||||||
|
|
||||||
def typeParse (typeParse: String): Lean.Elab.TermElabM (Protocol.CR Lean.Expr) := do
|
def parseElabType (type: String): Lean.Elab.TermElabM (Protocol.CR Lean.Expr) := do
|
||||||
let env ← Lean.MonadEnv.getEnv
|
let env ← Lean.MonadEnv.getEnv
|
||||||
let syn ← match parseTerm env typeParse with
|
let syn ← match parseTerm env type with
|
||||||
| .error str => return .error $ errorI "parsing" str
|
| .error str => return .error $ errorI "parsing" str
|
||||||
| .ok syn => pure syn
|
| .ok syn => pure syn
|
||||||
match ← elabType syn with
|
match ← elabType syn with
|
||||||
|
@ -119,13 +119,13 @@ def typeParse (typeParse: String): Lean.Elab.TermElabM (Protocol.CR Lean.Expr) :
|
||||||
| .ok expr => return .ok expr
|
| .ok expr => return .ok expr
|
||||||
|
|
||||||
/-- This must be a TermElabM since the parsed expr contains extra information -/
|
/-- This must be a TermElabM since the parsed expr contains extra information -/
|
||||||
def exprParse (exprStr: String) (expectedType?: Option String := .none): Lean.Elab.TermElabM (Protocol.CR Lean.Expr) := do
|
def parseElabExpr (expr: String) (expectedType?: Option String := .none): Lean.Elab.TermElabM (Protocol.CR Lean.Expr) := do
|
||||||
let env ← Lean.MonadEnv.getEnv
|
let env ← Lean.MonadEnv.getEnv
|
||||||
let expectedType? ← match ← expectedType?.mapM typeParse with
|
let expectedType? ← match ← expectedType?.mapM parseElabType with
|
||||||
| .none => pure $ .none
|
| .none => pure $ .none
|
||||||
| .some (.ok t) => pure $ .some t
|
| .some (.ok t) => pure $ .some t
|
||||||
| .some (.error e) => return .error e
|
| .some (.error e) => return .error e
|
||||||
let syn ← match parseTerm env exprStr with
|
let syn ← match parseTerm env expr with
|
||||||
| .error str => return .error $ errorI "parsing" str
|
| .error str => return .error $ errorI "parsing" str
|
||||||
| .ok syn => pure syn
|
| .ok syn => pure syn
|
||||||
match ← elabTerm syn expectedType? with
|
match ← elabTerm syn expectedType? with
|
||||||
|
@ -136,7 +136,7 @@ def exprParse (exprStr: String) (expectedType?: Option String := .none): Lean.El
|
||||||
def exprEcho (expr: String) (expectedType?: Option String := .none) (options: @&Protocol.Options):
|
def exprEcho (expr: String) (expectedType?: Option String := .none) (options: @&Protocol.Options):
|
||||||
Lean.CoreM (Protocol.CR Protocol.ExprEchoResult) := do
|
Lean.CoreM (Protocol.CR Protocol.ExprEchoResult) := do
|
||||||
let termElabM: Lean.Elab.TermElabM _ := do
|
let termElabM: Lean.Elab.TermElabM _ := do
|
||||||
let expr ← match ← exprParse expr expectedType? with
|
let expr ← match ← parseElabExpr expr expectedType? with
|
||||||
| .error e => return .error e
|
| .error e => return .error e
|
||||||
| .ok expr => pure expr
|
| .ok expr => pure expr
|
||||||
try
|
try
|
||||||
|
@ -152,7 +152,7 @@ def exprEcho (expr: String) (expectedType?: Option String := .none) (options: @&
|
||||||
@[export pantograph_goal_start_expr_m]
|
@[export pantograph_goal_start_expr_m]
|
||||||
def goalStartExpr (expr: String): Lean.CoreM (Protocol.CR GoalState) :=
|
def goalStartExpr (expr: String): Lean.CoreM (Protocol.CR GoalState) :=
|
||||||
let termElabM: Lean.Elab.TermElabM _ := do
|
let termElabM: Lean.Elab.TermElabM _ := do
|
||||||
let expr ← match ← typeParse expr with
|
let expr ← match ← parseElabType expr with
|
||||||
| .error e => return .error e
|
| .error e => return .error e
|
||||||
| .ok expr => pure $ expr
|
| .ok expr => pure $ expr
|
||||||
return .ok $ ← GoalState.create expr
|
return .ok $ ← GoalState.create expr
|
||||||
|
|
Loading…
Reference in New Issue