summaryrefslogtreecommitdiff
path: root/web/funnelAC/answers/pr08.lis
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/funnelAC/answers/pr08.lis
Initial commit
Diffstat (limited to 'web/funnelAC/answers/pr08.lis')
-rw-r--r--web/funnelAC/answers/pr08.lis1266
1 files changed, 1266 insertions, 0 deletions
diff --git a/web/funnelAC/answers/pr08.lis b/web/funnelAC/answers/pr08.lis
new file mode 100644
index 0000000000..8d765756ad
--- /dev/null
+++ b/web/funnelAC/answers/pr08.lis
@@ -0,0 +1,1266 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 38 3A 20 54 65 73 74 20 73 65 6D 61 6E | PR08: Test seman |
+| 74 69 63 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 | tic checking of |
+| 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E | macro definition |
+| 73 2E 0A 0A 54 72 69 70 20 70 61 72 73 65 72 20 | s...Trip parser |
+| 74 6F 20 62 65 20 73 75 72 65 20 74 68 61 74 20 | to be sure that |
+| 77 65 20 77 6F 6E 27 74 20 67 65 74 20 61 6E 79 | we won't get any |
+| 20 6F 75 74 70 75 74 20 66 69 6C 65 73 21 0A 40 | output files!.@ |
+| 3E 0A 0A 31 2E 20 46 69 6C 65 20 6D 61 63 72 6F | >..1. File macro |
+| 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 73 2E | has parameters. |
+| 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 | Error..@O@<Slot |
+| 68 20 31 40 3E 40 28 40 33 40 29 40 7B 57 61 6C | h 1@>@(@3@)@{Wal |
+| 72 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | rus@}.@A@<Error |
+| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> |
+| 0A 0A 32 2E 20 46 69 6C 65 20 6D 61 63 72 6F 20 | ..2. File macro |
+| 69 73 20 61 64 64 69 74 69 76 65 2E 20 45 72 72 | is additive. Err |
+| 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 68 20 32 40 | or..@O@<Sloth 2@ |
+| 3E 2B 3D 40 7B 57 61 6C 72 75 73 40 7D 0A 40 41 | >+=@{Walrus@}.@A |
+| 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 | @<Error recovery |
+| 20 70 6F 69 6E 74 40 3E 0A 0A 33 2E 20 46 69 6C | point@>..3. Fil |
+| 65 20 6D 61 63 72 6F 20 68 61 73 20 74 6F 6F 20 | e macro has too |
+| 6C 6F 6E 67 20 61 20 6E 61 6D 65 2E 20 54 68 65 | long a name. The |
+| 20 74 65 73 74 20 6E 61 6D 65 20 68 61 73 20 31 | test name has 1 |
+| 32 30 30 20 63 68 61 72 61 63 74 65 72 73 2E 20 | 200 characters. |
+| 45 72 72 2E 0A 4E 6F 74 65 3A 20 54 68 69 73 20 | Err..Note: This |
+| 74 65 73 74 20 63 61 6E 27 74 20 74 65 73 74 20 | test can't test |
+| 74 68 65 20 65 72 72 6F 72 20 6D 65 73 73 61 67 | the error messag |
+| 65 20 69 66 20 74 68 65 20 6D 61 78 69 6D 75 6D | e if the maximum |
+| 20 6C 65 6E 67 74 68 20 6F 66 20 61 0A 6D 61 63 | length of a.mac |
+| 72 6F 20 6E 61 6D 65 20 69 73 20 6C 65 73 73 20 | ro name is less |
+| 74 68 61 6E 20 74 68 65 20 6D 61 78 69 6D 75 6D | than the maximum |
+| 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 66 69 6C | length of a fil |
+| 65 20 6E 61 6D 65 20 61 73 20 74 68 65 20 6E 61 | e name as the na |
+| 6D 65 0A 65 72 72 6F 72 20 69 73 20 63 61 75 67 | me.error is caug |
+| 68 74 20 66 69 72 73 74 2E 0A 40 70 20 6D 61 78 | ht first..@p max |
+| 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F | imum_input_line_ |
+| 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E 69 74 | length = infinit |
+| 79 0A 40 4F 40 3C 31 32 33 34 35 36 37 38 39 30 | y.@O@<1234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 40 3E 40 7B 40 7D 0A 40 41 40 | 567890@>@{@}.@A@ |
+| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery |
+| 70 6F 69 6E 74 40 3E 0A 0A 34 2E 20 46 69 6C 65 | point@>..4. File |
+| 20 6D 61 63 72 6F 20 68 61 73 20 7A 65 72 6F 20 | macro has zero |
+| 6F 72 20 6D 61 6E 79 20 61 74 74 72 69 62 75 74 | or many attribut |
+| 65 73 2E 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 | es. Error..@O@<S |
+| 6C 6F 74 68 20 33 40 3E 40 5A 40 7B 57 61 6C 72 | loth 3@>@Z@{Walr |
+| 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 | us@}.@A@<Error r |
+| 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A | ecovery point@>. |
+| 0A 40 4F 40 3C 53 6C 6F 74 68 20 34 40 3E 40 4D | .@O@<Sloth 4@>@M |
+| 40 7B 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C 45 | @{Walrus@}.@A@<E |
+| 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F | rror recovery po |
+| 69 6E 74 40 3E 0A 0A 40 4F 40 3C 53 6C 6F 74 68 | int@>..@O@<Sloth |
+| 20 35 40 3E 40 5A 40 4D 40 7B 57 61 6C 72 75 73 | 5@>@Z@M@{Walrus |
+| 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@<Error rec |
+| 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 35 | overy point@>..5 |
+| 2E 20 50 72 65 76 69 6F 75 73 20 64 65 66 69 6E | . Previous defin |
+| 69 74 69 6F 6E 20 69 73 20 66 75 6C 6C 2C 20 63 | ition is full, c |
+| 75 72 72 65 6E 74 20 69 73 20 61 64 64 69 74 69 | urrent is additi |
+| 76 65 2E 0A 40 24 40 3C 57 61 6C 72 75 73 20 31 | ve..@$@<Walrus 1 |
+| 40 3E 3D 3D 40 7B 53 6C 6F 74 68 40 7D 0A 40 24 | @>==@{Sloth@}.@$ |
+| 40 3C 57 61 6C 72 75 73 20 31 40 3E 2B 3D 40 7B | @<Walrus 1@>+=@{ |
+| 41 61 72 64 76 61 72 6B 40 7D 0A 40 41 40 3C 45 | Aardvark@}.@A@<E |
+| 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F | rror recovery po |
+| 69 6E 74 40 3E 0A 0A 36 2E 20 50 72 65 76 69 6F | int@>..6. Previo |
+| 75 73 20 64 65 66 69 6E 69 74 69 6F 6E 20 69 73 | us definition is |
+| 20 61 64 64 69 74 69 76 65 2C 20 63 75 72 72 65 | additive, curre |
+| 6E 74 20 69 73 20 66 75 6C 6C 2E 0A 40 24 40 3C | nt is full..@$@< |
+| 57 61 6C 72 75 73 20 32 40 3E 2B 3D 40 7B 53 6C | Walrus 2@>+=@{Sl |
+| 6F 74 68 40 7D 0A 40 24 40 3C 57 61 6C 72 75 73 | oth@}.@$@<Walrus |
+| 20 32 40 3E 3D 3D 40 7B 41 61 72 64 76 61 72 6B | 2@>==@{Aardvark |
+| 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@<Error rec |
+| 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 37 | overy point@>..7 |
+| 2E 20 4E 6F 6E 2D 66 69 72 73 74 20 62 6F 64 79 | . Non-first body |
+| 20 70 61 72 74 20 6F 66 20 70 61 72 74 69 61 6C | part of partial |
+| 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 2E 0A | has parameter.. |
+| 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@<Unicorn@>@(@ |
+| 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. |
+| 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@<Unicorn@>@(@ |
+| 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. |
+| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove |
+| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 38 2E 20 5A | ry point@>..8. Z |
+| 65 72 6F 20 6F 72 20 6D 61 6E 79 20 61 74 74 72 | ero or many attr |
+| 69 62 75 74 65 73 20 6F 6E 20 6E 6F 6E 2D 66 69 | ibutes on non-fi |
+| 72 73 74 20 62 6F 64 79 20 70 61 72 74 20 6F 66 | rst body part of |
+| 20 61 64 64 69 74 69 76 65 2E 0A 40 24 40 3C 45 | additive..@$@<E |
+| 6C 65 70 68 61 6E 74 40 3E 40 5A 40 4D 2B 3D 40 | lephant@>@Z@M+=@ |
+| 7B 54 75 72 6B 65 79 40 7D 0A 40 24 40 3C 45 6C | {Turkey@}.@$@<El |
+| 65 70 68 61 6E 74 40 3E 40 5A 40 4D 2B 3D 40 7B | ephant@>@Z@M+=@{ |
+| 54 75 72 6B 65 79 40 7D 0A 40 41 40 3C 45 72 72 | Turkey@}.@A@<Err |
+| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin |
+| 74 40 3E 0A 0A 39 2E 20 43 68 65 63 6B 20 74 68 | t@>..9. Check th |
+| 61 74 20 6E 6F 6E 2D 65 78 69 73 74 65 6E 74 20 | at non-existent |
+| 66 6F 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 | formal parameter |
+| 73 20 61 72 65 20 63 61 75 67 68 74 2E 0A 0A 40 | s are caught...@ |
+| 24 40 3C 5A 65 72 6F 40 3E 40 5A 40 7B 53 6C 6F | $@<Zero@>@Z@{Slo |
+| 74 68 40 31 57 61 6C 72 75 73 40 7D 0A 40 41 40 | th@1Walrus@}.@A@ |
+| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery |
+| 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 4F 6E 65 | point@>..@$@<One |
+| 40 3E 40 28 40 31 40 29 40 5A 40 7B 53 6C 6F 74 | @>@(@1@)@Z@{Slot |
+| 68 40 32 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@2Walrus@}.@A@< |
+| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p |
+| 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 4D 61 6E 79 | oint@>..@$@<Many |
+| 40 3E 40 28 40 37 40 29 40 5A 40 7B 53 6C 6F 74 | @>@(@7@)@Z@{Slot |
+| 68 40 38 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@8Walrus@}.@A@< |
+| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p |
+| 6F 69 6E 74 40 3E 0A | oint@>. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR08: Test semantic checking of macro definitions.<010>
+00002 00002| <010>
+00003 00003| Trip parser to be sure that we won't get any output files!<010>
+00004 00004| @><010>
+00005 00005| <010>
+00006 00006| 1. File macro has parameters. Error.<010>
+00007 00007| @O@<Sloth 1@>@(@3@)@{Walrus@}<010>
+00008 00008| @A@<Error recovery point@><010>
+00009 00009| <010>
+00010 00010| 2. File macro is additive. Error.<010>
+00011 00011| @O@<Sloth 2@>+=@{Walrus@}<010>
+00012 00012| @A@<Error recovery point@><010>
+00013 00013| <010>
+00014 00014| 3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+00015 00015| Note: This test can't test the error message if the maximum length of a<010>
+00016 00016| macro name is less than the maximum length of a file name as the name<010>
+00017 00017| error is caught first.<010>
+00018 00018| @p maximum_input_line_length = infinity<010>
+00019 00019| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}<010>
+00020 00020| @A@<Error recovery point@><010>
+00021 00021| <010>
+00022 00022| 4. File macro has zero or many attributes. Error.<010>
+00023 00023| @O@<Sloth 3@>@Z@{Walrus@}<010>
+00024 00024| @A@<Error recovery point@><010>
+00025 00025| <010>
+00026 00026| @O@<Sloth 4@>@M@{Walrus@}<010>
+00027 00027| @A@<Error recovery point@><010>
+00028 00028| <010>
+00029 00029| @O@<Sloth 5@>@Z@M@{Walrus@}<010>
+00030 00030| @A@<Error recovery point@><010>
+00031 00031| <010>
+00032 00032| 5. Previous definition is full, current is additive.<010>
+00033 00033| @$@<Walrus 1@>==@{Sloth@}<010>
+00034 00034| @$@<Walrus 1@>+=@{Aardvark@}<010>
+00035 00035| @A@<Error recovery point@><010>
+00036 00036| <010>
+00037 00037| 6. Previous definition is additive, current is full.<010>
+00038 00038| @$@<Walrus 2@>+=@{Sloth@}<010>
+00039 00039| @$@<Walrus 2@>==@{Aardvark@}<010>
+00040 00040| @A@<Error recovery point@><010>
+00041 00041| <010>
+00042 00042| 7. Non-first body part of partial has parameter.<010>
+00043 00043| @$@<Unicorn@>@(@3@)+=@{Turkey@}<010>
+00044 00044| @$@<Unicorn@>@(@3@)+=@{Turkey@}<010>
+00045 00045| @A@<Error recovery point@><010>
+00046 00046| <010>
+00047 00047| 8. Zero or many attributes on non-first body part of additive.<010>
+00048 00048| @$@<Elephant@>@Z@M+=@{Turkey@}<010>
+00049 00049| @$@<Elephant@>@Z@M+=@{Turkey@}<010>
+00050 00050| @A@<Error recovery point@><010>
+00051 00051| <010>
+00052 00052| 9. Check that non-existent formal parameters are caught.<010>
+00053 00053| <010>
+00054 00054| @$@<Zero@>@Z@{Sloth@1Walrus@}<010>
+00055 00055| @A@<Error recovery point@><010>
+00056 00056| <010>
+00057 00057| @$@<One@>@(@1@)@Z@{Sloth@2Walrus@}<010>
+00058 00058| @A@<Error recovery point@><010>
+00059 00059| <010>
+00060 00060| @$@<Many@>@(@7@)@Z@{Sloth@8Walrus@}<010>
+00061 00061| @A@<Error recovery point@><010>
+00062 00062| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 245 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010>
+<010>
+Trip parser to be sure that we won't get any output files!<010>
+"
+0004[01]: @> Close name.
+0004[03]: Text. Text scrap[Grey]="<010>
+<010>
+1. File macro has parameters. Error.<010>
+"
+0007[01]: @F File defn.
+0007[03]: @< Open name.
+0007[05]: Text. Text scrap[Grey]="Sloth 1"
+0007[12]: @> Close name.
+0007[14]: @( Open param.
+0007[16]: @n Parameter. Parameterno=3.
+0007[18]: @} Close param.
+0007[20]: @{ Open defn.
+0007[22]: Text. Text scrap[Grey]="Walrus"
+0007[28]: @} Close defn.
+0007[30]: Text. Text scrap[White]="<010>
+"
+0008[01]: @A New section (Level 1).
+0008[03]: @< Open name.
+0008[05]: Text. Text scrap[Grey]="Error recovery point"
+0008[25]: @> Close name.
+0008[27]: Text. Text scrap[Grey]="<010>
+<010>
+2. File macro is additive. Error.<010>
+"
+0011[01]: @F File defn.
+0011[03]: @< Open name.
+0011[05]: Text. Text scrap[Grey]="Sloth 2"
+0011[12]: @> Close name.
+0011[14]: Text. Text scrap[Grey]="+="
+0011[16]: @{ Open defn.
+0011[18]: Text. Text scrap[Grey]="Walrus"
+0011[24]: @} Close defn.
+0011[26]: Text. Text scrap[White]="<010>
+"
+0012[01]: @A New section (Level 1).
+0012[03]: @< Open name.
+0012[05]: Text. Text scrap[Grey]="Error recovery point"
+0012[25]: @> Close name.
+0012[27]: Text. Text scrap[Grey]="<010>
+<010>
+3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+Note: This test can't test the error message if the maximum length of a<010>
+macro name is less than the maximum length of a file name as the name<010>
+error is caught first.<010>
+"
+0019[01]: @F File defn.
+0019[03]: @< Open name.
+0019[05]: Text. Text scrap[Grey]="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
+0019[1205]: @> Close name.
+0019[1207]: @{ Open defn.
+0019[1209]: @} Close defn.
+0019[1211]: Text. Text scrap[White]="<010>
+"
+0020[01]: @A New section (Level 1).
+0020[03]: @< Open name.
+0020[05]: Text. Text scrap[Grey]="Error recovery point"
+0020[25]: @> Close name.
+0020[27]: Text. Text scrap[Grey]="<010>
+<010>
+4. File macro has zero or many attributes. Error.<010>
+"
+0023[01]: @F File defn.
+0023[03]: @< Open name.
+0023[05]: Text. Text scrap[Grey]="Sloth 3"
+0023[12]: @> Close name.
+0023[14]: @Z Zero calls.
+0023[16]: @{ Open defn.
+0023[18]: Text. Text scrap[Grey]="Walrus"
+0023[24]: @} Close defn.
+0023[26]: Text. Text scrap[White]="<010>
+"
+0024[01]: @A New section (Level 1).
+0024[03]: @< Open name.
+0024[05]: Text. Text scrap[Grey]="Error recovery point"
+0024[25]: @> Close name.
+0024[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0026[01]: @F File defn.
+0026[03]: @< Open name.
+0026[05]: Text. Text scrap[Grey]="Sloth 4"
+0026[12]: @> Close name.
+0026[14]: @M Many calls.
+0026[16]: @{ Open defn.
+0026[18]: Text. Text scrap[Grey]="Walrus"
+0026[24]: @} Close defn.
+0026[26]: Text. Text scrap[White]="<010>
+"
+0027[01]: @A New section (Level 1).
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Error recovery point"
+0027[25]: @> Close name.
+0027[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0029[01]: @F File defn.
+0029[03]: @< Open name.
+0029[05]: Text. Text scrap[Grey]="Sloth 5"
+0029[12]: @> Close name.
+0029[14]: @Z Zero calls.
+0029[16]: @M Many calls.
+0029[18]: @{ Open defn.
+0029[20]: Text. Text scrap[Grey]="Walrus"
+0029[26]: @} Close defn.
+0029[28]: Text. Text scrap[White]="<010>
+"
+0030[01]: @A New section (Level 1).
+0030[03]: @< Open name.
+0030[05]: Text. Text scrap[Grey]="Error recovery point"
+0030[25]: @> Close name.
+0030[27]: Text. Text scrap[Grey]="<010>
+<010>
+5. Previous definition is full, current is additive.<010>
+"
+0033[01]: @$ Macro defn.
+0033[03]: @< Open name.
+0033[05]: Text. Text scrap[Grey]="Walrus 1"
+0033[13]: @> Close name.
+0033[15]: Text. Text scrap[Grey]="=="
+0033[17]: @{ Open defn.
+0033[19]: Text. Text scrap[Grey]="Sloth"
+0033[24]: @} Close defn.
+0033[26]: Text. Text scrap[White]="<010>
+"
+0034[01]: @$ Macro defn.
+0034[03]: @< Open name.
+0034[05]: Text. Text scrap[Grey]="Walrus 1"
+0034[13]: @> Close name.
+0034[15]: Text. Text scrap[Grey]="+="
+0034[17]: @{ Open defn.
+0034[19]: Text. Text scrap[Grey]="Aardvark"
+0034[27]: @} Close defn.
+0034[29]: Text. Text scrap[White]="<010>
+"
+0035[01]: @A New section (Level 1).
+0035[03]: @< Open name.
+0035[05]: Text. Text scrap[Grey]="Error recovery point"
+0035[25]: @> Close name.
+0035[27]: Text. Text scrap[Grey]="<010>
+<010>
+6. Previous definition is additive, current is full.<010>
+"
+0038[01]: @$ Macro defn.
+0038[03]: @< Open name.
+0038[05]: Text. Text scrap[Grey]="Walrus 2"
+0038[13]: @> Close name.
+0038[15]: Text. Text scrap[Grey]="+="
+0038[17]: @{ Open defn.
+0038[19]: Text. Text scrap[Grey]="Sloth"
+0038[24]: @} Close defn.
+0038[26]: Text. Text scrap[White]="<010>
+"
+0039[01]: @$ Macro defn.
+0039[03]: @< Open name.
+0039[05]: Text. Text scrap[Grey]="Walrus 2"
+0039[13]: @> Close name.
+0039[15]: Text. Text scrap[Grey]="=="
+0039[17]: @{ Open defn.
+0039[19]: Text. Text scrap[Grey]="Aardvark"
+0039[27]: @} Close defn.
+0039[29]: Text. Text scrap[White]="<010>
+"
+0040[01]: @A New section (Level 1).
+0040[03]: @< Open name.
+0040[05]: Text. Text scrap[Grey]="Error recovery point"
+0040[25]: @> Close name.
+0040[27]: Text. Text scrap[Grey]="<010>
+<010>
+7. Non-first body part of partial has parameter.<010>
+"
+0043[01]: @$ Macro defn.
+0043[03]: @< Open name.
+0043[05]: Text. Text scrap[Grey]="Unicorn"
+0043[12]: @> Close name.
+0043[14]: @( Open param.
+0043[16]: @n Parameter. Parameterno=3.
+0043[18]: @} Close param.
+0043[20]: Text. Text scrap[Grey]="+="
+0043[22]: @{ Open defn.
+0043[24]: Text. Text scrap[Grey]="Turkey"
+0043[30]: @} Close defn.
+0043[32]: Text. Text scrap[White]="<010>
+"
+0044[01]: @$ Macro defn.
+0044[03]: @< Open name.
+0044[05]: Text. Text scrap[Grey]="Unicorn"
+0044[12]: @> Close name.
+0044[14]: @( Open param.
+0044[16]: @n Parameter. Parameterno=3.
+0044[18]: @} Close param.
+0044[20]: Text. Text scrap[Grey]="+="
+0044[22]: @{ Open defn.
+0044[24]: Text. Text scrap[Grey]="Turkey"
+0044[30]: @} Close defn.
+0044[32]: Text. Text scrap[White]="<010>
+"
+0045[01]: @A New section (Level 1).
+0045[03]: @< Open name.
+0045[05]: Text. Text scrap[Grey]="Error recovery point"
+0045[25]: @> Close name.
+0045[27]: Text. Text scrap[Grey]="<010>
+<010>
+8. Zero or many attributes on non-first body part of additive.<010>
+"
+0048[01]: @$ Macro defn.
+0048[03]: @< Open name.
+0048[05]: Text. Text scrap[Grey]="Elephant"
+0048[13]: @> Close name.
+0048[15]: @Z Zero calls.
+0048[17]: @M Many calls.
+0048[19]: Text. Text scrap[Grey]="+="
+0048[21]: @{ Open defn.
+0048[23]: Text. Text scrap[Grey]="Turkey"
+0048[29]: @} Close defn.
+0048[31]: Text. Text scrap[White]="<010>
+"
+0049[01]: @$ Macro defn.
+0049[03]: @< Open name.
+0049[05]: Text. Text scrap[Grey]="Elephant"
+0049[13]: @> Close name.
+0049[15]: @Z Zero calls.
+0049[17]: @M Many calls.
+0049[19]: Text. Text scrap[Grey]="+="
+0049[21]: @{ Open defn.
+0049[23]: Text. Text scrap[Grey]="Turkey"
+0049[29]: @} Close defn.
+0049[31]: Text. Text scrap[White]="<010>
+"
+0050[01]: @A New section (Level 1).
+0050[03]: @< Open name.
+0050[05]: Text. Text scrap[Grey]="Error recovery point"
+0050[25]: @> Close name.
+0050[27]: Text. Text scrap[Grey]="<010>
+<010>
+9. Check that non-existent formal parameters are caught.<010>
+<010>
+"
+0054[01]: @$ Macro defn.
+0054[03]: @< Open name.
+0054[05]: Text. Text scrap[Grey]="Zero"
+0054[09]: @> Close name.
+0054[11]: @Z Zero calls.
+0054[13]: @{ Open defn.
+0054[15]: Text. Text scrap[Grey]="Sloth"
+0054[20]: @n Parameter. Parameterno=1.
+0054[22]: Text. Text scrap[Grey]="Walrus"
+0054[28]: @} Close defn.
+0054[30]: Text. Text scrap[White]="<010>
+"
+0055[01]: @A New section (Level 1).
+0055[03]: @< Open name.
+0055[05]: Text. Text scrap[Grey]="Error recovery point"
+0055[25]: @> Close name.
+0055[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0057[01]: @$ Macro defn.
+0057[03]: @< Open name.
+0057[05]: Text. Text scrap[Grey]="One"
+0057[08]: @> Close name.
+0057[10]: @( Open param.
+0057[12]: @n Parameter. Parameterno=1.
+0057[14]: @} Close param.
+0057[16]: @Z Zero calls.
+0057[18]: @{ Open defn.
+0057[20]: Text. Text scrap[Grey]="Sloth"
+0057[25]: @n Parameter. Parameterno=2.
+0057[27]: Text. Text scrap[Grey]="Walrus"
+0057[33]: @} Close defn.
+0057[35]: Text. Text scrap[White]="<010>
+"
+0058[01]: @A New section (Level 1).
+0058[03]: @< Open name.
+0058[05]: Text. Text scrap[Grey]="Error recovery point"
+0058[25]: @> Close name.
+0058[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0060[01]: @$ Macro defn.
+0060[03]: @< Open name.
+0060[05]: Text. Text scrap[Grey]="Many"
+0060[09]: @> Close name.
+0060[11]: @( Open param.
+0060[13]: @n Parameter. Parameterno=7.
+0060[15]: @} Close param.
+0060[17]: @Z Zero calls.
+0060[19]: @{ Open defn.
+0060[21]: Text. Text scrap[Grey]="Sloth"
+0060[26]: @n Parameter. Parameterno=8.
+0060[28]: Text. Text scrap[Grey]="Walrus"
+0060[34]: @} Close defn.
+0060[36]: Text. Text scrap[White]="<010>
+"
+0061[01]: @A New section (Level 1).
+0061[03]: @< Open name.
+0061[05]: Text. Text scrap[Grey]="Error recovery point"
+0061[25]: @> Close name.
+0061[27]: Text. Text scrap[White]="<010>
+"
+0062[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Elephant"
+Defined? : Yes.
+Parameters : 0
+Additive? : Yes.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=4, Pos(L,C)=(48,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Turkey"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Many"
+Defined? : Yes.
+Parameters : 7
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=7, Pos(L,C)=(60,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+
+-- Start Parameter Element --
+Parameter number=8.
+Parameter is of macro "Many".
+--- End Parameter Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "One"
+Defined? : Yes.
+Parameters : 1
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=6, Pos(L,C)=(57,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+
+-- Start Parameter Element --
+Parameter number=2.
+Parameter is of macro "One".
+--- End Parameter Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 1"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 2"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 3"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 4"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 5"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Unicorn"
+Defined? : Yes.
+Parameters : 3
+Additive? : Yes.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=3, Pos(L,C)=(43,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Turkey"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Walrus 1"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(33,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Walrus 2"
+Defined? : Yes.
+Parameters : 0
+Additive? : Yes.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=2, Pos(L,C)=(38,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Zero"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=5, Pos(L,C)=(54,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+
+-- Start Parameter Element --
+Parameter number=1.
+Parameter is of macro "Zero".
+--- End Parameter Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010>
+<010>
+Trip parser to be sure that we won't get any output files!<010>
+"
+--- End of Text Scrap List ---
+
+
+TEXT COMPONENT: Pos(L,C)=(4,3).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+1. File macro has parameters. Error.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(8,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. File macro is additive. Error.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(12,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+Note: This test can't test the error message if the maximum length of a<010>
+macro name is less than the maximum length of a file name as the name<010>
+error is caught first.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(20,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+4. File macro has zero or many attributes. Error.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(24,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(27,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "6", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(30,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+5. Previous definition is full, current is additive.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(33,1).
+Part 1 of macro @<Walrus 1@>.
+
+TEXT COMPONENT: Pos(L,C)=(33,26).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "7", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(35,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+6. Previous definition is additive, current is full.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(38,1).
+Part 1 of macro @<Walrus 2@>.
+
+TEXT COMPONENT: Pos(L,C)=(38,26).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "8", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(40,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+7. Non-first body part of partial has parameter.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(43,1).
+Part 1 of macro @<Unicorn@>.
+
+TEXT COMPONENT: Pos(L,C)=(43,32).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "9", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(45,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+8. Zero or many attributes on non-first body part of additive.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(48,1).
+Part 1 of macro @<Elephant@>.
+
+TEXT COMPONENT: Pos(L,C)=(48,31).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "10", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(50,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+9. Check that non-existent formal parameters are caught.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(54,1).
+Part 1 of macro @<Zero@>.
+
+TEXT COMPONENT: Pos(L,C)=(54,30).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "11", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(55,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(57,1).
+Part 1 of macro @<One@>.
+
+TEXT COMPONENT: Pos(L,C)=(57,35).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "12", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(58,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(60,1).
+Part 1 of macro @<Many@>.
+
+TEXT COMPONENT: Pos(L,C)=(60,36).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "13", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(61,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR08: Test semantic checking of macro definitions.
+ 2 2|
+ 3 3| Trip parser to be sure that we won't get any output files!
+ 4 4| @>
+ Error|.^The parser was at the top level and was expecting
+ |.^one of: {Directive, Text, Macro definition, EOF}.
+ 5 5|
+ 6 6| 1. File macro has parameters. Error.
+ 7 7| @O@<Sloth 1@>@(@3@)@{Walrus@}
+ |...^Macro definition ignored.
+ Error|................^Macros attached to output files cannot be parameterized.
+ |................^Reason: No actual parameters would be available during
+ |................^ output file generation.
+ |....................^Skipping after error to the next major construct...
+ 8 8| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 9 9|
+ 10 10| 2. File macro is additive. Error.
+ 11 11| @O@<Sloth 2@>+=@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot be additive.
+ |..............^Reason: Preventing this makes it easy to find output
+ |..............^file macros later, because there will be exactly one
+ |..............^@O declaration in the input file for each output file.
+ |..............^To do what you are trying to do, just create an additive
+ |..............^bridging macro, like this:
+ |..............^ @O@<prog.c@>@{@<Bridge@>@}
+ |..............^ @$@<Bridge@>+=@{void stringhack()...@}
+ |..............^ @$@<Bridge@>+=@{main()...@}
+ |................^Skipping after error to the next major construct...
+ 12 12| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 13 13|
+ 14 14| 3. File macro has too long a name. The test name has 1200 characters. Err.
+ 15 15| Note: This test can't test the error message if the maximum length of a
+ 16 16| macro name is less than the maximum length of a file name as the name
+ 17 17| error is caught first.
+ 18 18| @p maximum_input_line_length = infinity
+ 19 19| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}
+ Error|.....^Name is too long.
+ |.....^The maximum length of a legal name is 80 characters.
+ |.....^Skipping after error to the next major construct...
+ 20 20| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 21 21|
+ 22 22| 4. File macro has zero or many attributes. Error.
+ 23 23| @O@<Sloth 3@>@Z@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot have @Z or @M.
+ |..............^Reason: They are always called once to generate their
+ |..............^output file and they cannot be called from other macros.
+ |..............^Hence they are always called exactly once and so there
+ |..............^can be no need for @Z or @M in their declarations.
+ |................^Skipping after error to the next major construct...
+ 24 24| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 25 25|
+ 26 26| @O@<Sloth 4@>@M@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot have @Z or @M.
+ |..............^Reason: They are always called once to generate their
+ |..............^output file and they cannot be called from other macros.
+ |..............^Hence they are always called exactly once and so there
+ |..............^can be no need for @Z or @M in their declarations.
+ |................^Skipping after error to the next major construct...
+ 27 27| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 28 28|
+ 29 29| @O@<Sloth 5@>@Z@M@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot have @Z or @M.
+ |..............^Reason: They are always called once to generate their
+ |..............^output file and they cannot be called from other macros.
+ |..............^Hence they are always called exactly once and so there
+ |..............^can be no need for @Z or @M in their declarations.
+ |..................^Skipping after error to the next major construct...
+ 30 30| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 31 31|
+ 32 32| 5. Previous definition is full, current is additive.
+ 33 33| @$@<Walrus 1@>==@{Sloth@}
+ 34 34| @$@<Walrus 1@>+=@{Aardvark@}
+ Error|...^A full definition of this macro appears at line 33.
+ |...^Full and additive definitions of the same macro cannot coexist.
+ |...^Macro definition ignored.
+ |.................^Skipping after error to the next major construct...
+ 35 35| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 36 36|
+ 37 37| 6. Previous definition is additive, current is full.
+ 38 38| @$@<Walrus 2@>+=@{Sloth@}
+ 39 39| @$@<Walrus 2@>==@{Aardvark@}
+ Error|...^An additive definition of this macro appears at line 38.
+ |...^Full and additive definitions of the same macro cannot coexist.
+ |...^Macro definition ignored.
+ |.................^Skipping after error to the next major construct...
+ 40 40| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 41 41|
+ 42 42| 7. Non-first body part of partial has parameter.
+ 43 43| @$@<Unicorn@>@(@3@)+=@{Turkey@}
+ 44 44| @$@<Unicorn@>@(@3@)+=@{Turkey@}
+ |...^Macro definition ignored.
+ Error|................^The formal parameter list of an additive macro
+ |................^must be placed only in the first definition part.
+ |................^The first part of this macro appears at line 43.
+ |......................^Skipping after error to the next major construct...
+ 45 45| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 46 46|
+ 47 47| 8. Zero or many attributes on non-first body part of additive.
+ 48 48| @$@<Elephant@>@Z@M+=@{Turkey@}
+ 49 49| @$@<Elephant@>@Z@M+=@{Turkey@}
+ |...^Macro definition ignored.
+ Error|...............^@Z and @M modifiers for additive macros must
+ |...............^be placed only in the first definition part.
+ |...............^The first part of this macro appears at line 48.
+ |.....................^Skipping after error to the next major construct...
+ 50 50| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 51 51|
+ 52 52| 9. Check that non-existent formal parameters are caught.
+ 53 53|
+ 54 54| @$@<Zero@>@Z@{Sloth@1Walrus@}
+ Error|....................^Macro being defined has only 0 parameters.
+ 55 55| @A@<Error recovery point@>
+ 56 56|
+ 57 57| @$@<One@>@(@1@)@Z@{Sloth@2Walrus@}
+ Error|.........................^Macro being defined has only 1 parameter.
+ 58 58| @A@<Error recovery point@>
+ 59 59|
+ 60 60| @$@<Many@>@(@7@)@Z@{Sloth@8Walrus@}
+ Error|..........................^Macro being defined has only 7 parameters.
+ 61 61| @A@<Error recovery point@>
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 14 Errors.