1 module pretty_instructions
4 import rich_instructions
6 redef class AnalysisManager
7 var opt_ast
= new OptionBool("Print the AST","--ast")
12 opts
.add_option
(opt_ast
)
15 redef fun build_ast
(filename
, stream
)
26 var str
= "" is writable
28 redef fun visit
(n
) do n
.accept_ast_printer
(self)
32 fun accept_ast_printer
(v
: ASTPrinter) do visit_all
(v
)
36 redef fun to_s
do return text
37 redef fun accept_ast_printer
(v
: ASTPrinter) do v
.str
+= self.to_s
# + " "
41 redef fun accept_ast_printer
(v
: ASTPrinter)
43 var len
= self.to_s
.length
44 if len
< 6 and len
> 1 then
45 v
.str
+= self.to_s
+ " "*(6-len
)
52 redef class ANonEmptyLine
53 redef fun accept_ast_printer
(v
: ASTPrinter)
55 if n_label_decl
== null then v
.str
+= once
" "*10
60 redef class AInstruction
61 redef fun accept_ast_printer
(v
: ASTPrinter)
63 var pre_size
= v
.str
.length
65 var post_size
= v
.str
.length
66 var diff_size
= post_size
- pre_size
67 if diff_size
< 20 then v
.str
+= " "*(20-diff_size
)
71 redef class ALabelDecl
72 redef fun accept_ast_printer
(v
: ASTPrinter)
74 var text
= n_id
.text
+ ":"
75 v
.str
+= text
+ " "*(10-text
.length
)
82 var p
= new ASTPrinter