diff ppc/check.mli @ 0:bfdcc3820b32

Basis
author Mike Spivey <mike@cs.ox.ac.uk>
date Thu, 05 Oct 2017 08:04:15 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppc/check.mli	Thu Oct 05 08:04:15 2017 +0100
@@ -0,0 +1,23 @@
+(* 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