From 4ff8583cb0dd0e37a6be9235e095aad990f36f26 Mon Sep 17 00:00:00 2001 From: mzp Date: Wed, 9 Sep 2009 07:34:31 +0900 Subject: [PATCH] add writer gen --- swflib/gen_inst.ml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/swflib/gen_inst.ml b/swflib/gen_inst.ml index 4b5ed26..478da8e 100644 --- a/swflib/gen_inst.ml +++ b/swflib/gen_inst.ml @@ -1,6 +1,7 @@ open Base open Str open Printf +open ExtList (* util *) let rec filter_map f = @@ -86,12 +87,24 @@ let parse ch = let cmds = [ - (* print types *) - ("-t",fun {name=name; args=args}-> + (* types *) + ("-type",fun {name=name; args=args}-> if args = [] then sprintf "| `%s" name else - sprintf "| `%s of %s" name @@ String.concat "*" args) + sprintf "| `%s of %s" name @@ String.concat "*" args); + (* writer *) + ("-writer",fun {name=name; opcode=opcode; args=args; extra=extra} -> + if args = [] then + sprintf "| `%s -> {default with op=0x%x; %s}" name opcode extra + else + sprintf "| `%s of (%s) -> {default with op=0x%x; args=[%s]; consts=[%s]; %s}" + name + (String.concat "," @@ List.mapi (fun i _ -> sprintf "arg%d" i) args) + opcode + (String.concat ";" @@ List.map ((^) "p_") args) + (String.concat ";" @@ List.map ((^) "c_") args) + extra); ] -- 2.11.0