diff options
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/gawk.info | 178 | ||||
-rw-r--r-- | doc/gawk.texi | 85 |
4 files changed, 159 insertions, 111 deletions
@@ -1,4 +1,4 @@ -Sync regex.h and dfa.c to glibc and grep +Sync regex.h to glibc Add debugger commands to reference card Review all FIXME and TODO comments diff --git a/doc/ChangeLog b/doc/ChangeLog index 2ac2cce8..fe25e16a 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +Fri May 6 13:21:20 2011 Arnold D. Robbins <arnold@skeeve.com> + + * gawk.texi: Finish edits after full read through. + * gawk.1: Update array sorting information. + Wed May 4 23:39:09 2011 Arnold D. Robbins <arnold@skeeve.com> * gawk.texi: Start at revamping array sorting doc. Still diff --git a/doc/gawk.info b/doc/gawk.info index e34309cb..4f0bcc00 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -22471,26 +22471,26 @@ reflect the full value (all the digits) that the numeric value actually contains. The following program (`values.awk') illustrates this: { - $1 = $2 + $3 + sum = $1 + $2 # see it for what it is - printf("$1 = %.12g\n", $1) + printf("sum = %.12g\n", sum) # use CONVFMT - a = "<" $1 ">" + a = "<" sum ">" print "a =", a # use OFMT - print "$1 =", $1 + print "sum =", sum } -This program shows the full value of the sum of `$2' and `$3' using +This program shows the full value of the sum of `$1' and `$2' using `printf', and then prints the string values obtained from both automatic conversion (via `CONVFMT') and from printing (via `OFMT'). Here is what happens when the program is run: - $ echo 2 3.654321 1.2345678 | awk -f values.awk - -| $1 = 4.8888888 + $ echo 3.654321 1.2345678 | awk -f values.awk + -| sum = 4.8888888 -| a = <4.88889> - -| $1 = 4.88889 + -| sum = 4.88889 This makes it clear that the full numeric value is different from what the default string representations show. @@ -22577,7 +22577,7 @@ These features are: * Support for the special IEEE 754 floating point values "Not A Number" (NaN), positive Infinity ("inf") and negative Infinity ("-inf"). In particular, the format for these values is as - specified by the ISO C99 standard, which ignores case and can + specified by the ISO 1999 C standard, which ignores case and can allow machine-dependent additional characters after the `nan' and allow either `inf' or `infinity'. @@ -22610,8 +22610,8 @@ as follows: * With the `--posix' command-line option, `gawk' becomes "hands off." String values are passed directly to the system library's `strtod()' function, and if it successfully returns a numeric - value, that is what's used. By definition, the results are not - portable across different systems.(1) They are also a little + value, that is what's used.(1) By definition, the results are not + portable across different systems. They are also a little surprising: $ echo nanny | gawk --posix '{ print $1 + 0 }' @@ -22660,6 +22660,11 @@ Amazing `awk' Assembler been better written in another language. You can get it from `http://awk.info/?awk100/aaa'. +Ada + A programming language originally defined by the U.S. Department of + Defense for embedded programming. It was designed to enforce good + Software Engineering practices. + Amazingly Workable Formatter (`awf') Henry Spencer at the University of Toronto wrote a formatter that accepts a large subset of the `nroff -ms' and `nroff -man' @@ -22743,8 +22748,8 @@ Built-in Function numerical, I/O-related, and string computations. Examples are `sqrt()' (for the square root of a number) and `substr()' (for a substring of a string). `gawk' provides functions for timestamp - management, bit manipulation, and runtime string translation. - (*Note Built-in::.) + management, bit manipulation, array sorting, type checking, and + runtime string translation. (*Note Built-in::.) Built-in Variable `ARGC', `ARGV', `CONVFMT', `ENVIRON', `FILENAME', `FNR', `FS', @@ -22771,8 +22776,7 @@ C appropriate. In general, `gawk' attempts to be as similar to the 1990 version - of ISO C as makes sense. Future versions of `gawk' may adopt - features from the newer 1999 standard, as appropriate. + of ISO C as makes sense. C++ A popular object-oriented programming language derived from C. @@ -22820,7 +22824,7 @@ Conditional Expression and EXPR3 is evaluated. (*Note Conditional Exp::.) Comparison Expression - A relation that is either true or false, such as `(a < b)'. + A relation that is either true or false, such as `a < b'. Comparison expressions are used in `if', `while', `do', and `for' statements, and in patterns to select which input records to process. (*Note Typing and Comparison::.) @@ -22850,7 +22854,7 @@ Deadlock for the other to perform an action. Debugger - A program used to help developers remove "bugs" (de-bug) from + A program used to help developers remove "bugs" from (de-bug) their programs. Double Precision @@ -22921,8 +22925,8 @@ Format Format strings are used to control the appearance of output in the `strftime()' and `sprintf()' functions, and are used in the `printf' statement as well. Also, data conversions from numbers - to strings are controlled by the format string contained in the - built-in variable `CONVFMT'. (*Note Control Letters::.) + to strings are controlled by the format strings contained in the + built-in variables `CONVFMT' and `OFMT'. (*Note Control Letters::.) Free Documentation License This document describes the terms under which this Info file is @@ -22978,6 +22982,7 @@ Hexadecimal `A' representing 10, `B' representing 11, and so on, up to `F' for 15. Hexadecimal numbers are written in C using a leading `0x', to indicate their base. Thus, `0x12' is 18 (1 times 16 plus 2). + *Note Nondecimal-numbers::. I/O Abbreviation for "Input/Output," the act of moving data into and/or @@ -23005,7 +23010,7 @@ Interpreter Interval Expression A component of a regular expression that lets you specify repeated matches of some part of the regexp. Interval expressions were not - traditionally available in `awk' programs. + originally available in `awk' programs. ISO The International Standards Organization. This organization @@ -23015,15 +23020,22 @@ ISO American national and ISO international standards simultaneously. This Info file refers to Standard C as "ISO C" throughout. +Java + A modern programming language originally developed by Sun + Microsystems (now Oracle) supporting Object-Oriented programming. + Although usually implemented by compiling to the instructions for + a standard virtual machine (the JVM), the language can be compiled + to native code. + Keyword In the `awk' language, a keyword is a word that has special meaning. Keywords are reserved and may not be used as variable names. - `gawk''s keywords are: `BEGIN', `END', `break', `case', `continue', - `default' `delete', `do...while', `else', `exit', `for...in', - `for', `function', `func', `if', `nextfile', `next', `switch', and - `while'. + `gawk''s keywords are: `BEGIN', `BEGINFILE', `END', `ENDFILE', + `break', `case', `continue', `default' `delete', `do...while', + `else', `exit', `for...in', `for', `function', `func', `if', + `nextfile', `next', `switch', and `while'. Lesser General Public License This document describes the terms under which binary library @@ -23073,13 +23085,14 @@ Null String Number A numeric-valued data object. Modern `awk' implementations use - double precision floating-point to represent numbers. Very old - `awk' implementations use single precision floating-point. + double precision floating-point to represent numbers. Ancient + `awk' implementations used single precision floating-point. Octal Base-eight notation, where the digits are `0'-`7'. Octal numbers are written in C using a leading `0', to indicate their base. - Thus, `013' is 11 (one times 8 plus 3). + Thus, `013' is 11 (one times 8 plus 3). *Note + Nondecimal-numbers::. P1003.1, P1003.2 See "POSIX." @@ -23099,6 +23112,8 @@ POSIX Operating System interface. The "IX" denotes the Unix heritage of these standards. The main standard of interest for `awk' users is `IEEE Standard for Information Technology, Standard 1003.1-2008'. + The 2008 POSIX standard can be found online at + `http://www.opengroup.org/onlinepubs/9699919799/'. Precedence The order in which operations are performed when operators are used @@ -23116,8 +23131,9 @@ Range (of input lines) specify single lines. (*Note Pattern Overview::.) Recursion - When a function calls itself, either directly or indirectly. If - this isn't clear, refer to the entry for "recursion." + When a function calls itself, either directly or indirectly. As + long as this is not clear, refer to the entry for "recursion." If + this is clear, stop, and proceed to the next entry. Redirection Redirection means performing input from something other than the @@ -23131,15 +23147,16 @@ Redirection and *note Redirection::.) Regexp - Short for "regular expression". A regexp is a pattern that - denotes a set of strings, possibly an infinite set. For example, - the regexp `R.*xp' matches any string starting with the letter `R' - and ending with the letters `xp'. In `awk', regexps are used in - patterns and in conditional expressions. Regexps may contain - escape sequences. (*Note Regexp::.) + See "Regular Expression." Regular Expression - See "regexp." + A regular expression ("regexp" for short) is a pattern that + denotes a set of strings, possibly an infinite set. For example, + the regular expression `R.*xp' matches any string starting with + the letter `R' and ending with the letters `xp'. In `awk', + regular expressions are used in patterns and in conditional + expressions. Regular expressions may contain escape sequences. + (*Note Regexp::.) Regular Expression Constant A regular expression constant is a regular expression written @@ -23241,7 +23258,8 @@ Unix environments as a software development system and network server system. There are many commercial versions of Unix, as well as several work-alike systems whose source code is freely available - (such as GNU/Linux, NetBSD, FreeBSD, and OpenBSD). + (such as GNU/Linux, NetBSD (http://www.netbsd.org), FreeBSD + (http://www.freebsd.org), and OpenBSD (http://www.openbsd.org)). UTC The accepted abbreviation for "Universal Coordinated Time." This @@ -24738,6 +24756,7 @@ Index * actions, control statements in: Statements. (line 6) * actions, default: Very Simple. (line 34) * actions, empty: Very Simple. (line 39) +* Ada programming language: Glossary. (line 20) * adding, features to gawk: Adding Code. (line 6) * adding, fields: Changing Fields. (line 53) * adding, functions to gawk: Dynamic Extensions. (line 10) @@ -24771,7 +24790,7 @@ Index * algorithms: Basic High Level. (line 66) * Alpha (DEC): Manual History. (line 28) * amazing awk assembler (aaa): Glossary. (line 12) -* amazingly workable formatter (awf): Glossary. (line 20) +* amazingly workable formatter (awf): Glossary. (line 25) * ambiguity, syntactic: /= operator vs. /=.../ regexp constant: Assignment Ops. (line 148) * ampersand (&), && operator <1>: Precedence. (line 86) @@ -24782,7 +24801,7 @@ Index * AND bitwise operation: Bitwise Functions. (line 6) * and Boolean-logic operator: Boolean Ops. (line 6) * and() function (gawk): Bitwise Functions. (line 39) -* ANSI: Glossary. (line 30) +* ANSI: Glossary. (line 35) * archeologists: Bugs. (line 6) * ARGC/ARGV variables <1>: ARGC and ARGV. (line 6) * ARGC/ARGV variables: Auto-set. (line 11) @@ -24832,7 +24851,7 @@ Index (line 6) * artificial intelligence, gawk and: Distribution contents. (line 55) -* ASCII <1>: Glossary. (line 137) +* ASCII <1>: Glossary. (line 141) * ASCII: Ordinal Functions. (line 45) * asort() function (gawk) <1>: Array Sorting Functions. (line 6) @@ -24863,7 +24882,7 @@ Index * asterisk (*), *= operator <1>: Precedence. (line 95) * asterisk (*), *= operator: Assignment Ops. (line 129) * atan2() function: Numeric Functions. (line 11) -* awf (amazingly workable formatter) program: Glossary. (line 20) +* awf (amazingly workable formatter) program: Glossary. (line 25) * awk language, POSIX version: Assignment Ops. (line 136) * awk programs <1>: Two Rules. (line 6) * awk programs <2>: Executable Scripts. (line 6) @@ -25050,7 +25069,7 @@ Index * Brian Kernighan's awk, extensions: BTL. (line 6) * Broder, Alan J.: Contributors. (line 86) * Brown, Martin: Contributors. (line 80) -* BSD-based operating systems: Glossary. (line 594) +* BSD-based operating systems: Glossary. (line 611) * bt debugger command (alias for backtrace): Dgawk Stack. (line 13) * Buening, Andreas <1>: Bugs. (line 71) * Buening, Andreas <2>: Contributors. (line 90) @@ -25091,7 +25110,7 @@ Index * case sensitivity, string comparisons and: User-modified. (line 82) * CGI, awk scripts for: Options. (line 112) * character lists, See bracket expressions: Regexp Operators. (line 55) -* character sets (machine character encodings) <1>: Glossary. (line 137) +* character sets (machine character encodings) <1>: Glossary. (line 141) * character sets (machine character encodings): Ordinal Functions. (line 45) * character sets, See Also bracket expressions: Regexp Operators. @@ -25101,7 +25120,7 @@ Index * characters, values of as numbers: Ordinal Functions. (line 6) * Chassell, Robert J.: Acknowledgments. (line 33) * chdir() function, implementing in gawk: Sample Library. (line 6) -* chem utility: Glossary. (line 147) +* chem utility: Glossary. (line 151) * chr() user-defined function: Ordinal Functions. (line 16) * clear debugger command: Breakpoint Control. (line 36) * Cliff random numbers: Cliff Random Function. @@ -25176,7 +25195,7 @@ Index * compatibility mode (gawk), octal numbers: Nondecimal-numbers. (line 60) * compatibility mode (gawk), specifying: Options. (line 78) -* compiled programs <1>: Glossary. (line 157) +* compiled programs <1>: Glossary. (line 161) * compiled programs: Basic High Level. (line 14) * compiling gawk for Cygwin: Cygwin. (line 6) * compiling gawk for MS-DOS and MS-Windows: PC Compiling. (line 13) @@ -25230,7 +25249,7 @@ Index * cut.awk program: Cut Program. (line 45) * d debugger command (alias for delete): Breakpoint Control. (line 63) * d.c., See dark corner: Conventions. (line 38) -* dark corner <1>: Glossary. (line 189) +* dark corner <1>: Glossary. (line 193) * dark corner <2>: Truth Values. (line 24) * dark corner <3>: Assignment Ops. (line 148) * dark corner: Conventions. (line 38) @@ -25536,7 +25555,7 @@ Index * ENVIRON array <1>: Internals. (line 149) * ENVIRON array: Auto-set. (line 60) * environment variables: Auto-set. (line 60) -* epoch, definition of: Glossary. (line 235) +* epoch, definition of: Glossary. (line 239) * equals sign (=), = operator: Assignment Ops. (line 6) * equals sign (=), == operator <1>: Precedence. (line 65) * equals sign (=), == operator: Comparison Operators. @@ -25759,10 +25778,10 @@ Index * frame debugger command: Dgawk Stack. (line 25) * Free Documentation License (FDL): GNU Free Documentation License. (line 6) -* Free Software Foundation (FSF) <1>: Glossary. (line 297) +* Free Software Foundation (FSF) <1>: Glossary. (line 301) * Free Software Foundation (FSF) <2>: Getting. (line 10) * Free Software Foundation (FSF): Manual History. (line 6) -* FreeBSD: Glossary. (line 594) +* FreeBSD: Glossary. (line 611) * FS variable <1>: User-modified. (line 56) * FS variable: Field Separators. (line 14) * FS variable, --field-separator option and: Options. (line 21) @@ -25775,7 +25794,7 @@ Index (line 6) * FS, containing ^: Regexp Field Splitting. (line 59) -* FSF (Free Software Foundation) <1>: Glossary. (line 297) +* FSF (Free Software Foundation) <1>: Glossary. (line 301) * FSF (Free Software Foundation) <2>: Getting. (line 10) * FSF (Free Software Foundation): Manual History. (line 6) * function calls: Function Calls. (line 6) @@ -25921,7 +25940,7 @@ Index * gawk, VMS version of: VMS Installation. (line 6) * gawk, word-boundary operator: GNU Regexp Operators. (line 63) -* General Public License (GPL): Glossary. (line 306) +* General Public License (GPL): Glossary. (line 310) * General Public License, See GPL: Manual History. (line 11) * gensub() function (gawk) <1>: String Functions. (line 86) * gensub() function (gawk): Using Constant Regexps. @@ -25974,17 +25993,17 @@ Index * GNU awk, See gawk: Preface. (line 48) * GNU Free Documentation License: GNU Free Documentation License. (line 6) -* GNU General Public License: Glossary. (line 306) -* GNU Lesser General Public License: Glossary. (line 385) +* GNU General Public License: Glossary. (line 310) +* GNU Lesser General Public License: Glossary. (line 397) * GNU long options <1>: Options. (line 6) * GNU long options: Command Line. (line 13) * GNU long options, printing list of: Options. (line 141) -* GNU Project <1>: Glossary. (line 315) +* GNU Project <1>: Glossary. (line 319) * GNU Project: Manual History. (line 11) -* GNU/Linux <1>: Glossary. (line 594) +* GNU/Linux <1>: Glossary. (line 611) * GNU/Linux <2>: I18N Example. (line 55) * GNU/Linux: Manual History. (line 28) -* GPL (General Public License) <1>: Glossary. (line 306) +* GPL (General Public License) <1>: Glossary. (line 310) * GPL (General Public License): Manual History. (line 11) * GPL (General Public License), printing: Options. (line 85) * grcat program: Group Functions. (line 16) @@ -26132,7 +26151,7 @@ Index * internationalization, localization, portability and: I18N Portability. (line 6) * internationalizing a program: Explaining gettext. (line 6) -* interpreted programs <1>: Glossary. (line 356) +* interpreted programs <1>: Glossary. (line 361) * interpreted programs: Basic High Level. (line 14) * interval expressions: Regexp Operators. (line 116) * INVALID_HANDLE internal constant: Internals. (line 160) @@ -26140,13 +26159,14 @@ Index * IOBUF internal structure: Internals. (line 160) * iop_alloc() internal function: Internals. (line 160) * isarray() function (gawk): Type Functions. (line 11) -* ISO: Glossary. (line 367) -* ISO 8859-1: Glossary. (line 137) -* ISO Latin-1: Glossary. (line 137) +* ISO: Glossary. (line 372) +* ISO 8859-1: Glossary. (line 141) +* ISO Latin-1: Glossary. (line 141) * Jacobs, Andrew: Passwd Functions. (line 90) * Jaegermann, Michal <1>: Contributors. (line 46) * Jaegermann, Michal: Acknowledgments. (line 60) * Java implementation of awk: Other Versions. (line 96) +* Java programming language: Glossary. (line 380) * jawk: Other Versions. (line 96) * Jedi knights: Undocumented. (line 6) * join() user-defined function: Join Function. (line 18) @@ -26189,8 +26209,8 @@ Index * left shift, bitwise: Bitwise Functions. (line 32) * leftmost longest match: Multiple Line. (line 26) * length() function: String Functions. (line 166) -* Lesser General Public License (LGPL): Glossary. (line 385) -* LGPL (Lesser General Public License): Glossary. (line 385) +* Lesser General Public License (LGPL): Glossary. (line 397) +* LGPL (Lesser General Public License): Glossary. (line 397) * libmawk: Other Versions. (line 104) * libraries of awk functions: Library Functions. (line 6) * libraries of awk functions, assertions: Assert Function. (line 6) @@ -26235,7 +26255,7 @@ Index * lint checking, undefined functions: Pass By Value/Reference. (line 88) * LINT variable: User-modified. (line 98) -* Linux <1>: Glossary. (line 594) +* Linux <1>: Glossary. (line 611) * Linux <2>: I18N Example. (line 55) * Linux: Manual History. (line 28) * list debugger command: Miscellaneous Dgawk Commands. @@ -26306,7 +26326,7 @@ Index * nargs internal variable: Internals. (line 49) * nawk utility: Names. (line 17) * negative zero: Unexpected Results. (line 28) -* NetBSD: Glossary. (line 594) +* NetBSD: Glossary. (line 611) * networks, programming: TCP/IP Networking. (line 6) * networks, support for: Special Network. (line 6) * newlines <1>: Boolean Ops. (line 67) @@ -26398,7 +26418,7 @@ Index * OFS variable <1>: User-modified. (line 124) * OFS variable <2>: Output Separators. (line 6) * OFS variable: Changing Fields. (line 64) -* OpenBSD: Glossary. (line 594) +* OpenBSD: Glossary. (line 611) * OpenSolaris: Other Versions. (line 86) * operating systems, BSD-based: Manual History. (line 28) * operating systems, PC, gawk on: PC Using. (line 6) @@ -26467,8 +26487,8 @@ Index * output, standard: Special FD. (line 6) * p debugger command (alias for print): Viewing And Changing Data. (line 36) -* P1003.1 POSIX standard: Glossary. (line 441) -* P1003.2 POSIX standard: Glossary. (line 441) +* P1003.1 POSIX standard: Glossary. (line 454) +* P1003.2 POSIX standard: Glossary. (line 454) * parameters, number of: Internals. (line 49) * parentheses (): Regexp Operators. (line 79) * parentheses (), pgawk program: Profiling. (line 141) @@ -26659,8 +26679,10 @@ Index * programming conventions, private variable names: Library Names. (line 23) * programming language, recipe for: History. (line 6) +* Programming languages, Ada: Glossary. (line 20) * programming languages, data-driven vs. procedural: Getting Started. (line 12) +* Programming languages, Java: Glossary. (line 380) * programming, basic steps: Basic High Level. (line 19) * programming, concepts: Basic Concepts. (line 6) * pwcat program: Passwd Functions. (line 23) @@ -26937,7 +26959,7 @@ Index * sqrt() function: Numeric Functions. (line 77) * square brackets ([]): Regexp Operators. (line 55) * srand() function: Numeric Functions. (line 81) -* Stallman, Richard <1>: Glossary. (line 297) +* Stallman, Richard <1>: Glossary. (line 301) * Stallman, Richard <2>: Contributors. (line 24) * Stallman, Richard <3>: Acknowledgments. (line 18) * Stallman, Richard: Manual History. (line 6) @@ -27107,12 +27129,12 @@ Index * undisplay debugger command: Viewing And Changing Data. (line 80) * undocumented features: Undocumented. (line 6) -* Unicode: Glossary. (line 137) +* Unicode: Glossary. (line 141) * uninitialized variables, as array subscripts: Uninitialized Subscripts. (line 6) * uniq utility: Uniq Program. (line 6) * uniq.awk program: Uniq Program. (line 65) -* Unix: Glossary. (line 594) +* Unix: Glossary. (line 611) * Unix awk, backslashes in escape sequences: Escape Sequences. (line 125) * Unix awk, close() function and: Close Files And Pipes. @@ -27651,13 +27673,13 @@ Ref: Basic High Level-Footnote-1895708 Node: Basic Data Typing895893 Node: Floating Point Issues900418 Node: String Conversion Precision901501 -Ref: String Conversion Precision-Footnote-1903195 -Node: Unexpected Results903304 -Node: POSIX Floating Point Problems905130 -Ref: POSIX Floating Point Problems-Footnote-1908832 -Node: Glossary908870 -Node: Copying933013 -Node: GNU Free Documentation License970570 -Node: Index995707 +Ref: String Conversion Precision-Footnote-1903201 +Node: Unexpected Results903310 +Node: POSIX Floating Point Problems905136 +Ref: POSIX Floating Point Problems-Footnote-1908841 +Node: Glossary908879 +Node: Copying933855 +Node: GNU Free Documentation License971412 +Node: Index996549 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 49229d19..a1f709cf 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -30033,21 +30033,19 @@ The following program (@file{values.awk}) illustrates this: @example @{ - $1 = $2 + $3 + sum = $1 + $2 # see it for what it is - printf("$1 = %.12g\n", $1) + printf("sum = %.12g\n", sum) # use CONVFMT - a = "<" $1 ">" + a = "<" sum ">" print "a =", a -@group # use OFMT - print "$1 =", $1 -@end group + print "sum =", sum @} @end example @noindent -This program shows the full value of the sum of @code{$2} and @code{$3} +This program shows the full value of the sum of @code{$1} and @code{$2} using @code{printf}, and then prints the string values obtained from both automatic conversion (via @code{CONVFMT}) and from printing (via @code{OFMT}). @@ -30055,10 +30053,10 @@ from printing (via @code{OFMT}). Here is what happens when the program is run: @example -$ @kbd{echo 2 3.654321 1.2345678 | awk -f values.awk} -@print{} $1 = 4.8888888 +$ @kbd{echo 3.654321 1.2345678 | awk -f values.awk} +@print{} sum = 4.8888888 @print{} a = <4.88889> -@print{} $1 = 4.88889 +@print{} sum = 4.88889 @end example This makes it clear that the full numeric value is different from @@ -30150,8 +30148,8 @@ source code constants.) @item Support for the special IEEE 754 floating point values ``Not A Number'' (NaN), positive Infinity (``inf'') and negative Infinity (``@minus{}inf''). -In particular, the format for these values is as specified by the ISO C99 -standard, which ignores case and can allow machine-dependent additional +In particular, the format for these values is as specified by the ISO 1999 +C standard, which ignores case and can allow machine-dependent additional characters after the @samp{nan} and allow either @samp{inf} or @samp{infinity}. @end itemize @@ -30190,9 +30188,9 @@ The solution implemented in @command{gawk} is as follows: With the @option{--posix} command-line option, @command{gawk} becomes ``hands off.'' String values are passed directly to the system library's @code{strtod()} function, and if it successfully returns a numeric value, -that is what's used. By definition, the results are not portable across -different systems.@footnote{You asked for it, you got it.} -They are also a little surprising: +that is what's used.@footnote{You asked for it, you got it.} +By definition, the results are not portable across +different systems. They are also a little surprising: @example $ @kbd{echo nanny | gawk --posix '@{ print $1 + 0 @}'} @@ -30250,6 +30248,13 @@ microcomputers. It is a good example of a program that would have been better written in another language. You can get it from @uref{http://awk.info/?awk100/aaa}. +@cindex Ada programming language +@cindex Programming languages, Ada +@item Ada +A programming language originally defined by the U.S.@: Department of +Defense for embedded programming. It was designed to enforce good +Software Engineering practices. + @cindex amazingly workable formatter (@command{awf}) @cindex @command{awf} (amazingly workable formatter) program @item Amazingly Workable Formatter (@command{awf}) @@ -30347,6 +30352,7 @@ numerical, I/O-related, and string computations. Examples are @code{sqrt()} (for the square root of a number) and @code{substr()} (for a substring of a string). @command{gawk} provides functions for timestamp management, bit manipulation, +array sorting, type checking, and runtime string translation. (@xref{Built-in}.) @@ -30399,8 +30405,7 @@ The system programming language that most GNU software is written in. The points out similarities between @command{awk} and C when appropriate. In general, @command{gawk} attempts to be as similar to the 1990 version -of ISO C as makes sense. Future versions of @command{gawk} may adopt features -from the newer 1999 standard, as appropriate. +of ISO C as makes sense. @item C++ A popular object-oriented programming language derived from C. @@ -30458,7 +30463,7 @@ expression is the value of @var{expr2}; otherwise the value is is evaluated. (@xref{Conditional Exp}.) @item Comparison Expression -A relation that is either true or false, such as @samp{(a < b)}. +A relation that is either true or false, such as @samp{a < b}. Comparison expressions are used in @code{if}, @code{while}, @code{do}, and @code{for} statements, and in patterns to select which input records to process. @@ -30496,7 +30501,7 @@ The situation in which two communicating processes are each waiting for the other to perform an action. @item Debugger -A program used to help developers remove ``bugs'' (de-bug) from +A program used to help developers remove ``bugs'' from (de-bug) their programs. @item Double Precision @@ -30569,8 +30574,8 @@ See also ``Double Precision'' and ``Single Precision.'' Format strings are used to control the appearance of output in the @code{strftime()} and @code{sprintf()} functions, and are used in the @code{printf} statement as well. Also, data conversions from numbers to strings -are controlled by the format string contained in the built-in variable -@code{CONVFMT}. (@xref{Control Letters}.) +are controlled by the format strings contained in the built-in variables +@code{CONVFMT} and @code{OFMT}. (@xref{Control Letters}.) @item Free Documentation License This document describes the terms under which this @value{DOCUMENT} @@ -30637,6 +30642,7 @@ Base 16 notation, where the digits are @code{0}--@code{9} and representing 10, @samp{B} representing 11, and so on, up to @samp{F} for 15. Hexadecimal numbers are written in C using a leading @samp{0x}, to indicate their base. Thus, @code{0x12} is 18 (1 times 16 plus 2). +@xref{Nondecimal-numbers}. @item I/O Abbreviation for ``Input/Output,'' the act of moving data into and/or @@ -30664,7 +30670,7 @@ See also ``Compiler.'' @item Interval Expression A component of a regular expression that lets you specify repeated matches of -some part of the regexp. Interval expressions were not traditionally available +some part of the regexp. Interval expressions were not originally available in @command{awk} programs. @cindex ISO @@ -30676,13 +30682,23 @@ In the computer arena, important standards like those for C, C++, and POSIX become both American national and ISO international standards simultaneously. This @value{DOCUMENT} refers to Standard C as ``ISO C'' throughout. +@cindex Java programming language +@cindex Programming languages, Java +@item Java +A modern programming language originally developed by Sun Microsystems +(now Oracle) supporting Object-Oriented programming. Although usually +implemented by compiling to the instructions for a standard virtual +machine (the JVM), the language can be compiled to native code. + @item Keyword In the @command{awk} language, a keyword is a word that has special meaning. Keywords are reserved and may not be used as variable names. @command{gawk}'s keywords are: @code{BEGIN}, +@code{BEGINFILE}, @code{END}, +@code{ENDFILE}, @code{break}, @code{case}, @code{continue}, @@ -30753,12 +30769,13 @@ occurrences of the field separator appear next to each other. @item Number A numeric-valued data object. Modern @command{awk} implementations use double precision floating-point to represent numbers. -Very old @command{awk} implementations use single precision floating-point. +Ancient @command{awk} implementations used single precision floating-point. @item Octal Base-eight notation, where the digits are @code{0}--@code{7}. Octal numbers are written in C using a leading @samp{0}, to indicate their base. Thus, @code{013} is 11 (one times 8 plus 3). +@xref{Nondecimal-numbers}. @cindex P1003.1 POSIX standard @cindex P1003.2 POSIX standard @@ -30781,6 +30798,8 @@ that specify a Portable Operating System interface. The ``IX'' denotes the Unix heritage of these standards. The main standard of interest for @command{awk} users is @cite{IEEE Standard for Information Technology, Standard 1003.1-2008}. +The 2008 POSIX standard can be found online at +@url{http://www.opengroup.org/onlinepubs/9699919799/}. @item Precedence The order in which operations are performed when operators are used @@ -30799,7 +30818,8 @@ specify single lines. (@xref{Pattern Overview}.) @item Recursion When a function calls itself, either directly or indirectly. -If this isn't clear, refer to the entry for ``recursion.'' +As long as this is not clear, refer to the entry for ``recursion.'' +If this is clear, stop, and proceed to the next entry. @item Redirection Redirection means performing input from something other than the standard input @@ -30814,15 +30834,15 @@ operators. and @ref{Redirection}.) @item Regexp -Short for @dfn{regular expression}. A regexp is a pattern that denotes a -set of strings, possibly an infinite set. For example, the regexp -@samp{R.*xp} matches any string starting with the letter @samp{R} -and ending with the letters @samp{xp}. In @command{awk}, regexps are -used in patterns and in conditional expressions. Regexps may contain -escape sequences. (@xref{Regexp}.) +See ``Regular Expression.'' @item Regular Expression -See ``regexp.'' +A regular expression (``regexp'' for short) is a pattern that denotes a +set of strings, possibly an infinite set. For example, the regular expression +@samp{R.*xp} matches any string starting with the letter @samp{R} +and ending with the letters @samp{xp}. In @command{awk}, regular expressions are +used in patterns and in conditional expressions. Regular expressions may contain +escape sequences. (@xref{Regexp}.) @item Regular Expression Constant A regular expression constant is a regular expression written within @@ -30930,7 +30950,8 @@ AT&T Bell Laboratories. It initially became popular in universities around the world and later moved into commercial environments as a software development system and network server system. There are many commercial versions of Unix, as well as several work-alike systems whose source code -is freely available (such as GNU/Linux, NetBSD, FreeBSD, and OpenBSD). +is freely available (such as GNU/Linux, @uref{http://www.netbsd.org, NetBSD}, +@uref{http://www.freebsd.org, FreeBSD}, and @uref{http://www.openbsd.org, OpenBSD}). @item UTC The accepted abbreviation for ``Universal Coordinated Time.'' |