separated into modules, added parser and lexer for miniImp
This commit is contained in:
60
lib/exercises/exercises.mli
Normal file
60
lib/exercises/exercises.mli
Normal file
@ -0,0 +1,60 @@
|
||||
type a_exp =
|
||||
Aval of int
|
||||
| Plus of a_exp * a_exp
|
||||
| Minus of a_exp * a_exp
|
||||
| Times of a_exp * a_exp
|
||||
| Of_bool of b_exp
|
||||
and b_exp =
|
||||
Bval of bool
|
||||
| And of b_exp * b_exp
|
||||
| Or of b_exp * b_exp
|
||||
| Not of b_exp
|
||||
| Minor of a_exp * a_exp
|
||||
|
||||
|
||||
val eval_a_exp: a_exp -> int
|
||||
val eval_b_exp: b_exp -> bool
|
||||
|
||||
type 'a my_tree =
|
||||
Leaf of 'a
|
||||
| Node of ('a my_tree) list
|
||||
|
||||
val mod_list: 'a list -> 'a list list
|
||||
|
||||
(* --------------------------------------------------------------------------- *)
|
||||
|
||||
val to_tup : ('a -> 'b) -> ('c -> 'd) -> (('a * 'c) -> ('b * 'd))
|
||||
|
||||
val partialsum : int list -> int list
|
||||
|
||||
type label =
|
||||
string
|
||||
|
||||
type 'a finite_state_automata = {
|
||||
l: label;
|
||||
next: ('a finite_state_automata * 'a list) list;
|
||||
final: bool;
|
||||
}
|
||||
|
||||
val check_included : 'a list -> 'a finite_state_automata -> bool
|
||||
|
||||
(* -------------------------------------------------------------------------- *)
|
||||
|
||||
module StringMap : Map.S with type key = string
|
||||
|
||||
type fsa = {
|
||||
vertices: bool StringMap.t;
|
||||
edges: (string * char) StringMap.t;
|
||||
state: string;
|
||||
}
|
||||
|
||||
val ex8 : char list -> fsa -> bool
|
||||
|
||||
|
||||
type binary_tree =
|
||||
Node of binary_tree * binary_tree
|
||||
| Leaf of int
|
||||
|
||||
val ex9 : binary_tree -> int
|
||||
|
||||
(* -------------------------------------------------------------------------- *)
|
||||
Reference in New Issue
Block a user