diff options
Diffstat (limited to 'Build/source/texk/web2c/tangle.ch')
-rw-r--r-- | Build/source/texk/web2c/tangle.ch | 18 |
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 |