diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/ChangeLog | 9 | ||||
-rw-r--r-- | doc/gawk.info | 576 | ||||
-rw-r--r-- | doc/gawk.texi | 37 | ||||
-rw-r--r-- | doc/gawktexi.in | 25 | ||||
-rw-r--r-- | doc/texinfo.tex | 163 |
5 files changed, 389 insertions, 421 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index 292adb2b..8e94b98e 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,12 @@ +2021-01-23 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: A number of small fixes, thanks to + Antonio Columbo. + + Unrelated: + + * texinfo.tex: Updated via GNULIB. + 2021-01-21 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in (Other Versions): Add information on more diff --git a/doc/gawk.info b/doc/gawk.info index 89fe1ebb..12b712c6 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -18043,14 +18043,14 @@ overlap with 'gawk''s, a '--' is needed to tell 'gawk' to stop looking for options. Next comes the code that handles the 'egrep'-specific behavior. -'egrep' uses the first nonoption on the command line is used. if no -pattern is supplied with '-e'. If the pattern is empty, that means no -pattern was supplied, so it's necessary to print an error message and -exit. The 'awk' command-line arguments up to 'ARGV[Optind]' are -cleared, so that 'awk' won't try to process them as files. If no files -are specified, the standard input is used, and if multiple files are -specified, we make sure to note this so that the file names can precede -the matched lines in the output: +'egrep' uses the first nonoption on the command line if no pattern is +supplied with '-e'. If the pattern is empty, that means no pattern was +supplied, so it's necessary to print an error message and exit. The +'awk' command-line arguments up to 'ARGV[Optind]' are cleared, so that +'awk' won't try to process them as files. If no files are specified, +the standard input is used, and if multiple files are specified, we make +sure to note this so that the file names can precede the matched lines +in the output: if (pattern == "") pattern = ARGV[Optind++] @@ -21823,16 +21823,16 @@ source code, it will appear that way in the output. File: gawk.info, Node: Extension Philosophy, Next: Advanced Features Summary, Prev: Profiling, Up: Advanced Features -12.6 Builtin Features vs. Extensions -==================================== +12.6 Builtin Features versus Extensions +======================================= As this and subsequent major nodes show, 'gawk' has a large number of extensions over standard 'awk' built-in to the program. These have developed over time. More recently, the focus has moved to using the extension mechanism (*note Dynamic Extensions::) for adding features. This minor node discusses the "guiding philosophy" behind what should be -added to the interpreter as a built-in feature vs. what should be done -in extensions. +added to the interpreter as a built-in feature versus what should be +done in extensions. There are several goals: @@ -21847,9 +21847,8 @@ in extensions. 4. Extend the core interpreter only if some feature is: A. Truly desirable. - B. Cannot be done via (2) or (3) above. + B. Cannot be done via library files or loadable extensions. C. Can be implemented without too much pain in the core. - Combining modules with 'awk' files is a powerful technique. Some of the sample extensions demonstrate this. @@ -21899,7 +21898,8 @@ File: gawk.info, Node: Advanced Features Summary, Prev: Extension Philosophy, * You can also just "pretty-print" the program. * New features should be developed using the extension mechansim if - possible, and added to the core interpreter only as a last resort. + possible; they should be added to the core interpreter only as a + last resort. File: gawk.info, Node: Internationalization, Next: Debugger, Prev: Advanced Features, Up: Top @@ -34762,7 +34762,7 @@ Index * .pot files: Explaining gettext. (line 31) * / (forward slash), to enclose regular expressions: Regexp. (line 10) * / (forward slash), /= operator: Assignment Ops. (line 129) -* / (forward slash), /= operator, vs. /=.../ regexp constant: Assignment Ops. +* / (forward slash), /= operator, vs. /=.../ regexp constant: Assignment Ops. (line 149) * / (forward slash), / operator: Precedence. (line 54) * / (forward slash), /= operator <1>: Precedence. (line 94) @@ -35609,7 +35609,7 @@ Index (line 17) * dark corner, regexp constants, /= operator and: Assignment Ops. (line 149) -* dark corner, /= operator vs. /=.../ regexp constant: Assignment Ops. +* dark corner, /= operator vs. /=.../ regexp constant: Assignment Ops. (line 149) * dark corner, "0" is actually true: Truth Values. (line 24) * dark corner, range patterns, line continuation and: Ranges. (line 64) @@ -36247,7 +36247,7 @@ Index * formatting, strings: String Functions. (line 395) * forward slash (/), to enclose regular expressions: Regexp. (line 10) * forward slash (/), /= operator: Assignment Ops. (line 129) -* forward slash (/), /= operator, vs. /=.../ regexp constant: Assignment Ops. +* forward slash (/), /= operator, vs. /=.../ regexp constant: Assignment Ops. (line 149) * forward slash (/), / operator: Precedence. (line 54) * forward slash (/), /= operator <1>: Precedence. (line 94) @@ -38399,276 +38399,276 @@ Node: Running Examples728274 Node: Clones729002 Node: Cut Program730226 Node: Egrep Program740366 -Node: Id Program749377 -Node: Split Program759324 -Ref: Split Program-Footnote-1769214 -Node: Tee Program769387 -Node: Uniq Program772177 -Node: Wc Program779765 -Node: Bytes vs. Characters780162 -Node: Using extensions781710 -Node: wc program782464 -Node: Miscellaneous Programs787329 -Node: Dupword Program788542 -Node: Alarm Program790572 -Node: Translate Program795427 -Ref: Translate Program-Footnote-1799992 -Node: Labels Program800262 -Ref: Labels Program-Footnote-1803613 -Node: Word Sorting803697 -Node: History Sorting807769 -Node: Extract Program809994 -Node: Simple Sed818048 -Node: Igawk Program821122 -Ref: Igawk Program-Footnote-1835453 -Ref: Igawk Program-Footnote-2835655 -Ref: Igawk Program-Footnote-3835777 -Node: Anagram Program835892 -Node: Signature Program838954 -Node: Programs Summary840201 -Node: Programs Exercises841415 -Ref: Programs Exercises-Footnote-1845545 -Node: Advanced Features845631 -Node: Nondecimal Data847698 -Node: Array Sorting849289 -Node: Controlling Array Traversal849989 -Ref: Controlling Array Traversal-Footnote-1858357 -Node: Array Sorting Functions858475 -Ref: Array Sorting Functions-Footnote-1863566 -Node: Two-way I/O863762 -Ref: Two-way I/O-Footnote-1871483 -Ref: Two-way I/O-Footnote-2871670 -Node: TCP/IP Networking871752 -Node: Profiling874870 -Node: Extension Philosophy884179 -Node: Advanced Features Summary885630 -Node: Internationalization887629 -Node: I18N and L10N889109 -Node: Explaining gettext889796 -Ref: Explaining gettext-Footnote-1895688 -Ref: Explaining gettext-Footnote-2895873 -Node: Programmer i18n896038 -Ref: Programmer i18n-Footnote-1900987 -Node: Translator i18n901036 -Node: String Extraction901830 -Ref: String Extraction-Footnote-1902962 -Node: Printf Ordering903048 -Ref: Printf Ordering-Footnote-1905834 -Node: I18N Portability905898 -Ref: I18N Portability-Footnote-1908354 -Node: I18N Example908417 -Ref: I18N Example-Footnote-1911692 -Ref: I18N Example-Footnote-2911765 -Node: Gawk I18N911874 -Node: I18N Summary912523 -Node: Debugger913864 -Node: Debugging914864 -Node: Debugging Concepts915305 -Node: Debugging Terms917114 -Node: Awk Debugging919689 -Ref: Awk Debugging-Footnote-1920634 -Node: Sample Debugging Session920766 -Node: Debugger Invocation921300 -Node: Finding The Bug922686 -Node: List of Debugger Commands929160 -Node: Breakpoint Control930493 -Node: Debugger Execution Control934187 -Node: Viewing And Changing Data937549 -Node: Execution Stack941090 -Node: Debugger Info942727 -Node: Miscellaneous Debugger Commands946798 -Node: Readline Support951860 -Node: Limitations952756 -Node: Debugging Summary955310 -Node: Namespaces956589 -Node: Global Namespace957700 -Node: Qualified Names959098 -Node: Default Namespace960097 -Node: Changing The Namespace960838 -Node: Naming Rules962452 -Node: Internal Name Management964300 -Node: Namespace Example965342 -Node: Namespace And Features967904 -Node: Namespace Summary969339 -Node: Arbitrary Precision Arithmetic970816 -Node: Computer Arithmetic972303 -Ref: table-numeric-ranges976069 -Ref: table-floating-point-ranges976562 -Ref: Computer Arithmetic-Footnote-1977220 -Node: Math Definitions977277 -Ref: table-ieee-formats980253 -Node: MPFR features980820 -Node: FP Math Caution982538 -Ref: FP Math Caution-Footnote-1983610 -Node: Inexactness of computations983979 -Node: Inexact representation985010 -Node: Comparing FP Values986370 -Node: Errors accumulate987611 -Node: Strange values989067 -Ref: Strange values-Footnote-1991655 -Node: Getting Accuracy991760 -Node: Try To Round994470 -Node: Setting precision995369 -Ref: table-predefined-precision-strings996066 -Node: Setting the rounding mode997896 -Ref: table-gawk-rounding-modes998270 -Ref: Setting the rounding mode-Footnote-11002201 -Node: Arbitrary Precision Integers1002380 -Ref: Arbitrary Precision Integers-Footnote-11005555 -Node: Checking for MPFR1005704 -Node: POSIX Floating Point Problems1007178 -Ref: POSIX Floating Point Problems-Footnote-11011463 -Node: Floating point summary1011501 -Node: Dynamic Extensions1013691 -Node: Extension Intro1015244 -Node: Plugin License1016510 -Node: Extension Mechanism Outline1017307 -Ref: figure-load-extension1017746 -Ref: figure-register-new-function1019311 -Ref: figure-call-new-function1020403 -Node: Extension API Description1022465 -Node: Extension API Functions Introduction1024178 -Ref: table-api-std-headers1026014 -Node: General Data Types1030263 -Ref: General Data Types-Footnote-11038893 -Node: Memory Allocation Functions1039192 -Ref: Memory Allocation Functions-Footnote-11043693 -Node: Constructor Functions1043792 -Node: API Ownership of MPFR and GMP Values1047258 -Node: Registration Functions1048571 -Node: Extension Functions1049271 -Node: Exit Callback Functions1054593 -Node: Extension Version String1055843 -Node: Input Parsers1056506 -Node: Output Wrappers1069227 -Node: Two-way processors1073739 -Node: Printing Messages1076004 -Ref: Printing Messages-Footnote-11077175 -Node: Updating ERRNO1077328 -Node: Requesting Values1078067 -Ref: table-value-types-returned1078804 -Node: Accessing Parameters1079740 -Node: Symbol Table Access1080977 -Node: Symbol table by name1081489 -Ref: Symbol table by name-Footnote-11084513 -Node: Symbol table by cookie1084641 -Ref: Symbol table by cookie-Footnote-11088826 -Node: Cached values1088890 -Ref: Cached values-Footnote-11092426 -Node: Array Manipulation1092579 -Ref: Array Manipulation-Footnote-11093670 -Node: Array Data Types1093707 -Ref: Array Data Types-Footnote-11096365 -Node: Array Functions1096457 -Node: Flattening Arrays1100955 -Node: Creating Arrays1107931 -Node: Redirection API1112698 -Node: Extension API Variables1115531 -Node: Extension Versioning1116242 -Ref: gawk-api-version1116671 -Node: Extension GMP/MPFR Versioning1118402 -Node: Extension API Informational Variables1120030 -Node: Extension API Boilerplate1121103 -Node: Changes from API V11125077 -Node: Finding Extensions1126649 -Node: Extension Example1127208 -Node: Internal File Description1128006 -Node: Internal File Ops1132086 -Ref: Internal File Ops-Footnote-11143436 -Node: Using Internal File Ops1143576 -Ref: Using Internal File Ops-Footnote-11145959 -Node: Extension Samples1146233 -Node: Extension Sample File Functions1147762 -Node: Extension Sample Fnmatch1155411 -Node: Extension Sample Fork1156898 -Node: Extension Sample Inplace1158116 -Node: Extension Sample Ord1161742 -Node: Extension Sample Readdir1162578 -Ref: table-readdir-file-types1163467 -Node: Extension Sample Revout1164534 -Node: Extension Sample Rev2way1165123 -Node: Extension Sample Read write array1165863 -Node: Extension Sample Readfile1167805 -Node: Extension Sample Time1168900 -Node: Extension Sample API Tests1170652 -Node: gawkextlib1171144 -Node: Extension summary1174062 -Node: Extension Exercises1177764 -Node: Language History1179006 -Node: V7/SVR3.11180662 -Node: SVR41182814 -Node: POSIX1184248 -Node: BTL1185629 -Node: POSIX/GNU1186358 -Node: Feature History1192136 -Node: Common Extensions1208455 -Node: Ranges and Locales1209738 -Ref: Ranges and Locales-Footnote-11214354 -Ref: Ranges and Locales-Footnote-21214381 -Ref: Ranges and Locales-Footnote-31214616 -Node: Contributors1214839 -Node: History summary1220836 -Node: Installation1222216 -Node: Gawk Distribution1223160 -Node: Getting1223644 -Node: Extracting1224607 -Node: Distribution contents1226245 -Node: Unix Installation1232725 -Node: Quick Installation1233407 -Node: Shell Startup Files1235821 -Node: Additional Configuration Options1236910 -Node: Configuration Philosophy1239225 -Node: Non-Unix Installation1241594 -Node: PC Installation1242054 -Node: PC Binary Installation1242892 -Node: PC Compiling1243327 -Node: PC Using1244444 -Node: Cygwin1247997 -Node: MSYS1249221 -Node: VMS Installation1249823 -Node: VMS Compilation1250614 -Ref: VMS Compilation-Footnote-11251843 -Node: VMS Dynamic Extensions1251901 -Node: VMS Installation Details1253586 -Node: VMS Running1255839 -Node: VMS GNV1260118 -Node: VMS Old Gawk1260853 -Node: Bugs1261324 -Node: Bug address1261987 -Node: Usenet1264969 -Node: Maintainers1265973 -Node: Other Versions1267158 -Node: Installation summary1275023 -Node: Notes1276232 -Node: Compatibility Mode1277026 -Node: Additions1277808 -Node: Accessing The Source1278733 -Node: Adding Code1280170 -Node: New Ports1286389 -Node: Derived Files1290764 -Ref: Derived Files-Footnote-11296424 -Ref: Derived Files-Footnote-21296459 -Ref: Derived Files-Footnote-31297057 -Node: Future Extensions1297171 -Node: Implementation Limitations1297829 -Node: Extension Design1299039 -Node: Old Extension Problems1300183 -Ref: Old Extension Problems-Footnote-11301701 -Node: Extension New Mechanism Goals1301758 -Ref: Extension New Mechanism Goals-Footnote-11305122 -Node: Extension Other Design Decisions1305311 -Node: Extension Future Growth1307424 -Node: Notes summary1308030 -Node: Basic Concepts1309188 -Node: Basic High Level1309869 -Ref: figure-general-flow1310151 -Ref: figure-process-flow1310836 -Ref: Basic High Level-Footnote-11314137 -Node: Basic Data Typing1314322 -Node: Glossary1317650 -Node: Copying1349535 -Node: GNU Free Documentation License1387078 -Node: Index1412198 +Node: Id Program749367 +Node: Split Program759314 +Ref: Split Program-Footnote-1769204 +Node: Tee Program769377 +Node: Uniq Program772167 +Node: Wc Program779755 +Node: Bytes vs. Characters780152 +Node: Using extensions781700 +Node: wc program782454 +Node: Miscellaneous Programs787319 +Node: Dupword Program788532 +Node: Alarm Program790562 +Node: Translate Program795417 +Ref: Translate Program-Footnote-1799982 +Node: Labels Program800252 +Ref: Labels Program-Footnote-1803603 +Node: Word Sorting803687 +Node: History Sorting807759 +Node: Extract Program809984 +Node: Simple Sed818038 +Node: Igawk Program821112 +Ref: Igawk Program-Footnote-1835443 +Ref: Igawk Program-Footnote-2835645 +Ref: Igawk Program-Footnote-3835767 +Node: Anagram Program835882 +Node: Signature Program838944 +Node: Programs Summary840191 +Node: Programs Exercises841405 +Ref: Programs Exercises-Footnote-1845535 +Node: Advanced Features845621 +Node: Nondecimal Data847688 +Node: Array Sorting849279 +Node: Controlling Array Traversal849979 +Ref: Controlling Array Traversal-Footnote-1858347 +Node: Array Sorting Functions858465 +Ref: Array Sorting Functions-Footnote-1863556 +Node: Two-way I/O863752 +Ref: Two-way I/O-Footnote-1871473 +Ref: Two-way I/O-Footnote-2871660 +Node: TCP/IP Networking871742 +Node: Profiling874860 +Node: Extension Philosophy884169 +Node: Advanced Features Summary885648 +Node: Internationalization887663 +Node: I18N and L10N889143 +Node: Explaining gettext889830 +Ref: Explaining gettext-Footnote-1895722 +Ref: Explaining gettext-Footnote-2895907 +Node: Programmer i18n896072 +Ref: Programmer i18n-Footnote-1901021 +Node: Translator i18n901070 +Node: String Extraction901864 +Ref: String Extraction-Footnote-1902996 +Node: Printf Ordering903082 +Ref: Printf Ordering-Footnote-1905868 +Node: I18N Portability905932 +Ref: I18N Portability-Footnote-1908388 +Node: I18N Example908451 +Ref: I18N Example-Footnote-1911726 +Ref: I18N Example-Footnote-2911799 +Node: Gawk I18N911908 +Node: I18N Summary912557 +Node: Debugger913898 +Node: Debugging914898 +Node: Debugging Concepts915339 +Node: Debugging Terms917148 +Node: Awk Debugging919723 +Ref: Awk Debugging-Footnote-1920668 +Node: Sample Debugging Session920800 +Node: Debugger Invocation921334 +Node: Finding The Bug922720 +Node: List of Debugger Commands929194 +Node: Breakpoint Control930527 +Node: Debugger Execution Control934221 +Node: Viewing And Changing Data937583 +Node: Execution Stack941124 +Node: Debugger Info942761 +Node: Miscellaneous Debugger Commands946832 +Node: Readline Support951894 +Node: Limitations952790 +Node: Debugging Summary955344 +Node: Namespaces956623 +Node: Global Namespace957734 +Node: Qualified Names959132 +Node: Default Namespace960131 +Node: Changing The Namespace960872 +Node: Naming Rules962486 +Node: Internal Name Management964334 +Node: Namespace Example965376 +Node: Namespace And Features967938 +Node: Namespace Summary969373 +Node: Arbitrary Precision Arithmetic970850 +Node: Computer Arithmetic972337 +Ref: table-numeric-ranges976103 +Ref: table-floating-point-ranges976596 +Ref: Computer Arithmetic-Footnote-1977254 +Node: Math Definitions977311 +Ref: table-ieee-formats980287 +Node: MPFR features980854 +Node: FP Math Caution982572 +Ref: FP Math Caution-Footnote-1983644 +Node: Inexactness of computations984013 +Node: Inexact representation985044 +Node: Comparing FP Values986404 +Node: Errors accumulate987645 +Node: Strange values989101 +Ref: Strange values-Footnote-1991689 +Node: Getting Accuracy991794 +Node: Try To Round994504 +Node: Setting precision995403 +Ref: table-predefined-precision-strings996100 +Node: Setting the rounding mode997930 +Ref: table-gawk-rounding-modes998304 +Ref: Setting the rounding mode-Footnote-11002235 +Node: Arbitrary Precision Integers1002414 +Ref: Arbitrary Precision Integers-Footnote-11005589 +Node: Checking for MPFR1005738 +Node: POSIX Floating Point Problems1007212 +Ref: POSIX Floating Point Problems-Footnote-11011497 +Node: Floating point summary1011535 +Node: Dynamic Extensions1013725 +Node: Extension Intro1015278 +Node: Plugin License1016544 +Node: Extension Mechanism Outline1017341 +Ref: figure-load-extension1017780 +Ref: figure-register-new-function1019345 +Ref: figure-call-new-function1020437 +Node: Extension API Description1022499 +Node: Extension API Functions Introduction1024212 +Ref: table-api-std-headers1026048 +Node: General Data Types1030297 +Ref: General Data Types-Footnote-11038927 +Node: Memory Allocation Functions1039226 +Ref: Memory Allocation Functions-Footnote-11043727 +Node: Constructor Functions1043826 +Node: API Ownership of MPFR and GMP Values1047292 +Node: Registration Functions1048605 +Node: Extension Functions1049305 +Node: Exit Callback Functions1054627 +Node: Extension Version String1055877 +Node: Input Parsers1056540 +Node: Output Wrappers1069261 +Node: Two-way processors1073773 +Node: Printing Messages1076038 +Ref: Printing Messages-Footnote-11077209 +Node: Updating ERRNO1077362 +Node: Requesting Values1078101 +Ref: table-value-types-returned1078838 +Node: Accessing Parameters1079774 +Node: Symbol Table Access1081011 +Node: Symbol table by name1081523 +Ref: Symbol table by name-Footnote-11084547 +Node: Symbol table by cookie1084675 +Ref: Symbol table by cookie-Footnote-11088860 +Node: Cached values1088924 +Ref: Cached values-Footnote-11092460 +Node: Array Manipulation1092613 +Ref: Array Manipulation-Footnote-11093704 +Node: Array Data Types1093741 +Ref: Array Data Types-Footnote-11096399 +Node: Array Functions1096491 +Node: Flattening Arrays1100989 +Node: Creating Arrays1107965 +Node: Redirection API1112732 +Node: Extension API Variables1115565 +Node: Extension Versioning1116276 +Ref: gawk-api-version1116705 +Node: Extension GMP/MPFR Versioning1118436 +Node: Extension API Informational Variables1120064 +Node: Extension API Boilerplate1121137 +Node: Changes from API V11125111 +Node: Finding Extensions1126683 +Node: Extension Example1127242 +Node: Internal File Description1128040 +Node: Internal File Ops1132120 +Ref: Internal File Ops-Footnote-11143470 +Node: Using Internal File Ops1143610 +Ref: Using Internal File Ops-Footnote-11145993 +Node: Extension Samples1146267 +Node: Extension Sample File Functions1147796 +Node: Extension Sample Fnmatch1155445 +Node: Extension Sample Fork1156932 +Node: Extension Sample Inplace1158150 +Node: Extension Sample Ord1161776 +Node: Extension Sample Readdir1162612 +Ref: table-readdir-file-types1163501 +Node: Extension Sample Revout1164568 +Node: Extension Sample Rev2way1165157 +Node: Extension Sample Read write array1165897 +Node: Extension Sample Readfile1167839 +Node: Extension Sample Time1168934 +Node: Extension Sample API Tests1170686 +Node: gawkextlib1171178 +Node: Extension summary1174096 +Node: Extension Exercises1177798 +Node: Language History1179040 +Node: V7/SVR3.11180696 +Node: SVR41182848 +Node: POSIX1184282 +Node: BTL1185663 +Node: POSIX/GNU1186392 +Node: Feature History1192170 +Node: Common Extensions1208489 +Node: Ranges and Locales1209772 +Ref: Ranges and Locales-Footnote-11214388 +Ref: Ranges and Locales-Footnote-21214415 +Ref: Ranges and Locales-Footnote-31214650 +Node: Contributors1214873 +Node: History summary1220870 +Node: Installation1222250 +Node: Gawk Distribution1223194 +Node: Getting1223678 +Node: Extracting1224641 +Node: Distribution contents1226279 +Node: Unix Installation1232759 +Node: Quick Installation1233441 +Node: Shell Startup Files1235855 +Node: Additional Configuration Options1236944 +Node: Configuration Philosophy1239259 +Node: Non-Unix Installation1241628 +Node: PC Installation1242088 +Node: PC Binary Installation1242926 +Node: PC Compiling1243361 +Node: PC Using1244478 +Node: Cygwin1248031 +Node: MSYS1249255 +Node: VMS Installation1249857 +Node: VMS Compilation1250648 +Ref: VMS Compilation-Footnote-11251877 +Node: VMS Dynamic Extensions1251935 +Node: VMS Installation Details1253620 +Node: VMS Running1255873 +Node: VMS GNV1260152 +Node: VMS Old Gawk1260887 +Node: Bugs1261358 +Node: Bug address1262021 +Node: Usenet1265003 +Node: Maintainers1266007 +Node: Other Versions1267192 +Node: Installation summary1275057 +Node: Notes1276266 +Node: Compatibility Mode1277060 +Node: Additions1277842 +Node: Accessing The Source1278767 +Node: Adding Code1280204 +Node: New Ports1286423 +Node: Derived Files1290798 +Ref: Derived Files-Footnote-11296458 +Ref: Derived Files-Footnote-21296493 +Ref: Derived Files-Footnote-31297091 +Node: Future Extensions1297205 +Node: Implementation Limitations1297863 +Node: Extension Design1299073 +Node: Old Extension Problems1300217 +Ref: Old Extension Problems-Footnote-11301735 +Node: Extension New Mechanism Goals1301792 +Ref: Extension New Mechanism Goals-Footnote-11305156 +Node: Extension Other Design Decisions1305345 +Node: Extension Future Growth1307458 +Node: Notes summary1308064 +Node: Basic Concepts1309222 +Node: Basic High Level1309903 +Ref: figure-general-flow1310185 +Ref: figure-process-flow1310870 +Ref: Basic High Level-Footnote-11314171 +Node: Basic Data Typing1314356 +Node: Glossary1317684 +Node: Copying1349569 +Node: GNU Free Documentation License1387112 +Node: Index1412232 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index ec8690ca..4a0fb3ae 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -12740,17 +12740,17 @@ For maximum portability, do not use the @samp{**=} operator. @end docbook @cindex dark corner @subentry regexp constants @subentry @code{/=} operator and -@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant -@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant +@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant +@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant @cindex regexp constants @subentry @code{/=@dots{}/} @subentry @code{/=} operator and @c derived from email from "Nelson H. F. Beebe" <beebe@math.utah.edu> @c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT) -@cindex dark corner @subentry @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex syntactic ambiguity: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex @code{/=} operator vs. @code{/=@dots{}/} regexp constant +@cindex dark corner @subentry @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex ambiguity, syntactic: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex syntactic ambiguity: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant There is a syntactic ambiguity between the @code{/=} assignment operator and regexp constants whose first character is an @samp{=}. @value{DARKCORNER} @@ -12786,17 +12786,17 @@ and @command{mawk} also do not. @cindex dark corner @subentry regexp constants @subentry @code{/=} operator and -@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant -@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant +@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant +@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant @cindex regexp constants @subentry @code{/=@dots{}/} @subentry @code{/=} operator and @c derived from email from "Nelson H. F. Beebe" <beebe@math.utah.edu> @c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT) -@cindex dark corner @subentry @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex syntactic ambiguity: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex @code{/=} operator vs. @code{/=@dots{}/} regexp constant +@cindex dark corner @subentry @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex ambiguity, syntactic: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex syntactic ambiguity: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant There is a syntactic ambiguity between the @code{/=} assignment operator and regexp constants whose first character is an @samp{=}. @value{DARKCORNER} @@ -25598,7 +25598,7 @@ with @command{gawk}'s, a @option{--} is needed to tell @command{gawk} to stop looking for options. Next comes the code that handles the @command{egrep}-specific behavior. -@command{egrep} uses the first nonoption on the command line is used. +@command{egrep} uses the first nonoption on the command line if no pattern is supplied with @option{-e}. If the pattern is empty, that means no pattern was supplied, so it's necessary to print an error message and exit. @@ -30565,7 +30565,7 @@ constants; if you used an octal or hexadecimal value in your source code, it will appear that way in the output. @node Extension Philosophy -@section Builtin Features vs.@: Extensions +@section Builtin Features versus Extensions As this and subsequent @value{CHAPTER}s show, @command{gawk} has a large number of extensions over standard @command{awk} built-in to @@ -30573,7 +30573,7 @@ the program. These have developed over time. More recently, the focus has moved to using the extension mechanism (@pxref{Dynamic Extensions}) for adding features. This @value{SECTION} discusses the ``guiding philosophy'' behind what should be added to the interpreter as a built-in -feature vs.@: what should be done in extensions. +feature versus what should be done in extensions. There are several goals: @@ -30598,12 +30598,11 @@ Extend the core interpreter only if some feature is: @item Truly desirable. @item -Cannot be done via (2) or (3) above. +Cannot be done via library files or loadable extensions. @item Can be implemented without too much pain in the core. @end enumerate @end enumerate - Combining modules with @command{awk} files is a powerful technique. Some of the sample extensions demonstrate this. @@ -30653,8 +30652,8 @@ you tune them more easily. Sending the @code{USR1} signal while profiling cause You can also just ``pretty-print'' the program. @item -New features should be developed using the extension mechansim if possible, and added -to the core interpreter only as a last resort. +New features should be developed using the extension mechansim if possible; +they should be added to the core interpreter only as a last resort. @end itemize diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 4228d098..6e9930d1 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -12086,17 +12086,17 @@ For maximum portability, do not use the @samp{**=} operator. @sidebar Syntactic Ambiguities Between @samp{/=} and Regular Expressions @cindex dark corner @subentry regexp constants @subentry @code{/=} operator and -@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant -@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs. @code{/=@dots{}/} regexp constant +@cindex @code{/} (forward slash) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant +@cindex forward slash (@code{/}) @subentry @code{/=} operator @subentry vs.@: @code{/=@dots{}/} regexp constant @cindex regexp constants @subentry @code{/=@dots{}/} @subentry @code{/=} operator and @c derived from email from "Nelson H. F. Beebe" <beebe@math.utah.edu> @c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT) -@cindex dark corner @subentry @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex syntactic ambiguity: @code{/=} operator vs. @code{/=@dots{}/} regexp constant -@cindex @code{/=} operator vs. @code{/=@dots{}/} regexp constant +@cindex dark corner @subentry @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex ambiguity, syntactic: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex syntactic ambiguity: @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant +@cindex @code{/=} operator vs.@: @code{/=@dots{}/} regexp constant There is a syntactic ambiguity between the @code{/=} assignment operator and regexp constants whose first character is an @samp{=}. @value{DARKCORNER} @@ -24534,7 +24534,7 @@ with @command{gawk}'s, a @option{--} is needed to tell @command{gawk} to stop looking for options. Next comes the code that handles the @command{egrep}-specific behavior. -@command{egrep} uses the first nonoption on the command line is used. +@command{egrep} uses the first nonoption on the command line if no pattern is supplied with @option{-e}. If the pattern is empty, that means no pattern was supplied, so it's necessary to print an error message and exit. @@ -29501,7 +29501,7 @@ constants; if you used an octal or hexadecimal value in your source code, it will appear that way in the output. @node Extension Philosophy -@section Builtin Features vs.@: Extensions +@section Builtin Features versus Extensions As this and subsequent @value{CHAPTER}s show, @command{gawk} has a large number of extensions over standard @command{awk} built-in to @@ -29509,7 +29509,7 @@ the program. These have developed over time. More recently, the focus has moved to using the extension mechanism (@pxref{Dynamic Extensions}) for adding features. This @value{SECTION} discusses the ``guiding philosophy'' behind what should be added to the interpreter as a built-in -feature vs.@: what should be done in extensions. +feature versus what should be done in extensions. There are several goals: @@ -29534,12 +29534,11 @@ Extend the core interpreter only if some feature is: @item Truly desirable. @item -Cannot be done via (2) or (3) above. +Cannot be done via library files or loadable extensions. @item Can be implemented without too much pain in the core. @end enumerate @end enumerate - Combining modules with @command{awk} files is a powerful technique. Some of the sample extensions demonstrate this. @@ -29589,8 +29588,8 @@ you tune them more easily. Sending the @code{USR1} signal while profiling cause You can also just ``pretty-print'' the program. @item -New features should be developed using the extension mechansim if possible, and added -to the core interpreter only as a last resort. +New features should be developed using the extension mechansim if possible; +they should be added to the core interpreter only as a last resort. @end itemize diff --git a/doc/texinfo.tex b/doc/texinfo.tex index 3c7051d1..dac7ae3d 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2020-10-24.12} +\def\texinfoversion{2020-11-25.18} % % Copyright 1985, 1986, 1988, 1990-2020 Free Software Foundation, Inc. % @@ -572,10 +572,9 @@ \fi } -% @end foo executes the definition of \Efoo. -% But first, it executes a specialized version of \checkenv -% -\parseargdef\end{% + +% @end foo calls \checkenv and executes the definition of \Efoo. +\parseargdef\end{ \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. @@ -2673,8 +2672,6 @@ end \definetextfontsizexi -\message{markup,} - % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have @@ -2682,68 +2679,14 @@ end % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } -% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will -% define and register \INITMACRO to be called on markup style changes. -% \INITMACRO can check \currentmarkupstyle for the innermost -% style. - -\let\currentmarkupstyle\empty - -\def\setupmarkupstyle#1{% - \def\currentmarkupstyle{#1}% - \markupstylesetup -} - -\let\markupstylesetup\empty - -\def\defmarkupstylesetup#1{% - \expandafter\def\expandafter\markupstylesetup - \expandafter{\markupstylesetup #1}% - \def#1% -} - -% Markup style setup for left and right quotes. -\defmarkupstylesetup\markupsetuplq{% - \expandafter\let\expandafter \temp - \csname markupsetuplq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuplqdefault \else \temp \fi -} - -\defmarkupstylesetup\markupsetuprq{% - \expandafter\let\expandafter \temp - \csname markupsetuprq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuprqdefault \else \temp \fi -} - { \catcode`\'=\active \catcode`\`=\active -\gdef\markupsetuplqdefault{\let`\lq} -\gdef\markupsetuprqdefault{\let'\rq} - -\gdef\markupsetcodequoteleft{\let`\codequoteleft} -\gdef\markupsetcodequoteright{\let'\codequoteright} +\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} +\gdef\setregularquotes{\let`\lq \let'\rq} } -\let\markupsetuplqcode \markupsetcodequoteleft -\let\markupsetuprqcode \markupsetcodequoteright -% -\let\markupsetuplqexample \markupsetcodequoteleft -\let\markupsetuprqexample \markupsetcodequoteright -% -\let\markupsetuplqkbd \markupsetcodequoteleft -\let\markupsetuprqkbd \markupsetcodequoteright -% -\let\markupsetuplqsamp \markupsetcodequoteleft -\let\markupsetuprqsamp \markupsetcodequoteright -% -\let\markupsetuplqverb \markupsetcodequoteleft -\let\markupsetuprqverb \markupsetcodequoteright -% -\let\markupsetuplqverbatim \markupsetcodequoteleft -\let\markupsetuprqverbatim \markupsetcodequoteright - % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it @@ -2906,7 +2849,7 @@ end } % @samp. -\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} +\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp @@ -2949,8 +2892,7 @@ end \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup - \setupmarkupstyle{code}% - % The following should really be moved into \setupmarkupstyle handlers. + \setcodequotes \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash @@ -3104,7 +3046,7 @@ end \urefcatcodes % \global\def\urefcode{\begingroup - \setupmarkupstyle{code}% + \setcodequotes \urefcatcodes \let&\urefcodeamp \let.\urefcodedot @@ -3225,8 +3167,8 @@ end \def\kbdsub#1#2#3\par{% \def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setcodequotes\look}}\fi + \else{\tclose{\kbdfont\setcodequotes\look}}\fi } % definition of @key that produces a lozenge. Doesn't adjust to text size. @@ -3243,7 +3185,7 @@ end % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % -\def\key#1{{\setupmarkupstyle{key}% +\def\key#1{{\setregularquotes \nohyphenation \ifmonospace\else\tt\fi #1}\null} @@ -3373,16 +3315,20 @@ end {\obeylines \globaldefs=1 \envdef\displaymath{% -\tex +\tex% \def\thisenv{\displaymath}% +\begingroup\let\end\displaymathend% $$% } -\def\Edisplaymath{$$ +\def\displaymathend{$$\endgroup\end}% + +\def\Edisplaymath{% \def\thisenv{\tex}% \end tex }} + % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. @@ -7144,7 +7090,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % But \@ or @@ will get a plain @ character. \envdef\tex{% - \setupmarkupstyle{tex}% + \setregularquotes \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie @@ -7370,7 +7316,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: -% @example, @display, @format, @lisp +% @example, @display, @format, @lisp, @verbatim % \def\smallword{small} \def\nosmallword{nosmall} @@ -7416,9 +7362,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \maketwodispenvdef{lisp}{example}{% \nonfillstart - \tt\setupmarkupstyle{example}% + \tt\setcodequotes \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return + \parsearg\gobble } % @display/@smalldisplay: same as @lisp except keep current font. % @@ -7576,7 +7522,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% - \setupmarkupstyle{verb}% + \setcodequotes \tabeightspaces % Respect line breaks, % print special symbols as themselves, and @@ -7617,7 +7563,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \tt % easiest (and conventionally used) font for verbatim \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% \tabexpand - \setupmarkupstyle{verbatim}% + \setcodequotes % Respect line breaks, % print special symbols as themselves, and % make each space count. @@ -8036,7 +7982,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % leave the code in, but it's strange for @var to lead to typewriter. % Nowadays we recommend @code, since the difference between a ttsl hyphen % and a tt hyphen is pretty tiny. @code also disables ?` !`. - \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + \def\var##1{{\setregularquotes\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } @@ -8145,11 +8091,18 @@ might help (with 'rm \jobname.?? \jobname.??s')% } \fi +\let\E=\expandafter + % Used at the time of macro expansion. % Argument is macro body with arguments substituted \def\scanmacro#1{% \newlinechar`\^^M - \def\xeatspaces{\eatspaces}% + % expand the expansion of \eatleadingcr twice to maybe remove a leading + % newline (and \else and \fi tokens), then call \eatspaces on the result. + \def\xeatspaces##1{% + \E\E\E\E\E\E\E\eatspaces\E\E\E\E\E\E\E{\eatleadingcr##1% + }}% + \def\xempty##1{}% % % Process the macro body under the current catcode regime. \scantokens{#1@comment}% @@ -8202,6 +8155,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% \unbrace{\gdef\trim@@@ #1 } #2@{#1} } +{\catcode`\^^M=\other% +\gdef\eatleadingcr#1{\if\noexpand#1\noexpand^^M\else\E#1\fi}}% +% Warning: this won't work for a delimited argument +% or for an empty argument + % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% @@ -8368,6 +8326,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \let\hash\relax % \hash is redefined to `#' later to get it into definitions \let\xeatspaces\relax + \let\xempty\relax \parsemargdefxxx#1,;,% \ifnum\paramno<10\relax\else \paramno0\relax @@ -8379,9 +8338,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% + {\xeatspaces{\hash\the\paramno\noexpand\xempty{}}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +% the \xempty{} is to give \eatleadingcr an argument in the case of an +% empty macro argument. % \parsemacbody, \parsermacbody % @@ -9107,20 +9068,22 @@ might help (with 'rm \jobname.?? \jobname.??s')% % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % - % But we always want a comma and a space: - ,\space - % - % output the `page 3'. - \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - % Add a , if xref followed by a space - \if\space\noexpand\tokenafterxref ,% - \else\ifx\ \tokenafterxref ,% @TAB - \else\ifx\*\tokenafterxref ,% @* - \else\ifx\ \tokenafterxref ,% @SPACE - \else\ifx\ - \tokenafterxref ,% @NL - \else\ifx\tie\tokenafterxref ,% @tie - \fi\fi\fi\fi\fi\fi + \expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi + \fi \fi\fi \fi \endlink @@ -9550,7 +9513,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names - \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro + \makevalueexpandable % If the image is by itself, center it. \ifvmode \imagevmodetrue @@ -11603,7 +11566,7 @@ directory should work if nowhere else does.} \let> = \activegtr \let~ = \activetilde \let^ = \activehat - \markupsetuplqdefault \markupsetuprqdefault + \setregularquotes \let\b = \strong \let\i = \smartitalic % in principle, all other definitions in \tex have to be undone too. @@ -11662,8 +11625,7 @@ directory should work if nowhere else does.} @let|=@normalverticalbar @let~=@normaltilde @let\=@ttbackslash - @markupsetuplqdefault - @markupsetuprqdefault + @setregularquotes @unsepspaces } } @@ -11756,8 +11718,7 @@ directory should work if nowhere else does.} @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active -@markupsetuplqdefault -@markupsetuprqdefault +@setregularquotes @c Local variables: @c eval: (add-hook 'before-save-hook 'time-stamp) |