11 |
|
|
12 |
type program |
type program |
13 |
type actor |
type actor |
14 |
type expr |
type exp |
15 |
type cond |
type cond |
16 |
type stmt |
type stm |
17 |
|
type method |
18 |
|
|
19 |
val defineActor : program * ?? -> actor |
val defineActor : program * ?? -> actor |
20 |
val globalVar : program * ?? -> global_var |
val globalVar : program * ?? -> global_var |
23 |
(* expression construction *) |
(* expression construction *) |
24 |
structure Expr : sig |
structure Expr : sig |
25 |
(* variable references *) |
(* variable references *) |
26 |
val global : global_var -> expr |
val global : global_var -> exp |
27 |
val getState : state_var -> expr |
val getState : state_var -> exp |
28 |
val param : param_var -> expr |
val param : param_var -> exp |
29 |
val var : local_var -> expr |
val var : local_var -> exp |
30 |
(* literals *) |
(* literals *) |
31 |
val ivecLit : IntegerLit.integer list -> expr |
val ivecLit : IntegerLit.integer list -> exp |
32 |
val vecLit : FloatLit.float list -> expr |
val vecLit : FloatLit.float list -> exp |
33 |
val stringLit : string -> expr |
val stringLit : string -> exp |
34 |
val boolLit : bool -> expr |
val boolLit : bool -> exp |
35 |
(* vector construction *) |
(* vector construction *) |
36 |
val vector : expr list -> expr |
val vector : exp list -> exp |
37 |
(* select from a vector *) |
(* select from a vector *) |
38 |
val select : int * vector -> expr |
val select : int * vector -> exp |
39 |
(* vector (and scalar) arithmetic *) |
(* vector (and scalar) arithmetic *) |
40 |
val add : expr * expr -> expr |
val add : exp * exp -> exp |
41 |
val mul : expr * expr -> expr |
val mul : exp * exp -> exp |
42 |
val sub : expr * expr -> expr |
val sub : exp * exp -> exp |
43 |
val divide : expr * expr -> expr |
val divide : exp * exp -> exp |
44 |
val neg : expr -> expr |
val neg : exp -> exp |
45 |
val abs : expr -> expr |
val abs : exp -> exp |
46 |
val dot : exp * exprr -> expr (* dot product *) |
val dot : exp * exprr -> exp (* dot product *) |
47 |
val cross : expr * expr -> expr (* cross product *) |
val cross : exp * exp -> exp (* cross product *) |
48 |
val length : expr -> expr (* vector length *) |
val length : exp -> exp (* vector length *) |
49 |
val normalize : expr -> expr (* normalize vector *) |
val normalize : exp -> exp (* normalize vector *) |
50 |
(* comparisons *) |
(* comparisons *) |
51 |
val min : expr * expr -> expr |
val min : exp * exp -> exp |
52 |
val max : expr * expr -> expr |
val max : exp * exp -> exp |
53 |
(* math functions *) |
(* math functions *) |
54 |
val pow : expr * expr -> expr |
val pow : exp * exp -> exp |
55 |
val sin : expr -> expr |
val sin : exp -> exp |
56 |
val cos : expr -> expr |
val cos : exp -> exp |
57 |
val sqrt : expr -> expr |
val sqrt : exp -> exp |
58 |
(* conversions *) |
(* conversions *) |
59 |
val toReal : expr -> expr (* integer to real *) |
val toReal : exp -> exp (* integer to real *) |
60 |
val roundToInt : expr -> expr (* round real to int *) |
val roundToInt : exp -> exp (* round real to int *) |
61 |
val truncToInt : expr -> expr (* truncate real to inte *) |
val truncToInt : exp -> exp (* truncate real to inte *) |
62 |
val ceilToInt : expr -> expr (* ceiling of real to int *) |
val ceilToInt : exp -> exp (* ceiling of real to int *) |
63 |
val floorToInt : expr -> expr (* floor of real to int *) |
val floorToInt : exp -> exp (* floor of real to int *) |
64 |
end |
end |
65 |
|
|
66 |
(* conditionals *) |
(* conditionals *) |
67 |
structure Cond : sig |
structure Cond : sig |
68 |
(* comparisons *) |
(* comparisons *) |
69 |
val lt : expr * expr -> cond |
val lt : exp * exp -> cond |
70 |
val lte : expr * expr -> cond |
val lte : exp * exp -> cond |
71 |
val equ : expr * expr -> cond |
val equ : exp * exp -> cond |
72 |
val neq : expr * expr -> cond |
val neq : exp * exp -> cond |
73 |
val gte : expr * expr -> cond |
val gte : exp * exp -> cond |
74 |
val gt : expr * expr -> cond |
val gt : exp * exp -> cond |
75 |
(* logical connectives *) |
(* logical connectives *) |
76 |
val not : cond -> cond |
val not : cond -> cond |
77 |
val && : cond * cond -> cond |
val && : cond * cond -> cond |
80 |
|
|
81 |
(* statement construction *) |
(* statement construction *) |
82 |
structure Stmt : sig |
structure Stmt : sig |
83 |
val assignState : state_var * expr -> stmt |
val assignState : state_var * exp -> stm |
84 |
val assign : local_var * expr -> stmt |
val assign : local_var * exp -> stm |
85 |
val block : stmt list -> stmt |
val block : stm list -> stm |
86 |
val ifthen : cond * stmt -> stmt |
val ifthen : cond * stm -> stm |
87 |
val ifthenelse : cond * stmt * stmt -> stmt |
val ifthenelse : cond * stm * stm -> stm |
88 |
end |
end |
89 |
|
|
90 |
end |
end |