catch up with compile.c rev. 1.48; while here, also add tests for
authorschwarze <schwarze@openbsd.org>
Mon, 9 Jul 2018 13:07:09 +0000 (13:07 +0000)
committerschwarze <schwarze@openbsd.org>
Mon, 9 Jul 2018 13:07:09 +0000 (13:07 +0000)
those unusual delimiter characters that did *not* change behaviour

regress/usr.bin/sed/sedtest.expected
regress/usr.bin/sed/sedtest.sh

index 4d129a0..21d2b8c 100644 (file)
@@ -4503,7 +4503,7 @@ XYeYff
 XYeYYf
 XYeYYY
 XYeYYY
-[ as an s delimiter and its escapes
+various special characters as delimiters
 
 =============
 Test 8.17:186
@@ -4526,46 +4526,208 @@ l1X14
 =============
 Test 8.18:187
 =============
-X_1
-X_2
-X_3
-X_4
-X_5
-X_6
-X_7
-X_8
-X_9
-X_10
-X_11
-X_12
-X_13
-X_14
+l1_$R
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_1$R
+l1_12
+l1_13
+l1_14
 
 =============
 Test 8.19:188
 =============
-X[_1
-X[_2
-X[_3
-X[_4
-X[_5
-X[_6
-X[_7
-X[_8
-X[_9
-X[_10
-X[_11
-X[_12
-X[_13
-X[_14
-\ in y command
+l1_1
+l1_2
+l1_(3)
+l1_4
+l1_(5)
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_1(3)
+l1_14
 
 =============
 Test 8.20:189
 =============
-a-b-c
+l1*R
+l1*R2
+l1*R3
+l1*R4
+l1*R5
+l1*R6
+l1*R7
+l1*R8
+l1*R9
+l1*R0
+l1*R
+l1*R2
+l1*R3
+l1*R4
 
 =============
 Test 8.21:190
 =============
+l1+R
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1+R0
+l1+R
+l1+R2
+l1+R3
+l1+R4
+
+=============
+Test 8.22:191
+=============
+lR.1
+lR.2
+lR.3
+lR.4
+lR.5
+lR.6
+lR.7
+lR.8
+lR.9
+lR.R.
+lR.R.
+lR.R.
+lR.R.
+lR.R.
+
+=============
+Test 8.23:192
+=============
+l1R
+l1/2
+l1/3
+l1/4
+l1/5
+l1/6
+l1/7
+l1/8
+l1/9
+l1R0
+l1R1
+l1R2
+l1R3
+l1R4
+
+=============
+Test 8.24:193
+=============
+l1?R
+l1?R2
+l1?R3
+l1?R4
+l1?R5
+l1?R6
+l1?R7
+l1?R8
+l1?R9
+l1?R0
+l1?R1
+l1?R2
+l1?R3
+l1?R4
+
+=============
+Test 8.25:194
+=============
+l1_1
+l1_[R]
+l1_[R]
+l1_[R]
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_1[R]
+l1_1[R]
+l1_1[R]
+
+=============
+Test 8.26:195
+=============
+R^1_1
+R^1_2
+R^1_3
+R^1_4
+R^1_5
+R^1_6
+R^1_7
+R^1_8
+R^1_9
+R^1_10
+R^1_11
+R^1_12
+R^1_13
+R^1_14
+
+=============
+Test 8.27:196
+=============
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_{R}
+l1_12
+l1_13
+l1_14
+
+=============
+Test 8.28:197
+=============
+l1_1
+l1_|R
+l1_3
+l1_|R
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_1|R
+l1_13
+l1_1|R
+\ in y command
+
+=============
+Test 8.29:198
+=============
+a-b-c
+
+=============
+Test 8.30:199
+=============
 z
index 0efc342..c226ee5 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh -
-#      $OpenBSD: sedtest.sh,v 1.6 2016/10/11 19:31:15 martijn Exp $
+#      $OpenBSD: sedtest.sh,v 1.7 2018/07/09 13:07:09 schwarze Exp $
 #
 # Copyright (c) 1992 Diomidis Spinellis.
 # Copyright (c) 1992, 1993
@@ -408,19 +408,28 @@ u2/g' lines1
        mark '8.15' ; $SED -e '1N;2y/\n/X/' lines1
        mark '8.16'
        echo 'eeefff' | $SED -e 'p' -e 's/e/X/p' -e ':x' -e 's//Y/p' -e '/f/bx'
-       echo '[ as an s delimiter and its escapes'
+       echo 'various special characters as delimiters'
+# POSIX says "Within the BRE and the replacement, the BRE delimiter itself
+# can be used as a literal character if it is preceded by a <backslash>". 
+# That is an ambiguous statement.  We interpret it in the sense that the
+# character is passed on literally to the RE engine, without the backslash.
        mark '8.17' ; $SED -e 's[_[X[' lines1
-# This is a matter of interpretation
-# POSIX 1003.1, 2004 says "Within the BRE and the replacement,
-# the BRE delimiter itself can be used as a *literal* character
-# if it is preceded by a backslash
-       mark '8.18' ; sed 's/l/[/' lines1 | $SED -e 's[\[.[X['
-       mark '8.19' ; sed 's/l/[/' lines1 | $SED -e 's[\[.[X\[['
+       mark '8.18' ; $SED -e 's$1\$$\$R$' lines1
+       mark '8.19' ; $SED -Ee 's(\(3|5)(\(\1)(' lines1
+       mark '8.20' ; $SED -e 's*_1\**\*R*' lines1
+       mark '8.21' ; $SED -Ee 's+_1\++\+R+' lines1
+       mark '8.22' ; $SED -e 's.1\..R\..g' lines1
+       mark '8.23' ; sed 's/_/\//' lines1 | $SED -e 's/\/1/R/'
+       mark '8.24' ; $SED -Ee 's?_1\??\?R?' lines1
+       mark '8.25' ; $SED -e 's[\[2-4][\[R][' lines1
+       mark '8.26' ; $SED -e 's^\^l^R\^^' lines1
+       mark '8.27' ; $SED -Ee 's{1\{2}{\{R}{' lines1
+       mark '8.28' ; $SED -Ee 's|2\|4|\|R|' lines1
        echo '\ in y command'
-       mark '8.20'
+       mark '8.29'
        printf 'a\\b(c\n' |
        $SED 'y%ABCDEFGHIJKLMNOPQRSTUVWXYZ, /\\()"%abcdefghijklmnopqrstuvwxyz,------%'
-       mark '8.21'
+       mark '8.30'
 # Test if an unmatched line is only printed once.
        printf 'z\n' | $SED -e 's/^a*/b/2p'
 }