Source file printer.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(*
   Copyright 2013-2018 RIKEN
   Copyright 2018-2020 Chiba Institude of Technology

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*)

(* Author: Masatomo Hashimoto <m.hashimoto@stair.center> *)

(*
 * A pretty printer for Fortran
 *
 * printer.ml
 *
 *)

open Printf

(*open Ast*)
(*open Common*)

let subtree_to_string root =
  let buf = Buffer.create 0 in
  let rec doit ind nd =
    Buffer.add_string buf (sprintf "%s%s\n" ind nd#to_string);
    List.iter (doit (ind^"  ")) nd#children
  in
  doit "" root;
  Buffer.contents buf


let to_string root =
  let buf = Buffer.create 0 in
  let rec doit ind nd =
    Buffer.add_string buf (sprintf "%s%s\n" ind nd#to_string);
    List.iter (doit (ind^"  ")) nd#children
  in
  doit "" root;
  Buffer.contents buf

let dump root =
  let rec doit ind nd =
    printf "%s%s\n" ind nd#to_string;
    List.iter (doit (ind^"  ")) nd#children
  in
  doit "" root