def p_expression_boolop(self, p):
_LOGGER.debug("<STR_LIT>" % p[<NUM_LIT:2>])<EOL>if self._autodefine_vars:<EOL><INDENT>self._init_vars(p[<NUM_LIT:1>], p[<NUM_LIT:3>])<EOL><DEDENT>if p[<NUM_LIT:1>].type != p[<NUM_LIT:3>].type: raise TypeError()<EOL>if p[<NUM_LIT:1>].type == TypedClass.LIST:<EOL><INDENT>raise TypeError("<STR_LIT>")<EOL><DEDENT>if p[<NUM_LIT:1>].type == TypedClass.STRING:<EOL><INDENT>if p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value == p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value != p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>else:<EOL><INDENT>raise TypeError("<STR_LIT>")<EOL><DEDENT><DEDENT>if p[<NUM_LIT:2>] == '<STR_LIT:>>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value > p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT:<>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value < p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value >= p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value <= p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value == p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value != p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value and p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>elif p[<NUM_LIT:2>] == '<STR_LIT>':<EOL><INDENT>p[<NUM_LIT:0>] = TypedClass(p[<NUM_LIT:1>].value or p[<NUM_LIT:3>].value, TypedClass.BOOLEAN)<EOL><DEDENT>
expression : expression GT expression
          | expression LT expression
          | expression GE expression
          | expression LE expression
          | expression EQ expression
          | expression NE expression
          | expression AND expression
          | expression OR expression