+dnl PSPP - a program for statistical analysis.
+dnl Copyright (C) 2017 Free Software Foundation, Inc.
+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 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 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
AT_BANNER([syntax scanning])
m4_define([PSPP_CHECK_SCAN],
- [AT_CHECK([scan-test $1 input], [0], [expout])])
+ [sed 's/^-//' < expout-base > expout
+ AT_CHECK([scan-test $1 input], [0], [expout])
+
+ sed '/^-/d' < expout-base > expout
+ AT_CHECK([scan-test -s $1 input], [0], [expout])])
\f
AT_SETUP([identifiers])
AT_KEYWORDS([scan])
WXYZ. /* unterminated end of line comment
�. /* U+FFFD is not valid in an identifier
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
ID "a"
SKIP
ID "aB"
ENDCMD
SKIP
SKIP
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
andx orx notx eqx gex gtx lex ltx nex allx byx tox withx
and. with.
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
AND
SKIP
OR
SKIP
WITH
ENDCMD
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
~ & | = >= > <= < ~= <> ( ) , - + * / [[ ]] **
~&|=>=><=<~=<>(),-+*/[[]]**
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
NOT
SKIP
AND
LBRACK
RBRACK
EXP
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
1.23e1 45.6E-1 78.9e+1 99.9E+01 11.2e-03
. 1e e1 1e+ 1e-
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
POS_NUM
SKIP
POS_NUM 1
EXPECTED_EXPONENT "1e+"
SKIP
EXPECTED_EXPONENT "1e-"
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
"�あいうえお"
"abc"+U"FFFD"+u'3048'+"xyz"
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
STRING "x"
SKIP
STRING "y"
STRING "�あいうえお"
SKIP
STRING "abc�えxyz"
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
#! /usr/bin/pspp
#! /usr/bin/pspp
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
SKIP
SKIP
ID "#"
ID "bin"
SLASH
ID "pspp"
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
next command.
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
SKIP
SKIP
SKIP
ID "command"
ENDCMD
SKIP
-ENDCMD
-SKIP
+-ENDCMD
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
second paragraph.
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
ID "DOCUMENT"
STRING "DOCUMENT one line."
ENDCMD
STRING ""
SKIP
STRING "second paragraph."
-ENDCMD
-ENDCMD
-SKIP
+-ENDCMD
+-ENDCMD
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
/**/ lab not quoted here either
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
ID "title"
SKIP
STRING "Quoted string title"
SKIP
STRING "not quoted here either"
SKIP
-ENDCMD
-SKIP
+-ENDCMD
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
end data
.
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
ID "begin"
SKIP
ID "data"
ID "data"
SKIP
ENDCMD
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
end
repeat.
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
ID "do"
SKIP
ID "repeat"
SKIP
ID "repeat"
ENDCMD
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-i])
fourth command.
fifth command.
])
-AT_DATA([expout], [dnl
+AT_DATA([expout-base], [dnl
ID "first"
SKIP
ID "command"
SKIP
ID "command"
ENDCMD
-SKIP
+-SKIP
STOP
])
PSPP_CHECK_SCAN([-b])