Class: Crokus::CFGOnlyPrinterJson
Constant Summary
Constants included
from Indent
Indent::INDENT
Instance Method Summary
collapse
#dump, #visitFunction
Methods inherited from Visitor
#initialize, #visit, #visitAddressOf, #visitArrayOf, #visitArrayOrStructInit, #visitArrow, #visitAssign, #visitBinary, #visitBody, #visitBreak, #visitCase, #visitCastedExpr, #visitCasting, #visitCharLit, #visitCommaStmt, #visitCondExpr, #visitContinue, #visitDecl, #visitDefine, #visitDeref, #visitDesignUnit, #visitDoWhile, #visitFloatLit, #visitFor, #visitFormalArg, #visitFunCall, #visitFunction, #visitFunctionProto, #visitGoto, #visitIdent, #visitIf, #visitInclude, #visitIndexed, #visitIntLit, #visitLabelledStmt, #visitParenth, #visitPointed, #visitPointerTo, #visitPostFixAccu, #visitPreFixAccu, #visitReturn, #visitSizeof, #visitStrLit, #visitStruct, #visitSwitch, #visitToken, #visitType, #visitTypedef, #visitUnary, #visitWhile
Methods included from Indent
#dedent, #indent, #say
Instance Method Details
38
39
40
41
|
# File 'lib/crokus/cfg_printer_only_json.rb', line 38
def
@code.indent=0
@code << "}"
end
|
7
8
9
10
|
# File 'lib/crokus/cfg_printer_only_json.rb', line 7
def
@code << "{"
@code.indent=2
end
|
#visit_rec(bb) ⇒ Object
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
|
# File 'lib/crokus/cfg_printer_only_json.rb', line 12
def visit_rec bb
@visited << bb
@current=bb
if (ite=bb.stmts.last).is_a? ITE
@code << "\"#{bb.label}\": {"
@code.indent=4
@code << "\"true\": \"#{(bb_t=ite.trueBranch).label}\""
@code << "\"false\": \"#{(bb_f=ite.falseBranch).label}\""
@code.indent=2
@code << "}"
unless @visited.include? bb_t
visit_rec(bb_t)
end
unless @visited.include? bb_t
visit_rec(bb_t)
end
else
bb.succs.each do |succ|
@code << "\"#{bb.label}\": \"#{succ.label}\""
unless @visited.include? succ
visit_rec(succ)
end
end
end
end
|