4 let rec exprrep expr
= match expr
with
5 Ast_c.Ident
(ident
) -> Ast_c.str_of_name ident
6 | Ast_c.Constant c
-> constantrep c
7 | Ast_c.FunCall
(e
,args
) -> "TODO: FunCall"
8 | Ast_c.CondExpr
(e1
,e2
,e3
) -> "TODO: CondExpr"
9 | Ast_c.Sequence
(e1
,e2
) -> "TODO: Sequence"
10 | Ast_c.Assignment
(e1
,op
,e2
) -> "TODO: Assignment"
11 | Ast_c.Postfix
(e
,op
) -> "TODO: Postfix"
12 | Ast_c.Infix
(e
,op
) -> "TODO: Infix"
13 | Ast_c.Unary
(e
,op
) -> "TODO: Unary"
14 | Ast_c.Binary
(e1
,op
,e2
) -> "TODO: Binary"
15 | Ast_c.ArrayAccess
(e1
,e2
) -> "TODO: ArrayAccess"
16 | Ast_c.RecordAccess
(e1
,s
) -> "TODO: RecordAccess"
17 | Ast_c.RecordPtAccess
(e
,s
) -> "TODO: RecordPtAccess"
18 | Ast_c.SizeOfExpr e
-> "TODO: SizeOfExpr"
19 | Ast_c.SizeOfType t
-> "TODO: SizeOfType"
20 | Ast_c.Cast
(t
,e
) -> "TODO: Cast"
21 | Ast_c.StatementExpr c
-> "TODO: StatementExpr"
22 | Ast_c.Constructor
(t
,i
) -> "TODO: Constructor"
23 | Ast_c.ParenExpr e
-> "TODO: ParenExpr"
24 and constantrep c
= match c
with
25 Ast_c.String
(s
,isWchar
) -> s
26 | Ast_c.MultiString _
-> "TODO: MultiString"
27 | Ast_c.Char
(s
,isWchar
) -> s
28 | Ast_c.Int
(s
, _t
) -> s
29 | Ast_c.Float
(s
, _t
) -> s
32 let str = ref ([] : string list
) in
33 let pr_elem info
= str := (Ast_c.str_of_info info
) :: !str in
35 f ~
pr_elem ~pr_space
:pr_sp a
;
36 String.concat
" " (List.rev
!str)
38 let stringrep mvb
= match mvb
with
39 Ast_c.MetaIdVal s
-> s
40 | Ast_c.MetaFuncVal s
-> s
41 | Ast_c.MetaLocalFuncVal s
-> s
42 | Ast_c.MetaExprVal
((expr
,_
),[il
]) -> (exprrep expr
)
43 | Ast_c.MetaExprVal e
-> "TODO: <<MetaExprVal>>"
44 | Ast_c.MetaExprListVal expr_list
-> "TODO: <<exprlist>>"
45 | Ast_c.MetaTypeVal typ
-> call_pretty Pretty_print_c.pp_type_gen typ
46 | Ast_c.MetaStmtVal statement
-> "TODO: stmt"
47 | Ast_c.MetaParamVal params
-> "TODO: <<param>>"
48 | Ast_c.MetaParamListVal params
-> "TODO: <<paramlist>>"
49 | Ast_c.MetaListlenVal n
-> string_of_int n
50 | Ast_c.MetaPosVal
(pos1
, pos2
) ->
51 (* Common.sprintf ("pos(%d,%d)") pos1 pos2 *)
53 | Ast_c.MetaPosValList positions
-> "TODO: <<postvallist>>"
54 | Ast_c.MetaInitVal _
-> "TODO: <<metainitval>>"