aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gawk.info1104
-rw-r--r--doc/gawk.texi24
-rw-r--r--doc/gawktexi.in24
4 files changed, 610 insertions, 547 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index f77fc00a..6505bc07 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2021-09-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Interval Expressions): Add some notes borrowed from
+ Paul Eggert in the grep documentation.
+
2021-08-26 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in (Strong Regexp Constants): Document behavior
diff --git a/doc/gawk.info b/doc/gawk.info
index b7a050df..94ebf260 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -3977,17 +3977,33 @@ practice to always escape them with a backslash. Then the regexp
constants are valid and work the way you want them to, using any version
of 'awk'.(1)
- Finally, when '{' and '}' appear in regexp constants in a way that
-cannot be interpreted as an interval expression (such as '/q{a}/'), then
-they stand for themselves.
+ When '{' and '}' appear in regexp constants in a way that cannot be
+interpreted as an interval expression (such as '/q{a}/'), then they
+stand for themselves.
As mentioned, interval expressions were not traditionally available
in 'awk'. In March of 2019, BWK 'awk' (finally) acquired them.
-
- Nonetheless, because they were not available for so many decades,
-'gawk' continues to not supply them when in compatibility mode (*note
+Nonetheless, because they were not available for so many decades, 'gawk'
+continues to not supply them when in compatibility mode (*note
Options::).
+ POSIX says that interval expressions containing repetition counts
+greater than 255 produce unspecified results.
+
+ In the manual for GNU 'grep', Paul Eggert notes the following:
+
+ Interval expressions may be implemented internally via repetition.
+ For example, '^(a|bc){2,4}$' might be implemented as
+ '^(a|bc)(a|bc)((a|bc)(a|bc)?)?$'. A large repetition count may
+ exhaust memory or greatly slow matching. Even small counts can
+ cause problems if cascaded; for example, 'grep -E
+ ".*{10,}{10,}{10,}{10,}{10,}"' is likely to overflow a stack.
+ Fortunately, regular expressions like these are typically
+ artificial, and cascaded repetitions do not conform to POSIX so
+ cannot be used in portable programs anyway.
+
+This same caveat applies to 'gawk'.
+
---------- Footnotes ----------
(1) Use two backslashes if you're using a string constant with a
@@ -36221,6 +36237,8 @@ Index
* EBCDIC <2>: History summary. (line 20)
* effective group ID of gawk user: Auto-set. (line 172)
* effective user ID of gawk user: Auto-set. (line 180)
+* Eggert, Paul: Interval Expressions.
+ (line 36)
* egrep utility: Bracket Expressions. (line 34)
* egrep utility <1>: Egrep Program. (line 6)
* egrep.awk program: Egrep Program. (line 76)
@@ -38447,543 +38465,543 @@ Node: Regexp Operators173918
Node: Regexp Operator Details174403
Ref: Regexp Operator Details-Footnote-1181767
Node: Interval Expressions181914
-Ref: Interval Expressions-Footnote-1183335
-Node: Bracket Expressions183433
-Ref: table-char-classes185909
-Node: Leftmost Longest189235
-Node: Computed Regexps190538
-Node: GNU Regexp Operators193965
-Node: Case-sensitivity197702
-Ref: Case-sensitivity-Footnote-1200568
-Ref: Case-sensitivity-Footnote-2200803
-Node: Regexp Summary200911
-Node: Reading Files202377
-Node: Records204646
-Node: awk split records205721
-Node: gawk split records210421
-Ref: gawk split records-Footnote-1215495
-Node: Fields215532
-Node: Nonconstant Fields218273
-Ref: Nonconstant Fields-Footnote-1220509
-Node: Changing Fields220713
-Node: Field Separators226744
-Node: Default Field Splitting229442
-Node: Regexp Field Splitting230560
-Node: Single Character Fields234237
-Node: Command Line Field Separator235297
-Node: Full Line Fields238515
-Ref: Full Line Fields-Footnote-1240037
-Ref: Full Line Fields-Footnote-2240083
-Node: Field Splitting Summary240184
-Node: Constant Size242258
-Node: Fixed width data242990
-Node: Skipping intervening246457
-Node: Allowing trailing data247255
-Node: Fields with fixed data248292
-Node: Splitting By Content249810
-Ref: Splitting By Content-Footnote-1253593
-Node: More CSV253756
-Node: Testing field creation255348
-Node: Multiple Line256973
-Node: Getline263250
-Node: Plain Getline265719
-Node: Getline/Variable268292
-Node: Getline/File269443
-Node: Getline/Variable/File270831
-Ref: Getline/Variable/File-Footnote-1272436
-Node: Getline/Pipe272524
-Node: Getline/Variable/Pipe275228
-Node: Getline/Coprocess276363
-Node: Getline/Variable/Coprocess277630
-Node: Getline Notes278372
-Node: Getline Summary281169
-Ref: table-getline-variants281593
-Node: Read Timeout282341
-Ref: Read Timeout-Footnote-1286247
-Node: Retrying Input286305
-Node: Command-line directories287504
-Node: Input Summary288410
-Node: Input Exercises291582
-Node: Printing292016
-Node: Print293850
-Node: Print Examples295307
-Node: Output Separators298087
-Node: OFMT300104
-Node: Printf301460
-Node: Basic Printf302245
-Node: Control Letters303819
-Node: Format Modifiers308983
-Node: Printf Examples314998
-Node: Redirection317484
-Node: Special FD324325
-Ref: Special FD-Footnote-1327493
-Node: Special Files327567
-Node: Other Inherited Files328184
-Node: Special Network329185
-Node: Special Caveats330045
-Node: Close Files And Pipes330994
-Ref: table-close-pipe-return-values337901
-Ref: Close Files And Pipes-Footnote-1338714
-Ref: Close Files And Pipes-Footnote-2338862
-Node: Nonfatal339014
-Node: Output Summary341352
-Node: Output Exercises342574
-Node: Expressions343253
-Node: Values344441
-Node: Constants345119
-Node: Scalar Constants345810
-Ref: Scalar Constants-Footnote-1348320
-Node: Nondecimal-numbers348570
-Node: Regexp Constants351571
-Node: Using Constant Regexps352097
-Node: Standard Regexp Constants352719
-Node: Strong Regexp Constants355907
-Node: Variables359331
-Node: Using Variables359988
-Node: Assignment Options361898
-Node: Conversion364369
-Node: Strings And Numbers364893
-Ref: Strings And Numbers-Footnote-1367956
-Node: Locale influences conversions368065
-Ref: table-locale-affects370823
-Node: All Operators371441
-Node: Arithmetic Ops372070
-Node: Concatenation374786
-Ref: Concatenation-Footnote-1377633
-Node: Assignment Ops377740
-Ref: table-assign-ops382731
-Node: Increment Ops384044
-Node: Truth Values and Conditions387504
-Node: Truth Values388578
-Node: Typing and Comparison389626
-Node: Variable Typing390446
-Ref: Variable Typing-Footnote-1396909
-Ref: Variable Typing-Footnote-2396981
-Node: Comparison Operators397058
-Ref: table-relational-ops397477
-Node: POSIX String Comparison400972
-Ref: POSIX String Comparison-Footnote-1402667
-Ref: POSIX String Comparison-Footnote-2402806
-Node: Boolean Ops402890
-Ref: Boolean Ops-Footnote-1407372
-Node: Conditional Exp407464
-Node: Function Calls409200
-Node: Precedence413077
-Node: Locales416736
-Node: Expressions Summary418368
-Node: Patterns and Actions420941
-Node: Pattern Overview422061
-Node: Regexp Patterns423738
-Node: Expression Patterns424280
-Node: Ranges428061
-Node: BEGIN/END431169
-Node: Using BEGIN/END431930
-Ref: Using BEGIN/END-Footnote-1434684
-Node: I/O And BEGIN/END434790
-Node: BEGINFILE/ENDFILE437103
-Node: Empty440334
-Node: Using Shell Variables440651
-Node: Action Overview442925
-Node: Statements445250
-Node: If Statement447098
-Node: While Statement448593
-Node: Do Statement450621
-Node: For Statement451769
-Node: Switch Statement454940
-Node: Break Statement457381
-Node: Continue Statement459473
-Node: Next Statement461300
-Node: Nextfile Statement463683
-Node: Exit Statement466372
-Node: Built-in Variables468775
-Node: User-modified469908
-Node: Auto-set477675
-Ref: Auto-set-Footnote-1494482
-Ref: Auto-set-Footnote-2494688
-Node: ARGC and ARGV494744
-Node: Pattern Action Summary498957
-Node: Arrays501387
-Node: Array Basics502716
-Node: Array Intro503560
-Ref: figure-array-elements505535
-Ref: Array Intro-Footnote-1508239
-Node: Reference to Elements508367
-Node: Assigning Elements510831
-Node: Array Example511322
-Node: Scanning an Array513081
-Node: Controlling Scanning516103
-Ref: Controlling Scanning-Footnote-1522559
-Node: Numeric Array Subscripts522875
-Node: Uninitialized Subscripts525059
-Node: Delete526678
-Ref: Delete-Footnote-1529430
-Node: Multidimensional529487
-Node: Multiscanning532582
-Node: Arrays of Arrays534173
-Node: Arrays Summary538941
-Node: Functions541034
-Node: Built-in542072
-Node: Calling Built-in543153
-Node: Numeric Functions545149
-Ref: Numeric Functions-Footnote-1549177
-Ref: Numeric Functions-Footnote-2549825
-Ref: Numeric Functions-Footnote-3549873
-Node: String Functions550145
-Ref: String Functions-Footnote-1574660
-Ref: String Functions-Footnote-2574788
-Ref: String Functions-Footnote-3575036
-Node: Gory Details575123
-Ref: table-sub-escapes576914
-Ref: table-sub-proposed578433
-Ref: table-posix-sub579796
-Ref: table-gensub-escapes581337
-Ref: Gory Details-Footnote-1582160
-Node: I/O Functions582314
-Ref: table-system-return-values588768
-Ref: I/O Functions-Footnote-1590848
-Ref: I/O Functions-Footnote-2590996
-Node: Time Functions591116
-Ref: Time Functions-Footnote-1601787
-Ref: Time Functions-Footnote-2601855
-Ref: Time Functions-Footnote-3602013
-Ref: Time Functions-Footnote-4602124
-Ref: Time Functions-Footnote-5602236
-Ref: Time Functions-Footnote-6602463
-Node: Bitwise Functions602729
-Ref: table-bitwise-ops603323
-Ref: Bitwise Functions-Footnote-1609386
-Ref: Bitwise Functions-Footnote-2609559
-Node: Type Functions609750
-Node: I18N Functions612613
-Node: User-defined614264
-Node: Definition Syntax615076
-Ref: Definition Syntax-Footnote-1620770
-Node: Function Example620841
-Ref: Function Example-Footnote-1623763
-Node: Function Calling623785
-Node: Calling A Function624373
-Node: Variable Scope625331
-Node: Pass By Value/Reference628325
-Node: Function Caveats630969
-Ref: Function Caveats-Footnote-1633016
-Node: Return Statement633136
-Node: Dynamic Typing636115
-Node: Indirect Calls637045
-Ref: Indirect Calls-Footnote-1647297
-Node: Functions Summary647425
-Node: Library Functions650130
-Ref: Library Functions-Footnote-1653737
-Ref: Library Functions-Footnote-2653880
-Node: Library Names654051
-Ref: Library Names-Footnote-1657718
-Ref: Library Names-Footnote-2657941
-Node: General Functions658027
-Node: Strtonum Function659209
-Node: Assert Function662231
-Node: Round Function665557
-Node: Cliff Random Function667097
-Node: Ordinal Functions668113
-Ref: Ordinal Functions-Footnote-1671176
-Ref: Ordinal Functions-Footnote-2671428
-Node: Join Function671638
-Ref: Join Function-Footnote-1673408
-Node: Getlocaltime Function673608
-Node: Readfile Function677350
-Node: Shell Quoting679327
-Node: Isnumeric Function680755
-Node: Data File Management682143
-Node: Filetrans Function682775
-Node: Rewind Function686871
-Node: File Checking688780
-Ref: File Checking-Footnote-1690114
-Node: Empty Files690315
-Node: Ignoring Assigns692294
-Node: Getopt Function693844
-Ref: Getopt Function-Footnote-1709067
-Node: Passwd Functions709267
-Ref: Passwd Functions-Footnote-1718106
-Node: Group Functions718194
-Ref: Group Functions-Footnote-1726092
-Node: Walking Arrays726299
-Node: Library Functions Summary729307
-Node: Library Exercises730713
-Node: Sample Programs731178
-Node: Running Examples731948
-Node: Clones732676
-Node: Cut Program733900
-Node: Egrep Program744040
-Node: Id Program753041
-Node: Split Program762988
-Ref: Split Program-Footnote-1772881
-Node: Tee Program773054
-Node: Uniq Program775844
-Node: Wc Program783432
-Node: Bytes vs. Characters783819
-Node: Using extensions785367
-Node: wc program786121
-Node: Miscellaneous Programs790986
-Node: Dupword Program792199
-Node: Alarm Program794229
-Node: Translate Program799084
-Ref: Translate Program-Footnote-1803649
-Node: Labels Program803919
-Ref: Labels Program-Footnote-1807270
-Node: Word Sorting807354
-Node: History Sorting811426
-Node: Extract Program813651
-Node: Simple Sed821705
-Node: Igawk Program824779
-Ref: Igawk Program-Footnote-1839110
-Ref: Igawk Program-Footnote-2839312
-Ref: Igawk Program-Footnote-3839434
-Node: Anagram Program839549
-Node: Signature Program842611
-Node: Programs Summary843858
-Node: Programs Exercises845072
-Ref: Programs Exercises-Footnote-1849202
-Node: Advanced Features849288
-Node: Nondecimal Data851355
-Node: Array Sorting852946
-Node: Controlling Array Traversal853646
-Ref: Controlling Array Traversal-Footnote-1862014
-Node: Array Sorting Functions862132
-Ref: Array Sorting Functions-Footnote-1867506
-Node: Two-way I/O867702
-Ref: Two-way I/O-Footnote-1875428
-Ref: Two-way I/O-Footnote-2875615
-Node: TCP/IP Networking875697
-Node: Profiling878815
-Node: Extension Philosophy888124
-Node: Advanced Features Summary889603
-Node: Internationalization891618
-Node: I18N and L10N893292
-Node: Explaining gettext893979
-Ref: Explaining gettext-Footnote-1899871
-Ref: Explaining gettext-Footnote-2900056
-Node: Programmer i18n900221
-Ref: Programmer i18n-Footnote-1905170
-Node: Translator i18n905219
-Node: String Extraction906013
-Ref: String Extraction-Footnote-1907145
-Node: Printf Ordering907231
-Ref: Printf Ordering-Footnote-1910017
-Node: I18N Portability910081
-Ref: I18N Portability-Footnote-1912537
-Node: I18N Example912600
-Ref: I18N Example-Footnote-1915875
-Ref: I18N Example-Footnote-2915948
-Node: Gawk I18N916057
-Node: I18N Summary916706
-Node: Debugger918047
-Node: Debugging919047
-Node: Debugging Concepts919488
-Node: Debugging Terms921297
-Node: Awk Debugging923872
-Ref: Awk Debugging-Footnote-1924817
-Node: Sample Debugging Session924949
-Node: Debugger Invocation925483
-Node: Finding The Bug926869
-Node: List of Debugger Commands933343
-Node: Breakpoint Control934676
-Node: Debugger Execution Control938370
-Node: Viewing And Changing Data941732
-Node: Execution Stack945273
-Node: Debugger Info946910
-Node: Miscellaneous Debugger Commands950981
-Node: Readline Support956043
-Node: Limitations956939
-Node: Debugging Summary959493
-Node: Namespaces960772
-Node: Global Namespace961883
-Node: Qualified Names963281
-Node: Default Namespace964280
-Node: Changing The Namespace965021
-Node: Naming Rules966635
-Node: Internal Name Management968483
-Node: Namespace Example969525
-Node: Namespace And Features972087
-Node: Namespace Summary973522
-Node: Arbitrary Precision Arithmetic974999
-Node: Computer Arithmetic976486
-Ref: table-numeric-ranges980252
-Ref: table-floating-point-ranges980745
-Ref: Computer Arithmetic-Footnote-1981403
-Node: Math Definitions981460
-Ref: table-ieee-formats984776
-Ref: Math Definitions-Footnote-1985379
-Node: MPFR features985484
-Node: FP Math Caution987202
-Ref: FP Math Caution-Footnote-1988274
-Node: Inexactness of computations988643
-Node: Inexact representation989603
-Node: Comparing FP Values990963
-Node: Errors accumulate992204
-Node: Getting Accuracy993637
-Node: Try To Round996347
-Node: Setting precision997246
-Ref: table-predefined-precision-strings997943
-Node: Setting the rounding mode999773
-Ref: table-gawk-rounding-modes1000147
-Ref: Setting the rounding mode-Footnote-11004078
-Node: Arbitrary Precision Integers1004257
-Ref: Arbitrary Precision Integers-Footnote-11007432
-Node: Checking for MPFR1007581
-Node: POSIX Floating Point Problems1009055
-Ref: POSIX Floating Point Problems-Footnote-11013340
-Node: Floating point summary1013378
-Node: Dynamic Extensions1015568
-Node: Extension Intro1017121
-Node: Plugin License1018387
-Node: Extension Mechanism Outline1019184
-Ref: figure-load-extension1019623
-Ref: figure-register-new-function1021188
-Ref: figure-call-new-function1022280
-Node: Extension API Description1024342
-Node: Extension API Functions Introduction1026055
-Ref: table-api-std-headers1027891
-Node: General Data Types1032140
-Ref: General Data Types-Footnote-11040770
-Node: Memory Allocation Functions1041069
-Ref: Memory Allocation Functions-Footnote-11045570
-Node: Constructor Functions1045669
-Node: API Ownership of MPFR and GMP Values1049135
-Node: Registration Functions1050448
-Node: Extension Functions1051148
-Node: Exit Callback Functions1056470
-Node: Extension Version String1057720
-Node: Input Parsers1058383
-Node: Output Wrappers1071104
-Node: Two-way processors1075616
-Node: Printing Messages1077881
-Ref: Printing Messages-Footnote-11079052
-Node: Updating ERRNO1079205
-Node: Requesting Values1079944
-Ref: table-value-types-returned1080681
-Node: Accessing Parameters1081617
-Node: Symbol Table Access1082854
-Node: Symbol table by name1083366
-Ref: Symbol table by name-Footnote-11086390
-Node: Symbol table by cookie1086518
-Ref: Symbol table by cookie-Footnote-11090703
-Node: Cached values1090767
-Ref: Cached values-Footnote-11094303
-Node: Array Manipulation1094456
-Ref: Array Manipulation-Footnote-11095547
-Node: Array Data Types1095584
-Ref: Array Data Types-Footnote-11098242
-Node: Array Functions1098334
-Node: Flattening Arrays1102832
-Node: Creating Arrays1109808
-Node: Redirection API1114575
-Node: Extension API Variables1117408
-Node: Extension Versioning1118119
-Ref: gawk-api-version1118548
-Node: Extension GMP/MPFR Versioning1120279
-Node: Extension API Informational Variables1121907
-Node: Extension API Boilerplate1122980
-Node: Changes from API V11126954
-Node: Finding Extensions1128526
-Node: Extension Example1129085
-Node: Internal File Description1129883
-Node: Internal File Ops1133963
-Ref: Internal File Ops-Footnote-11145313
-Node: Using Internal File Ops1145453
-Ref: Using Internal File Ops-Footnote-11147836
-Node: Extension Samples1148110
-Node: Extension Sample File Functions1149639
-Node: Extension Sample Fnmatch1157288
-Node: Extension Sample Fork1158775
-Node: Extension Sample Inplace1159993
-Node: Extension Sample Ord1163619
-Node: Extension Sample Readdir1164455
-Ref: table-readdir-file-types1165344
-Node: Extension Sample Revout1166411
-Node: Extension Sample Rev2way1167000
-Node: Extension Sample Read write array1167740
-Node: Extension Sample Readfile1169682
-Node: Extension Sample Time1170777
-Node: Extension Sample API Tests1172529
-Node: gawkextlib1173021
-Node: Extension summary1175939
-Node: Extension Exercises1179641
-Node: Language History1180883
-Node: V7/SVR3.11182539
-Node: SVR41184691
-Node: POSIX1186125
-Node: BTL1187506
-Node: POSIX/GNU1188235
-Node: Feature History1194013
-Node: Common Extensions1211188
-Node: Ranges and Locales1212471
-Ref: Ranges and Locales-Footnote-11217087
-Ref: Ranges and Locales-Footnote-21217114
-Ref: Ranges and Locales-Footnote-31217349
-Node: Contributors1217572
-Node: History summary1223569
-Node: Installation1224949
-Node: Gawk Distribution1225893
-Node: Getting1226377
-Node: Extracting1227340
-Node: Distribution contents1228978
-Node: Unix Installation1235458
-Node: Quick Installation1236140
-Node: Compiling with MPFR1238621
-Node: Shell Startup Files1239313
-Node: Additional Configuration Options1240402
-Node: Configuration Philosophy1242717
-Node: Non-Unix Installation1245086
-Node: PC Installation1245546
-Node: PC Binary Installation1246384
-Node: PC Compiling1246819
-Node: PC Using1247936
-Node: Cygwin1251489
-Node: MSYS1252713
-Node: VMS Installation1253315
-Node: VMS Compilation1254034
-Ref: VMS Compilation-Footnote-11255263
-Node: VMS Dynamic Extensions1255321
-Node: VMS Installation Details1257006
-Node: VMS Running1259268
-Node: VMS GNV1263547
-Node: Bugs1264261
-Node: Bug definition1265141
-Node: Bug address1267645
-Node: Usenet1271033
-Node: Performance bugs1272042
-Node: Asking for help1274963
-Node: Maintainers1276925
-Node: Other Versions1278119
-Node: Installation summary1285971
-Node: Notes1287335
-Node: Compatibility Mode1288129
-Node: Additions1288911
-Node: Accessing The Source1289836
-Node: Adding Code1291273
-Node: New Ports1297492
-Node: Derived Files1301867
-Ref: Derived Files-Footnote-11307527
-Ref: Derived Files-Footnote-21307562
-Ref: Derived Files-Footnote-31308160
-Node: Future Extensions1308274
-Node: Implementation Limitations1308932
-Node: Extension Design1310142
-Node: Old Extension Problems1311286
-Ref: Old Extension Problems-Footnote-11312804
-Node: Extension New Mechanism Goals1312861
-Ref: Extension New Mechanism Goals-Footnote-11316225
-Node: Extension Other Design Decisions1316414
-Node: Extension Future Growth1318527
-Node: Notes summary1319133
-Node: Basic Concepts1320291
-Node: Basic High Level1320972
-Ref: figure-general-flow1321254
-Ref: figure-process-flow1321939
-Ref: Basic High Level-Footnote-11325240
-Node: Basic Data Typing1325425
-Node: Glossary1328753
-Node: Copying1360638
-Node: GNU Free Documentation License1398181
-Node: Index1423301
+Ref: Interval Expressions-Footnote-1184114
+Node: Bracket Expressions184212
+Ref: table-char-classes186688
+Node: Leftmost Longest190014
+Node: Computed Regexps191317
+Node: GNU Regexp Operators194744
+Node: Case-sensitivity198481
+Ref: Case-sensitivity-Footnote-1201347
+Ref: Case-sensitivity-Footnote-2201582
+Node: Regexp Summary201690
+Node: Reading Files203156
+Node: Records205425
+Node: awk split records206500
+Node: gawk split records211200
+Ref: gawk split records-Footnote-1216274
+Node: Fields216311
+Node: Nonconstant Fields219052
+Ref: Nonconstant Fields-Footnote-1221288
+Node: Changing Fields221492
+Node: Field Separators227523
+Node: Default Field Splitting230221
+Node: Regexp Field Splitting231339
+Node: Single Character Fields235016
+Node: Command Line Field Separator236076
+Node: Full Line Fields239294
+Ref: Full Line Fields-Footnote-1240816
+Ref: Full Line Fields-Footnote-2240862
+Node: Field Splitting Summary240963
+Node: Constant Size243037
+Node: Fixed width data243769
+Node: Skipping intervening247236
+Node: Allowing trailing data248034
+Node: Fields with fixed data249071
+Node: Splitting By Content250589
+Ref: Splitting By Content-Footnote-1254372
+Node: More CSV254535
+Node: Testing field creation256127
+Node: Multiple Line257752
+Node: Getline264029
+Node: Plain Getline266498
+Node: Getline/Variable269071
+Node: Getline/File270222
+Node: Getline/Variable/File271610
+Ref: Getline/Variable/File-Footnote-1273215
+Node: Getline/Pipe273303
+Node: Getline/Variable/Pipe276007
+Node: Getline/Coprocess277142
+Node: Getline/Variable/Coprocess278409
+Node: Getline Notes279151
+Node: Getline Summary281948
+Ref: table-getline-variants282372
+Node: Read Timeout283120
+Ref: Read Timeout-Footnote-1287026
+Node: Retrying Input287084
+Node: Command-line directories288283
+Node: Input Summary289189
+Node: Input Exercises292361
+Node: Printing292795
+Node: Print294629
+Node: Print Examples296086
+Node: Output Separators298866
+Node: OFMT300883
+Node: Printf302239
+Node: Basic Printf303024
+Node: Control Letters304598
+Node: Format Modifiers309762
+Node: Printf Examples315777
+Node: Redirection318263
+Node: Special FD325104
+Ref: Special FD-Footnote-1328272
+Node: Special Files328346
+Node: Other Inherited Files328963
+Node: Special Network329964
+Node: Special Caveats330824
+Node: Close Files And Pipes331773
+Ref: table-close-pipe-return-values338680
+Ref: Close Files And Pipes-Footnote-1339493
+Ref: Close Files And Pipes-Footnote-2339641
+Node: Nonfatal339793
+Node: Output Summary342131
+Node: Output Exercises343353
+Node: Expressions344032
+Node: Values345220
+Node: Constants345898
+Node: Scalar Constants346589
+Ref: Scalar Constants-Footnote-1349099
+Node: Nondecimal-numbers349349
+Node: Regexp Constants352350
+Node: Using Constant Regexps352876
+Node: Standard Regexp Constants353498
+Node: Strong Regexp Constants356686
+Node: Variables360110
+Node: Using Variables360767
+Node: Assignment Options362677
+Node: Conversion365148
+Node: Strings And Numbers365672
+Ref: Strings And Numbers-Footnote-1368735
+Node: Locale influences conversions368844
+Ref: table-locale-affects371602
+Node: All Operators372220
+Node: Arithmetic Ops372849
+Node: Concatenation375565
+Ref: Concatenation-Footnote-1378412
+Node: Assignment Ops378519
+Ref: table-assign-ops383510
+Node: Increment Ops384823
+Node: Truth Values and Conditions388283
+Node: Truth Values389357
+Node: Typing and Comparison390405
+Node: Variable Typing391225
+Ref: Variable Typing-Footnote-1397688
+Ref: Variable Typing-Footnote-2397760
+Node: Comparison Operators397837
+Ref: table-relational-ops398256
+Node: POSIX String Comparison401751
+Ref: POSIX String Comparison-Footnote-1403446
+Ref: POSIX String Comparison-Footnote-2403585
+Node: Boolean Ops403669
+Ref: Boolean Ops-Footnote-1408151
+Node: Conditional Exp408243
+Node: Function Calls409979
+Node: Precedence413856
+Node: Locales417515
+Node: Expressions Summary419147
+Node: Patterns and Actions421720
+Node: Pattern Overview422840
+Node: Regexp Patterns424517
+Node: Expression Patterns425059
+Node: Ranges428840
+Node: BEGIN/END431948
+Node: Using BEGIN/END432709
+Ref: Using BEGIN/END-Footnote-1435463
+Node: I/O And BEGIN/END435569
+Node: BEGINFILE/ENDFILE437882
+Node: Empty441113
+Node: Using Shell Variables441430
+Node: Action Overview443704
+Node: Statements446029
+Node: If Statement447877
+Node: While Statement449372
+Node: Do Statement451400
+Node: For Statement452548
+Node: Switch Statement455719
+Node: Break Statement458160
+Node: Continue Statement460252
+Node: Next Statement462079
+Node: Nextfile Statement464462
+Node: Exit Statement467151
+Node: Built-in Variables469554
+Node: User-modified470687
+Node: Auto-set478454
+Ref: Auto-set-Footnote-1495261
+Ref: Auto-set-Footnote-2495467
+Node: ARGC and ARGV495523
+Node: Pattern Action Summary499736
+Node: Arrays502166
+Node: Array Basics503495
+Node: Array Intro504339
+Ref: figure-array-elements506314
+Ref: Array Intro-Footnote-1509018
+Node: Reference to Elements509146
+Node: Assigning Elements511610
+Node: Array Example512101
+Node: Scanning an Array513860
+Node: Controlling Scanning516882
+Ref: Controlling Scanning-Footnote-1523338
+Node: Numeric Array Subscripts523654
+Node: Uninitialized Subscripts525838
+Node: Delete527457
+Ref: Delete-Footnote-1530209
+Node: Multidimensional530266
+Node: Multiscanning533361
+Node: Arrays of Arrays534952
+Node: Arrays Summary539720
+Node: Functions541813
+Node: Built-in542851
+Node: Calling Built-in543932
+Node: Numeric Functions545928
+Ref: Numeric Functions-Footnote-1549956
+Ref: Numeric Functions-Footnote-2550604
+Ref: Numeric Functions-Footnote-3550652
+Node: String Functions550924
+Ref: String Functions-Footnote-1575439
+Ref: String Functions-Footnote-2575567
+Ref: String Functions-Footnote-3575815
+Node: Gory Details575902
+Ref: table-sub-escapes577693
+Ref: table-sub-proposed579212
+Ref: table-posix-sub580575
+Ref: table-gensub-escapes582116
+Ref: Gory Details-Footnote-1582939
+Node: I/O Functions583093
+Ref: table-system-return-values589547
+Ref: I/O Functions-Footnote-1591627
+Ref: I/O Functions-Footnote-2591775
+Node: Time Functions591895
+Ref: Time Functions-Footnote-1602566
+Ref: Time Functions-Footnote-2602634
+Ref: Time Functions-Footnote-3602792
+Ref: Time Functions-Footnote-4602903
+Ref: Time Functions-Footnote-5603015
+Ref: Time Functions-Footnote-6603242
+Node: Bitwise Functions603508
+Ref: table-bitwise-ops604102
+Ref: Bitwise Functions-Footnote-1610165
+Ref: Bitwise Functions-Footnote-2610338
+Node: Type Functions610529
+Node: I18N Functions613392
+Node: User-defined615043
+Node: Definition Syntax615855
+Ref: Definition Syntax-Footnote-1621549
+Node: Function Example621620
+Ref: Function Example-Footnote-1624542
+Node: Function Calling624564
+Node: Calling A Function625152
+Node: Variable Scope626110
+Node: Pass By Value/Reference629104
+Node: Function Caveats631748
+Ref: Function Caveats-Footnote-1633795
+Node: Return Statement633915
+Node: Dynamic Typing636894
+Node: Indirect Calls637824
+Ref: Indirect Calls-Footnote-1648076
+Node: Functions Summary648204
+Node: Library Functions650909
+Ref: Library Functions-Footnote-1654516
+Ref: Library Functions-Footnote-2654659
+Node: Library Names654830
+Ref: Library Names-Footnote-1658497
+Ref: Library Names-Footnote-2658720
+Node: General Functions658806
+Node: Strtonum Function659988
+Node: Assert Function663010
+Node: Round Function666336
+Node: Cliff Random Function667876
+Node: Ordinal Functions668892
+Ref: Ordinal Functions-Footnote-1671955
+Ref: Ordinal Functions-Footnote-2672207
+Node: Join Function672417
+Ref: Join Function-Footnote-1674187
+Node: Getlocaltime Function674387
+Node: Readfile Function678129
+Node: Shell Quoting680106
+Node: Isnumeric Function681534
+Node: Data File Management682922
+Node: Filetrans Function683554
+Node: Rewind Function687650
+Node: File Checking689559
+Ref: File Checking-Footnote-1690893
+Node: Empty Files691094
+Node: Ignoring Assigns693073
+Node: Getopt Function694623
+Ref: Getopt Function-Footnote-1709846
+Node: Passwd Functions710046
+Ref: Passwd Functions-Footnote-1718885
+Node: Group Functions718973
+Ref: Group Functions-Footnote-1726871
+Node: Walking Arrays727078
+Node: Library Functions Summary730086
+Node: Library Exercises731492
+Node: Sample Programs731957
+Node: Running Examples732727
+Node: Clones733455
+Node: Cut Program734679
+Node: Egrep Program744819
+Node: Id Program753820
+Node: Split Program763767
+Ref: Split Program-Footnote-1773660
+Node: Tee Program773833
+Node: Uniq Program776623
+Node: Wc Program784211
+Node: Bytes vs. Characters784598
+Node: Using extensions786146
+Node: wc program786900
+Node: Miscellaneous Programs791765
+Node: Dupword Program792978
+Node: Alarm Program795008
+Node: Translate Program799863
+Ref: Translate Program-Footnote-1804428
+Node: Labels Program804698
+Ref: Labels Program-Footnote-1808049
+Node: Word Sorting808133
+Node: History Sorting812205
+Node: Extract Program814430
+Node: Simple Sed822484
+Node: Igawk Program825558
+Ref: Igawk Program-Footnote-1839889
+Ref: Igawk Program-Footnote-2840091
+Ref: Igawk Program-Footnote-3840213
+Node: Anagram Program840328
+Node: Signature Program843390
+Node: Programs Summary844637
+Node: Programs Exercises845851
+Ref: Programs Exercises-Footnote-1849981
+Node: Advanced Features850067
+Node: Nondecimal Data852134
+Node: Array Sorting853725
+Node: Controlling Array Traversal854425
+Ref: Controlling Array Traversal-Footnote-1862793
+Node: Array Sorting Functions862911
+Ref: Array Sorting Functions-Footnote-1868285
+Node: Two-way I/O868481
+Ref: Two-way I/O-Footnote-1876207
+Ref: Two-way I/O-Footnote-2876394
+Node: TCP/IP Networking876476
+Node: Profiling879594
+Node: Extension Philosophy888903
+Node: Advanced Features Summary890382
+Node: Internationalization892397
+Node: I18N and L10N894071
+Node: Explaining gettext894758
+Ref: Explaining gettext-Footnote-1900650
+Ref: Explaining gettext-Footnote-2900835
+Node: Programmer i18n901000
+Ref: Programmer i18n-Footnote-1905949
+Node: Translator i18n905998
+Node: String Extraction906792
+Ref: String Extraction-Footnote-1907924
+Node: Printf Ordering908010
+Ref: Printf Ordering-Footnote-1910796
+Node: I18N Portability910860
+Ref: I18N Portability-Footnote-1913316
+Node: I18N Example913379
+Ref: I18N Example-Footnote-1916654
+Ref: I18N Example-Footnote-2916727
+Node: Gawk I18N916836
+Node: I18N Summary917485
+Node: Debugger918826
+Node: Debugging919826
+Node: Debugging Concepts920267
+Node: Debugging Terms922076
+Node: Awk Debugging924651
+Ref: Awk Debugging-Footnote-1925596
+Node: Sample Debugging Session925728
+Node: Debugger Invocation926262
+Node: Finding The Bug927648
+Node: List of Debugger Commands934122
+Node: Breakpoint Control935455
+Node: Debugger Execution Control939149
+Node: Viewing And Changing Data942511
+Node: Execution Stack946052
+Node: Debugger Info947689
+Node: Miscellaneous Debugger Commands951760
+Node: Readline Support956822
+Node: Limitations957718
+Node: Debugging Summary960272
+Node: Namespaces961551
+Node: Global Namespace962662
+Node: Qualified Names964060
+Node: Default Namespace965059
+Node: Changing The Namespace965800
+Node: Naming Rules967414
+Node: Internal Name Management969262
+Node: Namespace Example970304
+Node: Namespace And Features972866
+Node: Namespace Summary974301
+Node: Arbitrary Precision Arithmetic975778
+Node: Computer Arithmetic977265
+Ref: table-numeric-ranges981031
+Ref: table-floating-point-ranges981524
+Ref: Computer Arithmetic-Footnote-1982182
+Node: Math Definitions982239
+Ref: table-ieee-formats985555
+Ref: Math Definitions-Footnote-1986158
+Node: MPFR features986263
+Node: FP Math Caution987981
+Ref: FP Math Caution-Footnote-1989053
+Node: Inexactness of computations989422
+Node: Inexact representation990382
+Node: Comparing FP Values991742
+Node: Errors accumulate992983
+Node: Getting Accuracy994416
+Node: Try To Round997126
+Node: Setting precision998025
+Ref: table-predefined-precision-strings998722
+Node: Setting the rounding mode1000552
+Ref: table-gawk-rounding-modes1000926
+Ref: Setting the rounding mode-Footnote-11004857
+Node: Arbitrary Precision Integers1005036
+Ref: Arbitrary Precision Integers-Footnote-11008211
+Node: Checking for MPFR1008360
+Node: POSIX Floating Point Problems1009834
+Ref: POSIX Floating Point Problems-Footnote-11014119
+Node: Floating point summary1014157
+Node: Dynamic Extensions1016347
+Node: Extension Intro1017900
+Node: Plugin License1019166
+Node: Extension Mechanism Outline1019963
+Ref: figure-load-extension1020402
+Ref: figure-register-new-function1021967
+Ref: figure-call-new-function1023059
+Node: Extension API Description1025121
+Node: Extension API Functions Introduction1026834
+Ref: table-api-std-headers1028670
+Node: General Data Types1032919
+Ref: General Data Types-Footnote-11041549
+Node: Memory Allocation Functions1041848
+Ref: Memory Allocation Functions-Footnote-11046349
+Node: Constructor Functions1046448
+Node: API Ownership of MPFR and GMP Values1049914
+Node: Registration Functions1051227
+Node: Extension Functions1051927
+Node: Exit Callback Functions1057249
+Node: Extension Version String1058499
+Node: Input Parsers1059162
+Node: Output Wrappers1071883
+Node: Two-way processors1076395
+Node: Printing Messages1078660
+Ref: Printing Messages-Footnote-11079831
+Node: Updating ERRNO1079984
+Node: Requesting Values1080723
+Ref: table-value-types-returned1081460
+Node: Accessing Parameters1082396
+Node: Symbol Table Access1083633
+Node: Symbol table by name1084145
+Ref: Symbol table by name-Footnote-11087169
+Node: Symbol table by cookie1087297
+Ref: Symbol table by cookie-Footnote-11091482
+Node: Cached values1091546
+Ref: Cached values-Footnote-11095082
+Node: Array Manipulation1095235
+Ref: Array Manipulation-Footnote-11096326
+Node: Array Data Types1096363
+Ref: Array Data Types-Footnote-11099021
+Node: Array Functions1099113
+Node: Flattening Arrays1103611
+Node: Creating Arrays1110587
+Node: Redirection API1115354
+Node: Extension API Variables1118187
+Node: Extension Versioning1118898
+Ref: gawk-api-version1119327
+Node: Extension GMP/MPFR Versioning1121058
+Node: Extension API Informational Variables1122686
+Node: Extension API Boilerplate1123759
+Node: Changes from API V11127733
+Node: Finding Extensions1129305
+Node: Extension Example1129864
+Node: Internal File Description1130662
+Node: Internal File Ops1134742
+Ref: Internal File Ops-Footnote-11146092
+Node: Using Internal File Ops1146232
+Ref: Using Internal File Ops-Footnote-11148615
+Node: Extension Samples1148889
+Node: Extension Sample File Functions1150418
+Node: Extension Sample Fnmatch1158067
+Node: Extension Sample Fork1159554
+Node: Extension Sample Inplace1160772
+Node: Extension Sample Ord1164398
+Node: Extension Sample Readdir1165234
+Ref: table-readdir-file-types1166123
+Node: Extension Sample Revout1167190
+Node: Extension Sample Rev2way1167779
+Node: Extension Sample Read write array1168519
+Node: Extension Sample Readfile1170461
+Node: Extension Sample Time1171556
+Node: Extension Sample API Tests1173308
+Node: gawkextlib1173800
+Node: Extension summary1176718
+Node: Extension Exercises1180420
+Node: Language History1181662
+Node: V7/SVR3.11183318
+Node: SVR41185470
+Node: POSIX1186904
+Node: BTL1188285
+Node: POSIX/GNU1189014
+Node: Feature History1194792
+Node: Common Extensions1211967
+Node: Ranges and Locales1213250
+Ref: Ranges and Locales-Footnote-11217866
+Ref: Ranges and Locales-Footnote-21217893
+Ref: Ranges and Locales-Footnote-31218128
+Node: Contributors1218351
+Node: History summary1224348
+Node: Installation1225728
+Node: Gawk Distribution1226672
+Node: Getting1227156
+Node: Extracting1228119
+Node: Distribution contents1229757
+Node: Unix Installation1236237
+Node: Quick Installation1236919
+Node: Compiling with MPFR1239400
+Node: Shell Startup Files1240092
+Node: Additional Configuration Options1241181
+Node: Configuration Philosophy1243496
+Node: Non-Unix Installation1245865
+Node: PC Installation1246325
+Node: PC Binary Installation1247163
+Node: PC Compiling1247598
+Node: PC Using1248715
+Node: Cygwin1252268
+Node: MSYS1253492
+Node: VMS Installation1254094
+Node: VMS Compilation1254813
+Ref: VMS Compilation-Footnote-11256042
+Node: VMS Dynamic Extensions1256100
+Node: VMS Installation Details1257785
+Node: VMS Running1260047
+Node: VMS GNV1264326
+Node: Bugs1265040
+Node: Bug definition1265920
+Node: Bug address1268424
+Node: Usenet1271812
+Node: Performance bugs1272821
+Node: Asking for help1275742
+Node: Maintainers1277704
+Node: Other Versions1278898
+Node: Installation summary1286750
+Node: Notes1288114
+Node: Compatibility Mode1288908
+Node: Additions1289690
+Node: Accessing The Source1290615
+Node: Adding Code1292052
+Node: New Ports1298271
+Node: Derived Files1302646
+Ref: Derived Files-Footnote-11308306
+Ref: Derived Files-Footnote-21308341
+Ref: Derived Files-Footnote-31308939
+Node: Future Extensions1309053
+Node: Implementation Limitations1309711
+Node: Extension Design1310921
+Node: Old Extension Problems1312065
+Ref: Old Extension Problems-Footnote-11313583
+Node: Extension New Mechanism Goals1313640
+Ref: Extension New Mechanism Goals-Footnote-11317004
+Node: Extension Other Design Decisions1317193
+Node: Extension Future Growth1319306
+Node: Notes summary1319912
+Node: Basic Concepts1321070
+Node: Basic High Level1321751
+Ref: figure-general-flow1322033
+Ref: figure-process-flow1322718
+Ref: Basic High Level-Footnote-11326019
+Node: Basic Data Typing1326204
+Node: Glossary1329532
+Node: Copying1361417
+Node: GNU Free Documentation License1398960
+Node: Index1424080

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 7d5aa4dc..84707907 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -6093,17 +6093,37 @@ regexp constants are valid and work the way you want them to, using
any version of @command{awk}.@footnote{Use two backslashes if you're
using a string constant with a regexp operator or function.}
-Finally, when @samp{@{} and @samp{@}} appear in regexp constants
+When @samp{@{} and @samp{@}} appear in regexp constants
in a way that cannot be interpreted as an interval expression
(such as @code{/q@{a@}/}), then they stand for themselves.
As mentioned, interval expressions were not traditionally available
in @command{awk}. In March of 2019, BWK @command{awk} (finally) acquired them.
-
Nonetheless, because they were not available for
so many decades, @command{gawk} continues to not supply them
when in compatibility mode (@pxref{Options}).
+POSIX says that interval expressions containing repetition counts greater
+than 255 produce unspecified results.
+
+@cindex Eggert, Paul
+In the manual for GNU @command{grep}, Paul Eggert notes the following:
+
+@quotation
+Interval expressions may be implemented internally via repetition.
+For example, @samp{^(a|bc)@{2,4@}$} might be implemented as
+@samp{^(a|bc)(a|bc)((a|bc)(a|bc)?)?$}. A large repetition count may
+exhaust memory or greatly slow matching. Even small counts can cause
+problems if cascaded; for example, @samp{grep -E
+".*@{10,@}@{10,@}@{10,@}@{10,@}@{10,@}"} is likely to overflow a
+stack. Fortunately, regular expressions like these are typically
+artificial, and cascaded repetitions do not conform to POSIX so cannot
+be used in portable programs anyway.
+@end quotation
+
+@noindent
+This same caveat applies to @command{gawk}.
+
@node Bracket Expressions
@section Using Bracket Expressions
@cindex bracket expressions
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 6ace2e85..9513cf11 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -5821,17 +5821,37 @@ regexp constants are valid and work the way you want them to, using
any version of @command{awk}.@footnote{Use two backslashes if you're
using a string constant with a regexp operator or function.}
-Finally, when @samp{@{} and @samp{@}} appear in regexp constants
+When @samp{@{} and @samp{@}} appear in regexp constants
in a way that cannot be interpreted as an interval expression
(such as @code{/q@{a@}/}), then they stand for themselves.
As mentioned, interval expressions were not traditionally available
in @command{awk}. In March of 2019, BWK @command{awk} (finally) acquired them.
-
Nonetheless, because they were not available for
so many decades, @command{gawk} continues to not supply them
when in compatibility mode (@pxref{Options}).
+POSIX says that interval expressions containing repetition counts greater
+than 255 produce unspecified results.
+
+@cindex Eggert, Paul
+In the manual for GNU @command{grep}, Paul Eggert notes the following:
+
+@quotation
+Interval expressions may be implemented internally via repetition.
+For example, @samp{^(a|bc)@{2,4@}$} might be implemented as
+@samp{^(a|bc)(a|bc)((a|bc)(a|bc)?)?$}. A large repetition count may
+exhaust memory or greatly slow matching. Even small counts can cause
+problems if cascaded; for example, @samp{grep -E
+".*@{10,@}@{10,@}@{10,@}@{10,@}@{10,@}"} is likely to overflow a
+stack. Fortunately, regular expressions like these are typically
+artificial, and cascaded repetitions do not conform to POSIX so cannot
+be used in portable programs anyway.
+@end quotation
+
+@noindent
+This same caveat applies to @command{gawk}.
+
@node Bracket Expressions
@section Using Bracket Expressions
@cindex bracket expressions