* implementare trasformazione 1 => 0
* gestione priorita'/associativita'
- - annotazioni nel livello 1 generato?
- triplicare livelli nella grammatica?
* implementare type-checker per le trasformazioni
* prestazioni trasformazioni 3 => 2 e 2 => 1
-* problema con pattern overlapping per i magic al livello 2
* magic per gestione degli array?
* gestione speciale dei numeri
-* gestione greedyness dei magic in 2 => 1
* sintassi concreta / prelexing
- studiare/implementare sintassi con ... per i magic fold
* integrazione
- porting della disambiguazione al nuovo ast
- apportare all'ast le modifiche di CicAst (case, cast non come annotazione,
tipi opzionali nel let rec e nelle definizioni)
-* href multipli
DONE
* implementare istanziazione dei magic a livello 1 (2 => 1)
* implementare compilazione dei default in 2 => 1
-> Tue, 07 Jun 2005 17:17:36 +0200 zack
+* annotazioni nel livello 1 generato
+* problema con pattern overlapping per i magic al livello 2
+* gestione greedyness dei magic in 2 => 1
+* href multipli
k
else if are_empty t then
let res = match_cb (matched t) in
- (fun matched_terms _ -> res matched_terms)
+ (fun matched_terms terms ->
+ match res matched_terms with
+ None ->
+ begin
+ (* the match has failed, we rollback the last matched term
+ * into the unmatched ones and call the failure continuation
+ *)
+ match matched_terms with
+ hd :: tl -> k tl (hd :: terms)
+ | _ -> assert false
+ end
+ | Some v -> Some v)
else
match horizontal_split t with
| _, [], _ -> assert false
(fun term env ->
prerr_endline "GUARDIA?" ;
match compiled_guard term with
- | None ->
- prerr_endline "SONO CAZZI H2SO4" ;
- None
+ | None -> None
| Some _ ->
begin
- prerr_endline "OKKKKKKKKKKKKKK" ;
match compiled_p term with
| None -> None
| Some (env', _) ->