================================================================================
Selected waveform assignment - Minimal
================================================================================
with expr select
    t <= w when true;

L1:
with expr select
    t <= w when true;

with expr select?
    t <= w when true;

L2:
with expr select?
    t <= w when true;
--------------------------------------------------------------------------------

(design_file
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_concurrent_signal_assignment
    (label
      (identifier))
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_concurrent_signal_assignment
    (label
      (identifier))
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name))))))

================================================================================
Selected waveform assignment - Delay mechanism
================================================================================
with expr select
    t <= transport w when true;

with expr select
    t <= inertial w when true;

with expr select
    t <= reject 10 ns inertial w when true;
--------------------------------------------------------------------------------

(design_file
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (delay_mechanism
      (transport))
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (delay_mechanism
      (inertial))
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (delay_mechanism
      (inertial
        reject: (time_expression
          (physical_literal
            (integer_decimal)
            unit: (simple_name)))))
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name))))))

================================================================================
Selected waveforms I
================================================================================
with expr select
    t <= w1 when true,
         w2 when false;
--------------------------------------------------------------------------------

(design_file
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))
      (alternative_selected_waveforms
        (waveforms
          (waveform_element
            (expression
              (simple_name))))
        (choices
          (simple_expression
            (simple_name)))))))

================================================================================
Selected waveforms II
================================================================================
with expr select
    t <= w1 when cond1 | cond2,
         w3 when others;
--------------------------------------------------------------------------------

(design_file
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name))
        (simple_expression
          (simple_name)))
      (alternative_selected_waveforms
        (waveforms
          (waveform_element
            (expression
              (simple_name))))
        (choices
          (others))))))

================================================================================
Selected waveforms III
================================================================================
with expr select
    t <= w1 after 10 ns when cond1,
         w2 when others;
--------------------------------------------------------------------------------

(design_file
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))
          (time_expression
            (physical_literal
              (integer_decimal)
              unit: (simple_name)))))
      (choices
        (simple_expression
          (simple_name)))
      (alternative_selected_waveforms
        (waveforms
          (waveform_element
            (expression
              (simple_name))))
        (choices
          (others))))))

================================================================================
Selected force assignment
================================================================================
with expr select
    t <= force     w when true;

with expr select
    t <= force in  w when true;

with expr select
    t <= force out w when true;
--------------------------------------------------------------------------------

(design_file
  (selected_force_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (selected_expressions
      (expression
        (simple_name))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_force_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (force_mode)
    (selected_expressions
      (expression
        (simple_name))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_force_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (force_mode)
    (selected_expressions
      (expression
        (simple_name))
      (choices
        (simple_expression
          (simple_name))))))

================================================================================
Guarded assignment
================================================================================
with expr select
    t <= guarded w when cond;
--------------------------------------------------------------------------------

(design_file
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name))))))

================================================================================
Guarded assignment - Delay mechanism
================================================================================
with expr select
    t <= guarded transport w when cond;

with expr select
    t <= guarded inertial w when cond;

with expr select
    t <= guarded reject 10 ns inertial w when cond;
--------------------------------------------------------------------------------

(design_file
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (delay_mechanism
      (transport))
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (delay_mechanism
      (inertial))
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name)))))
  (selected_concurrent_signal_assignment
    (expression
      (simple_name))
    target: (simple_name)
    (delay_mechanism
      (inertial
        reject: (time_expression
          (physical_literal
            (integer_decimal)
            unit: (simple_name)))))
    (selected_waveforms
      (waveforms
        (waveform_element
          (expression
            (simple_name))))
      (choices
        (simple_expression
          (simple_name))))))
