Source code for hdlConvertorAst.translate.verilog_to_basic_hdl_sim_model.elifs_to_if_then_else

from hdlConvertorAst.hdlAst._statements import HdlStmIf, HdlStmBlock


[docs]def elifs_to_if_then_else(stm): """ Optionally create if-then-else without else-ifs from this if-then-else statement :type stm: HdlStmIf :note: non recursive """ if stm.elifs: # replace elifs with nested if statements ifFalse = HdlStmBlock() topIf = HdlStmIf(stm.cond, stm.if_true, ifFalse) for c, stms in stm.elifs: _ifFalse = HdlStmBlock() lastIf = HdlStmIf(c, stms, _ifFalse) ifFalse.append(lastIf) ifFalse = _ifFalse if stm.if_false is None: lastIf.if_false = HdlStmBlock() else: lastIf.if_false = stm.if_false return topIf return stm