diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-10-28 20:33:36 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-10-28 20:33:36 +0200 |
commit | 0182312b0fc945a20a3d7aeac1488540b5518e3a (patch) | |
tree | f3782d9a37dcf84357db1e259a7997ff108a4c04 | |
parent | cdafa10657ce3d8be73baa3a18f09045bfdc2ae7 (diff) | |
parent | 0d487f23486bae6721650e37b746fdb1d1a67977 (diff) | |
download | egawk-0182312b0fc945a20a3d7aeac1488540b5518e3a.tar.gz egawk-0182312b0fc945a20a3d7aeac1488540b5518e3a.tar.bz2 egawk-0182312b0fc945a20a3d7aeac1488540b5518e3a.zip |
Merge branch 'gawk-4.1-stable'
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | dfa.c | 80 | ||||
-rw-r--r-- | doc/ChangeLog | 6 | ||||
-rw-r--r-- | doc/gawk.1 | 3 | ||||
-rw-r--r-- | doc/gawk.info | 1042 | ||||
-rw-r--r-- | doc/gawk.texi | 13 | ||||
-rw-r--r-- | doc/gawktexi.in | 13 |
7 files changed, 609 insertions, 552 deletions
@@ -1,3 +1,7 @@ +2014-10-28 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.c: Sync with GNU grep. Again. + 2014-10-25 Arnold D. Robbins <arnold@skeeve.com> * dfa.c: Sync with GNU grep. @@ -432,6 +432,10 @@ struct dfa slots so far, not counting trans[-1]. */ int trcount; /* Number of transition tables that have actually been built. */ + int min_trcount; /* Minimum of number of transition tables. + Always keep the number, even after freeing + the transition tables. It is also the + number of initial states. */ state_num **trans; /* Transition tables for states that can never accept. If the transitions for a state have not yet been computed, or the @@ -450,6 +454,8 @@ struct dfa newline is stored separately and handled as a special case. Newline is also used as a sentinel at the end of the buffer. */ + state_num initstate_letter; /* Initial state for letter context. */ + state_num initstate_others; /* Initial state for other contexts. */ struct dfamust *musts; /* List of strings, at least one of which is known to appear in any r.e. matching the dfa. */ @@ -2588,9 +2594,16 @@ dfaanalyze (struct dfa *d, int searchflag) /* Build the initial state. */ separate_contexts = state_separate_contexts (&merged); - state_index (d, &merged, - (separate_contexts & CTX_NEWLINE - ? CTX_NEWLINE : separate_contexts ^ CTX_ANY)); + if (separate_contexts & CTX_NEWLINE) + state_index (d, &merged, CTX_NEWLINE); + d->initstate_others = d->min_trcount + = state_index (d, &merged, separate_contexts ^ CTX_ANY); + if (separate_contexts & CTX_LETTER) + d->initstate_letter = d->min_trcount + = state_index (d, &merged, CTX_LETTER); + else + d->initstate_letter = d->initstate_others; + d->min_trcount++; free (posalloc); free (stkalloc); @@ -2927,17 +2940,17 @@ build_state (state_num s, struct dfa *d) /* Set an upper limit on the number of transition tables that will ever exist at once. 1024 is arbitrary. The idea is that the frequently used transition tables will be quickly rebuilt, whereas the ones that - were only needed once or twice will be cleared away. However, do - not clear the initial state, as it's always used. */ + were only needed once or twice will be cleared away. However, do not + clear the initial D->min_trcount states, since they are always used. */ if (d->trcount >= 1024) { - for (i = 1; i < d->tralloc; ++i) + for (i = d->min_trcount; i < d->tralloc; ++i) { free (d->trans[i]); free (d->fails[i]); d->trans[i] = d->fails[i] = NULL; } - d->trcount = 1; + d->trcount = d->min_trcount; } ++d->trcount; @@ -3308,15 +3321,22 @@ transit_state (struct dfa *d, state_num s, unsigned char const **pp, expression "\\" accepts the codepoint 0x5c, but should not accept the second byte of the codepoint 0x815c. Then the initial state must skip the bytes that are not a single byte character nor the first byte of a multibyte - character. */ + character. + + Given DFA state d, use mbs_to_wchar to advance MBP until it reaches or + exceeds P. If WCP is non-NULL, set *WCP to the final wide character + processed, or if no wide character is processed, set it to WEOF. + Both P and MBP must be no larger than END. */ static unsigned char const * skip_remains_mb (struct dfa *d, unsigned char const *p, - unsigned char const *mbp, char const *end) + unsigned char const *mbp, char const *end, wint_t *wcp) { - wint_t wc; + wint_t wc = WEOF; while (mbp < p) mbp += mbs_to_wchar (&wc, (char const *) mbp, end - (char const *) mbp, d); + if (wcp != NULL) + *wcp = wc; return mbp; } @@ -3378,20 +3398,44 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, { s1 = s; - if (s == 0) + if (s < d->min_trcount) { - if (d->states[s].mbps.nelem == 0) + if (d->min_trcount == 1) { - do + if (d->states[s].mbps.nelem == 0) { - while (t[*p] == 0) - p++; - p = mbp = skip_remains_mb (d, p, mbp, end); + do + { + while (t[*p] == 0) + p++; + p = mbp = skip_remains_mb (d, p, mbp, end, NULL); + } + while (t[*p] == 0); } - while (t[*p] == 0); + else + p = mbp = skip_remains_mb (d, p, mbp, end, NULL); } else - p = mbp = skip_remains_mb (d, p, mbp, end); + { + wint_t wc; + mbp = skip_remains_mb (d, p, mbp, end, &wc); + + /* If d->min_trcount is greater than 1, maybe + transit to another initial state after skip. */ + if (p < mbp) + { + int context = wchar_context (wc); + if (context == CTX_LETTER) + s = d->initstate_letter; + else + /* It's CTX_NONE. CTX_NEWLINE cannot happen, + as we assume that a newline is always a + single byte character. */ + s = d->initstate_others; + p = mbp; + s1 = s; + } + } } if (d->states[s].mbps.nelem == 0) diff --git a/doc/ChangeLog b/doc/ChangeLog index 3ca49d9a..56893d05 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,9 @@ +2014-10-28 Arnold D. Robbins <arnold@skeeve.com> + + * gawk.1: Clarification that debugger reads stdin. + * gawktexi.in: Ditto, and correctly place the "Braces" entry in + the Glossary. Thanks to Antonio Colombo for that. + 2014-10-25 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Minor typo fixes. @@ -231,7 +231,8 @@ and so on.) .PD \fB\-\^\-debug\fR[\fB=\fIfile\fR] Enable debugging of \*(AK programs. -By default, the debugger reads commands interactively from the terminal. +By default, the debugger reads commands interactively from the keyboard +(standard input). The optional .IR file argument specifies a file with a list diff --git a/doc/gawk.info b/doc/gawk.info index d574aa8b..2be2c24f 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -2501,10 +2501,10 @@ The following list describes options mandated by the POSIX standard: `--debug'[`='FILE] Enable debugging of `awk' programs (*note Debugging::). By default, the debugger reads commands interactively from the - keyboard. The optional FILE argument allows you to specify a file - with a list of commands for the debugger to execute - non-interactively. No space is allowed between the `-D' and FILE, - if FILE is supplied. + keyboard (standard input). The optional FILE argument allows you + to specify a file with a list of commands for the debugger to + execute non-interactively. No space is allowed between the `-D' + and FILE, if FILE is supplied. `-e' PROGRAM-TEXT `--source' PROGRAM-TEXT @@ -29570,6 +29570,10 @@ Bourne Shell shells (Bash, `ksh', `pdksh', `zsh') are generally upwardly compatible with the Bourne shell. +Braces + The characters `{' and `}'. Braces are used in `awk' for + delimiting actions, compound statements, and function bodies. + Built-in Function The `awk' language provides built-in functions that perform various numerical, I/O-related, and string computations. Examples are @@ -29588,10 +29592,6 @@ Built-in Variable them affects `awk''s running environment. (*Note Built-in Variables::.) -Braces - The characters `{' and `}'. Braces are used in `awk' for - delimiting actions, compound statements, and function bodies. - C The system programming language that most GNU software is written in. The `awk' programming language has C-like syntax, and this @@ -34417,518 +34417,518 @@ Node: Intro Summary111987 Node: Invoking Gawk112870 Node: Command Line114385 Node: Options115176 -Ref: Options-Footnote-1130942 -Node: Other Arguments130967 -Node: Naming Standard Input133928 -Node: Environment Variables135021 -Node: AWKPATH Variable135579 -Ref: AWKPATH Variable-Footnote-1138879 -Ref: AWKPATH Variable-Footnote-2138924 -Node: AWKLIBPATH Variable139184 -Node: Other Environment Variables140327 -Node: Exit Status143818 -Node: Include Files144493 -Node: Loading Shared Libraries148081 -Node: Obsolete149508 -Node: Undocumented150205 -Node: Invoking Summary150472 -Node: Regexp152138 -Node: Regexp Usage153597 -Node: Escape Sequences155630 -Node: Regexp Operators161878 -Ref: Regexp Operators-Footnote-1169312 -Ref: Regexp Operators-Footnote-2169459 -Node: Bracket Expressions169557 -Ref: table-char-classes171574 -Node: Leftmost Longest174514 -Node: Computed Regexps175816 -Node: GNU Regexp Operators179213 -Node: Case-sensitivity182915 -Ref: Case-sensitivity-Footnote-1185805 -Ref: Case-sensitivity-Footnote-2186040 -Node: Regexp Summary186148 -Node: Reading Files187617 -Node: Records189711 -Node: awk split records190443 -Node: gawk split records195357 -Ref: gawk split records-Footnote-1199896 -Node: Fields199933 -Ref: Fields-Footnote-1202731 -Node: Nonconstant Fields202817 -Ref: Nonconstant Fields-Footnote-1205053 -Node: Changing Fields205255 -Node: Field Separators211187 -Node: Default Field Splitting213891 -Node: Regexp Field Splitting215008 -Node: Single Character Fields218358 -Node: Command Line Field Separator219417 -Node: Full Line Fields222629 -Ref: Full Line Fields-Footnote-1223137 -Node: Field Splitting Summary223183 -Ref: Field Splitting Summary-Footnote-1226314 -Node: Constant Size226415 -Node: Splitting By Content231021 -Ref: Splitting By Content-Footnote-1235094 -Node: Multiple Line235134 -Ref: Multiple Line-Footnote-1241023 -Node: Getline241202 -Node: Plain Getline243413 -Node: Getline/Variable246053 -Node: Getline/File247200 -Node: Getline/Variable/File248584 -Ref: Getline/Variable/File-Footnote-1250185 -Node: Getline/Pipe250272 -Node: Getline/Variable/Pipe252955 -Node: Getline/Coprocess254086 -Node: Getline/Variable/Coprocess255338 -Node: Getline Notes256077 -Node: Getline Summary258869 -Ref: table-getline-variants259281 -Node: Read Timeout260110 -Ref: Read Timeout-Footnote-1263924 -Node: Command-line directories263982 -Node: Input Summary264886 -Node: Input Exercises268138 -Node: Printing268866 -Node: Print270643 -Node: Print Examples272100 -Node: Output Separators274879 -Node: OFMT276897 -Node: Printf278251 -Node: Basic Printf279036 -Node: Control Letters280607 -Node: Format Modifiers284591 -Node: Printf Examples290598 -Node: Redirection293080 -Node: Special FD299919 -Ref: Special FD-Footnote-1303076 -Node: Special Files303150 -Node: Other Inherited Files303766 -Node: Special Network304766 -Node: Special Caveats305627 -Node: Close Files And Pipes306578 -Ref: Close Files And Pipes-Footnote-1313757 -Ref: Close Files And Pipes-Footnote-2313905 -Node: Output Summary314055 -Node: Output Exercises315051 -Node: Expressions315731 -Node: Values316916 -Node: Constants317592 -Node: Scalar Constants318272 -Ref: Scalar Constants-Footnote-1319131 -Node: Nondecimal-numbers319381 -Node: Regexp Constants322381 -Node: Using Constant Regexps322906 -Node: Variables326044 -Node: Using Variables326699 -Node: Assignment Options328609 -Node: Conversion330484 -Node: Strings And Numbers331008 -Ref: Strings And Numbers-Footnote-1334072 -Node: Locale influences conversions334181 -Ref: table-locale-affects336926 -Node: All Operators337514 -Node: Arithmetic Ops338144 -Node: Concatenation340649 -Ref: Concatenation-Footnote-1343468 -Node: Assignment Ops343574 -Ref: table-assign-ops348557 -Node: Increment Ops349835 -Node: Truth Values and Conditions353273 -Node: Truth Values354356 -Node: Typing and Comparison355405 -Node: Variable Typing356198 -Node: Comparison Operators359850 -Ref: table-relational-ops360260 -Node: POSIX String Comparison363775 -Ref: POSIX String Comparison-Footnote-1364847 -Node: Boolean Ops364985 -Ref: Boolean Ops-Footnote-1369464 -Node: Conditional Exp369555 -Node: Function Calls371282 -Node: Precedence375162 -Node: Locales378830 -Node: Expressions Summary380461 -Node: Patterns and Actions383035 -Node: Pattern Overview384155 -Node: Regexp Patterns385834 -Node: Expression Patterns386377 -Node: Ranges390157 -Node: BEGIN/END393263 -Node: Using BEGIN/END394025 -Ref: Using BEGIN/END-Footnote-1396762 -Node: I/O And BEGIN/END396868 -Node: BEGINFILE/ENDFILE399182 -Node: Empty402083 -Node: Using Shell Variables402400 -Node: Action Overview404676 -Node: Statements407003 -Node: If Statement408851 -Node: While Statement410349 -Node: Do Statement412377 -Node: For Statement413519 -Node: Switch Statement416674 -Node: Break Statement419062 -Node: Continue Statement421103 -Node: Next Statement422928 -Node: Nextfile Statement425308 -Node: Exit Statement427938 -Node: Built-in Variables430341 -Node: User-modified431474 -Ref: User-modified-Footnote-1439154 -Node: Auto-set439216 -Ref: Auto-set-Footnote-1452583 -Ref: Auto-set-Footnote-2452788 -Node: ARGC and ARGV452844 -Node: Pattern Action Summary457048 -Node: Arrays459475 -Node: Array Basics460804 -Node: Array Intro461648 -Ref: figure-array-elements463612 -Ref: Array Intro-Footnote-1466136 -Node: Reference to Elements466264 -Node: Assigning Elements468714 -Node: Array Example469205 -Node: Scanning an Array470963 -Node: Controlling Scanning473979 -Ref: Controlling Scanning-Footnote-1479168 -Node: Numeric Array Subscripts479484 -Node: Uninitialized Subscripts481669 -Node: Delete483286 -Ref: Delete-Footnote-1486030 -Node: Multidimensional486087 -Node: Multiscanning489182 -Node: Arrays of Arrays490771 -Node: Arrays Summary495532 -Node: Functions497637 -Node: Built-in498510 -Node: Calling Built-in499588 -Node: Numeric Functions501576 -Ref: Numeric Functions-Footnote-1506400 -Ref: Numeric Functions-Footnote-2506757 -Ref: Numeric Functions-Footnote-3506805 -Node: String Functions507074 -Ref: String Functions-Footnote-1530546 -Ref: String Functions-Footnote-2530675 -Ref: String Functions-Footnote-3530923 -Node: Gory Details531010 -Ref: table-sub-escapes532791 -Ref: table-sub-proposed534311 -Ref: table-posix-sub535675 -Ref: table-gensub-escapes537215 -Ref: Gory Details-Footnote-1538047 -Node: I/O Functions538198 -Ref: I/O Functions-Footnote-1545299 -Node: Time Functions545446 -Ref: Time Functions-Footnote-1555915 -Ref: Time Functions-Footnote-2555983 -Ref: Time Functions-Footnote-3556141 -Ref: Time Functions-Footnote-4556252 -Ref: Time Functions-Footnote-5556364 -Ref: Time Functions-Footnote-6556591 -Node: Bitwise Functions556857 -Ref: table-bitwise-ops557419 -Ref: Bitwise Functions-Footnote-1561727 -Node: Type Functions561896 -Node: I18N Functions563045 -Node: User-defined564690 -Node: Definition Syntax565494 -Ref: Definition Syntax-Footnote-1570900 -Node: Function Example570969 -Ref: Function Example-Footnote-1573886 -Node: Function Caveats573908 -Node: Calling A Function574426 -Node: Variable Scope575381 -Node: Pass By Value/Reference578369 -Node: Return Statement581879 -Node: Dynamic Typing584863 -Node: Indirect Calls585792 -Ref: Indirect Calls-Footnote-1597096 -Node: Functions Summary597224 -Node: Library Functions599923 -Ref: Library Functions-Footnote-1603541 -Ref: Library Functions-Footnote-2603684 -Node: Library Names603855 -Ref: Library Names-Footnote-1607315 -Ref: Library Names-Footnote-2607535 -Node: General Functions607621 -Node: Strtonum Function608724 -Node: Assert Function611744 -Node: Round Function615068 -Node: Cliff Random Function616609 -Node: Ordinal Functions617625 -Ref: Ordinal Functions-Footnote-1620690 -Ref: Ordinal Functions-Footnote-2620942 -Node: Join Function621153 -Ref: Join Function-Footnote-1622924 -Node: Getlocaltime Function623124 -Node: Readfile Function626865 -Node: Shell Quoting628835 -Node: Data File Management630236 -Node: Filetrans Function630868 -Node: Rewind Function634927 -Node: File Checking636312 -Ref: File Checking-Footnote-1637640 -Node: Empty Files637841 -Node: Ignoring Assigns639820 -Node: Getopt Function641371 -Ref: Getopt Function-Footnote-1652831 -Node: Passwd Functions653034 -Ref: Passwd Functions-Footnote-1661885 -Node: Group Functions661973 -Ref: Group Functions-Footnote-1669876 -Node: Walking Arrays670089 -Node: Library Functions Summary671692 -Node: Library Exercises673093 -Node: Sample Programs674373 -Node: Running Examples675143 -Node: Clones675871 -Node: Cut Program677095 -Node: Egrep Program686825 -Ref: Egrep Program-Footnote-1694329 -Node: Id Program694439 -Node: Split Program698083 -Ref: Split Program-Footnote-1701529 -Node: Tee Program701657 -Node: Uniq Program704444 -Node: Wc Program711865 -Ref: Wc Program-Footnote-1716113 -Node: Miscellaneous Programs716205 -Node: Dupword Program717418 -Node: Alarm Program719449 -Node: Translate Program724253 -Ref: Translate Program-Footnote-1728817 -Node: Labels Program729087 -Ref: Labels Program-Footnote-1732436 -Node: Word Sorting732520 -Node: History Sorting736590 -Node: Extract Program738426 -Node: Simple Sed745958 -Node: Igawk Program749020 -Ref: Igawk Program-Footnote-1763346 -Ref: Igawk Program-Footnote-2763547 -Ref: Igawk Program-Footnote-3763669 -Node: Anagram Program763784 -Node: Signature Program766846 -Node: Programs Summary768093 -Node: Programs Exercises769286 -Ref: Programs Exercises-Footnote-1773417 -Node: Advanced Features773508 -Node: Nondecimal Data775456 -Node: Array Sorting777046 -Node: Controlling Array Traversal777743 -Ref: Controlling Array Traversal-Footnote-1786074 -Node: Array Sorting Functions786192 -Ref: Array Sorting Functions-Footnote-1790084 -Node: Two-way I/O790278 -Ref: Two-way I/O-Footnote-1795222 -Ref: Two-way I/O-Footnote-2795408 -Node: TCP/IP Networking795490 -Node: Profiling798362 -Node: Advanced Features Summary806636 -Node: Internationalization808569 -Node: I18N and L10N810049 -Node: Explaining gettext810735 -Ref: Explaining gettext-Footnote-1815764 -Ref: Explaining gettext-Footnote-2815948 -Node: Programmer i18n816113 -Ref: Programmer i18n-Footnote-1820979 -Node: Translator i18n821028 -Node: String Extraction821822 -Ref: String Extraction-Footnote-1822953 -Node: Printf Ordering823039 -Ref: Printf Ordering-Footnote-1825825 -Node: I18N Portability825889 -Ref: I18N Portability-Footnote-1828338 -Node: I18N Example828401 -Ref: I18N Example-Footnote-1831201 -Node: Gawk I18N831273 -Node: I18N Summary831911 -Node: Debugger833250 -Node: Debugging834272 -Node: Debugging Concepts834713 -Node: Debugging Terms836570 -Node: Awk Debugging839145 -Node: Sample Debugging Session840037 -Node: Debugger Invocation840557 -Node: Finding The Bug841941 -Node: List of Debugger Commands848416 -Node: Breakpoint Control849748 -Node: Debugger Execution Control853440 -Node: Viewing And Changing Data856804 -Node: Execution Stack860169 -Node: Debugger Info861807 -Node: Miscellaneous Debugger Commands865824 -Node: Readline Support871016 -Node: Limitations871908 -Node: Debugging Summary874005 -Node: Arbitrary Precision Arithmetic875173 -Node: Computer Arithmetic876589 -Ref: table-numeric-ranges880190 -Ref: Computer Arithmetic-Footnote-1881049 -Node: Math Definitions881106 -Ref: table-ieee-formats884393 -Ref: Math Definitions-Footnote-1884997 -Node: MPFR features885102 -Node: FP Math Caution886773 -Ref: FP Math Caution-Footnote-1887823 -Node: Inexactness of computations888192 -Node: Inexact representation889140 -Node: Comparing FP Values890495 -Node: Errors accumulate891568 -Node: Getting Accuracy893001 -Node: Try To Round895660 -Node: Setting precision896559 -Ref: table-predefined-precision-strings897243 -Node: Setting the rounding mode899037 -Ref: table-gawk-rounding-modes899401 -Ref: Setting the rounding mode-Footnote-1902855 -Node: Arbitrary Precision Integers903034 -Ref: Arbitrary Precision Integers-Footnote-1907938 -Node: POSIX Floating Point Problems908087 -Ref: POSIX Floating Point Problems-Footnote-1911963 -Node: Floating point summary912001 -Node: Dynamic Extensions914193 -Node: Extension Intro915745 -Node: Plugin License917011 -Node: Extension Mechanism Outline917808 -Ref: figure-load-extension918236 -Ref: figure-register-new-function919716 -Ref: figure-call-new-function920720 -Node: Extension API Description922706 -Node: Extension API Functions Introduction924156 -Node: General Data Types928992 -Ref: General Data Types-Footnote-1934679 -Node: Memory Allocation Functions934978 -Ref: Memory Allocation Functions-Footnote-1937808 -Node: Constructor Functions937904 -Node: Registration Functions939638 -Node: Extension Functions940323 -Node: Exit Callback Functions942619 -Node: Extension Version String943867 -Node: Input Parsers944517 -Node: Output Wrappers954332 -Node: Two-way processors958848 -Node: Printing Messages961052 -Ref: Printing Messages-Footnote-1962129 -Node: Updating `ERRNO'962281 -Node: Requesting Values963021 -Ref: table-value-types-returned963749 -Node: Accessing Parameters964707 -Node: Symbol Table Access965938 -Node: Symbol table by name966452 -Node: Symbol table by cookie968432 -Ref: Symbol table by cookie-Footnote-1972571 -Node: Cached values972634 -Ref: Cached values-Footnote-1976138 -Node: Array Manipulation976229 -Ref: Array Manipulation-Footnote-1977327 -Node: Array Data Types977366 -Ref: Array Data Types-Footnote-1980023 -Node: Array Functions980115 -Node: Flattening Arrays983969 -Node: Creating Arrays990856 -Node: Extension API Variables995623 -Node: Extension Versioning996259 -Node: Extension API Informational Variables998160 -Node: Extension API Boilerplate999248 -Node: Finding Extensions1003064 -Node: Extension Example1003624 -Node: Internal File Description1004396 -Node: Internal File Ops1008463 -Ref: Internal File Ops-Footnote-11020121 -Node: Using Internal File Ops1020261 -Ref: Using Internal File Ops-Footnote-11022644 -Node: Extension Samples1022917 -Node: Extension Sample File Functions1024441 -Node: Extension Sample Fnmatch1032043 -Node: Extension Sample Fork1033525 -Node: Extension Sample Inplace1034738 -Node: Extension Sample Ord1036413 -Node: Extension Sample Readdir1037249 -Ref: table-readdir-file-types1038125 -Node: Extension Sample Revout1038936 -Node: Extension Sample Rev2way1039527 -Node: Extension Sample Read write array1040268 -Node: Extension Sample Readfile1042207 -Node: Extension Sample Time1043302 -Node: Extension Sample API Tests1044651 -Node: gawkextlib1045142 -Node: Extension summary1047792 -Node: Extension Exercises1051474 -Node: Language History1052196 -Node: V7/SVR3.11053853 -Node: SVR41056034 -Node: POSIX1057479 -Node: BTL1058868 -Node: POSIX/GNU1059602 -Node: Feature History1065231 -Node: Common Extensions1078329 -Node: Ranges and Locales1079653 -Ref: Ranges and Locales-Footnote-11084292 -Ref: Ranges and Locales-Footnote-21084319 -Ref: Ranges and Locales-Footnote-31084553 -Node: Contributors1084774 -Node: History summary1090314 -Node: Installation1091683 -Node: Gawk Distribution1092639 -Node: Getting1093123 -Node: Extracting1093947 -Node: Distribution contents1095589 -Node: Unix Installation1101359 -Node: Quick Installation1101976 -Node: Additional Configuration Options1104407 -Node: Configuration Philosophy1106147 -Node: Non-Unix Installation1108498 -Node: PC Installation1108956 -Node: PC Binary Installation1110282 -Node: PC Compiling1112130 -Ref: PC Compiling-Footnote-11115151 -Node: PC Testing1115256 -Node: PC Using1116432 -Node: Cygwin1120547 -Node: MSYS1121370 -Node: VMS Installation1121868 -Node: VMS Compilation1122660 -Ref: VMS Compilation-Footnote-11123882 -Node: VMS Dynamic Extensions1123940 -Node: VMS Installation Details1125624 -Node: VMS Running1127876 -Node: VMS GNV1130717 -Node: VMS Old Gawk1131451 -Node: Bugs1131921 -Node: Other Versions1135825 -Node: Installation summary1142038 -Node: Notes1143094 -Node: Compatibility Mode1143959 -Node: Additions1144741 -Node: Accessing The Source1145666 -Node: Adding Code1147102 -Node: New Ports1153274 -Node: Derived Files1157756 -Ref: Derived Files-Footnote-11163231 -Ref: Derived Files-Footnote-21163265 -Ref: Derived Files-Footnote-31163861 -Node: Future Extensions1163975 -Node: Implementation Limitations1164581 -Node: Extension Design1165829 -Node: Old Extension Problems1166983 -Ref: Old Extension Problems-Footnote-11168500 -Node: Extension New Mechanism Goals1168557 -Ref: Extension New Mechanism Goals-Footnote-11171917 -Node: Extension Other Design Decisions1172106 -Node: Extension Future Growth1174214 -Node: Old Extension Mechanism1175050 -Node: Notes summary1176812 -Node: Basic Concepts1177998 -Node: Basic High Level1178679 -Ref: figure-general-flow1178951 -Ref: figure-process-flow1179550 -Ref: Basic High Level-Footnote-11182779 -Node: Basic Data Typing1182964 -Node: Glossary1186292 -Node: Copying1211450 -Node: GNU Free Documentation License1249006 -Node: Index1274142 +Ref: Options-Footnote-1130959 +Node: Other Arguments130984 +Node: Naming Standard Input133945 +Node: Environment Variables135038 +Node: AWKPATH Variable135596 +Ref: AWKPATH Variable-Footnote-1138896 +Ref: AWKPATH Variable-Footnote-2138941 +Node: AWKLIBPATH Variable139201 +Node: Other Environment Variables140344 +Node: Exit Status143835 +Node: Include Files144510 +Node: Loading Shared Libraries148098 +Node: Obsolete149525 +Node: Undocumented150222 +Node: Invoking Summary150489 +Node: Regexp152155 +Node: Regexp Usage153614 +Node: Escape Sequences155647 +Node: Regexp Operators161895 +Ref: Regexp Operators-Footnote-1169329 +Ref: Regexp Operators-Footnote-2169476 +Node: Bracket Expressions169574 +Ref: table-char-classes171591 +Node: Leftmost Longest174531 +Node: Computed Regexps175833 +Node: GNU Regexp Operators179230 +Node: Case-sensitivity182932 +Ref: Case-sensitivity-Footnote-1185822 +Ref: Case-sensitivity-Footnote-2186057 +Node: Regexp Summary186165 +Node: Reading Files187634 +Node: Records189728 +Node: awk split records190460 +Node: gawk split records195374 +Ref: gawk split records-Footnote-1199913 +Node: Fields199950 +Ref: Fields-Footnote-1202748 +Node: Nonconstant Fields202834 +Ref: Nonconstant Fields-Footnote-1205070 +Node: Changing Fields205272 +Node: Field Separators211204 +Node: Default Field Splitting213908 +Node: Regexp Field Splitting215025 +Node: Single Character Fields218375 +Node: Command Line Field Separator219434 +Node: Full Line Fields222646 +Ref: Full Line Fields-Footnote-1223154 +Node: Field Splitting Summary223200 +Ref: Field Splitting Summary-Footnote-1226331 +Node: Constant Size226432 +Node: Splitting By Content231038 +Ref: Splitting By Content-Footnote-1235111 +Node: Multiple Line235151 +Ref: Multiple Line-Footnote-1241040 +Node: Getline241219 +Node: Plain Getline243430 +Node: Getline/Variable246070 +Node: Getline/File247217 +Node: Getline/Variable/File248601 +Ref: Getline/Variable/File-Footnote-1250202 +Node: Getline/Pipe250289 +Node: Getline/Variable/Pipe252972 +Node: Getline/Coprocess254103 +Node: Getline/Variable/Coprocess255355 +Node: Getline Notes256094 +Node: Getline Summary258886 +Ref: table-getline-variants259298 +Node: Read Timeout260127 +Ref: Read Timeout-Footnote-1263941 +Node: Command-line directories263999 +Node: Input Summary264903 +Node: Input Exercises268155 +Node: Printing268883 +Node: Print270660 +Node: Print Examples272117 +Node: Output Separators274896 +Node: OFMT276914 +Node: Printf278268 +Node: Basic Printf279053 +Node: Control Letters280624 +Node: Format Modifiers284608 +Node: Printf Examples290615 +Node: Redirection293097 +Node: Special FD299936 +Ref: Special FD-Footnote-1303093 +Node: Special Files303167 +Node: Other Inherited Files303783 +Node: Special Network304783 +Node: Special Caveats305644 +Node: Close Files And Pipes306595 +Ref: Close Files And Pipes-Footnote-1313774 +Ref: Close Files And Pipes-Footnote-2313922 +Node: Output Summary314072 +Node: Output Exercises315068 +Node: Expressions315748 +Node: Values316933 +Node: Constants317609 +Node: Scalar Constants318289 +Ref: Scalar Constants-Footnote-1319148 +Node: Nondecimal-numbers319398 +Node: Regexp Constants322398 +Node: Using Constant Regexps322923 +Node: Variables326061 +Node: Using Variables326716 +Node: Assignment Options328626 +Node: Conversion330501 +Node: Strings And Numbers331025 +Ref: Strings And Numbers-Footnote-1334089 +Node: Locale influences conversions334198 +Ref: table-locale-affects336943 +Node: All Operators337531 +Node: Arithmetic Ops338161 +Node: Concatenation340666 +Ref: Concatenation-Footnote-1343485 +Node: Assignment Ops343591 +Ref: table-assign-ops348574 +Node: Increment Ops349852 +Node: Truth Values and Conditions353290 +Node: Truth Values354373 +Node: Typing and Comparison355422 +Node: Variable Typing356215 +Node: Comparison Operators359867 +Ref: table-relational-ops360277 +Node: POSIX String Comparison363792 +Ref: POSIX String Comparison-Footnote-1364864 +Node: Boolean Ops365002 +Ref: Boolean Ops-Footnote-1369481 +Node: Conditional Exp369572 +Node: Function Calls371299 +Node: Precedence375179 +Node: Locales378847 +Node: Expressions Summary380478 +Node: Patterns and Actions383052 +Node: Pattern Overview384172 +Node: Regexp Patterns385851 +Node: Expression Patterns386394 +Node: Ranges390174 +Node: BEGIN/END393280 +Node: Using BEGIN/END394042 +Ref: Using BEGIN/END-Footnote-1396779 +Node: I/O And BEGIN/END396885 +Node: BEGINFILE/ENDFILE399199 +Node: Empty402100 +Node: Using Shell Variables402417 +Node: Action Overview404693 +Node: Statements407020 +Node: If Statement408868 +Node: While Statement410366 +Node: Do Statement412394 +Node: For Statement413536 +Node: Switch Statement416691 +Node: Break Statement419079 +Node: Continue Statement421120 +Node: Next Statement422945 +Node: Nextfile Statement425325 +Node: Exit Statement427955 +Node: Built-in Variables430358 +Node: User-modified431491 +Ref: User-modified-Footnote-1439171 +Node: Auto-set439233 +Ref: Auto-set-Footnote-1452600 +Ref: Auto-set-Footnote-2452805 +Node: ARGC and ARGV452861 +Node: Pattern Action Summary457065 +Node: Arrays459492 +Node: Array Basics460821 +Node: Array Intro461665 +Ref: figure-array-elements463629 +Ref: Array Intro-Footnote-1466153 +Node: Reference to Elements466281 +Node: Assigning Elements468731 +Node: Array Example469222 +Node: Scanning an Array470980 +Node: Controlling Scanning473996 +Ref: Controlling Scanning-Footnote-1479185 +Node: Numeric Array Subscripts479501 +Node: Uninitialized Subscripts481686 +Node: Delete483303 +Ref: Delete-Footnote-1486047 +Node: Multidimensional486104 +Node: Multiscanning489199 +Node: Arrays of Arrays490788 +Node: Arrays Summary495549 +Node: Functions497654 +Node: Built-in498527 +Node: Calling Built-in499605 +Node: Numeric Functions501593 +Ref: Numeric Functions-Footnote-1506417 +Ref: Numeric Functions-Footnote-2506774 +Ref: Numeric Functions-Footnote-3506822 +Node: String Functions507091 +Ref: String Functions-Footnote-1530563 +Ref: String Functions-Footnote-2530692 +Ref: String Functions-Footnote-3530940 +Node: Gory Details531027 +Ref: table-sub-escapes532808 +Ref: table-sub-proposed534328 +Ref: table-posix-sub535692 +Ref: table-gensub-escapes537232 +Ref: Gory Details-Footnote-1538064 +Node: I/O Functions538215 +Ref: I/O Functions-Footnote-1545316 +Node: Time Functions545463 +Ref: Time Functions-Footnote-1555932 +Ref: Time Functions-Footnote-2556000 +Ref: Time Functions-Footnote-3556158 +Ref: Time Functions-Footnote-4556269 +Ref: Time Functions-Footnote-5556381 +Ref: Time Functions-Footnote-6556608 +Node: Bitwise Functions556874 +Ref: table-bitwise-ops557436 +Ref: Bitwise Functions-Footnote-1561744 +Node: Type Functions561913 +Node: I18N Functions563062 +Node: User-defined564707 +Node: Definition Syntax565511 +Ref: Definition Syntax-Footnote-1570917 +Node: Function Example570986 +Ref: Function Example-Footnote-1573903 +Node: Function Caveats573925 +Node: Calling A Function574443 +Node: Variable Scope575398 +Node: Pass By Value/Reference578386 +Node: Return Statement581896 +Node: Dynamic Typing584880 +Node: Indirect Calls585809 +Ref: Indirect Calls-Footnote-1597113 +Node: Functions Summary597241 +Node: Library Functions599940 +Ref: Library Functions-Footnote-1603558 +Ref: Library Functions-Footnote-2603701 +Node: Library Names603872 +Ref: Library Names-Footnote-1607332 +Ref: Library Names-Footnote-2607552 +Node: General Functions607638 +Node: Strtonum Function608741 +Node: Assert Function611761 +Node: Round Function615085 +Node: Cliff Random Function616626 +Node: Ordinal Functions617642 +Ref: Ordinal Functions-Footnote-1620707 +Ref: Ordinal Functions-Footnote-2620959 +Node: Join Function621170 +Ref: Join Function-Footnote-1622941 +Node: Getlocaltime Function623141 +Node: Readfile Function626882 +Node: Shell Quoting628852 +Node: Data File Management630253 +Node: Filetrans Function630885 +Node: Rewind Function634944 +Node: File Checking636329 +Ref: File Checking-Footnote-1637657 +Node: Empty Files637858 +Node: Ignoring Assigns639837 +Node: Getopt Function641388 +Ref: Getopt Function-Footnote-1652848 +Node: Passwd Functions653051 +Ref: Passwd Functions-Footnote-1661902 +Node: Group Functions661990 +Ref: Group Functions-Footnote-1669893 +Node: Walking Arrays670106 +Node: Library Functions Summary671709 +Node: Library Exercises673110 +Node: Sample Programs674390 +Node: Running Examples675160 +Node: Clones675888 +Node: Cut Program677112 +Node: Egrep Program686842 +Ref: Egrep Program-Footnote-1694346 +Node: Id Program694456 +Node: Split Program698100 +Ref: Split Program-Footnote-1701546 +Node: Tee Program701674 +Node: Uniq Program704461 +Node: Wc Program711882 +Ref: Wc Program-Footnote-1716130 +Node: Miscellaneous Programs716222 +Node: Dupword Program717435 +Node: Alarm Program719466 +Node: Translate Program724270 +Ref: Translate Program-Footnote-1728834 +Node: Labels Program729104 +Ref: Labels Program-Footnote-1732453 +Node: Word Sorting732537 +Node: History Sorting736607 +Node: Extract Program738443 +Node: Simple Sed745975 +Node: Igawk Program749037 +Ref: Igawk Program-Footnote-1763363 +Ref: Igawk Program-Footnote-2763564 +Ref: Igawk Program-Footnote-3763686 +Node: Anagram Program763801 +Node: Signature Program766863 +Node: Programs Summary768110 +Node: Programs Exercises769303 +Ref: Programs Exercises-Footnote-1773434 +Node: Advanced Features773525 +Node: Nondecimal Data775473 +Node: Array Sorting777063 +Node: Controlling Array Traversal777760 +Ref: Controlling Array Traversal-Footnote-1786091 +Node: Array Sorting Functions786209 +Ref: Array Sorting Functions-Footnote-1790101 +Node: Two-way I/O790295 +Ref: Two-way I/O-Footnote-1795239 +Ref: Two-way I/O-Footnote-2795425 +Node: TCP/IP Networking795507 +Node: Profiling798379 +Node: Advanced Features Summary806653 +Node: Internationalization808586 +Node: I18N and L10N810066 +Node: Explaining gettext810752 +Ref: Explaining gettext-Footnote-1815781 +Ref: Explaining gettext-Footnote-2815965 +Node: Programmer i18n816130 +Ref: Programmer i18n-Footnote-1820996 +Node: Translator i18n821045 +Node: String Extraction821839 +Ref: String Extraction-Footnote-1822970 +Node: Printf Ordering823056 +Ref: Printf Ordering-Footnote-1825842 +Node: I18N Portability825906 +Ref: I18N Portability-Footnote-1828355 +Node: I18N Example828418 +Ref: I18N Example-Footnote-1831218 +Node: Gawk I18N831290 +Node: I18N Summary831928 +Node: Debugger833267 +Node: Debugging834289 +Node: Debugging Concepts834730 +Node: Debugging Terms836587 +Node: Awk Debugging839162 +Node: Sample Debugging Session840054 +Node: Debugger Invocation840574 +Node: Finding The Bug841958 +Node: List of Debugger Commands848433 +Node: Breakpoint Control849765 +Node: Debugger Execution Control853457 +Node: Viewing And Changing Data856821 +Node: Execution Stack860186 +Node: Debugger Info861824 +Node: Miscellaneous Debugger Commands865841 +Node: Readline Support871033 +Node: Limitations871925 +Node: Debugging Summary874022 +Node: Arbitrary Precision Arithmetic875190 +Node: Computer Arithmetic876606 +Ref: table-numeric-ranges880207 +Ref: Computer Arithmetic-Footnote-1881066 +Node: Math Definitions881123 +Ref: table-ieee-formats884410 +Ref: Math Definitions-Footnote-1885014 +Node: MPFR features885119 +Node: FP Math Caution886790 +Ref: FP Math Caution-Footnote-1887840 +Node: Inexactness of computations888209 +Node: Inexact representation889157 +Node: Comparing FP Values890512 +Node: Errors accumulate891585 +Node: Getting Accuracy893018 +Node: Try To Round895677 +Node: Setting precision896576 +Ref: table-predefined-precision-strings897260 +Node: Setting the rounding mode899054 +Ref: table-gawk-rounding-modes899418 +Ref: Setting the rounding mode-Footnote-1902872 +Node: Arbitrary Precision Integers903051 +Ref: Arbitrary Precision Integers-Footnote-1907955 +Node: POSIX Floating Point Problems908104 +Ref: POSIX Floating Point Problems-Footnote-1911980 +Node: Floating point summary912018 +Node: Dynamic Extensions914210 +Node: Extension Intro915762 +Node: Plugin License917028 +Node: Extension Mechanism Outline917825 +Ref: figure-load-extension918253 +Ref: figure-register-new-function919733 +Ref: figure-call-new-function920737 +Node: Extension API Description922723 +Node: Extension API Functions Introduction924173 +Node: General Data Types929009 +Ref: General Data Types-Footnote-1934696 +Node: Memory Allocation Functions934995 +Ref: Memory Allocation Functions-Footnote-1937825 +Node: Constructor Functions937921 +Node: Registration Functions939655 +Node: Extension Functions940340 +Node: Exit Callback Functions942636 +Node: Extension Version String943884 +Node: Input Parsers944534 +Node: Output Wrappers954349 +Node: Two-way processors958865 +Node: Printing Messages961069 +Ref: Printing Messages-Footnote-1962146 +Node: Updating `ERRNO'962298 +Node: Requesting Values963038 +Ref: table-value-types-returned963766 +Node: Accessing Parameters964724 +Node: Symbol Table Access965955 +Node: Symbol table by name966469 +Node: Symbol table by cookie968449 +Ref: Symbol table by cookie-Footnote-1972588 +Node: Cached values972651 +Ref: Cached values-Footnote-1976155 +Node: Array Manipulation976246 +Ref: Array Manipulation-Footnote-1977344 +Node: Array Data Types977383 +Ref: Array Data Types-Footnote-1980040 +Node: Array Functions980132 +Node: Flattening Arrays983986 +Node: Creating Arrays990873 +Node: Extension API Variables995640 +Node: Extension Versioning996276 +Node: Extension API Informational Variables998177 +Node: Extension API Boilerplate999265 +Node: Finding Extensions1003081 +Node: Extension Example1003641 +Node: Internal File Description1004413 +Node: Internal File Ops1008480 +Ref: Internal File Ops-Footnote-11020138 +Node: Using Internal File Ops1020278 +Ref: Using Internal File Ops-Footnote-11022661 +Node: Extension Samples1022934 +Node: Extension Sample File Functions1024458 +Node: Extension Sample Fnmatch1032060 +Node: Extension Sample Fork1033542 +Node: Extension Sample Inplace1034755 +Node: Extension Sample Ord1036430 +Node: Extension Sample Readdir1037266 +Ref: table-readdir-file-types1038142 +Node: Extension Sample Revout1038953 +Node: Extension Sample Rev2way1039544 +Node: Extension Sample Read write array1040285 +Node: Extension Sample Readfile1042224 +Node: Extension Sample Time1043319 +Node: Extension Sample API Tests1044668 +Node: gawkextlib1045159 +Node: Extension summary1047809 +Node: Extension Exercises1051491 +Node: Language History1052213 +Node: V7/SVR3.11053870 +Node: SVR41056051 +Node: POSIX1057496 +Node: BTL1058885 +Node: POSIX/GNU1059619 +Node: Feature History1065248 +Node: Common Extensions1078346 +Node: Ranges and Locales1079670 +Ref: Ranges and Locales-Footnote-11084309 +Ref: Ranges and Locales-Footnote-21084336 +Ref: Ranges and Locales-Footnote-31084570 +Node: Contributors1084791 +Node: History summary1090331 +Node: Installation1091700 +Node: Gawk Distribution1092656 +Node: Getting1093140 +Node: Extracting1093964 +Node: Distribution contents1095606 +Node: Unix Installation1101376 +Node: Quick Installation1101993 +Node: Additional Configuration Options1104424 +Node: Configuration Philosophy1106164 +Node: Non-Unix Installation1108515 +Node: PC Installation1108973 +Node: PC Binary Installation1110299 +Node: PC Compiling1112147 +Ref: PC Compiling-Footnote-11115168 +Node: PC Testing1115273 +Node: PC Using1116449 +Node: Cygwin1120564 +Node: MSYS1121387 +Node: VMS Installation1121885 +Node: VMS Compilation1122677 +Ref: VMS Compilation-Footnote-11123899 +Node: VMS Dynamic Extensions1123957 +Node: VMS Installation Details1125641 +Node: VMS Running1127893 +Node: VMS GNV1130734 +Node: VMS Old Gawk1131468 +Node: Bugs1131938 +Node: Other Versions1135842 +Node: Installation summary1142055 +Node: Notes1143111 +Node: Compatibility Mode1143976 +Node: Additions1144758 +Node: Accessing The Source1145683 +Node: Adding Code1147119 +Node: New Ports1153291 +Node: Derived Files1157773 +Ref: Derived Files-Footnote-11163248 +Ref: Derived Files-Footnote-21163282 +Ref: Derived Files-Footnote-31163878 +Node: Future Extensions1163992 +Node: Implementation Limitations1164598 +Node: Extension Design1165846 +Node: Old Extension Problems1167000 +Ref: Old Extension Problems-Footnote-11168517 +Node: Extension New Mechanism Goals1168574 +Ref: Extension New Mechanism Goals-Footnote-11171934 +Node: Extension Other Design Decisions1172123 +Node: Extension Future Growth1174231 +Node: Old Extension Mechanism1175067 +Node: Notes summary1176829 +Node: Basic Concepts1178015 +Node: Basic High Level1178696 +Ref: figure-general-flow1178968 +Ref: figure-process-flow1179567 +Ref: Basic High Level-Footnote-11182796 +Node: Basic Data Typing1182981 +Node: Glossary1186309 +Node: Copying1211467 +Node: GNU Free Documentation License1249023 +Node: Index1274159 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 328c1782..1d3793eb 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -3824,7 +3824,8 @@ names like @code{i}, @code{j}, etc.) @cindex @command{awk} debugging, enabling Enable debugging of @command{awk} programs (@pxref{Debugging}). -By default, the debugger reads commands interactively from the keyboard. +By default, the debugger reads commands interactively from the keyboard +(standard input). The optional @var{file} argument allows you to specify a file with a list of commands for the debugger to execute non-interactively. No space is allowed between the @option{-D} and @var{file}, if @@ -40025,6 +40026,11 @@ originally written by Steven R.@: Bourne at Bell Laboratories. Many shells (Bash, @command{ksh}, @command{pdksh}, @command{zsh}) are generally upwardly compatible with the Bourne shell. +@item Braces +The characters @samp{@{} and @samp{@}}. Braces are used in +@command{awk} for delimiting actions, compound statements, and function +bodies. + @item Built-in Function The @command{awk} language provides built-in functions that perform various numerical, I/O-related, and string computations. Examples are @@ -40070,11 +40076,6 @@ are the variables that have special meaning to @command{gawk}. Changing some of them affects @command{awk}'s running environment. (@xref{Built-in Variables}.) -@item Braces -The characters @samp{@{} and @samp{@}}. Braces are used in -@command{awk} for delimiting actions, compound statements, and function -bodies. - @item C The system programming language that most GNU software is written in. The @command{awk} programming language has C-like syntax, and this @value{DOCUMENT} diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 2ed967fb..0474a800 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -3735,7 +3735,8 @@ names like @code{i}, @code{j}, etc.) @cindex @command{awk} debugging, enabling Enable debugging of @command{awk} programs (@pxref{Debugging}). -By default, the debugger reads commands interactively from the keyboard. +By default, the debugger reads commands interactively from the keyboard +(standard input). The optional @var{file} argument allows you to specify a file with a list of commands for the debugger to execute non-interactively. No space is allowed between the @option{-D} and @var{file}, if @@ -39119,6 +39120,11 @@ originally written by Steven R.@: Bourne at Bell Laboratories. Many shells (Bash, @command{ksh}, @command{pdksh}, @command{zsh}) are generally upwardly compatible with the Bourne shell. +@item Braces +The characters @samp{@{} and @samp{@}}. Braces are used in +@command{awk} for delimiting actions, compound statements, and function +bodies. + @item Built-in Function The @command{awk} language provides built-in functions that perform various numerical, I/O-related, and string computations. Examples are @@ -39164,11 +39170,6 @@ are the variables that have special meaning to @command{gawk}. Changing some of them affects @command{awk}'s running environment. (@xref{Built-in Variables}.) -@item Braces -The characters @samp{@{} and @samp{@}}. Braces are used in -@command{awk} for delimiting actions, compound statements, and function -bodies. - @item C The system programming language that most GNU software is written in. The @command{awk} programming language has C-like syntax, and this @value{DOCUMENT} |