X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flanguage%2Flexer%2Fsegment.at;h=86a09411947f883538d3fcedb2482908817832b4;hb=76e0b3df102f54672f8d4dfcc19c144e52a8ff4e;hp=b358b3e509affef6590c1894239592309bef5454;hpb=9ecd5482c0847e65b012509008deb1a19e501c67;p=pspp diff --git a/tests/language/lexer/segment.at b/tests/language/lexer/segment.at index b358b3e509..86a0941194 100644 --- a/tests/language/lexer/segment.at +++ b/tests/language/lexer/segment.at @@ -16,7 +16,8 @@ dnl along with this program. If not, see . dnl AT_BANNER([syntax segmentation]) m4_define([PSPP_CHECK_SEGMENT], - [for strip in "" "-s"; do + [AT_CAPTURE_FILE([input]) + for strip in "" "-s"; do case $strip in # ( '') sed 's/^-//' < expout-base > expout ;; # ( -s) sed '/^-/d' < expout-base > expout ;; @@ -30,13 +31,13 @@ m4_define([PSPP_CHECK_SEGMENT], AT_SETUP([identifiers]) AT_KEYWORDS([segment]) AT_DATA([input], [dnl -a ab abc abcd -A AB ABC ABCD -aB aBC aBcD -$x $y $z +a ab abc abcd !abcd +A AB ABC ABCD !ABCD +aB aBC aBcD !aBcD +$x $y $z !$z grève@<00A0>@Ângstrom@<00A0>@poté -#a #b #c ## #d -@efg @ @@. @#@ @&t@ +#a #b #c ## #d !#d +@efg @ @@. @#@ !@ @&t@ ## # #12345 #.# f@#_.#6 GhIjK @@ -46,23 +47,27 @@ AT_DATA([expout-base], [dnl identifier a space identifier ab space identifier abc space -identifier abcd +identifier abcd space +macro_id !abcd newline \n (later) identifier A space identifier AB space identifier ABC space -identifier ABCD +identifier ABCD space +macro_id !ABCD newline \n (later) identifier aB space identifier aBC space -identifier aBcD +identifier aBcD space +macro_id !aBcD newline \n (later) identifier $x space identifier $y space -identifier $z +identifier $z space +macro_id !$z newline \n (later) identifier grève @@ -76,13 +81,15 @@ identifier #a space identifier #b space identifier #c space identifier ## space -identifier #d +identifier #d space +macro_id !#d newline \n (later) identifier @efg space identifier @ space identifier @@. space identifier @#@ space +macro_id !@ space newline \n (later) identifier ## space @@ -101,7 +108,7 @@ start_command . identifier x space number 1 identifier y space -unexpected_char \_ +punct \_ identifier z -newline \n (later) - @@ -285,6 +292,7 @@ AT_KEYWORDS([segment]) AT_DATA([input], [dnl ~ & | = >= > <= < ~= <> ( ) , - + * / [[ ]] ** ~&|=>=><=<~=<>(),-+*/[[]]** +% : ; ? _ ` { } ~ ]) AT_DATA([expout-base], [dnl punct ~ space @@ -329,6 +337,17 @@ punct / punct [[ punct ]] punct ** +newline \n (later) + +punct % space +punct : space +punct ; space +punct ? space +punct \_ space +punct ` space +punct { space +punct } space +punct ~ -newline \n (later) - end @@ -489,12 +508,13 @@ shbang #!_/usr/bin/pspp newline \n (first) identifier title space -unquoted_string my_title +identifier my space +identifier title end_command . newline \n (first) identifier # -unexpected_char ! space +macro_id ! space punct / identifier usr punct / @@ -655,18 +675,9 @@ end PSPP_CHECK_SEGMENT([-i]) AT_CLEANUP -AT_SETUP([TITLE, SUBTITLE, FILE LABEL commands]) +AT_SETUP([FILE LABEL command]) AT_KEYWORDS([segment]) AT_DATA([input], [dnl -title/**/'Quoted string title'. -tit /* -"Quoted string on second line". -sub "Quoted string subtitle" - . - -TITL /* Not a */ quoted string title. -SUBT Not a quoted string /* subtitle - FIL label isn't quoted. FILE lab 'is quoted'. @@ -675,42 +686,6 @@ FILE /* ]) AT_DATA([expout-base], [dnl -identifier title -comment /**/ -quoted_string 'Quoted_string_title' -end_command . -newline \n (first) - -identifier tit space -comment /* -newline \n (later) - -quoted_string "Quoted_string_on_second_line" -end_command . -newline \n (first) - -identifier sub space -quoted_string "Quoted_string_subtitle" -newline \n (later) - space -end_command . -newline \n (first) - -separate_commands -newline \n (first) - -identifier TITL space -unquoted_string /*_Not_a_*/_quoted_string_title -end_command . -newline \n (first) - -identifier SUBT space -unquoted_string Not_a_quoted_string_/*_subtitle -newline \n (later) - -separate_commands -newline \n (first) - identifier FIL space identifier label space unquoted_string isn't_quoted @@ -1035,6 +1010,417 @@ end PSPP_CHECK_SEGMENT([-b]) AT_CLEANUP +AT_SETUP([DEFINE command - simple]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1() +var1 var2 var3 "!enddefine" +!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +punct ) +spaces +newline \n (DEFINE) + +macro_body var1_var2_var3_"!enddefine" +newline \n (DEFINE) + +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - no newline after parentheses]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1() var1 var2 var3 /* !enddefine +!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +punct ) +macro_body _var1_var2_var3_/*_!enddefine +newline \n (DEFINE) + +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - no newline before !ENDDEFINE]) +AT_KEYWORDS([segment ENDDEFINE]) +AT_DATA([input], [dnl +define !macro1() +var1 var2 var3!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +punct ) +spaces +newline \n (DEFINE) + +macro_body var1_var2_var3 +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - all on one line]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1()var1 var2 var3!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +punct ) +macro_body var1_var2_var3 +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - empty]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1() +!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +punct ) +spaces +newline \n (DEFINE) + +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - blank lines]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1() + + +!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +punct ) +spaces +newline \n (DEFINE) + +macro_body +newline \n (DEFINE) + +macro_body +newline \n (DEFINE) + +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - arguments]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1(a(), b(), c()) +!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +identifier a +punct ( +punct ) +punct , space +identifier b +punct ( +punct ) +punct , space +identifier c +punct ( +punct ) +punct ) +spaces +newline \n (DEFINE) + +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - multiline arguments]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1( + a(), b( + ), + c() +) +!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +newline \n (later) + +spaces __ +identifier a +punct ( +punct ) +punct , space +identifier b +punct ( +newline \n (later) + +spaces __ +punct ) +punct , +newline \n (later) + +spaces __ +identifier c +punct ( +punct ) +newline \n (later) + +punct ) +spaces +newline \n (DEFINE) + +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - arguments start on second line]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1 +(x,y,z +) +content 1 +content 2 +!enddefine. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +newline \n (later) + +punct ( +identifier x +punct , +identifier y +punct , +identifier z +newline \n (later) + +punct ) +spaces +newline \n (DEFINE) + +macro_body content_1 +newline \n (DEFINE) + +macro_body content_2 +newline \n (DEFINE) + +macro_id !enddefine +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - early end of command 1]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1. +data list /x 1. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +end_command . +newline \n (first) + +identifier data space +identifier list space +punct / +identifier x space +number 1 +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - early end of command 2]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1 +x. +data list /x 1. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +newline \n (later) + +identifier x +end_command . +newline \n (first) + +identifier data space +identifier list space +punct / +identifier x space +number 1 +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - early end of command 3]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1(. +x. +data list /x 1. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +end_command . +newline \n (first) + +identifier x +end_command . +newline \n (first) + +identifier data space +identifier list space +punct / +identifier x space +number 1 +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - early end of command 4]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +dnl Notice the command terminator at the end of the DEFINE command, +dnl which should not be there and ends it early. +define !macro1. +data list /x 1. +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +end_command . +newline \n (first) + +identifier data space +identifier list space +punct / +identifier x space +number 1 +end_command . +-newline \n (first) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + +AT_SETUP([DEFINE command - missing !ENDDEFINE]) +AT_KEYWORDS([segment]) +AT_DATA([input], [dnl +define !macro1() +content line 1 +content line 2 +]) +AT_DATA([expout-base], [dnl +identifier define space +macro_id !macro1 +punct ( +punct ) +spaces +newline \n (DEFINE) + +macro_body content_line_1 +newline \n (DEFINE) + +macro_body content_line_2 +-newline \n (DEFINE) +- +end +]) +PSPP_CHECK_SEGMENT([-i]) +AT_CLEANUP + AT_SETUP([batch mode]) AT_KEYWORDS([segment]) AT_DATA([input], [dnl