segment: Properly handle DO REPEAT in batch mode.
[pspp] / tests / language / lexer / segment.at
index 3660c924f7c4d8e595e6106f9ada492bd2d7eac4..04a77a9b8fd103ebc0b09e3a2533cc7e13d7d32d 100644 (file)
@@ -1,16 +1,16 @@
 dnl PSPP - a program for statistical analysis.
 dnl Copyright (C) 2017 Free Software Foundation, Inc.
-dnl 
+dnl
 dnl This program is free software: you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
 dnl the Free Software Foundation, either version 3 of the License, or
 dnl (at your option) any later version.
-dnl 
+dnl
 dnl This program is distributed in the hope that it will be useful,
 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 dnl GNU General Public License for more details.
-dnl 
+dnl
 dnl You should have received a copy of the GNU General Public License
 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 dnl
@@ -564,7 +564,7 @@ identifier      COMPUTE
 end_command     .
 newline         \n (first)
 
-separate_commands 
+separate_commands
 newline         \n (first)
 
 spaces          ___
@@ -572,7 +572,7 @@ comment_command *_Comment_need_not_start_at_left_margin
 end_command     .
 newline         \n (first)
 
-separate_commands 
+separate_commands
 newline         \n (first)
 
 comment_command *_Comment_ends_with_blank_line
@@ -611,7 +611,7 @@ second paragraph.
 AT_DATA([expout-base], [dnl
 start_document
 document        DOCUMENT_one_line.
-end_command     
+end_command
 separate_commands
 newline         \n (first)
 
@@ -626,7 +626,7 @@ document        ________one
 newline         \n (DOCUMENT)
 
 document        ____________line.
-end_command     
+end_command
 separate_commands
 newline         \n (first)
 
@@ -812,7 +812,7 @@ newline         \n (data)
 inline_data     5_6_7_/*_x
 newline         \n (data)
 
-inline_data     
+inline_data
 newline         \n (data)
 
 inline_data     end__data
@@ -949,6 +949,90 @@ end
 PSPP_CHECK_SEGMENT([-i])
 AT_CLEANUP
 \f
+AT_SETUP([DO REPEAT command in batch mode])
+AT_KEYWORDS([segment])
+AT_DATA([input], [dnl
+do repeat x=a b c
+          y=d e f
+do repeat a=1 thru 5
+another command
+second command
++ third command
+end /* x */ /* y */ repeat print
+end
+ repeat
+do
+  repeat #a=1
+
+  inner command
+end repeat
+])
+AT_DATA([expout-base], [dnl
+identifier      do    space
+identifier      repeat    space
+identifier      x
+punct           =
+identifier      a    space
+identifier      b    space
+identifier      c
+newline         \n (later)
+
+spaces          __________
+identifier      y
+punct           =
+identifier      d    space
+identifier      e    space
+identifier      f
+newline         \n (later)
+
+start_command
+do_repeat_command do_repeat_a=1_thru_5
+newline         \n (DO REPEAT)
+
+do_repeat_command another_command
+newline         \n (DO REPEAT)
+
+do_repeat_command second_command
+newline         \n (DO REPEAT)
+
+do_repeat_command +_third_command
+newline         \n (DO REPEAT)
+
+do_repeat_command end_/*_x_*/_/*_y_*/_repeat_print
+newline         \n (DO REPEAT)
+
+identifier      end
+newline         \n (later)
+    space
+identifier      repeat
+newline         \n (later)
+
+start_command
+identifier      do
+newline         \n (later)
+
+spaces          __
+identifier      repeat    space
+identifier      #a
+punct           =
+number          1
+newline         \n (later)
+
+separate_commands
+newline         \n (DO REPEAT)
+
+do_repeat_command __inner_command
+newline         \n (DO REPEAT)
+
+identifier      end    space
+identifier      repeat
+-newline         \n (later)
+-
+end
+])
+PSPP_CHECK_SEGMENT([-b])
+AT_CLEANUP
+\f
 AT_SETUP([batch mode])
 AT_KEYWORDS([segment])
 AT_DATA([input], [dnl