======== No items ======== foreach(var) endforeach() --- (source_file (command_invocation (foreach_loop (foreach_items loop_var: (variable) ) ) ) ) ================================= No items with endforeach argument ================================= foreach(var) endforeach(var) --- (source_file (command_invocation (foreach_loop (foreach_items loop_var: (variable) ) (variable) ) ) ) ======== One item ======== foreach(var item) endforeach() --- (source_file (command_invocation (foreach_loop (foreach_items loop_var: (variable) (seperation (space)) (arguments (argument (unquoted_argument)) ) ) ) ) ) ========== Range stop ========== foreach(var RANGE 10) endforeach() --- (source_file (command_invocation (foreach_loop (foreach_range (foreach_range_stop loop_var: (variable) (seperation (space)) (seperation (space)) stop: (integer) ) ) ) ) ) ================ Range start stop ================ foreach(var RANGE 0 10) endforeach() --- (source_file (command_invocation (foreach_loop (foreach_range (foreach_range_full loop_var: (variable) (seperation (space)) (seperation (space)) start: (integer) (seperation (space)) stop: (integer) ) ) ) ) )