================================================================================
Addition and substraction
================================================================================

contract Example {
    function example() {
        int a = 1 + 2 - 3;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (function_body
            (statement
            (variable_declaration_statement
                (variable_declaration
                (type_name
                    (primitive_type))
                (identifier))
                (expression
                (binary_expression
                    (expression
                    (binary_expression
                        (expression
                        (number_literal))
                        (expression
                        (number_literal))))
                    (expression
                    (number_literal)))))))))))

================================================================================
Addition and exponentiation
================================================================================

contract Example {
    function example() {
        int a = 1 + 2 ** 3;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (function_body
            (statement
            (variable_declaration_statement
                (variable_declaration
                (type_name
                    (primitive_type))
                (identifier))
                (expression
                (binary_expression
                    (expression
                    (number_literal))
                    (expression
                    (binary_expression
                        (expression
                        (number_literal))
                        (expression
                        (number_literal)))))))))))))

================================================================================
Multiplication and division
================================================================================

contract Example {
    function example() {
        int a = 1 * 2 / 3;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (function_body
            (statement
            (variable_declaration_statement
                (variable_declaration
                (type_name
                    (primitive_type))
                (identifier))
                (expression
                (binary_expression
                    (expression
                    (binary_expression
                        (expression
                        (number_literal))
                        (expression
                        (number_literal))))
                    (expression
                    (number_literal)))))))))))

================================================================================
Addition and multiplication
================================================================================

contract Example {
    function example() {
        int a = 1 + 2 * 3 + 4;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (function_body
            (statement
            (variable_declaration_statement
                (variable_declaration
                (type_name
                    (primitive_type))
                (identifier))
                (expression
                (binary_expression
                    (expression
                    (binary_expression
                        (expression
                        (number_literal))
                        (expression
                        (binary_expression
                            (expression
                            (number_literal))
                            (expression
                            (number_literal))))))
                    (expression
                    (number_literal)))))))))))

================================================================================
Shift
================================================================================

contract Example {
    function example() {
        int a = 1 + 2 >> 1 * 1;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (function_body
            (statement
            (variable_declaration_statement
                (variable_declaration
                (type_name
                    (primitive_type))
                (identifier))
                (expression
                (binary_expression
                    (expression
                    (binary_expression
                        (expression
                        (number_literal))
                        (expression
                        (number_literal))))
                    (expression
                    (binary_expression
                        (expression
                        (number_literal))
                        (expression
                        (number_literal)))))))))))))

================================================================================
Bitwise AND, XOR, OR
================================================================================

contract Example {
    function example() {
        int a = 1 | 1 & 2 ^ 3;
    }
}

--------------------------------------------------------------------------------

    (source_file
      (contract_declaration
        (identifier)
        (contract_body
          (function_definition
            (identifier)
            (function_body
              (statement
                (variable_declaration_statement
                  (variable_declaration
                    (type_name
                      (primitive_type))
                    (identifier))
                  (expression
                    (binary_expression
                      (expression
                        (number_literal))
                      (expression
                        (binary_expression
                          (expression
                            (binary_expression
                              (expression
                                (number_literal))
                              (expression
                                (number_literal))))
                          (expression
                            (number_literal)))))))))))))

================================================================================
(In)equality
================================================================================

contract Example {
    function example() {
        bool a = 1 < 2 != 3 > 4;
    }
}

--------------------------------------------------------------------------------

    (source_file
      (contract_declaration
        (identifier)
        (contract_body
          (function_definition
            (identifier)
            (function_body
              (statement
                (variable_declaration_statement
                  (variable_declaration
                    (type_name
                      (primitive_type))
                    (identifier))
                  (expression
                    (binary_expression
                      (expression
                        (binary_expression
                          (expression
                            (number_literal))
                          (expression
                            (number_literal))))
                      (expression
                        (binary_expression
                          (expression
                            (number_literal))
                          (expression
                            (number_literal)))))))))))))

================================================================================
Logical AND, OR
================================================================================

contract Example {
    function example() {
        bool a = false || true && false || false;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (function_body
            (statement
            (variable_declaration_statement
                (variable_declaration
                (type_name
                    (primitive_type))
                (identifier))
                (expression
                (binary_expression
                    (expression
                    (binary_expression
                        (expression
                        (boolean_literal
                            (false)))
                        (expression
                        (binary_expression
                            (expression
                            (boolean_literal
                                (true)))
                            (expression
                            (boolean_literal
                                (false)))))))
                    (expression
                    (boolean_literal
                        (false))))))))))))

================================================================================
Ternary
================================================================================

contract Example {
    function example() {
        int a = true || false ? 1 : 2;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (function_body
            (statement
            (variable_declaration_statement
                (variable_declaration
                (type_name
                    (primitive_type))
                (identifier))
                (expression
                (ternary_expression
                    (expression
                    (binary_expression
                        (expression
                        (boolean_literal
                            (true)))
                        (expression
                        (boolean_literal
                            (false)))))
                    (expression
                    (number_literal))
                    (expression
                    (number_literal)))))))))))

================================================================================
Masking
================================================================================

contract Example {
    function example() returns (int) {
        return 1 & 2 == 2;
    }
}

--------------------------------------------------------------------------------

(source_file
    (contract_declaration
    (identifier)
    (contract_body
        (function_definition
        (identifier)
        (return_type_definition
            (parameter
            (type_name
                (primitive_type))))
        (function_body
            (statement
            (return_statement
                (expression
                (binary_expression
                    (expression
                    (binary_expression
                        (expression
                        (number_literal))
                        (expression
                        (number_literal))))
                    (expression
                    (number_literal)))))))))))