def p_if_else_parts(self, t): """if_else_parts : IF LPAREN expression RPAREN LBRACE script RBRACE | if_else_parts ELSE IF LPAREN expression RPAREN LBRACE script RBRACE""" if len(t) == 8: t[0] = [conditional.Conditional(t[3], t[6], t.lineno(1))] else: t[0] = t[1] + [conditional.Conditional(t[5], t[8], t.lineno(2))]
def parse_ternary_op(assignment): assert isinstance(assignment.value, expression.TernaryOp) actions = parse_actionD(ParameterAssignment(assignment.param, assignment.value.expr2)) cond_block = conditional.Conditional( assignment.value.guard, [ParameterAssignment(assignment.param, assignment.value.expr1)], None ) actions.extend(conditional.ConditionalList([cond_block]).get_action_list()) return actions
def parse_boolean(assignment): assert isinstance(assignment.value, expression.Boolean) actions = parse_actionD(ParameterAssignment(assignment.param, expression.ConstantNumeric(0))) expr = nmlop.CMP_NEQ(assignment.value.expr, 0) cond_block = conditional.Conditional( expr, [ParameterAssignment(assignment.param, expression.ConstantNumeric(1))], None ) actions.extend(conditional.ConditionalList([cond_block]).get_action_list()) return actions
def parse_hasbit(assignment): assert isinstance(assignment.value, expression.BinOp) and ( assignment.value.op == nmlop.HASBIT or assignment.value.op == nmlop.NOTHASBIT ) actions = parse_actionD(ParameterAssignment(assignment.param, expression.ConstantNumeric(0))) cond_block = conditional.Conditional( assignment.value, [ParameterAssignment(assignment.param, expression.ConstantNumeric(1))], None ) actions.extend(conditional.ConditionalList([cond_block]).get_action_list()) return actions
def parse_abs_op(assignment): assert isinstance(assignment.value, expression.AbsOp) actions = parse_actionD(ParameterAssignment(assignment.param, assignment.value.expr)) cond_block = conditional.Conditional( nmlop.CMP_LT(assignment.value.expr, 0), [ParameterAssignment(assignment.param, nmlop.SUB(0, assignment.value.expr))], None, ) actions.extend(conditional.ConditionalList([cond_block]).get_action_list()) return actions
def p_else_block(self, t): "else_block : ELSE LBRACE script RBRACE" t[0] = conditional.Conditional(None, t[3], t.lineno(1))