summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/tangle.ch
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/tangle.ch')
-rw-r--r--Build/source/texk/web2c/tangle.ch18
1 files changed, 16 insertions, 2 deletions
diff --git a/Build/source/texk/web2c/tangle.ch b/Build/source/texk/web2c/tangle.ch
index c1b568a1056..34c187129cf 100644
--- a/Build/source/texk/web2c/tangle.ch
+++ b/Build/source/texk/web2c/tangle.ch
@@ -52,9 +52,11 @@
@z
@x [2] Eliminate the |end_of_TANGLE| label.
-@d end_of_TANGLE = 9999 {go here to wrap it up}
+calls the `|jump_out|' procedure, which goes to the label |end_of_TANGLE|.
+@d end_of_TANGLE = 9999 {go here to wrap it up}
@y
+calls the `|jump_out|' procedure.
@z
@x
label end_of_TANGLE; {go here to finish}
@@ -193,6 +195,16 @@ rewrite (Pascal_file, pascal_name);
@z
@x [34] Fix `jump_out'.
+and jumps out of the program. This is the only non-local |goto| statement
+in \.{TANGLE}. It is used when no recovery from a particular error has
+been provided.
+
+Some \PASCAL\ compilers do not implement non-local |goto| statements.
+@^system dependencies@>
+In such cases the code that appears at label |end_of_TANGLE| should be
+copied into the |jump_out| procedure, followed by a call to a system procedure
+that terminates the program.
+
@d fatal_error(#)==begin new_line; print(#); error; mark_fatal; jump_out;
end
@@ -201,9 +213,11 @@ procedure jump_out;
begin goto end_of_TANGLE;
end;
@y
+and jumps out of the program.
+
@d jump_out==uexit(1)
@d fatal_error(#)==begin new_line; write(stderr, #);
- error; mark_fatal; uexit(1);
+ error; mark_fatal; jump_out;
end
@z