(match Ast0.unwrap i with
Ast0.Id(name) ->
let (n,name) = string_mcode name in (n,Ast0.Id(name))
- | Ast0.MetaId(name,constraints,pure) ->
+ | Ast0.MetaId(name,constraints,seed,pure) ->
let (n,name) = meta_mcode name in
- (n,Ast0.MetaId(name,constraints,pure))
+ (n,Ast0.MetaId(name,constraints,seed,pure))
| Ast0.MetaFunc(name,constraints,pure) ->
let (n,name) = meta_mcode name in
(n,Ast0.MetaFunc(name,constraints,pure))
| Ast0.TypeExp(ty) ->
let (ty_n,ty) = typeC ty in
(ty_n,Ast0.TypeExp(ty))
+ | Ast0.Constructor(lp,ty,rp,init) ->
+ let (lp_n,lp) = string_mcode lp in
+ let (ty_n,ty) = typeC ty in
+ let (rp_n,rp) = string_mcode rp in
+ let (init_n,init) = initialiser init in
+ (multibind [lp_n;ty_n;rp_n;init_n], Ast0.Constructor(lp,ty,rp,init))
| Ast0.MetaErr(name,constraints,pure) ->
let (name_n,name) = meta_mcode name in
(name_n,Ast0.MetaErr(name,constraints,pure))
Ast0.MetaInit(name,pure) ->
let (name_n,name) = meta_mcode name in
(name_n,Ast0.MetaInit(name,pure))
+ | Ast0.MetaInitList(name,lenname,pure) ->
+ let (name_n,name) = meta_mcode name in
+ (name_n,Ast0.MetaInitList(name,lenname,pure))
| Ast0.InitExpr(exp) ->
let (exp_n,exp) = expression exp in
(exp_n,Ast0.InitExpr(exp))
(multibind [lbrace_n;body_n;rbrace_n],
Ast0.Seq(lbrace,body,rbrace))
| Ast0.ExprStatement(exp,sem) ->
- let (exp_n,exp) = expression exp in
+ let (exp_n,exp) = get_option expression exp in
let (sem_n,sem) = string_mcode sem in
(bind exp_n sem_n, Ast0.ExprStatement(exp,sem))
| Ast0.IfThen(iff,lp,exp,rp,branch1,aft) ->
let (old_file_n,old_file) = string_mcode old_file in
let (new_file_n,new_file) = string_mcode new_file in
(bind old_file_n new_file_n,Ast0.FILEINFO(old_file,new_file))
- | Ast0.DECL(statement_dots) ->
+ | Ast0.NONDECL(statement_dots) ->
let (n,statement_dots) = statement statement_dots in
- (n,Ast0.DECL(statement_dots))
+ (n,Ast0.NONDECL(statement_dots))
| Ast0.CODE(stmt_dots) ->
let (stmt_dots_n,stmt_dots) = statement_dots stmt_dots in
(stmt_dots_n, Ast0.CODE(stmt_dots))
+ | Ast0.TOPCODE(stmt_dots) ->
+ let (stmt_dots_n,stmt_dots) = statement_dots stmt_dots in
+ (stmt_dots_n, Ast0.TOPCODE(stmt_dots))
| Ast0.ERRORWORDS(exps) ->
let (n,exps) = map_split_bind expression exps in
(n, Ast0.ERRORWORDS(exps))