view ppc/check.mli @ 0:5dd13b8deb54 tip basis

Basis
author Mike Spivey <mike@cs.ox.ac.uk>
date Thu, 16 Aug 2018 13:59:09 +0100
parents
children
line wrap: on
line source
(* ppc/check.mli *)
(* Copyright (c) 2017 J. M. Spivey *)

open Tree

(* 
This module is the semantic analysis pass of the compiler.  It
provides a single function |annotate| that takes a program, checks it
for semantic errors, and annotates defining and applied occurrences 
identifiers with the corresponding definitions.  These annotations are
used by the code generation pass to generate code for variable
references.

If a semantic error is detected, |annotate| raises the exception
|Sem_error|.  There is no way of resuming the analysis, and only
one error can be detected per run of the compiler.  
*)

(* |annotate| -- check tree for type errors and annotate with definitions *)
val annotate : program -> unit

(* |Sem_error| -- semantic error *)
exception Sem_error of string * Print.arg list * int