package vscoq-language-server

  1. Overview
  2. Docs

The scheduler is the component in charge of planning the execution of sentences. It also defines the task delegation strategy, and computes dependencies between tasks. Scheduling can be done incrementally.

type state

State for incremental schedule construction

val initial_state : state
type error_recovery_strategy =
  1. | RSkip
  2. | RAdmitted
type executable_sentence = {
  1. id : Types.sentence_id;
  2. ast : Synterp.vernac_control_entry;
  3. classif : Vernacextend.vernac_classification;
  4. synterp : Vernacstate.Synterp.t;
  5. error_recovery : error_recovery_strategy;
}
type task =
  1. | Skip of {
    1. id : Types.sentence_id;
    2. error : Pp.t option;
    }
  2. | Exec of executable_sentence
  3. | OpaqueProof of {
    1. terminator : executable_sentence;
    2. opener_id : Types.sentence_id;
    3. proof_using : Vernacexpr.section_subset_expr;
    4. tasks : executable_sentence list;
    }
  4. | Query of executable_sentence
type schedule

Holds the dependencies among sentences and a schedule to evaluate all sentences

val initial_schedule : schedule
val schedule_sentence : (Types.sentence_id * (Synterp.vernac_control_entry * Vernacextend.vernac_classification * Vernacstate.Synterp.t)) -> state -> schedule -> state * schedule

Identifies the structure of the document and dependencies between sentences in order to easily compute the tasks to interpret the a sentence. Input sentence is None on parsing error.

val task_for_sentence : schedule -> Types.sentence_id -> Types.sentence_id option * task

Finds the task to be performed and the state on which the task should run

Computes what should be invalidated

val string_of_schedule : schedule -> string
OCaml

Innovation. Community. Security.