Previous Up Next

Interface for module Absynt

* @author Martin Steffen @version Id: absynt.mli 9773 2007−04−09 05:31:49Z msteffen


type pos = Pos.lexposition
type symbol = Symbol.symbol
type prelim_ty = (symbol × posoption

type var = 
     SimpleVar of symbol × pos 
   ∣ FieldVar of var × symbol × pos
   ∣ SubscriptVar of var × expr × pos
and expr =
     VarExpr of var 
   ∣ NilExpr 
   ∣ IntExpr of int
   ∣ TrueExpr 
   ∣ FalseExpr
   ∣ StringExpr of string × pos
   ∣ CallExpr of symbol × expr list × pos
   ∣ OpExpr of expr × oper × expr × pos
   ∣ RecordExpr of (symbol × expr × poslist × symbol × pos
   ∣ ArrayExpr of symbol × expr × expr × pos
   ∣ AssignExpr of var × expr × pos
   ∣ SeqExpr of (expr list) × pos (∗ different in Appel ∗)
   ∣ IfExpr of expr × expr × expr option × pos
   ∣ WhileExpr of expr × expr × pos
   ∣ ForExpr of symbol × bool ref × expr × expr × expr × pos
   ∣ BreakExpr of pos
   ∣ LetExpr of dec list × expr × pos
and dec = (∗ declarations ∗)
     VarDec of symbol × bool ref × prelim_ty × expr × pos
   ∣ FunctionDec of single_functiondec list
   ∣ TypeDec of (symbol × ty × poslist
and single_functiondec = symbol × field list × prelim_ty × expr × pos
     (∗ name, args, type, body ∗)
and ty = (∗ supported types ∗)
     NameTy of symbol × pos
   ∣ RecordTy of field list × pos
   ∣ ArrayTy of symbol × pos
and field = symbol × bool ref × symbol × pos (∗ x (escape) : t ∗)
and oper = PLUS ∣ MINUS ∣ MUL ∣ DIV ∣ EQ ∣ NE ∣ LT ∣ LE ∣ GT ∣ GE

The remaining functions are for error handling and some data conversion.
exception My_Parse_error of int × int × (int × intlist

val pos_of_expr : expr → pos option
val var_pos : var → pos

val string_of_varvar → string
val symbol_of_varvar → symbol

 ,
Previous Up Next