コード例 #1
0
 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))]
コード例 #2
0
ファイル: actionD.py プロジェクト: OpenTTD/nml
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
コード例 #3
0
ファイル: actionD.py プロジェクト: OpenTTD/nml
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
コード例 #4
0
ファイル: actionD.py プロジェクト: OpenTTD/nml
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
コード例 #5
0
ファイル: actionD.py プロジェクト: OpenTTD/nml
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
コード例 #6
0
 def p_else_block(self, t):
     "else_block : ELSE LBRACE script RBRACE"
     t[0] = conditional.Conditional(None, t[3], t.lineno(1))