Enable the show value labels feature
[pspp] / tests / language / lexer / segment.at
1 AT_BANNER([syntax segmentation])
2 m4_define([PSPP_CHECK_SEGMENT],
3   [AT_CHECK([segment-test $1 input], [0], [expout])
4    AT_CHECK([segment-test -1 $1 input], [0], [expout])
5    AT_CHECK([segment-test -0 $1 input])
6    AT_CHECK([segment-test -01 $1 input])])
7 \f
8 AT_SETUP([identifiers])
9 AT_KEYWORDS([segment])
10 AT_DATA([input], [dnl
11 a ab abc abcd
12 A AB ABC ABCD
13 aB aBC aBcD
14 $x $y $z
15 grève@<00A0>@Ângstrom@<00A0>@poté
16 #a #b #c ## #d
17 @efg @ @@. @#@ @&t@
18 ## # #12345 #.#
19 f@#_.#6
20 GhIjK
21 .x 1y _z
22 ])
23 AT_DATA([expout], [dnl
24 identifier      a    space
25 identifier      ab    space
26 identifier      abc    space
27 identifier      abcd
28 newline         \n (later)
29
30 identifier      A    space
31 identifier      AB    space
32 identifier      ABC    space
33 identifier      ABCD
34 newline         \n (later)
35
36 identifier      aB    space
37 identifier      aBC    space
38 identifier      aBcD
39 newline         \n (later)
40
41 identifier      $x    space
42 identifier      $y    space
43 identifier      $z
44 newline         \n (later)
45
46 identifier      grève
47 spaces          <U+00A0>
48 identifier      Ângstrom
49 spaces          <U+00A0>
50 identifier      poté
51 newline         \n (later)
52
53 identifier      #a    space
54 identifier      #b    space
55 identifier      #c    space
56 identifier      ##    space
57 identifier      #d
58 newline         \n (later)
59
60 identifier      @efg    space
61 identifier      @    space
62 identifier      @@.    space
63 identifier      @#@    space
64 newline         \n (later)
65
66 identifier      ##    space
67 identifier      #    space
68 identifier      #12345    space
69 identifier      #.#
70 newline         \n (later)
71
72 identifier      f@#\_.#6
73 newline         \n (later)
74
75 identifier      GhIjK
76 newline         \n (later)
77
78 start_command   .
79 identifier      x    space
80 number          1
81 identifier      y    space
82 unexpected_char \_
83 identifier      z
84 newline         \n (later)
85
86 end             <U+0000>
87 ])
88 PSPP_CHECK_SEGMENT([-i])
89 AT_CLEANUP
90 \f
91 AT_SETUP([identifiers that end in '.'])
92 AT_KEYWORDS([segment])
93 AT_DATA([input], [dnl
94 abcd. abcd.
95 ABCD. ABCD.
96 aBcD. aBcD. @&t@
97 $y. $z. あいうえお.
98 #c. #d..
99 @@. @@....
100 #.#.
101 #abcd.
102 .
103 . @&t@
104 LMNOP. @&t@
105 QRSTUV./* end of line comment */
106 qrstuv. /* end of line comment */
107 QrStUv./* end of line comment */ @&t@
108 wxyz./* unterminated end of line comment
109 WXYZ. /* unterminated end of line comment
110 WxYz./* unterminated end of line comment @&t@
111 ])
112 AT_DATA([expout], [dnl
113 identifier      abcd.    space
114 identifier      abcd
115 end_command     .
116 newline         \n (first)
117
118 identifier      ABCD.    space
119 identifier      ABCD
120 end_command     .
121 newline         \n (first)
122
123 identifier      aBcD.    space
124 identifier      aBcD
125 end_command     .    space
126 newline         \n (first)
127
128 identifier      $y.    space
129 identifier      $z.    space
130 identifier      あいうえお
131 end_command     .
132 newline         \n (first)
133
134 identifier      #c.    space
135 identifier      #d.
136 end_command     .
137 newline         \n (first)
138
139 identifier      @@.    space
140 identifier      @@...
141 end_command     .
142 newline         \n (first)
143
144 identifier      #.#
145 end_command     .
146 newline         \n (first)
147
148 identifier      #abcd
149 end_command     .
150 newline         \n (first)
151
152 start_command   .
153 newline         \n (first)
154
155 start_command   .    space
156 newline         \n (first)
157
158 identifier      LMNOP
159 end_command     .    space
160 newline         \n (first)
161
162 identifier      QRSTUV
163 end_command     .
164 comment         /*_end_of_line_comment_*/
165 newline         \n (first)
166
167 identifier      qrstuv
168 end_command     .    space
169 comment         /*_end_of_line_comment_*/
170 newline         \n (first)
171
172 identifier      QrStUv
173 end_command     .
174 comment         /*_end_of_line_comment_*/    space
175 newline         \n (first)
176
177 identifier      wxyz
178 end_command     .
179 comment         /*_unterminated_end_of_line_comment
180 newline         \n (first)
181
182 identifier      WXYZ
183 end_command     .    space
184 comment         /*_unterminated_end_of_line_comment
185 newline         \n (first)
186
187 identifier      WxYz
188 end_command     .
189 comment         /*_unterminated_end_of_line_comment_
190 newline         \n (first)
191
192 end             <U+0000>
193 ])
194 PSPP_CHECK_SEGMENT([-i])
195 AT_CLEANUP
196 \f
197 AT_SETUP([reserved words])
198 AT_KEYWORDS([segment])
199 AT_DATA([input], [dnl
200 and or not eq ge gt le lt ne all by to with
201 AND OR NOT EQ GE GT LE LT NE ALL BY TO WITH
202 andx orx notx eqx gex gtx lex ltx nex allx byx tox withx
203 and. with.
204 ])
205 AT_DATA([expout], [dnl
206 reserved_word   and    space
207 reserved_word   or    space
208 reserved_word   not    space
209 reserved_word   eq    space
210 reserved_word   ge    space
211 reserved_word   gt    space
212 reserved_word   le    space
213 reserved_word   lt    space
214 reserved_word   ne    space
215 reserved_word   all    space
216 reserved_word   by    space
217 reserved_word   to    space
218 reserved_word   with
219 newline         \n (later)
220
221 reserved_word   AND    space
222 reserved_word   OR    space
223 reserved_word   NOT    space
224 reserved_word   EQ    space
225 reserved_word   GE    space
226 reserved_word   GT    space
227 reserved_word   LE    space
228 reserved_word   LT    space
229 reserved_word   NE    space
230 reserved_word   ALL    space
231 reserved_word   BY    space
232 reserved_word   TO    space
233 reserved_word   WITH
234 newline         \n (later)
235
236 identifier      andx    space
237 identifier      orx    space
238 identifier      notx    space
239 identifier      eqx    space
240 identifier      gex    space
241 identifier      gtx    space
242 identifier      lex    space
243 identifier      ltx    space
244 identifier      nex    space
245 identifier      allx    space
246 identifier      byx    space
247 identifier      tox    space
248 identifier      withx
249 newline         \n (later)
250
251 identifier      and.    space
252 reserved_word   with
253 end_command     .
254 newline         \n (first)
255
256 end             <U+0000>
257 ])
258 PSPP_CHECK_SEGMENT([-i])
259 AT_CLEANUP
260 \f
261 AT_SETUP([punctuation])
262 AT_KEYWORDS([segment])
263 AT_DATA([input], [dnl
264 ~ & | = >= > <= < ~= <> ( ) , - + * / [[ ]] **
265 ~&|=>=><=<~=<>(),-+*/[[]]**
266 ])
267 AT_DATA([expout], [dnl
268 punct           ~    space
269 punct           &    space
270 punct           |    space
271 punct           =    space
272 punct           >=    space
273 punct           >    space
274 punct           <=    space
275 punct           <    space
276 punct           ~=    space
277 punct           <>    space
278 punct           (    space
279 punct           )    space
280 punct           ,    space
281 punct           -    space
282 punct           +    space
283 punct           *    space
284 punct           /    space
285 punct           [[    space
286 punct           ]]    space
287 punct           **
288 newline         \n (later)
289
290 punct           ~
291 punct           &
292 punct           |
293 punct           =
294 punct           >=
295 punct           >
296 punct           <=
297 punct           <
298 punct           ~=
299 punct           <>
300 punct           (
301 punct           )
302 punct           ,
303 punct           -
304 punct           +
305 punct           *
306 punct           /
307 punct           [[
308 punct           ]]
309 punct           **
310 newline         \n (later)
311
312 end             <U+0000>
313 ])
314 PSPP_CHECK_SEGMENT([-i])
315 AT_CLEANUP
316 \f
317 AT_SETUP([numbers])
318 AT_KEYWORDS([segment])
319 AT_DATA([input], [dnl
320 0 1 01 001. 1.
321 123. /* comment 1 */ /* comment 2 */
322 .1 0.1 00.1 00.10
323 5e1 6E-1 7e+1 6E+01 6e-03
324 .3E1 .4e-1 .5E+1 .6e+01 .7E-03
325 1.23e1 45.6E-1 78.9e+1 99.9E+01 11.2e-03
326 . 1e e1 1e+ 1e-
327 ])
328 AT_DATA([expout], [dnl
329 number          0    space
330 number          1    space
331 number          01    space
332 number          001.    space
333 number          1
334 end_command     .
335 newline         \n (first)
336
337 number          123
338 end_command     .    space
339 comment         /*_comment_1_*/    space
340 comment         /*_comment_2_*/
341 newline         \n (first)
342
343 start_command   .
344 number          1    space
345 number          0.1    space
346 number          00.1    space
347 number          00.10
348 newline         \n (later)
349
350 number          5e1    space
351 number          6E-1    space
352 number          7e+1    space
353 number          6E+01    space
354 number          6e-03
355 newline         \n (later)
356
357 start_command   .
358 number          3E1    space
359 number          .4e-1    space
360 number          .5E+1    space
361 number          .6e+01    space
362 number          .7E-03
363 newline         \n (later)
364
365 number          1.23e1    space
366 number          45.6E-1    space
367 number          78.9e+1    space
368 number          99.9E+01    space
369 number          11.2e-03
370 newline         \n (later)
371
372 start_command   .    space
373 expected_exponent 1e    space
374 identifier      e1    space
375 expected_exponent 1e+    space
376 expected_exponent 1e-
377 newline         \n (later)
378
379 end             <U+0000>
380 ])
381 PSPP_CHECK_SEGMENT([-i])
382 AT_CLEANUP
383 \f
384 AT_SETUP([strings])
385 AT_KEYWORDS([segment])
386 AT_DATA([input], [dnl
387 'x' "y" 'abc'
388 'Don''t' "Can't" 'Won''t'
389 """quoted""" '"quoted"'
390 '' ""
391 'missing end quote
392 "missing double quote
393 x"4142" X'5152'
394 u'fffd' U"041"
395 + new command
396 + /* comment */ 'string continuation'
397 + /* also a punctuator on blank line
398 - 'new command'
399 ])
400 AT_DATA([expout], [dnl
401 quoted_string   'x'    space
402 quoted_string   "y"    space
403 quoted_string   'abc'
404 newline         \n (later)
405
406 quoted_string   'Don''t'    space
407 quoted_string   "Can't"    space
408 quoted_string   'Won''t'
409 newline         \n (later)
410
411 quoted_string   """quoted"""    space
412 quoted_string   '"quoted"'
413 newline         \n (later)
414
415 quoted_string   ''    space
416 quoted_string   ""
417 newline         \n (later)
418
419 expected_quote  'missing_end_quote
420 newline         \n (later)
421
422 expected_quote  "missing_double_quote
423 newline         \n (later)
424
425 hex_string      x"4142"    space
426 hex_string      X'5152'
427 newline         \n (later)
428
429 unicode_string  u'fffd'    space
430 unicode_string  U"041"
431 newline         \n (later)
432
433 start_command   +    space
434 identifier      new    space
435 identifier      command
436 newline         \n (later)
437
438 punct           +    space
439 comment         /*_comment_*/    space
440 quoted_string   'string_continuation'
441 newline         \n (later)
442
443 punct           +    space
444 comment         /*_also_a_punctuator_on_blank_line
445 newline         \n (later)
446
447 start_command   -    space
448 quoted_string   'new_command'
449 newline         \n (later)
450
451 end             <U+0000>
452 ])
453 PSPP_CHECK_SEGMENT([-i])
454 AT_CLEANUP
455 \f
456 AT_SETUP([@%:@! construct])
457 AT_KEYWORDS([segment])
458 AT_DATA([input], [dnl
459 #! /usr/bin/pspp
460 title my title.
461 #! /usr/bin/pspp
462 ])
463 AT_DATA([expout], [dnl
464 shbang          #!_/usr/bin/pspp
465 newline         \n (first)
466
467 identifier      title    space
468 unquoted_string my_title
469 end_command     .
470 newline         \n (first)
471
472 identifier      #
473 unexpected_char !    space
474 punct           /
475 identifier      usr
476 punct           /
477 identifier      bin
478 punct           /
479 identifier      pspp
480 newline         \n (later)
481
482 end             <U+0000>
483 ])
484 PSPP_CHECK_SEGMENT([-i])
485 AT_CLEANUP
486 \f
487 AT_SETUP([* and COMMENT commands])
488 AT_KEYWORDS([segment])
489 AT_DATA([input], [dnl
490 * Comment commands "don't
491 have to contain valid tokens.
492
493 ** Check ambiguity with ** token.
494 ****************.
495
496 comment keyword works too.
497 COMM also.
498 com is ambiguous with COMPUTE.
499
500    * Comment need not start at left margin.
501
502 * Comment ends with blank line
503
504 next command.
505
506 ])
507 AT_DATA([expout], [dnl
508 comment_command *_Comment_commands_"don't
509 newline         \n (COMMENT)
510
511 comment_command have_to_contain_valid_tokens
512 end_command     .
513 newline         \n (first)
514
515 separate_commands
516 newline         \n (first)
517
518 comment_command **_Check_ambiguity_with_**_token
519 end_command     .
520 newline         \n (first)
521
522 comment_command ****************
523 end_command     .
524 newline         \n (first)
525
526 separate_commands
527 newline         \n (first)
528
529 comment_command comment_keyword_works_too
530 end_command     .
531 newline         \n (first)
532
533 comment_command COMM_also
534 end_command     .
535 newline         \n (first)
536
537 identifier      com    space
538 identifier      is    space
539 identifier      ambiguous    space
540 reserved_word   with    space
541 identifier      COMPUTE
542 end_command     .
543 newline         \n (first)
544
545 separate_commands 
546 newline         \n (first)
547
548 spaces          ___
549 comment_command *_Comment_need_not_start_at_left_margin
550 end_command     .
551 newline         \n (first)
552
553 separate_commands 
554 newline         \n (first)
555
556 comment_command *_Comment_ends_with_blank_line
557 newline         \n (COMMENT)
558
559 separate_commands
560 newline         \n (first)
561
562 identifier      next    space
563 identifier      command
564 end_command     .
565 newline         \n (first)
566
567 separate_commands
568 newline         \n (first)
569
570 end             <U+0000>
571 ])
572 PSPP_CHECK_SEGMENT([-i])
573 AT_CLEANUP
574 \f
575 AT_SETUP([DOCUMENT command])
576 AT_KEYWORDS([segment])
577 AT_DATA([input], [dnl
578 DOCUMENT one line.
579 DOC more
580     than
581         one
582             line.
583 docu
584 first.paragraph
585 isn't parsed as tokens
586
587 second paragraph.
588 ])
589 AT_DATA([expout], [dnl
590 start_document
591 document        DOCUMENT_one_line.
592 end_command     
593 separate_commands
594 newline         \n (first)
595
596 start_document
597 document        DOC_more
598 newline         \n (DOCUMENT)
599
600 document        ____than
601 newline         \n (DOCUMENT)
602
603 document        ________one
604 newline         \n (DOCUMENT)
605
606 document        ____________line.
607 end_command     
608 separate_commands
609 newline         \n (first)
610
611 start_document
612 document        docu
613 newline         \n (DOCUMENT)
614
615 document        first.paragraph
616 newline         \n (DOCUMENT)
617
618 document        isn't_parsed_as_tokens
619 newline         \n (DOCUMENT)
620
621 document
622 newline         \n (DOCUMENT)
623
624 document        second_paragraph.
625 end_command     
626 separate_commands
627 newline         \n (first)
628  
629 end             <U+0000>
630 ])
631 PSPP_CHECK_SEGMENT([-i])
632 AT_CLEANUP
633 \f
634 AT_SETUP([TITLE, SUBTITLE, FILE LABEL commands])
635 AT_KEYWORDS([segment])
636 AT_DATA([input], [dnl
637 title/**/'Quoted string title'.
638 tit /*
639 "Quoted string on second line".
640 sub "Quoted string subtitle"
641  .
642
643 TITL /* Not a */ quoted string title.
644 SUBT Not a quoted string /* subtitle
645
646 FIL label isn't quoted.
647 FILE
648   lab 'is quoted'.
649 FILE /*
650 /**/  lab not quoted here either
651
652 ])
653 AT_DATA([expout], [dnl
654 identifier      title
655 comment         /**/
656 quoted_string   'Quoted_string_title'
657 end_command     .
658 newline         \n (first)
659
660 identifier      tit    space
661 comment         /*
662 newline         \n (later)
663
664 quoted_string   "Quoted_string_on_second_line"
665 end_command     .
666 newline         \n (first)
667
668 identifier      sub    space
669 quoted_string   "Quoted_string_subtitle"
670 newline         \n (later)
671     space
672 end_command     .
673 newline         \n (first)
674
675 separate_commands
676 newline         \n (first)
677
678 identifier      TITL    space
679 unquoted_string /*_Not_a_*/_quoted_string_title
680 end_command     .
681 newline         \n (first)
682
683 identifier      SUBT    space
684 unquoted_string Not_a_quoted_string_/*_subtitle
685 newline         \n (later)
686
687 separate_commands
688 newline         \n (first)
689
690 identifier      FIL    space
691 identifier      label    space
692 unquoted_string isn't_quoted
693 end_command     .
694 newline         \n (first)
695
696 identifier      FILE
697 newline         \n (later)
698
699 spaces          __
700 identifier      lab    space
701 quoted_string   'is_quoted'
702 end_command     .
703 newline         \n (first)
704
705 identifier      FILE    space
706 comment         /*
707 newline         \n (later)
708
709 comment         /**/
710 spaces          __
711 identifier      lab    space
712 unquoted_string not_quoted_here_either
713 newline         \n (later)
714
715 separate_commands
716 newline         \n (first)
717
718 end             <U+0000>
719 ])
720 PSPP_CHECK_SEGMENT([-i])
721 AT_CLEANUP
722 \f
723 AT_SETUP([BEGIN DATA command])
724 AT_KEYWORDS([segment])
725 AT_DATA([input], [dnl
726 begin data.
727 end data.
728
729 begin data. /*
730 123
731 xxx
732 end data.
733
734 BEG /**/ DAT /*
735 5 6 7 /* x
736
737 end  data
738 end data
739 .
740
741 begin
742  data.
743 data
744 end data.
745
746 begin data "xxx".
747 begin data 123.
748 not data
749 ])
750 AT_DATA([expout], [dnl
751 identifier      begin    space
752 identifier      data
753 end_command     .
754 newline         \n (data)
755
756 identifier      end    space
757 identifier      data
758 end_command     .
759 newline         \n (first)
760
761 separate_commands
762 newline         \n (first)
763
764 identifier      begin    space
765 identifier      data
766 end_command     .    space
767 comment         /*
768 newline         \n (data)
769
770 inline_data     123
771 newline         \n (data)
772
773 inline_data     xxx
774 newline         \n (data)
775
776 identifier      end    space
777 identifier      data
778 end_command     .
779 newline         \n (first)
780
781 separate_commands
782 newline         \n (first)
783
784 identifier      BEG    space
785 comment         /**/    space
786 identifier      DAT    space
787 comment         /*
788 newline         \n (data)
789
790 inline_data     5_6_7_/*_x
791 newline         \n (data)
792
793 inline_data     
794 newline         \n (data)
795
796 inline_data     end__data
797 newline         \n (data)
798
799 identifier      end    space
800 identifier      data
801 newline         \n (later)
802
803 start_command   .
804 newline         \n (first)
805
806 separate_commands
807 newline         \n (first)
808
809 identifier      begin
810 newline         \n (later)
811     space
812 identifier      data
813 end_command     .
814 newline         \n (data)
815
816 inline_data     data
817 newline         \n (data)
818
819 identifier      end    space
820 identifier      data
821 end_command     .
822 newline         \n (first)
823
824 separate_commands
825 newline         \n (first)
826
827 identifier      begin    space
828 identifier      data    space
829 quoted_string   "xxx"
830 end_command     .
831 newline         \n (first)
832
833 identifier      begin    space
834 identifier      data    space
835 number          123
836 end_command     .
837 newline         \n (first)
838
839 reserved_word   not    space
840 identifier      data
841 newline         \n (later)
842
843 end             <U+0000>
844 ])
845 PSPP_CHECK_SEGMENT([-i])
846 AT_CLEANUP
847 \f
848 AT_SETUP([DO REPEAT command])
849 AT_KEYWORDS([segment])
850 AT_DATA([input], [dnl
851 do repeat x=a b c
852           y=d e f.
853   do repeat a=1 thru 5.
854 another command.
855 second command
856 + third command.
857 end /* x */ /* y */ repeat print.
858 end
859  repeat.
860 do
861   repeat #a=1.
862   inner command.
863 end repeat.
864 ])
865 AT_DATA([expout], [dnl
866 identifier      do    space
867 identifier      repeat    space
868 identifier      x
869 punct           =
870 identifier      a    space
871 identifier      b    space
872 identifier      c
873 newline         \n (later)
874
875 spaces          __________
876 identifier      y
877 punct           =
878 identifier      d    space
879 identifier      e    space
880 identifier      f
881 end_command     .
882 newline         \n (DO REPEAT)
883
884 do_repeat_command __do_repeat_a=1_thru_5.
885 newline         \n (DO REPEAT)
886
887 do_repeat_command another_command.
888 newline         \n (DO REPEAT)
889
890 do_repeat_command second_command
891 newline         \n (DO REPEAT)
892
893 do_repeat_command +_third_command.
894 newline         \n (DO REPEAT)
895
896 do_repeat_command end_/*_x_*/_/*_y_*/_repeat_print.
897 newline         \n (DO REPEAT)
898
899 identifier      end
900 newline         \n (later)
901     space
902 identifier      repeat
903 end_command     .
904 newline         \n (first)
905
906 identifier      do
907 newline         \n (later)
908
909 spaces          __
910 identifier      repeat    space
911 identifier      #a
912 punct           =
913 number          1
914 end_command     .
915 newline         \n (DO REPEAT)
916
917 do_repeat_command __inner_command.
918 newline         \n (DO REPEAT)
919
920 identifier      end    space
921 identifier      repeat
922 end_command     .
923 newline         \n (first)
924
925 end             <U+0000>
926 ])
927 PSPP_CHECK_SEGMENT([-i])
928 AT_CLEANUP
929 \f
930 AT_SETUP([batch mode])
931 AT_KEYWORDS([segment])
932 AT_DATA([input], [dnl
933 first command
934      another line of first command
935 +  second command
936 third command
937
938 fourth command.
939    fifth command.
940 ])
941 AT_DATA([expout], [dnl
942 identifier      first    space
943 identifier      command
944 newline         \n (later)
945
946 spaces          _____
947 identifier      another    space
948 identifier      line    space
949 identifier      of    space
950 identifier      first    space
951 identifier      command
952 newline         \n (later)
953
954 start_command   +
955 spaces          __
956 identifier      second    space
957 identifier      command
958 newline         \n (later)
959
960 start_command
961 identifier      third    space
962 identifier      command
963 newline         \n (later)
964
965 separate_commands
966 newline         \n (first)
967
968 identifier      fourth    space
969 identifier      command
970 end_command     .
971 newline         \n (first)
972
973 spaces          ___
974 identifier      fifth    space
975 identifier      command
976 end_command     .
977 newline         \n (first)
978
979 end             <U+0000>
980 ])
981 PSPP_CHECK_SEGMENT([-b])
982 AT_CLEANUP
983 \f
984 AT_SETUP([auto mode])
985 AT_KEYWORDS([segment])
986 AT_DATA([input], [dnl
987 command
988      another line of command
989 2sls
990 +  another command
991 another line of second command
992 data list /x 1
993 aggregate.
994 print eject.
995 twostep cluster
996
997
998 fourth command.
999    fifth command.
1000 ])
1001 AT_DATA([expout], [dnl
1002 identifier      command
1003 newline         \n (later)
1004
1005 spaces          _____
1006 identifier      another    space
1007 identifier      line    space
1008 identifier      of    space
1009 identifier      command
1010 newline         \n (later)
1011
1012 start_command
1013 number          2
1014 identifier      sls
1015 newline         \n (later)
1016
1017 start_command   +
1018 spaces          __
1019 identifier      another    space
1020 identifier      command
1021 newline         \n (later)
1022
1023 identifier      another    space
1024 identifier      line    space
1025 identifier      of    space
1026 identifier      second    space
1027 identifier      command
1028 newline         \n (later)
1029
1030 start_command
1031 identifier      data    space
1032 identifier      list    space
1033 punct           /
1034 identifier      x    space
1035 number          1
1036 newline         \n (later)
1037
1038 start_command
1039 identifier      aggregate
1040 end_command     .
1041 newline         \n (first)
1042
1043 identifier      print    space
1044 identifier      eject
1045 end_command     .
1046 newline         \n (first)
1047
1048 identifier      twostep    space
1049 identifier      cluster
1050 newline         \n (later)
1051
1052 separate_commands
1053 newline         \n (first)
1054
1055 separate_commands
1056 newline         \n (first)
1057
1058 identifier      fourth    space
1059 identifier      command
1060 end_command     .
1061 newline         \n (first)
1062
1063 spaces          ___
1064 identifier      fifth    space
1065 identifier      command
1066 end_command     .
1067 newline         \n (first)
1068
1069 end             <U+0000>
1070 ])
1071 PSPP_CHECK_SEGMENT([-a])
1072 AT_CLEANUP