================================================================================
Single Derive
================================================================================

from employees
derive gross_salary = salary + payroll_tax

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

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (derives
        (keyword_derive)
        (term
          (assignment
            (field
              (identifier))
            (binary_expression
              (field
                (identifier))
              (field
                (identifier)))))))))

================================================================================
Multiple Derive
================================================================================

from employees
derive {
  gross_salary = salary + payroll_tax,
  gross_cost = gross_salary + benefits_cost
}

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

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (derives
        (keyword_derive)
        (term
          (assignment
            (field
              (identifier))
            (binary_expression
              (field
                (identifier))
              (field
                (identifier)))))
        (term
          (assignment
            (field
              (identifier))
            (binary_expression
              (field
                (identifier))
              (field
                (identifier)))))))))

================================================================================
Derive with assignment in parens
================================================================================

from employees
derive gross_salary = (salary + payroll_tax)

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

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (derives
        (keyword_derive)
        (term
          (assignment
            (field
              (identifier))
            (binary_expression
              (field
                (identifier))
              (field
                (identifier)))))))))

================================================================================
Complex Derive
================================================================================

from employees
derive {
  gross_salary = (salary + payroll_tax),
  gross_cost = gross_salary + benefits_cost
}

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

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (derives
        (keyword_derive)
        (term
          (assignment
            (field
              (identifier))
            (binary_expression
              (field
                (identifier))
              (field
                (identifier)))))
        (term
          (assignment
            (field
              (identifier))
            (binary_expression
              (field
                (identifier))
              (field
                (identifier)))))))))

================================================================================
Assignment with parenthesis rules
================================================================================

from tab
derive x = a + (a * b)

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

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (derives
        (keyword_derive)
        (term
          (assignment
            (field
              (identifier))
            (binary_expression
              (field
                (identifier))
              (binary_expression
                (field
                  (identifier))
                (field
                  (identifier))))))))))
