segment: Refine treatment of start of macro body.
[pspp] / tests / language / lexer / scan.at
index 953be86debb843e922f429e92349bcecefd04e2c..d1fb66fcbeb5dd90deefefc81c62a32f851149e4 100644 (file)
@@ -49,7 +49,7 @@ MACRO_ID "!abcd"
 SKIP
 ID "#.#"
 SKIP
-UNEXPECTED_DOT
+MACRO_PUNCT "."
 ID "x"
 SKIP
 MACRO_PUNCT "_"
@@ -895,6 +895,7 @@ MACRO_ID "!macro1"
 LPAREN
 RPAREN
 SKIP
+SKIP
 STRING "var1 var2 var3"
 SKIP
 MACRO_ID "!enddefine"
@@ -905,6 +906,71 @@ STOP
 PSPP_CHECK_SCAN([-i])
 AT_CLEANUP
 \f
+AT_SETUP([DEFINE command - no newline after parentheses])
+AT_KEYWORDS([scan])
+AT_DATA([input], [dnl
+define !macro1() var1 var2 var3
+!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+STRING " var1 var2 var3"
+SKIP
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
+AT_SETUP([DEFINE command - no newline before !ENDDEFINE])
+AT_KEYWORDS([scan ENDDEFINE])
+AT_DATA([input], [dnl
+define !macro1()
+var1 var2 var3!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+SKIP
+SKIP
+STRING "var1 var2 var3"
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
+AT_SETUP([DEFINE command - all on one line])
+AT_KEYWORDS([scan])
+AT_DATA([input], [dnl
+define !macro1()var1 var2 var3!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+STRING "var1 var2 var3"
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
 AT_SETUP([DEFINE command - empty])
 AT_KEYWORDS([scan])
 AT_DATA([input], [dnl
@@ -918,6 +984,35 @@ MACRO_ID "!macro1"
 LPAREN
 RPAREN
 SKIP
+SKIP
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
+AT_SETUP([DEFINE command - blank lines])
+AT_KEYWORDS([scan])
+AT_DATA([input], [dnl
+define !macro1()
+
+
+!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+SKIP
+SKIP
+STRING ""
+SKIP
+STRING ""
+SKIP
 MACRO_ID "!enddefine"
 ENDCMD
 -SKIP
@@ -952,6 +1047,7 @@ LPAREN
 RPAREN
 RPAREN
 SKIP
+SKIP
 MACRO_ID "!enddefine"
 ENDCMD
 -SKIP
@@ -996,6 +1092,7 @@ RPAREN
 SKIP
 RPAREN
 SKIP
+SKIP
 MACRO_ID "!enddefine"
 ENDCMD
 -SKIP
@@ -1028,6 +1125,7 @@ ID "z"
 SKIP
 RPAREN
 SKIP
+SKIP
 STRING "content 1"
 SKIP
 STRING "content 2"
@@ -1129,10 +1227,39 @@ STOP
 PSPP_CHECK_SCAN([-i])
 AT_CLEANUP
 \f
+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
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+ENDCMD
+SKIP
+ID "data"
+SKIP
+ID "list"
+SKIP
+SLASH
+ID "x"
+SKIP
+POS_NUM 1
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
 AT_SETUP([DEFINE command - missing !ENDDEFINE])
 AT_KEYWORDS([scan])
 AT_DATA([input], [dnl
-define !macro1().
+define !macro1()
 content line 1
 content line 2
 ])
@@ -1142,7 +1269,7 @@ SKIP
 MACRO_ID "!macro1"
 LPAREN
 RPAREN
-ENDCMD
+SKIP
 SKIP
 STRING "content line 1"
 SKIP