package forester

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file Forester_compiler.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
(*
 * SPDX-FileCopyrightText: 2024 The Forester Project Contributors
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 *)

(** The forester compiler*)

(** {1 Base types }*)

module Xml_forester = Xml_forester
(** Definition of the forester XML schema. This is the compilation target.*)

(** {1 Compilation phases}*)

(** {2 Parsing}

    The lexer and parser are implemented with {{: https://ocaml.org/manual/5.3/lexyacc.html} ocamllex} and {{: https://gallium.inria.fr/~fpottier/menhir/} menhir}*)

module Parse = Parse

module Imports = Imports
(** Create {{!Forester_core.Forest_graph.t}import and dependency graphs}.
    *)

module Expand = Expand
(** Transform {!Code.tree}s into {!Syn.tree}s by {{!Forester_core.Forest_graph.topo_fold}folding} over the {{!Forester_core.Forest_graph}import graph.}*)

module Eval = Eval
(** Transform {!Syn.tree}s into {{!Forester_core.Types.article}[articles]}.*)

(** {1 High-level architecture}

    The compiler needs to support both batch-style and incremental compilation. To this end, we define a {{!State.t}state type} and {{!Phases}transition functions} that act on this state.

    In the future, we want to record more knowledge in {{!field:State.graphs}[graphs]} of the {{!State.t}state} and derive the information we need for the language server via the query system.

    *)

module Forest = Forest
(** Augmented hash table used throughout compilation phases.*)

module Action = Action
module State = State
module Phases = Phases
module Driver = Driver
module Asset_router = Asset_router

module URI_util = URI_util

(** {1 IO}*)

(** {2 LaTeX pipeline}*)

module Build_latex = Build_latex
module LaTeX_pipeline = LaTeX_pipeline
module LaTeX_template = LaTeX_template
module Job = Job
(** Definition of LaTeX jobs*)

(**/**)
module Eio_util = Eio_util
module Export_for_test = Export_for_test
module Cache = Cache
module Dir_scanner = Dir_scanner
(**/**)
OCaml

Innovation. Community. Security.