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
)
29 redef fun visit
(n
) do n
.accept_ast_printer
(self)
33 fun accept_ast_printer
(v
: ASTPrinter) do visit_all
(v
)
37 redef fun to_s
do return text
38 redef fun accept_ast_printer
(v
: ASTPrinter) do v
.str
+= self.to_s
# + " "
42 redef fun accept_ast_printer
(v
: ASTPrinter)
44 var len
= self.to_s
.length
45 if len
< 6 and len
> 1 then
46 v
.str
+= self.to_s
+ " "*(6-len
)
53 redef class ANonEmptyLine
54 redef fun accept_ast_printer
(v
: ASTPrinter)
56 if n_label_decl
== null then v
.str
+= once
" "*10
61 redef class AInstruction
62 redef fun accept_ast_printer
(v
: ASTPrinter)
64 var pre_size
= v
.str
.length
66 var post_size
= v
.str
.length
67 var diff_size
= post_size
- pre_size
68 if diff_size
< 20 then v
.str
+= " "*(20-diff_size
)
72 redef class ALabelDecl
73 redef fun accept_ast_printer
(v
: ASTPrinter)
75 var text
= n_id
.text
+ ":"
76 v
.str
+= text
+ " "*(10-text
.length
)
83 var p
= new ASTPrinter