summaryrefslogtreecommitdiffstats
path: root/regress/roff/de
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2022-06-03 12:15:55 +0000
committerIngo Schwarze <schwarze@openbsd.org>2022-06-03 12:15:55 +0000
commitf1a1415f2ac83d7454ab33bab918fe77f90664bd (patch)
treecca4619f0ecb728de9a8697ed509838d8c4186bd /regress/roff/de
parent4de2134e6e8bcf00651ea443b38238baef53467e (diff)
downloadmandoc-f1a1415f2ac83d7454ab33bab918fe77f90664bd.tar.gz
During identifier parsing, handle undefined escape sequences
in the same way as groff: * \\ is always reduced to \ * \. is always reduced to . * other undefined escape sequences are usually reduced to the escape name, for example \G to G, except during the expansion of expanding escape sequences having the standard argument form (in particular \* and \n), in which case the backslash is preserved literally. Yes, this is confusing indeed. For example, the following have the same meaning: * .ds \. and .ds . which is not the same as .ds \\. * \*[\.] and \*[.] which is not the same as \*[\\.] * .ds \G and .ds G which is not the same as .ds \\G * \*[\G] and \*[\\G] which is not the same as \*[G] <- sic! To feel less dirty, have a leaning toothpick, if you are so inclined. This patch also slightly improves the string shown by the "escaped character not allowed in a name" error message.
Diffstat (limited to 'regress/roff/de')
-rw-r--r--regress/roff/de/escname.in27
-rw-r--r--regress/roff/de/escname.out_ascii15
-rw-r--r--regress/roff/de/escname.out_lint16
3 files changed, 47 insertions, 11 deletions
diff --git a/regress/roff/de/escname.in b/regress/roff/de/escname.in
index 8c346846..8c1824b5 100644
--- a/regress/roff/de/escname.in
+++ b/regress/roff/de/escname.in
@@ -1,4 +1,4 @@
-.\" $OpenBSD: escname.in,v 1.4 2017/07/04 14:53:27 schwarze Exp $
+.\" $OpenBSD: escname.in,v 1.5 2022/06/03 11:50:25 schwarze Exp $
.Dd $Mdocdate$
.Dt DE-ESCNAME 1
.Os
@@ -23,10 +23,33 @@ define first = val1
val1
..
.Pp
-Values (first, second, first\esecond):
+define first\e.second = val_dot
+.de first\.second
+val_dot
+..
+.Pp
+define first\eGsecond = val_inval
+.de first\Gsecond
+val_inval
+..
+.Pp
+Values:
+.Bl -tag -width first_.second -compact
+.It first
.first
+.It second
.second
+.It first\esecond
.first\\second
+.It first.second
+.first.second
+.It first\e.second
+.first\.second
+.It firstGsecond
+.firstGsecond
+.It first\eGsecond
+.first\Gsecond
+.El
.Pp
Remove all but second:
.rm first\\second first\esecond second
diff --git a/regress/roff/de/escname.out_ascii b/regress/roff/de/escname.out_ascii
index 367b5d0f..e096fd71 100644
--- a/regress/roff/de/escname.out_ascii
+++ b/regress/roff/de/escname.out_ascii
@@ -12,7 +12,18 @@ DDEESSCCRRIIPPTTIIOONN
define first = val1
- Values (first, second, first\second): val1 val2 val3
+ define first\.second = val_dot
+
+ define first\Gsecond = val_inval
+
+ Values:
+ first val1
+ second val2
+ first\second val3
+ first.second val_dot
+ first\.second val_dot
+ firstGsecond val_inval
+ first\Gsecond val_inval
Remove all but second: val2
@@ -20,4 +31,4 @@ DDEESSCCRRIIPPTTIIOONN
final text
-OpenBSD July 4, 2017 OpenBSD
+OpenBSD June 3, 2022 OpenBSD
diff --git a/regress/roff/de/escname.out_lint b/regress/roff/de/escname.out_lint
index a3f9396f..5dba1973 100644
--- a/regress/roff/de/escname.out_lint
+++ b/regress/roff/de/escname.out_lint
@@ -1,8 +1,10 @@
mandoc: escname.in:22:2: ERROR: escaped character not allowed in a name: first\e
-mandoc: escname.in:32:19: ERROR: escaped character not allowed in a name: first\e
-mandoc: escname.in:33:2: ERROR: skipping unknown macro: .first
-mandoc: escname.in:35:2: ERROR: skipping unknown macro: .first\\second
-mandoc: escname.in:38:5: ERROR: skipping excess arguments: .de ... excess arguments
-mandoc: escname.in:41:1: ERROR: escaped character not allowed in a name: witharg\(
-mandoc: escname.in:43:1: ERROR: escaped character not allowed in a name: de\e
-mandoc: escname.in:43:2: WARNING: skipping empty request: de
+mandoc: escname.in:32:10: WARNING: undefined escape, printing literally: \G
+mandoc: escname.in:51:7: WARNING: undefined escape, printing literally: \G
+mandoc: escname.in:55:19: ERROR: escaped character not allowed in a name: first\e
+mandoc: escname.in:56:2: ERROR: skipping unknown macro: .first
+mandoc: escname.in:58:2: ERROR: skipping unknown macro: .first\second
+mandoc: escname.in:61:5: ERROR: skipping excess arguments: .de ... excess arguments
+mandoc: escname.in:64:1: ERROR: escaped character not allowed in a name: witharg\(en
+mandoc: escname.in:66:1: ERROR: escaped character not allowed in a name: de\e
+mandoc: escname.in:66:2: WARNING: skipping empty request: de