gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-3662-gb78248


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-3662-gb782489
Date: Sun, 17 Feb 2019 14:25:50 -0500 (EST)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, master has been updated
       via  b782489ec7ddeb7296925c762c4df812708b1440 (commit)
       via  2fb99a213dfe3a88087bdccb9f57b6de5f8a5644 (commit)
      from  708196dcbb974209f586a749ef6045c8c3039e1c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=b782489ec7ddeb7296925c762c4df812708b1440

commit b782489ec7ddeb7296925c762c4df812708b1440
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Feb 17 21:25:38 2019 +0200

    Update it.po.

diff --git a/po/ChangeLog b/po/ChangeLog
index ff2b51a..7056202 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2019-02-17         Arnold D. Robbins     <address@hidden>
+
+       * it.po: Updated.
+
 2019-02-15         Arnold D. Robbins     <address@hidden>
 
        * fr.po, pt_BR.po: Updated.
diff --git a/po/it.po b/po/it.po
index 8532be3..8c4cfd7 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,13 +1,13 @@
 # Italian messages for GNU Awk
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2019 Free Software Foundation, Inc.
 # Antonio Colombo <address@hidden>.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU Awk 4.2.1, API: 2.0\n"
+"Project-Id-Version: GNU Awk 4.2.2, API: 2.0\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2019-01-26 21:24+0200\n"
-"PO-Revision-Date: 2018-12-14 16:02+0100\n"
+"POT-Creation-Date: 2019-02-17 19:30+0100\n"
+"PO-Revision-Date: 2019-02-17 20:00+0100\n"
 "Last-Translator: Antonio Colombo <address@hidden>\n"
 "Language-Team: Italian <address@hidden>\n"
 "Language: it\n"
@@ -53,23 +53,23 @@ msgstr "tentativo di usare scalare`%s[\"%.*s\"]' come 
vettore"
 
 #: array.c:782
 msgid "adump: first argument not an array"
-msgstr "adump: primo argomento non-vettoriale"
+msgstr "adump: il primo argomento non è un vettore"
 
 #: array.c:824
 msgid "asort: second argument not an array"
-msgstr "asort: secondo argomento non-vettoriale"
+msgstr "asort: il secondo argomento non è un vettore"
 
 #: array.c:825
 msgid "asorti: second argument not an array"
-msgstr "asorti: secondo argomento non-vettoriale"
+msgstr "asorti: il secondo argomento non è un vettore"
 
 #: array.c:832
 msgid "asort: first argument not an array"
-msgstr "asort: primo argomento non-vettoriale"
+msgstr "asort: il primo argomento non è un vettore"
 
 #: array.c:833
 msgid "asorti: first argument not an array"
-msgstr "asorti: primo argomento non-vettoriale"
+msgstr "asorti: il primo argomento non è un vettore"
 
 #: array.c:840
 msgid "asort: cannot use a subarray of first arg for second arg"
@@ -118,423 +118,425 @@ msgstr "ogni regola deve avere una parte `espressione' 
o una parte `azione'"
 msgid "old awk does not support multiple `BEGIN' or `END' rules"
 msgstr "il vecchio awk non supporta più di una regola `BEGIN' o `END'"
 
-#: awkgram.y:497
+#: awkgram.y:483
 #, c-format
 msgid "`%s' is a built-in function, it cannot be redefined"
 msgstr "`%s' è una funzione interna, non si può ridefinire"
 
-#: awkgram.y:561
+#: awkgram.y:547
 msgid "regexp constant `//' looks like a C++ comment, but is not"
 msgstr "espressione regolare costante `//' sembra un commento C++, ma non lo è"
 
-#: awkgram.y:565
+#: awkgram.y:551
 #, c-format
 msgid "regexp constant `/%s/' looks like a C comment, but is not"
 msgstr "espressione regolare costante `/%s/' sembra un commento C, ma non lo è"
 
-#: awkgram.y:692
+#: awkgram.y:678
 #, c-format
 msgid "duplicate case values in switch body: %s"
 msgstr "valori di `case' doppi all'interno di uno `switch': %s"
 
-#: awkgram.y:713
+#: awkgram.y:699
 msgid "duplicate `default' detected in switch body"
 msgstr "valori di default doppi all'interno di uno `switch'"
 
-#: awkgram.y:1048 awkgram.y:4461
+#: awkgram.y:1034 awkgram.y:4451
 msgid "`break' is not allowed outside a loop or switch"
 msgstr "`break' non consentito fuori da un ciclo o da uno `switch'"
 
-#: awkgram.y:1058 awkgram.y:4453
+#: awkgram.y:1044 awkgram.y:4443
 msgid "`continue' is not allowed outside a loop"
 msgstr "`continue' non consentito fuori da un un ciclo"
 
-#: awkgram.y:1069
+#: awkgram.y:1055
 #, c-format
 msgid "`next' used in %s action"
 msgstr "`next' usato in `azione' %s"
 
-#: awkgram.y:1080
+#: awkgram.y:1066
 #, c-format
 msgid "`nextfile' used in %s action"
 msgstr "`nextfile' usato in `azione' %s"
 
-#: awkgram.y:1108
+#: awkgram.y:1094
 msgid "`return' used outside function context"
 msgstr "`return' usato fuori da una funzione"
 
-#: awkgram.y:1178
+#: awkgram.y:1164
 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
 msgstr "`print' da solo in BEGIN o END dovrebbe forse essere `print \"\"'"
 
-#: awkgram.y:1244 awkgram.y:1293
+#: awkgram.y:1234 awkgram.y:1283
 msgid "`delete' is not allowed with SYMTAB"
 msgstr "`delete' non consentito in SYMTAB"
 
-#: awkgram.y:1246 awkgram.y:1295
+#: awkgram.y:1236 awkgram.y:1285
 msgid "`delete' is not allowed with FUNCTAB"
 msgstr "`delete' non consentito in FUNCTAB"
 
-#: awkgram.y:1280 awkgram.y:1284
+#: awkgram.y:1270 awkgram.y:1274
 msgid "`delete(array)' is a non-portable tawk extension"
 msgstr "`delete(array)' è un'estensione tawk non-portabile"
 
-#: awkgram.y:1420
+#: awkgram.y:1410
 msgid "multistage two-way pipelines don't work"
 msgstr "`pipeline' multistadio bidirezionali non funzionano"
 
-#: awkgram.y:1422
+#: awkgram.y:1412
 msgid "concatenation as I/O `>' redirection target is ambiguous"
 msgstr "concatenazione in I/O `>' destinazione della ridirezione ambigua"
 
-#: awkgram.y:1626
+#: awkgram.y:1616
 msgid "regular expression on right of assignment"
 msgstr "espressione regolare usata per assegnare un valore"
 
-#: awkgram.y:1641 awkgram.y:1654
+#: awkgram.y:1631 awkgram.y:1644
 msgid "regular expression on left of `~' or `!~' operator"
 msgstr "espressione regolare prima di operatore `~' o `!~'"
 
-#: awkgram.y:1671 awkgram.y:1820
+#: awkgram.y:1661 awkgram.y:1810
 msgid "old awk does not support the keyword `in' except after `for'"
 msgstr "il vecchio awk non supporta la parola-chiave `in' se non dopo `for'"
 
-#: awkgram.y:1681
+#: awkgram.y:1671
 msgid "regular expression on right of comparison"
 msgstr "espressione regolare a destra in un confronto"
 
-#: awkgram.y:1800
+#: awkgram.y:1790
 #, c-format
 msgid "non-redirected `getline' invalid inside `%s' rule"
 msgstr "`getline' non ridiretta invalida all'interno della regola `%s'"
 
-#: awkgram.y:1803
+#: awkgram.y:1793
 msgid "non-redirected `getline' undefined inside END action"
 msgstr "`getline' non ri-diretta indefinita dentro `azione' END"
 
-#: awkgram.y:1822
+#: awkgram.y:1812
 msgid "old awk does not support multidimensional arrays"
 msgstr "il vecchio awk non supporta vettori multidimensionali"
 
-#: awkgram.y:1925
+#: awkgram.y:1915
 msgid "call of `length' without parentheses is not portable"
 msgstr "chiamata a `length' senza parentesi non-portabile"
 
-#: awkgram.y:1999
+#: awkgram.y:1989
 msgid "indirect function calls are a gawk extension"
 msgstr "chiamate a funzione indirette sono un'estensione gawk"
 
-#: awkgram.y:2012
+#: awkgram.y:2002
 #, c-format
 msgid "can not use special variable `%s' for indirect function call"
 msgstr ""
 "non riesco a usare la variabile speciale `%s' come parametro indiretto di "
 "funzione"
 
-#: awkgram.y:2045
+#: awkgram.y:2035
 #, c-format
 msgid "attempt to use non-function `%s' in function call"
 msgstr "tentativo di usare la non-funzione `%s' in una chiamata di funzione"
 
-#: awkgram.y:2110
+#: awkgram.y:2100
 msgid "invalid subscript expression"
 msgstr "espressione indice invalida"
 
-#: awkgram.y:2483 awkgram.y:2503 gawkapi.c:273 gawkapi.c:290 msg.c:130
+#: awkgram.y:2473 awkgram.y:2493 gawkapi.c:273 gawkapi.c:290 msg.c:130
 msgid "warning: "
 msgstr "attenzione: "
 
-#: awkgram.y:2501 gawkapi.c:245 gawkapi.c:288 msg.c:162
+#: awkgram.y:2491 gawkapi.c:245 gawkapi.c:288 msg.c:162
 msgid "fatal: "
 msgstr "fatale: "
 
-#: awkgram.y:2554
+#: awkgram.y:2544
 msgid "unexpected newline or end of string"
 msgstr "carattere 'a capo' o fine stringa non previsti"
 
-#: awkgram.y:2575
+#: awkgram.y:2565
 msgid ""
 "source files / command-line arguments must contain complete functions or "
 "rules"
 msgstr ""
+"i file sorgente / gli argomenti sulla riga di comando devono contenere "
+"funzioni o regole complete"
 
-#: awkgram.y:2855 awkgram.y:2933 awkgram.y:3171 debug.c:531 debug.c:547
-#: debug.c:2824 debug.c:5193
+#: awkgram.y:2845 awkgram.y:2923 awkgram.y:3161 debug.c:536 debug.c:552
+#: debug.c:2829 debug.c:5194
 #, c-format
 msgid "can't open source file `%s' for reading (%s)"
 msgstr "non riesco ad aprire file sorgente `%s' in lettura (%s)"
 
-#: awkgram.y:2856 awkgram.y:2993
+#: awkgram.y:2846 awkgram.y:2983
 #, c-format
 msgid "can't open shared library `%s' for reading (%s)"
 msgstr "non riesco ad aprire shared library `%s' in lettura (%s)"
 
-#: awkgram.y:2858 awkgram.y:2934 awkgram.y:2994 builtin.c:149 debug.c:5344
+#: awkgram.y:2848 awkgram.y:2924 awkgram.y:2984 builtin.c:149 debug.c:5345
 msgid "reason unknown"
 msgstr "ragione indeterminata"
 
-#: awkgram.y:2867 awkgram.y:2891
+#: awkgram.y:2857 awkgram.y:2881
 #, c-format
 msgid "can't include `%s' and use it as a program file"
 msgstr "non riesco a includere `%s' per usarlo come file di programma"
 
-#: awkgram.y:2880
+#: awkgram.y:2870
 #, c-format
 msgid "already included source file `%s'"
 msgstr "file sorgente `%s' già incluso"
 
-#: awkgram.y:2881
+#: awkgram.y:2871
 #, c-format
 msgid "already loaded shared library `%s'"
 msgstr "shared library `%s' già inclusa"
 
-#: awkgram.y:2918
+#: awkgram.y:2908
 msgid "@include is a gawk extension"
 msgstr "@include è un'estensione gawk"
 
-#: awkgram.y:2924
+#: awkgram.y:2914
 msgid "empty filename after @include"
 msgstr "nome-file mancante dopo @include"
 
-#: awkgram.y:2973
+#: awkgram.y:2963
 msgid "@load is a gawk extension"
 msgstr "@load è un'estensione gawk"
 
-#: awkgram.y:2980
+#: awkgram.y:2970
 msgid "empty filename after @load"
 msgstr "nome-file mancante dopo @include"
 
-#: awkgram.y:3123
+#: awkgram.y:3113
 msgid "empty program text on command line"
 msgstr "programma nullo sulla riga comandi"
 
-#: awkgram.y:3238
+#: awkgram.y:3228
 #, c-format
 msgid "can't read sourcefile `%s' (%s)"
 msgstr "non riesco a leggere file sorgente `%s' (%s)"
 
-#: awkgram.y:3249
+#: awkgram.y:3239
 #, c-format
 msgid "source file `%s' is empty"
 msgstr "file sorgente `%s' vuoto"
 
-#: awkgram.y:3308
+#: awkgram.y:3298
 #, c-format
 msgid "PEBKAC error: invalid character '\\%03o' in source code"
 msgstr "errore PEBKAC: carattere invalido '\\%03o' nel codice sorgente"
 
-#: awkgram.y:3535
+#: awkgram.y:3525
 msgid "source file does not end in newline"
 msgstr "file sorgente non termina con carattere 'a capo'"
 
-#: awkgram.y:3656
+#: awkgram.y:3646
 msgid "unterminated regexp ends with `\\' at end of file"
 msgstr "espressione regolare non completata termina con `\\' a fine file"
 
-#: awkgram.y:3683
+#: awkgram.y:3673
 #, c-format
 msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
 msgstr ""
 "%s: %d: modificatore di espressione regolare tawk `/.../%c' non valido in "
 "gawk"
 
-#: awkgram.y:3687
+#: awkgram.y:3677
 #, c-format
 msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
 msgstr "modificatore di espressione regolare tawk `/.../%c' non valido in gawk"
 
-#: awkgram.y:3700
+#: awkgram.y:3690
 msgid "unterminated regexp"
 msgstr "espressione regolare non completata"
 
-#: awkgram.y:3704
+#: awkgram.y:3694
 msgid "unterminated regexp at end of file"
 msgstr "espressione regolare non completata a fine file"
 
-#: awkgram.y:3793
+#: awkgram.y:3783
 msgid "use of `\\ #...' line continuation is not portable"
 msgstr "uso di `\\ #...' continuazione riga non-portabile"
 
-#: awkgram.y:3815
+#: awkgram.y:3805
 msgid "backslash not last character on line"
 msgstr "la barra inversa non è l'ultimo carattere della riga"
 
-#: awkgram.y:3862 awkgram.y:3864
+#: awkgram.y:3852 awkgram.y:3854
 msgid "multidimensional arrays are a gawk extension"
 msgstr "i vettori multidimensionali sono un'estensione gawk"
 
-#: awkgram.y:3889
+#: awkgram.y:3879
 msgid "POSIX does not allow operator `**='"
 msgstr "POSIX non consente l'operatore `**='"
 
-#: awkgram.y:3891
+#: awkgram.y:3881
 msgid "old awk does not support operator `**='"
 msgstr "il vecchio awk non supporta l'operatore `**='"
 
-#: awkgram.y:3900
+#: awkgram.y:3890
 msgid "POSIX does not allow operator `**'"
 msgstr "POSIX non consente l'operatore `**'"
 
-#: awkgram.y:3902
+#: awkgram.y:3892
 msgid "old awk does not support operator `**'"
 msgstr "il vecchio awk non supporta l'operatore `**'"
 
-#: awkgram.y:3937
+#: awkgram.y:3927
 msgid "operator `^=' is not supported in old awk"
 msgstr "l'operatore `^=' non è supportato nel vecchio awk"
 
-#: awkgram.y:3945
+#: awkgram.y:3935
 msgid "operator `^' is not supported in old awk"
 msgstr "l'operatore `^' non è supportato nel vecchio awk"
 
-#: awkgram.y:4042 awkgram.y:4064 command.y:1187
+#: awkgram.y:4032 awkgram.y:4054 command.y:1187
 msgid "unterminated string"
 msgstr "stringa non terminata"
 
-#: awkgram.y:4052 main.c:1197
+#: awkgram.y:4042 main.c:1197
 msgid "POSIX does not allow physical newlines in string values"
 msgstr ""
 "POSIX non consente dei caratteri di ritorno a capo nei valori assegnati a "
 "una stringa"
 
-#: awkgram.y:4054 node.c:453
+#: awkgram.y:4044 node.c:453
 msgid "backslash string continuation is not portable"
 msgstr "uso di barra inversa per continuazione stringa non-portabile"
 
-#: awkgram.y:4292
+#: awkgram.y:4282
 #, c-format
 msgid "invalid char '%c' in expression"
 msgstr "carattere '%c' non valido in un'espressione"
 
-#: awkgram.y:4387
+#: awkgram.y:4377
 #, c-format
 msgid "`%s' is a gawk extension"
 msgstr "`%s' è un'estensione gawk"
 
-#: awkgram.y:4392
+#: awkgram.y:4382
 #, c-format
 msgid "POSIX does not allow `%s'"
 msgstr "POSIX non consente `%s'"
 
-#: awkgram.y:4400
+#: awkgram.y:4390
 #, c-format
 msgid "`%s' is not supported in old awk"
 msgstr "`%s' non è supportato nel vecchio awk"
 
-#: awkgram.y:4494
+#: awkgram.y:4488
 msgid "`goto' considered harmful!"
 msgstr "`goto' considerato pericoloso!"
 
-#: awkgram.y:4563
+#: awkgram.y:4557
 #, c-format
 msgid "%d is invalid as number of arguments for %s"
 msgstr "%d non valido come numero di argomenti per %s"
 
-#: awkgram.y:4598
+#: awkgram.y:4592
 #, c-format
 msgid "%s: string literal as last arg of substitute has no effect"
 msgstr "%s: una stringa come ultimo argomento di `substitute' non ha effetto"
 
-#: awkgram.y:4603
+#: awkgram.y:4597
 #, c-format
 msgid "%s third parameter is not a changeable object"
 msgstr "il terzo parametro di '%s'  non è un oggetto modificabile"
 
-#: awkgram.y:4707 awkgram.y:4710
+#: awkgram.y:4701 awkgram.y:4704
 msgid "match: third argument is a gawk extension"
 msgstr "match: il terzo argomento è un'estensione gawk"
 
-#: awkgram.y:4764 awkgram.y:4767
+#: awkgram.y:4758 awkgram.y:4761
 msgid "close: second argument is a gawk extension"
 msgstr "close: il secondo argomento è un'estensione gawk"
 
-#: awkgram.y:4779
+#: awkgram.y:4773
 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
 msgstr ""
 "uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale"
 
-#: awkgram.y:4794
+#: awkgram.y:4788
 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
 msgstr ""
 "uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale"
 
-#: awkgram.y:4813
+#: awkgram.y:4807
 msgid "index: regexp constant as second argument is not allowed"
 msgstr "index: espressione regolare come secondo argomento non consentita"
 
-#: awkgram.y:4866
+#: awkgram.y:4860
 #, c-format
 msgid "function `%s': parameter `%s' shadows global variable"
-msgstr "funzione `%s': parametro `%s' nasconde variabile globale"
+msgstr "funzione `%s': il parametro `%s' nasconde variabile globale"
 
-#: awkgram.y:4915 debug.c:4178 debug.c:4221 debug.c:5342
+#: awkgram.y:4909 debug.c:4179 debug.c:4222 debug.c:5343
 #, c-format
 msgid "could not open `%s' for writing (%s)"
 msgstr "non riesco ad aprire `%s' in scrittura (%s)"
 
-#: awkgram.y:4916
+#: awkgram.y:4910
 msgid "sending variable list to standard error"
 msgstr "mando lista variabili a `standard error'"
 
-#: awkgram.y:4924
+#: awkgram.y:4918
 #, c-format
 msgid "%s: close failed (%s)"
 msgstr "%s: `close' non riuscita (%s)"
 
-#: awkgram.y:4949
+#: awkgram.y:4943
 msgid "shadow_funcs() called twice!"
 msgstr "shadow_funcs() chiamata due volte!"
 
-#: awkgram.y:4957
+#: awkgram.y:4951
 msgid "there were shadowed variables."
 msgstr "c'erano variabili nascoste."
 
-#: awkgram.y:5034
+#: awkgram.y:5028
 #, c-format
 msgid "function name `%s' previously defined"
 msgstr "funzione di nome `%s' definita in precedenza"
 
-#: awkgram.y:5085
+#: awkgram.y:5079
 #, c-format
 msgid "function `%s': can't use function name as parameter name"
 msgstr ""
 "funzione `%s': non è possibile usare nome della funzione come nome parametro"
 
-#: awkgram.y:5088
+#: awkgram.y:5082
 #, c-format
 msgid "function `%s': can't use special variable `%s' as a function parameter"
 msgstr ""
 "funzione `%s': non è possibile usare la variabile speciale `%s' come "
 "parametro di funzione"
 
-#: awkgram.y:5092
-#, fuzzy, c-format
+#: awkgram.y:5086
+#, c-format
 msgid "function `%s': parameter `%s' cannot contain a namespace"
-msgstr "funzione `%s': parametro `%s' nasconde variabile globale"
+msgstr "funzione `%s': il parametro `%s' non può contenere un nome-di-spazio"
 
-#: awkgram.y:5099
+#: awkgram.y:5093
 #, c-format
 msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d"
+msgstr "funzione `%s': il parametro #%d, `%s', duplica il parametro #%d"
 
-#: awkgram.y:5188
+#: awkgram.y:5182
 #, c-format
 msgid "function `%s' called but never defined"
 msgstr "funzione `%s' chiamata ma mai definita"
 
-#: awkgram.y:5192
+#: awkgram.y:5186
 #, c-format
 msgid "function `%s' defined but never called directly"
 msgstr "funzione `%s' definita ma mai chiamata direttamente"
 
-#: awkgram.y:5224
+#: awkgram.y:5218
 #, c-format
 msgid "regexp constant for parameter #%d yields boolean value"
 msgstr ""
 "espressione regolare di valore costante per parametro #%d genera valore "
 "booleano"
 
-#: awkgram.y:5239
+#: awkgram.y:5233
 #, c-format
 msgid ""
 "function `%s' called with space between name and `(',\n"
@@ -543,69 +545,80 @@ msgstr ""
 "funzione `%s' chiamata con spazio tra il nome e `(',\n"
 "o usata come variabile o vettore"
 
-#: awkgram.y:5454
+#: awkgram.y:5448
 msgid "division by zero attempted"
 msgstr "tentativo di dividere per zero"
 
-#: awkgram.y:5463
+#: awkgram.y:5457
 #, c-format
 msgid "division by zero attempted in `%%'"
 msgstr "tentativo di dividere per zero in `%%'"
 
-#: awkgram.y:5802
+#: awkgram.y:5796
 msgid ""
 "cannot assign a value to the result of a field post-increment expression"
 msgstr ""
 "impossibile assegnare un valore al risultato di un'espressione di post-"
 "incremento di un campo"
 
-#: awkgram.y:5805
+#: awkgram.y:5799
 #, c-format
 msgid "invalid target of assignment (opcode %s)"
 msgstr "destinazione di assegnazione non valida (codice operativo %s)"
 
-#: awkgram.y:6697
+#: awkgram.y:6691
 #, c-format
 msgid "identifier %s: qualified names not allowed in traditional / POSIX mode"
 msgstr ""
+"identificativo %s: nomi qualificati non consentiti in modo tradizionale / "
+"POSIX"
 
-#: awkgram.y:6702
+#: awkgram.y:6696
 #, c-format
 msgid "identifier %s: namespace separator is two colons, not one"
 msgstr ""
+"identificativo %s: il separatore dello spazio-dei-nomi è costituito  da due "
+"caratteri ':', non da uno solo"
 
-#: awkgram.y:6708
+#: awkgram.y:6702
 #, c-format
 msgid "qualified identifier `%s' is badly formed"
-msgstr ""
+msgstr "l'identificativo qualificato `%s' non è nel formato richiesto"
 
-#: awkgram.y:6715
+#: awkgram.y:6709
 #, c-format
 msgid ""
 "identifier `%s': namespace separator can only appear once in a qualified name"
 msgstr ""
+"identificativo `%s': il separatore dello spazio-dei-nomi può apparire una "
+"sola volta in un identificativo qualificato"
 
-#: awkgram.y:6764 awkgram.y:6815
+#: awkgram.y:6758 awkgram.y:6809
 #, c-format
 msgid "using reserved identifier `%s' as a namespace is not allowed"
 msgstr ""
+"l'uso dell'identificativo riservato `%s' come nome-di-spazio  non è "
+"consentito"
 
-#: awkgram.y:6771 awkgram.y:6781
+#: awkgram.y:6765 awkgram.y:6775
 #, c-format
 msgid ""
 "using reserved identifier `%s' as second component of a qualified name is "
 "not allowed"
 msgstr ""
+"l'uso dell'identificativo riservato `%s' come secondo componente di un "
+"identificativo qualificato non è consentito"
 
-#: awkgram.y:6799
-#, fuzzy
+#: awkgram.y:6793
 msgid "@namespace is a gawk extension"
-msgstr "@include è un'estensione gawk"
+msgstr "@namespace è un'estensione gawk"
 
-#: awkgram.y:6806
+#: awkgram.y:6800
 #, c-format
 msgid "namespace name `%s' must meet identifier naming rules"
 msgstr ""
+"il nome dello spazio-dei-nomi `%s' deve rispettare le regole di assegnazione "
+"degli identificativi"
 
 #: builtin.c:143
 #, c-format
@@ -957,7 +970,7 @@ msgstr "srand: l'argomento ricevuto non 
 
 #: builtin.c:2676
 msgid "match: third argument is not an array"
-msgstr "match: terzo argomento non-vettoriale"
+msgstr "match: il terzo argomento non è un vettore"
 
 #: builtin.c:2919
 #, c-format
@@ -1098,9 +1111,8 @@ msgid "intdiv: division by zero attempted"
 msgstr "intdiv: tentativo di dividere per zero"
 
 #: builtin.c:4046
-#, fuzzy
 msgid "typeof: second argument is not an array"
-msgstr "split: secondo argomento non-vettoriale"
+msgstr "typeof: il secondo argomento non è un vettore"
 
 #: builtin.c:4082
 #, c-format
@@ -1434,7 +1446,7 @@ msgstr ""
 "dove [N] - (equivalente a backtrace) stampa tracia di tutti gli elementi o "
 "degli N più interni (più esterni se N <0)"
 
-#: command.y:1016 debug.c:409 gawkapi.c:259 msg.c:139
+#: command.y:1016 debug.c:414 gawkapi.c:259 msg.c:139
 #, c-format
 msgid "error: "
 msgstr "errore: "
@@ -1472,97 +1484,97 @@ msgstr "carattere non valido"
 msgid "undefined command: %s\n"
 msgstr "comando non definito: %s\n"
 
-#: debug.c:252
+#: debug.c:257
 msgid "set or show the number of lines to keep in history file."
 msgstr ""
 "imposta o mostra il numero di righe da tenere nel file che contiene la "
 "storia comandi."
 
-#: debug.c:254
+#: debug.c:259
 msgid "set or show the list command window size."
 msgstr "imposta o mostra dimensioni finestra lista comandi"
 
-#: debug.c:256
+#: debug.c:261
 msgid "set or show gawk output file."
 msgstr "imposta o mostra file di outpu gawk"
 
-#: debug.c:258
+#: debug.c:263
 msgid "set or show debugger prompt."
 msgstr "imposta o mostra prompt di debug"
 
-#: debug.c:260
+#: debug.c:265
 msgid "(un)set or show saving of command history (value=on|off)."
 msgstr "(dis)imposta o mostra salvataggio storia comandi (valore=on|off)."
 
-#: debug.c:262
+#: debug.c:267
 msgid "(un)set or show saving of options (value=on|off)."
 msgstr "(dis)imposta o mostra salvataggio opzioni (valore=on|off)."
 
-#: debug.c:264
+#: debug.c:269
 msgid "(un)set or show instruction tracing (value=on|off)."
 msgstr "(dis)imposta o mostra tracciamento istruzioni (valore=on|off)."
 
-#: debug.c:353
+#: debug.c:358
 msgid "program not running."
 msgstr "programma non in esecuzione."
 
-#: debug.c:456 debug.c:614
+#: debug.c:461 debug.c:619
 #, c-format
 msgid "can't read source file `%s' (%s)"
 msgstr "non riesco a leggere file sorgente `%s' (%s)"
 
-#: debug.c:461
+#: debug.c:466
 #, c-format
 msgid "source file `%s' is empty.\n"
 msgstr "file sorgente `%s' vuoto.\n"
 
-#: debug.c:488
+#: debug.c:493
 msgid "no current source file."
 msgstr "file sorgente non disponibile."
 
-#: debug.c:513
+#: debug.c:518
 #, c-format
 msgid "cannot find source file named `%s' (%s)"
 msgstr "non riesco a leggere file di nome `%s' (%s)"
 
-#: debug.c:537
+#: debug.c:542
 #, c-format
 msgid "WARNING: source file `%s' modified since program compilation.\n"
 msgstr ""
 "ATTENZIONE: file sorgente `%s' modificato dopo la compilazione del "
 "programma.\n"
 
-#: debug.c:559
+#: debug.c:564
 #, c-format
 msgid "line number %d out of range; `%s' has %d lines"
 msgstr "numero riga %d non ammesso; `%s' ha %d righe"
 
-#: debug.c:619
+#: debug.c:624
 #, c-format
 msgid "unexpected eof while reading file `%s', line %d"
 msgstr "fine-file inattesa durante lettura file `%s', riga %d"
 
-#: debug.c:628
+#: debug.c:633
 #, c-format
 msgid "source file `%s' modified since start of program execution"
 msgstr "file sorgente `%s' modificato dopo l'inizio esecuzione del programma."
 
-#: debug.c:740
+#: debug.c:745
 #, c-format
 msgid "Current source file: %s\n"
 msgstr "File sorgente corrente: %s\n"
 
-#: debug.c:741
+#: debug.c:746
 #, c-format
 msgid "Number of lines: %d\n"
 msgstr "Numero di righe: %d\n"
 
-#: debug.c:748
+#: debug.c:753
 #, c-format
 msgid "Source file (lines): %s (%d)\n"
 msgstr "File sorgente (righe): %s (%d)\n"
 
-#: debug.c:762
+#: debug.c:767
 msgid ""
 "Number  Disp  Enabled  Location\n"
 "\n"
@@ -1570,54 +1582,54 @@ msgstr ""
 "Numero  Disp  Abilit.  Posizione\n"
 "\n"
 
-#: debug.c:773
+#: debug.c:778
 #, c-format
 msgid "\tno of hits = %ld\n"
 msgstr "\tn. di occorrenze = %ld\n"
 
-#: debug.c:775
+#: debug.c:780
 #, c-format
 msgid "\tignore next %ld hit(s)\n"
 msgstr "\tignora prossime %ld occorrenze\n"
 
-#: debug.c:777 debug.c:917
+#: debug.c:782 debug.c:922
 #, c-format
 msgid "\tstop condition: %s\n"
 msgstr "\tcondizione per stop: %s\n"
 
-#: debug.c:779 debug.c:919
+#: debug.c:784 debug.c:924
 msgid "\tcommands:\n"
 msgstr "\tcomandi:\n"
 
-#: debug.c:801
+#: debug.c:806
 #, c-format
 msgid "Current frame: "
 msgstr "Elemento corrente: "
 
-#: debug.c:804
+#: debug.c:809
 #, c-format
 msgid "Called by frame: "
 msgstr "Chiamato da elemento: "
 
-#: debug.c:808
+#: debug.c:813
 #, c-format
 msgid "Caller of frame: "
 msgstr "Chiamante di elemento: "
 
-#: debug.c:826
+#: debug.c:831
 #, c-format
 msgid "None in main().\n"
 msgstr "Assente in main().\n"
 
-#: debug.c:856
+#: debug.c:861
 msgid "No arguments.\n"
 msgstr "Nessun argomento.\n"
 
-#: debug.c:857
+#: debug.c:862
 msgid "No locals.\n"
 msgstr "Nessun `locale'.\n"
 
-#: debug.c:865
+#: debug.c:870
 msgid ""
 "All defined variables:\n"
 "\n"
@@ -1625,7 +1637,7 @@ msgstr ""
 "Tutte le variabili definite:\n"
 "\n"
 
-#: debug.c:875
+#: debug.c:880
 msgid ""
 "All defined functions:\n"
 "\n"
@@ -1633,7 +1645,7 @@ msgstr ""
 "Tutte le funzioni definite:\n"
 "\n"
 
-#: debug.c:894
+#: debug.c:899
 msgid ""
 "Auto-display variables:\n"
 "\n"
@@ -1641,7 +1653,7 @@ msgstr ""
 "Auto-visualizzazione variabili:\n"
 "\n"
 
-#: debug.c:897
+#: debug.c:902
 msgid ""
 "Watch variables:\n"
 "\n"
@@ -1649,361 +1661,361 @@ msgstr ""
 "Variabili Watch [da tenere sott'occhio]:\n"
 "\n"
 
-#: debug.c:1037
+#: debug.c:1042
 #, c-format
 msgid "no symbol `%s' in current context\n"
 msgstr "nessun simbolo `%s' nel contesto corrente\n"
 
-#: debug.c:1049 debug.c:1437
+#: debug.c:1054 debug.c:1442
 #, c-format
 msgid "`%s' is not an array\n"
 msgstr "`%s' non è un vettore\n"
 
-#: debug.c:1063
+#: debug.c:1068
 #, c-format
 msgid "$%ld = uninitialized field\n"
 msgstr "%ld = variabile non inizializzata\n"
 
-#: debug.c:1084
+#: debug.c:1089
 #, c-format
 msgid "array `%s' is empty\n"
 msgstr "vettore `%s' vuoto\n"
 
-#: debug.c:1127 debug.c:1179
+#: debug.c:1132 debug.c:1184
 #, c-format
 msgid "[\"%.*s\"] not in array `%s'\n"
 msgstr "[\"%.*s\"] non presente nel vettore `%s'\n"
 
-#: debug.c:1183
+#: debug.c:1188
 #, c-format
 msgid "`%s[\"%.*s\"]' is not an array\n"
 msgstr "`%s[\"%.*s\"]' non è un vettore\n"
 
-#: debug.c:1244 debug.c:5102
+#: debug.c:1249 debug.c:5103
 #, c-format
 msgid "`%s' is not a scalar variable"
 msgstr "`%s' non è una variabile scalare"
 
-#: debug.c:1267 debug.c:5132
+#: debug.c:1272 debug.c:5133
 #, c-format
 msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
 msgstr "tentativo di usare vettore `%s[\"%.*s\"]' in un contesto scalare"
 
-#: debug.c:1290 debug.c:5143
+#: debug.c:1295 debug.c:5144
 #, c-format
 msgid "attempt to use scalar `%s[\"%.*s\"]' as array"
 msgstr "tentativo di usare scalare `%s[\"%.*s\"]' come vettore"
 
-#: debug.c:1433
+#: debug.c:1438
 #, c-format
 msgid "`%s' is a function"
 msgstr "`%s' è una funzione"
 
-#: debug.c:1475
+#: debug.c:1480
 #, c-format
 msgid "watchpoint %d is unconditional\n"
 msgstr "watchpoint %d non soggetto a condizioni\n"
 
-#: debug.c:1509
+#: debug.c:1514
 #, c-format
 msgid "No display item numbered %ld"
 msgstr "Nessun elemento numerato da visualizzare %ld"
 
-#: debug.c:1512
+#: debug.c:1517
 #, c-format
 msgid "No watch item numbered %ld"
 msgstr "Nessun elemento numerato watch [da sorvegliare] da visualizzare %ld"
 
-#: debug.c:1538
+#: debug.c:1543
 #, c-format
 msgid "%d: [\"%.*s\"] not in array `%s'\n"
 msgstr "%d: [\"%.*s\"] non presente nel vettore `%s'\n"
 
-#: debug.c:1777
+#: debug.c:1782
 msgid "attempt to use scalar value as array"
 msgstr "tentativo di usare valore scalare come vettore"
 
-#: debug.c:1868
+#: debug.c:1873
 #, c-format
 msgid "Watchpoint %d deleted because parameter is out of scope.\n"
 msgstr "Watchpoint %d cancellato perché il parametro è fuori intervallo.\n"
 
-#: debug.c:1879
+#: debug.c:1884
 #, c-format
 msgid "Display %d deleted because parameter is out of scope.\n"
 msgstr ""
 "Visualizzazione %d cancellata perché il parametro è fuori intervallo.\n"
 
-#: debug.c:1912
+#: debug.c:1917
 #, c-format
 msgid " in file `%s', line %d\n"
 msgstr " nel file `%s', riga %d\n"
 
-#: debug.c:1933
+#: debug.c:1938
 #, c-format
 msgid " at `%s':%d"
 msgstr " a `%s':%d"
 
-#: debug.c:1949 debug.c:2012
+#: debug.c:1954 debug.c:2017
 #, c-format
 msgid "#%ld\tin "
 msgstr "#%ld\tin "
 
-#: debug.c:1986
+#: debug.c:1991
 #, c-format
 msgid "More stack frames follow ...\n"
 msgstr "Ulteriori elementi stack seguono...\n"
 
-#: debug.c:2029
+#: debug.c:2034
 msgid "invalid frame number"
 msgstr "numero elemento non valido"
 
-#: debug.c:2212
+#: debug.c:2217
 #, c-format
 msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
 msgstr ""
 "Nota: breakpoint %d (abilitato, ignora prossimi %ld passaggi), anche "
 "impostato a %s:%d"
 
-#: debug.c:2219
+#: debug.c:2224
 #, c-format
 msgid "Note: breakpoint %d (enabled), also set at %s:%d"
 msgstr "Nota: breakpoint %d (abilitato), anche impostato a %s:%d"
 
-#: debug.c:2226
+#: debug.c:2231
 #, c-format
 msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
 msgstr ""
 "Nota: breakpoint %d (disabilitato, ignora prossimi %ld passaggi), anche "
 "impostato a %s:%d"
 
-#: debug.c:2233
+#: debug.c:2238
 #, c-format
 msgid "Note: breakpoint %d (disabled), also set at %s:%d"
 msgstr "Nota: breakpoint %d (disabilitato), anche impostato a %s:%d"
 
-#: debug.c:2250
+#: debug.c:2255
 #, c-format
 msgid "Breakpoint %d set at file `%s', line %d\n"
 msgstr "Breakpoint %d impostato al file `%s', riga %d\n"
 
-#: debug.c:2352
+#: debug.c:2357
 #, c-format
 msgid "Can't set breakpoint in file `%s'\n"
 msgstr "Non riesco a impostare breakpoint nel file `%s'\n"
 
-#: debug.c:2381 debug.c:2504 debug.c:3366
+#: debug.c:2386 debug.c:2509 debug.c:3367
 #, c-format
 msgid "line number %d in file `%s' out of range"
 msgstr "numero riga %d nel file `%s' fuori intervallo"
 
-#: debug.c:2385
+#: debug.c:2390
 #, c-format
 msgid "Can't find rule!!!\n"
 msgstr "Non riesco a trovare la regola!!!\n"
 
-#: debug.c:2387
+#: debug.c:2392
 #, c-format
 msgid "Can't set breakpoint at `%s':%d\n"
 msgstr "Non riesco a impostare breakpoint a `%s':%d\n"
 
-#: debug.c:2399
+#: debug.c:2404
 #, c-format
 msgid "Can't set breakpoint in function `%s'\n"
 msgstr "Non riesco a impostare breakpoint nella funzione `%s'\n"
 
-#: debug.c:2415
+#: debug.c:2420
 #, c-format
 msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
 msgstr "breakpoint %d impostato al file `%s', riga %d è senza condizioni\n"
 
-#: debug.c:2520 debug.c:2542
+#: debug.c:2525 debug.c:2547
 #, c-format
 msgid "Deleted breakpoint %d"
 msgstr "Cancellato breakpoint %d"
 
-#: debug.c:2526
+#: debug.c:2531
 #, c-format
 msgid "No breakpoint(s) at entry to function `%s'\n"
 msgstr "No breakpoint all'entrata nella funzione `%s'\n"
 
-#: debug.c:2553
+#: debug.c:2558
 #, c-format
 msgid "No breakpoint at file `%s', line #%d\n"
 msgstr "No breakpoint al file `%s', riga #%d\n"
 
-#: debug.c:2608 debug.c:2649 debug.c:2669 debug.c:2712
+#: debug.c:2613 debug.c:2654 debug.c:2674 debug.c:2717
 msgid "invalid breakpoint number"
 msgstr "numero breakpoint non valido"
 
-#: debug.c:2624
+#: debug.c:2629
 msgid "Delete all breakpoints? (y or n) "
 msgstr "Cancello tutti i breakpoint? (y oppure n) "
 
-#: debug.c:2625 debug.c:2939 debug.c:2992
+#: debug.c:2630 debug.c:2940 debug.c:2993
 msgid "y"
 msgstr "y"
 
-#: debug.c:2674
+#: debug.c:2679
 #, c-format
 msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
 msgstr "Prossimi %ld passaggi dal breakpoint %d ignorati.\n"
 
-#: debug.c:2678
+#: debug.c:2683
 #, c-format
 msgid "Will stop next time breakpoint %d is reached.\n"
 msgstr "Farò uno stop al prossimo passaggio dal breakpoint %d.\n"
 
-#: debug.c:2795
+#: debug.c:2800
 #, c-format
 msgid "Can only debug programs provided with the `-f' option.\n"
 msgstr "Debug possibile solo per programmi con opzione `-f' specificata.\n"
 
-#: debug.c:2924
+#: debug.c:2925
 #, c-format
 msgid "Failed to restart debugger"
 msgstr "Non sono riuscito a far ripartire il debugger"
 
-#: debug.c:2938
+#: debug.c:2939
 msgid "Program already running. Restart from beginning (y/n)? "
 msgstr "Programma già in esecuzione. Lo faccio ripartire dall'inizio (y/n)? "
 
-#: debug.c:2942
+#: debug.c:2943
 #, c-format
 msgid "Program not restarted\n"
 msgstr "Programma non fatto ripartire\n"
 
-#: debug.c:2952
+#: debug.c:2953
 #, c-format
 msgid "error: cannot restart, operation not allowed\n"
 msgstr "errore: non riesco a far ripartire, operazione non consentita\n"
 
-#: debug.c:2958
+#: debug.c:2959
 #, c-format
 msgid "error (%s): cannot restart, ignoring rest of the commands\n"
 msgstr "errore (%s): non riesco a far ripartire, ignoro i comandi rimanenti\n"
 
-#: debug.c:2966
+#: debug.c:2967
 #, c-format
 msgid "Starting program: \n"
 msgstr "Partenza del programma: \n"
 
-#: debug.c:2976
+#: debug.c:2977
 #, c-format
 msgid "Program exited abnormally with exit value: %d\n"
 msgstr "Programma completato anormalmente, valore in uscita: %d\n"
 
-#: debug.c:2977
+#: debug.c:2978
 #, c-format
 msgid "Program exited normally with exit value: %d\n"
 msgstr "Programma completato normalmente, valore in uscita: %d\n"
 
-#: debug.c:2991
+#: debug.c:2992
 msgid "The program is running. Exit anyway (y/n)? "
 msgstr "Il programma è in esecuzione. Esco comunque (y/n)? "
 
-#: debug.c:3026
+#: debug.c:3027
 #, c-format
 msgid "Not stopped at any breakpoint; argument ignored.\n"
 msgstr "Non interrotto ad alcun breakpoint: argomento ignorato.\n"
 
-#: debug.c:3031
+#: debug.c:3032
 #, c-format
 msgid "invalid breakpoint number %d."
 msgstr "numero di breakpoint non valido %d."
 
-#: debug.c:3036
+#: debug.c:3037
 #, c-format
 msgid "Will ignore next %ld crossings of breakpoint %d.\n"
 msgstr "Prossimi %ld passaggi dal breakpoint %d ignorati.\n"
 
-#: debug.c:3223
+#: debug.c:3224
 #, c-format
 msgid "'finish' not meaningful in the outermost frame main()\n"
 msgstr "'finish' non significativo nell'elemento iniziale main()\n"
 
-#: debug.c:3228
+#: debug.c:3229
 #, c-format
 msgid "Run till return from "
 msgstr "Esegui fino al ritorno da "
 
-#: debug.c:3271
+#: debug.c:3272
 #, c-format
 msgid "'return' not meaningful in the outermost frame main()\n"
 msgstr "'return' non significativo nell'elemento iniziale main()\n"
 
-#: debug.c:3385
+#: debug.c:3386
 #, c-format
 msgid "Can't find specified location in function `%s'\n"
 msgstr "Non trovo la posizione specificata nella funzione `%s'\n"
 
-#: debug.c:3393
+#: debug.c:3394
 #, c-format
 msgid "invalid source line %d in file `%s'"
 msgstr "riga sorgente invalida %d nel file `%s'"
 
-#: debug.c:3408
+#: debug.c:3409
 #, c-format
 msgid "Can't find specified location %d in file `%s'\n"
 msgstr "Non trovo posizione specificata %d nel file `%s'\n"
 
-#: debug.c:3440
+#: debug.c:3441
 #, c-format
 msgid "element not in array\n"
 msgstr "elemento non presente nel vettore\n"
 
-#: debug.c:3440
+#: debug.c:3441
 #, c-format
 msgid "untyped variable\n"
 msgstr "variabile di tipo sconosciuto\n"
 
-#: debug.c:3482
+#: debug.c:3483
 #, c-format
 msgid "Stopping in %s ...\n"
 msgstr "Mi fermo in %s ...\n"
 
-#: debug.c:3559
+#: debug.c:3560
 #, c-format
 msgid "'finish' not meaningful with non-local jump '%s'\n"
 msgstr "'finish' not significativo per salti non-locali '%s'\n"
 
-#: debug.c:3566
+#: debug.c:3567
 #, c-format
 msgid "'until' not meaningful with non-local jump '%s'\n"
 msgstr "'until' not significativo per salti non-locali '%s'\n"
 
-#: debug.c:4322
+#: debug.c:4323
 msgid "\t------[Enter] to continue or q [Enter] to quit------"
 msgstr "\t------[Invio] per continuare o q [Invio] per uscire------"
 
-#: debug.c:4323
+#: debug.c:4324
 msgid "q"
 msgstr "q"
 
-#: debug.c:5139
+#: debug.c:5140
 #, c-format
 msgid "[\"%.*s\"] not in array `%s'"
 msgstr "[\"%.*s\"] non presente nel vettore `%s'"
 
-#: debug.c:5345
+#: debug.c:5346
 #, c-format
 msgid "sending output to stdout\n"
 msgstr "output inviato a stdout\n"
 
-#: debug.c:5385
+#: debug.c:5386
 msgid "invalid number"
 msgstr "numero non valido"
 
-#: debug.c:5519
+#: debug.c:5520
 #, c-format
 msgid "`%s' not allowed in current context; statement ignored"
 msgstr "`%s' non consentito nel contesto corrente; istruzione ignorata"
 
-#: debug.c:5527
+#: debug.c:5528
 msgid "`return' not allowed in current context; statement ignored"
 msgstr "`return' non consentito nel contesto corrente; istruzione ignorata"
 
-#: debug.c:5742
+#: debug.c:5743
 #, c-format
 msgid "No symbol `%s' in current context"
 msgstr "Simbolo `%s' non esiste nel contesto corrente"
@@ -2139,53 +2151,54 @@ msgstr "load_ext: libreria `%s': non riesco a chiamare 
funzione `%s' (%s)"
 msgid "load_ext: library `%s' initialization routine `%s' failed"
 msgstr "load_ext: libreria `%s' routine di inizializzazione `%s' non riuscita"
 
-#: ext.c:111
+#: ext.c:92
 msgid "make_builtin: missing function name"
 msgstr "make_builtin: manca nome di funzione"
 
-#: ext.c:119 ext.c:130
+#: ext.c:100 ext.c:111
 #, c-format
 msgid "make_builtin: can't use gawk built-in `%s' as function name"
 msgstr ""
 "make_builtin: nome funzione interna gawk `%s' non ammesso come nome funzione"
 
-#: ext.c:128
-#, fuzzy, c-format
+#: ext.c:109
+#, c-format
 msgid "make_builtin: can't use gawk built-in `%s' as namespace name"
 msgstr ""
-"make_builtin: nome funzione interna gawk `%s' non ammesso come nome funzione"
+"make_builtin: nome funzione interna gawk `%s' non ammesso come nome di uno "
+"spazio-dei-nomi"
 
-#: ext.c:145
+#: ext.c:126
 #, c-format
 msgid "make_builtin: can't redefine function `%s'"
 msgstr "make_builtin: non riesco a ridefinire funzione `%s'"
 
-#: ext.c:149
+#: ext.c:130
 #, c-format
 msgid "make_builtin: function `%s' already defined"
 msgstr "make_builtin: funzione `%s' già definita"
 
-#: ext.c:153
+#: ext.c:134
 #, c-format
 msgid "make_builtin: function name `%s' previously defined"
 msgstr "make_builtin: funzione di nome `%s' definita in precedenza"
 
-#: ext.c:157
+#: ext.c:138
 #, c-format
 msgid "make_builtin: negative argument count for function `%s'"
 msgstr "make_builtin: contatore argomenti negativo per la funzione `%s'"
 
-#: ext.c:233
+#: ext.c:214
 #, c-format
 msgid "function `%s': argument #%d: attempt to use scalar as an array"
 msgstr "funzione `%s': argomento #%d: tentativo di usare scalare come vettore"
 
-#: ext.c:237
+#: ext.c:218
 #, c-format
 msgid "function `%s': argument #%d: attempt to use array as a scalar"
 msgstr "funzione `%s': argomento #%d: tentativo di usare vettore come scalare"
 
-#: ext.c:251
+#: ext.c:232
 msgid "dynamic loading of library not supported"
 msgstr "caricamento dinamico di libreria non supportato"
 
@@ -2294,102 +2307,98 @@ msgid "fork: PROCINFO is not an array!"
 msgstr "fork: PROCINFO non è un vettore!"
 
 #: extension/inplace.c:131
-#, fuzzy
 msgid "inplace::begin: in-place editing already active"
-msgstr "inplace_begin: modifica in-place già attiva"
+msgstr "inplace::begin: modifica in-place già attiva"
 
 #: extension/inplace.c:134
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: expects 2 arguments but called with %d"
-msgstr "inplace_begin: 2 argumenti richiesti, ma chiamata con %d"
+msgstr "inplace::begin: 2 argumenti richiesti, ma chiamata con %d"
 
 #: extension/inplace.c:137
-#, fuzzy
 msgid "inplace::begin: cannot retrieve 1st argument as a string filename"
 msgstr ""
-"inplace_begin: non riesco a trovare il 1° argomento come stringa nome-file"
+"inplace::begin: non riesco a trovare il 1° argomento come stringa nome-file"
 
 #: extension/inplace.c:145
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: disabling in-place editing for invalid FILENAME `%s'"
 msgstr ""
-"inplace_begin: modifica in-place disabilitato, FILENAME non valido `%s'"
+"inplace::begin: modifica in-place disabilitato, FILENAME non valido `%s'"
 
 #: extension/inplace.c:152
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: Cannot stat `%s' (%s)"
-msgstr "inplace_begin: Non riesco a trovare `%s' (%s)"
+msgstr "inplace::begin: Non riesco a trovare `%s' (%s)"
 
 #: extension/inplace.c:159
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: `%s' is not a regular file"
-msgstr "inplace_begin: `%s' non è un file regolare"
+msgstr "inplace::begin: `%s' non è un file regolare"
 
 #: extension/inplace.c:170
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: mkstemp(`%s') failed (%s)"
-msgstr "inplace_begin: mkstemp(`%s') non riuscita (%s)"
+msgstr "inplace::begin: mkstemp(`%s') non riuscita (%s)"
 
 #: extension/inplace.c:182
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: chmod failed (%s)"
-msgstr "inplace_begin: chmod non riuscita (%s)"
+msgstr "inplace::begin: chmod non riuscita (%s)"
 
 #: extension/inplace.c:189
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: dup(stdout) failed (%s)"
-msgstr "inplace_begin: dup(stdout) non riuscita (%s)"
+msgstr "inplace::begin: dup(stdout) non riuscita (%s)"
 
 #: extension/inplace.c:192
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: dup2(%d, stdout) failed (%s)"
-msgstr "inplace_begin: dup2(%d, stdout) non riuscita (%s)"
+msgstr "inplace::begin: dup2(%d, stdout) non riuscita (%s)"
 
 #: extension/inplace.c:195
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::begin: close(%d) failed (%s)"
-msgstr "inplace_begin: close(%d) non riuscita (%s)"
+msgstr "inplace::begin: close(%d) non riuscita (%s)"
 
 #: extension/inplace.c:211
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::end: expects 2 arguments but called with %d"
-msgstr "inplace_end: 2 argumenti richiesti, ma chiamata con %d"
+msgstr "inplace::end: 2 argumenti richiesti, ma chiamata con %d"
 
 #: extension/inplace.c:214
-#, fuzzy
 msgid "inplace::end: cannot retrieve 1st argument as a string filename"
 msgstr ""
-"inplace_end: non riesco a trovare il 1° argomento come stringa nome-file"
+"inplace::end: non riesco a trovare il 1° argomento come stringa nome-file"
 
 #: extension/inplace.c:221
-#, fuzzy
 msgid "inplace::end: in-place editing not active"
-msgstr "inplace_end: modifica in-place non attiva"
+msgstr "inplace::end: modifica in-place non attiva"
 
 #: extension/inplace.c:227
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::end: dup2(%d, stdout) failed (%s)"
-msgstr "inplace_end: dup2(%d, stdout) non riuscita (%s)"
+msgstr "inplace::end: dup2(%d, stdout) non riuscita (%s)"
 
 #: extension/inplace.c:230
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::end: close(%d) failed (%s)"
-msgstr "inplace_end: close(%d) non riuscita (%s)"
+msgstr "inplace::end: close(%d) non riuscita (%s)"
 
 #: extension/inplace.c:234
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::end: fsetpos(stdout) failed (%s)"
-msgstr "inplace_end: fsetpos(stdout) non riuscita (%s)"
+msgstr "inplace::end: fsetpos(stdout) non riuscita (%s)"
 
 #: extension/inplace.c:247
 #, c-format
-msgid "inplace_end: link(`%s', `%s') failed (%s)"
-msgstr "inplace_end: link(`%s', `%s') non riuscita (%s)"
+msgid "inplace::end: link(`%s', `%s') failed (%s)"
+msgstr "inplace::end: link(`%s', `%s') non riuscita (%s)"
 
 #: extension/inplace.c:257
-#, fuzzy, c-format
+#, c-format
 msgid "inplace::end: rename(`%s', `%s') failed (%s)"
-msgstr "inplace_end: rename(`%s', `%s') non riuscito (%s)"
+msgstr "inplace::end: rename(`%s', `%s') non riuscito (%s)"
 
 #: extension/ordchr.c:72
 msgid "ord: called with inappropriate argument(s)"
@@ -2420,7 +2429,7 @@ msgstr "do_writea: argomento 0 non 
 #: extension/rwarray.c:125 extension/rwarray0.c:120
 #, c-format
 msgid "do_writea: argument 1 is not an array\n"
-msgstr "do_writea: argomento 1 non-vettoriale\n"
+msgstr "do_writea: l'argomento 1 non è un vettore\n"
 
 #: extension/rwarray.c:172 extension/rwarray0.c:167
 #, c-format
@@ -2445,7 +2454,7 @@ msgstr "do_reada: argomento 0 non 
 #: extension/rwarray.c:298 extension/rwarray0.c:273
 #, c-format
 msgid "do_reada: argument 1 is not an array\n"
-msgstr "do_reada: argomento 1 non-vettoriale\n"
+msgstr "do_reada: l'argomento 1 non è un vettore\n"
 
 #: extension/rwarray.c:342 extension/rwarray0.c:317
 #, c-format
@@ -2501,11 +2510,11 @@ msgstr "split: il quarto argomento 
 
 #: field.c:979
 msgid "split: fourth argument is not an array"
-msgstr "split: quarto argomento non-vettoriale"
+msgstr "split: il quarto argomento non è un vettore"
 
 #: field.c:989
 msgid "split: second argument is not an array"
-msgstr "split: secondo argomento non-vettoriale"
+msgstr "split: il secondo argomento non è un vettore"
 
 #: field.c:993
 msgid "split: cannot use the same array for second and fourth args"
@@ -2530,11 +2539,11 @@ msgstr "split: la stringa nulla come terzo arg. 
 
 #: field.c:1072
 msgid "patsplit: fourth argument is not an array"
-msgstr "patsplit: secondo argomento non-vettoriale"
+msgstr "patsplit: il quarto argomento non è un vettore"
 
 #: field.c:1077
 msgid "patsplit: second argument is not an array"
-msgstr "patsplit: secondo argomento non-vettoriale"
+msgstr "patsplit: il secondo argomento non è un vettore"
 
 #: field.c:1086
 msgid "patsplit: third argument must be non-null"
@@ -2600,9 +2609,8 @@ msgid "awk_value_to_node: invalid number type `%d'"
 msgstr "awk_value_to_node: tipo di numero non valido `%d'"
 
 #: gawkapi.c:385
-#, fuzzy
 msgid "add_ext_func: received NULL name_space parameter"
-msgstr "load_ext: il nome libreria ricevuto è NULL"
+msgstr "add_ext_func: il nome dello spazio-dei-nomi ricevuto è NULL"
 
 #: gawkapi.c:523
 #, c-format
@@ -3210,7 +3218,6 @@ msgstr "\t-Z locale-name\t\t--locale=locale-name\n"
 #. address for translation bugs.
 #. no-wrap
 #: main.c:632
-#, fuzzy
 msgid ""
 "\n"
 "To report bugs, see node `Bugs' in `gawk.info'\n"

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=2fb99a213dfe3a88087bdccb9f57b6de5f8a5644

commit 2fb99a213dfe3a88087bdccb9f57b6de5f8a5644
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Feb 17 21:24:24 2019 +0200

    Fix calling user defined functions from eval.

diff --git a/ChangeLog b/ChangeLog
index 248453b..1b4fe31 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2019-02-17         Arnold D. Robbins     <address@hidden>
+
+       Fix debugger eval command so that return from a called
+       user-defined function works. Thanks to Lothar Langer
+       <address@hidden> for the report.
+
+       * awk.h (Op_K_return_from_eval): New opcode.
+       (parse_program): Add boolean second parameter, `from_eval'.
+       * awkgram.y (called_from_eval): New variable
+       (Grammar): Check it for return statements. If true, change the
+       opcode to Op_K_return_from_eval.
+       (parse_program): Set called_from_eval to value of from_eval parameter.
+       * debug.c (pre_execute_code): Change test for Op_K_return to test
+       for Op_K_return_from_eval.
+       (do_eval): Call parse_program with second parameter true.
+       * eval.c (optypetab): Add entry for Op_K_return_from_eval.
+       * interpret.h (r_interpret): Ditto: can't-happen error.
+       * main.c (main): Call parse_program with second parameter false.
+
 2019-02-15         Arnold D. Robbins     <address@hidden>
 
        * awkgram.y: If profiling, correctly turn `print' into `print $0'.
diff --git a/awk.h b/awk.h
index a8a37f6..e90f83d 100644
--- a/awk.h
+++ b/awk.h
@@ -664,6 +664,7 @@ typedef enum opcodeval {
        Op_K_next,
        Op_K_exit,
        Op_K_return,
+       Op_K_return_from_eval,
        Op_K_delete,
        Op_K_delete_loop,
        Op_K_getline_redir,
@@ -1402,7 +1403,7 @@ extern unsigned long (*hash)(const char *s, size_t len, 
unsigned long hsize, siz
 extern void init_env_array(NODE *env_node);
 /* awkgram.c */
 extern NODE *variable(int location, char *name, NODETYPE type);
-extern int parse_program(INSTRUCTION **pcode);
+extern int parse_program(INSTRUCTION **pcode, bool from_eval);
 extern void track_ext_func(const char *name);
 extern void dump_funcs(void);
 extern void dump_vars(const char *fname);
diff --git a/awkgram.c b/awkgram.c
index a9edb06..a568f5d 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -220,6 +220,7 @@ static INSTRUCTION *ip_end;
 static INSTRUCTION *ip_endfile;
 static INSTRUCTION *ip_beginfile;
 INSTRUCTION *main_beginfile;
+static bool called_from_eval = false;
 
 static inline INSTRUCTION *list_create(INSTRUCTION *x);
 static inline INSTRUCTION *list_append(INSTRUCTION *l, INSTRUCTION *x);
@@ -230,7 +231,7 @@ extern double fmod(double x, double y);
 
 #define YYSTYPE INSTRUCTION *
 
-#line 234 "awkgram.c" /* yacc.c:337  */
+#line 235 "awkgram.c" /* yacc.c:337  */
 # ifndef YY_NULLPTR
 #  if defined __cplusplus
 #   if 201103L <= __cplusplus
@@ -683,27 +684,27 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   231,   231,   232,   237,   247,   251,   263,   271,   285,
-     296,   306,   316,   329,   339,   341,   346,   356,   358,   363,
-     365,   367,   373,   377,   382,   412,   424,   436,   442,   451,
-     469,   470,   481,   487,   495,   496,   500,   500,   534,   533,
-     567,   582,   584,   589,   590,   610,   615,   616,   620,   631,
-     636,   643,   751,   802,   852,   978,   999,  1020,  1030,  1040,
-    1050,  1061,  1074,  1092,  1091,  1105,  1123,  1123,  1225,  1225,
-    1258,  1288,  1296,  1297,  1303,  1304,  1311,  1316,  1329,  1344,
-    1346,  1354,  1361,  1363,  1371,  1380,  1382,  1391,  1392,  1400,
-    1405,  1405,  1418,  1424,  1436,  1440,  1462,  1463,  1469,  1470,
-    1479,  1480,  1485,  1490,  1507,  1509,  1511,  1518,  1519,  1525,
-    1526,  1531,  1533,  1540,  1542,  1550,  1555,  1566,  1567,  1572,
-    1574,  1581,  1583,  1591,  1596,  1606,  1607,  1612,  1619,  1623,
-    1625,  1627,  1640,  1657,  1667,  1674,  1676,  1681,  1683,  1685,
-    1693,  1695,  1700,  1702,  1707,  1709,  1711,  1768,  1770,  1772,
-    1774,  1776,  1778,  1780,  1782,  1796,  1801,  1806,  1831,  1837,
-    1839,  1841,  1843,  1845,  1847,  1852,  1856,  1888,  1896,  1902,
-    1908,  1921,  1922,  1923,  1928,  1933,  1937,  1941,  1956,  1977,
-    1982,  2019,  2056,  2057,  2063,  2064,  2069,  2071,  2078,  2095,
-    2112,  2114,  2121,  2126,  2132,  2143,  2155,  2164,  2168,  2173,
-    2177,  2181,  2185,  2190,  2191,  2195,  2199,  2203
+       0,   232,   232,   233,   238,   248,   252,   264,   272,   286,
+     297,   307,   317,   330,   340,   342,   347,   357,   359,   364,
+     366,   368,   374,   378,   383,   413,   425,   437,   443,   452,
+     470,   471,   482,   488,   496,   497,   501,   501,   535,   534,
+     568,   583,   585,   590,   591,   611,   616,   617,   621,   632,
+     637,   644,   752,   803,   853,   979,  1000,  1021,  1031,  1041,
+    1051,  1062,  1075,  1093,  1092,  1109,  1127,  1127,  1229,  1229,
+    1262,  1292,  1300,  1301,  1307,  1308,  1315,  1320,  1333,  1348,
+    1350,  1358,  1365,  1367,  1375,  1384,  1386,  1395,  1396,  1404,
+    1409,  1409,  1422,  1428,  1440,  1444,  1466,  1467,  1473,  1474,
+    1483,  1484,  1489,  1494,  1511,  1513,  1515,  1522,  1523,  1529,
+    1530,  1535,  1537,  1544,  1546,  1554,  1559,  1570,  1571,  1576,
+    1578,  1585,  1587,  1595,  1600,  1610,  1611,  1616,  1623,  1627,
+    1629,  1631,  1644,  1661,  1671,  1678,  1680,  1685,  1687,  1689,
+    1697,  1699,  1704,  1706,  1711,  1713,  1715,  1772,  1774,  1776,
+    1778,  1780,  1782,  1784,  1786,  1800,  1805,  1810,  1835,  1841,
+    1843,  1845,  1847,  1849,  1851,  1856,  1860,  1892,  1900,  1906,
+    1912,  1925,  1926,  1927,  1932,  1937,  1941,  1945,  1960,  1981,
+    1986,  2023,  2060,  2061,  2067,  2068,  2073,  2075,  2082,  2099,
+    2116,  2118,  2125,  2130,  2136,  2147,  2159,  2168,  2172,  2177,
+    2181,  2185,  2189,  2194,  2195,  2199,  2203,  2207
 };
 #endif
 
@@ -1908,22 +1909,22 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 231 "awkgram.y" /* yacc.c:1652  */
+#line 232 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 1914 "awkgram.c" /* yacc.c:1652  */
+#line 1915 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 3:
-#line 233 "awkgram.y" /* yacc.c:1652  */
+#line 234 "awkgram.y" /* yacc.c:1652  */
     {
                rule = 0;
                yyerrok;
          }
-#line 1923 "awkgram.c" /* yacc.c:1652  */
+#line 1924 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 4:
-#line 238 "awkgram.y" /* yacc.c:1652  */
+#line 239 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0] != NULL) {
                        if (yyvsp[-1] == NULL)
@@ -1933,19 +1934,19 @@ yyreduce:
                }
                yyval = yyvsp[-1];
          }
-#line 1937 "awkgram.c" /* yacc.c:1652  */
+#line 1938 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 5:
-#line 248 "awkgram.y" /* yacc.c:1652  */
+#line 249 "awkgram.y" /* yacc.c:1652  */
     {
                next_sourcefile();
          }
-#line 1945 "awkgram.c" /* yacc.c:1652  */
+#line 1946 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 6:
-#line 252 "awkgram.y" /* yacc.c:1652  */
+#line 253 "awkgram.y" /* yacc.c:1652  */
     {
                rule = 0;
                /*
@@ -1954,11 +1955,11 @@ yyreduce:
                 */
                /* yyerrok; */
          }
-#line 1958 "awkgram.c" /* yacc.c:1652  */
+#line 1959 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 7:
-#line 264 "awkgram.y" /* yacc.c:1652  */
+#line 265 "awkgram.y" /* yacc.c:1652  */
     {
                (void) append_rule(yyvsp[-1], yyvsp[0]);
                if (pending_comment != NULL) {
@@ -1966,11 +1967,11 @@ yyreduce:
                        pending_comment = NULL;
                }
          }
-#line 1970 "awkgram.c" /* yacc.c:1652  */
+#line 1971 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 8:
-#line 272 "awkgram.y" /* yacc.c:1652  */
+#line 273 "awkgram.y" /* yacc.c:1652  */
     {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@ -1984,11 +1985,11 @@ yyreduce:
                        (void) append_rule(yyvsp[-1], NULL);
                }
          }
-#line 1988 "awkgram.c" /* yacc.c:1652  */
+#line 1989 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 9:
-#line 286 "awkgram.y" /* yacc.c:1652  */
+#line 287 "awkgram.y" /* yacc.c:1652  */
     {
                in_function = false;
                (void) mk_function(yyvsp[-1], yyvsp[0]);
@@ -1999,11 +2000,11 @@ yyreduce:
                }
                yyerrok;
          }
-#line 2003 "awkgram.c" /* yacc.c:1652  */
+#line 2004 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 10:
-#line 297 "awkgram.y" /* yacc.c:1652  */
+#line 298 "awkgram.y" /* yacc.c:1652  */
     {
                want_source = false;
                at_seen = false;
@@ -2013,11 +2014,11 @@ yyreduce:
                }
                yyerrok;
          }
-#line 2017 "awkgram.c" /* yacc.c:1652  */
+#line 2018 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 11:
-#line 307 "awkgram.y" /* yacc.c:1652  */
+#line 308 "awkgram.y" /* yacc.c:1652  */
     {
                want_source = false;
                at_seen = false;
@@ -2027,11 +2028,11 @@ yyreduce:
                }
                yyerrok;
          }
-#line 2031 "awkgram.c" /* yacc.c:1652  */
+#line 2032 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 12:
-#line 317 "awkgram.y" /* yacc.c:1652  */
+#line 318 "awkgram.y" /* yacc.c:1652  */
     {
                want_source = false;
                at_seen = false;
@@ -2041,11 +2042,11 @@ yyreduce:
 
                yyerrok;
          }
-#line 2045 "awkgram.c" /* yacc.c:1652  */
+#line 2046 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 13:
-#line 330 "awkgram.y" /* yacc.c:1652  */
+#line 331 "awkgram.y" /* yacc.c:1652  */
     {
                void *srcfile = NULL;
 
@@ -2055,23 +2056,23 @@ yyreduce:
                bcfree(yyvsp[0]);
                yyval = (INSTRUCTION *) srcfile;
          }
-#line 2059 "awkgram.c" /* yacc.c:1652  */
+#line 2060 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 14:
-#line 340 "awkgram.y" /* yacc.c:1652  */
+#line 341 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 2065 "awkgram.c" /* yacc.c:1652  */
+#line 2066 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 15:
-#line 342 "awkgram.y" /* yacc.c:1652  */
+#line 343 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 2071 "awkgram.c" /* yacc.c:1652  */
+#line 2072 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 16:
-#line 347 "awkgram.y" /* yacc.c:1652  */
+#line 348 "awkgram.y" /* yacc.c:1652  */
     {
                void *srcfile;
 
@@ -2081,58 +2082,58 @@ yyreduce:
                bcfree(yyvsp[0]);
                yyval = (INSTRUCTION *) srcfile;
          }
-#line 2085 "awkgram.c" /* yacc.c:1652  */
+#line 2086 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 17:
-#line 357 "awkgram.y" /* yacc.c:1652  */
+#line 358 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 2091 "awkgram.c" /* yacc.c:1652  */
+#line 2092 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 18:
-#line 359 "awkgram.y" /* yacc.c:1652  */
+#line 360 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 2097 "awkgram.c" /* yacc.c:1652  */
+#line 2098 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 19:
-#line 364 "awkgram.y" /* yacc.c:1652  */
+#line 365 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 2103 "awkgram.c" /* yacc.c:1652  */
+#line 2104 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 20:
-#line 366 "awkgram.y" /* yacc.c:1652  */
+#line 367 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 2109 "awkgram.c" /* yacc.c:1652  */
+#line 2110 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 21:
-#line 368 "awkgram.y" /* yacc.c:1652  */
+#line 369 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 2115 "awkgram.c" /* yacc.c:1652  */
+#line 2116 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 22:
-#line 373 "awkgram.y" /* yacc.c:1652  */
+#line 374 "awkgram.y" /* yacc.c:1652  */
     {
                rule = Rule;
                yyval = NULL;
          }
-#line 2124 "awkgram.c" /* yacc.c:1652  */
+#line 2125 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 23:
-#line 378 "awkgram.y" /* yacc.c:1652  */
+#line 379 "awkgram.y" /* yacc.c:1652  */
     {
                rule = Rule;
          }
-#line 2132 "awkgram.c" /* yacc.c:1652  */
+#line 2133 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 24:
-#line 383 "awkgram.y" /* yacc.c:1652  */
+#line 384 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *tp;
 
@@ -2162,11 +2163,11 @@ yyreduce:
                        yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), 
tp);
                rule = Rule;
          }
-#line 2166 "awkgram.c" /* yacc.c:1652  */
+#line 2167 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 25:
-#line 413 "awkgram.y" /* yacc.c:1652  */
+#line 414 "awkgram.y" /* yacc.c:1652  */
     {
                static int begin_seen = 0;
 
@@ -2178,11 +2179,11 @@ yyreduce:
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
-#line 2182 "awkgram.c" /* yacc.c:1652  */
+#line 2183 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 26:
-#line 425 "awkgram.y" /* yacc.c:1652  */
+#line 426 "awkgram.y" /* yacc.c:1652  */
     {
                static int end_seen = 0;
 
@@ -2194,31 +2195,31 @@ yyreduce:
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
-#line 2198 "awkgram.c" /* yacc.c:1652  */
+#line 2199 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 27:
-#line 437 "awkgram.y" /* yacc.c:1652  */
+#line 438 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->in_rule = rule = BEGINFILE;
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
-#line 2208 "awkgram.c" /* yacc.c:1652  */
+#line 2209 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 28:
-#line 443 "awkgram.y" /* yacc.c:1652  */
+#line 444 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->in_rule = rule = ENDFILE;
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
-#line 2218 "awkgram.c" /* yacc.c:1652  */
+#line 2219 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 29:
-#line 452 "awkgram.y" /* yacc.c:1652  */
+#line 453 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *ip = make_braced_statements(yyvsp[-4], yyvsp[-3], 
yyvsp[-2]);
 
@@ -2233,11 +2234,11 @@ yyreduce:
 
                yyval = ip;
          }
-#line 2237 "awkgram.c" /* yacc.c:1652  */
+#line 2238 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 31:
-#line 471 "awkgram.y" /* yacc.c:1652  */
+#line 472 "awkgram.y" /* yacc.c:1652  */
     {
                const char *name = yyvsp[0]->lextok;
                char *qname = qualify_name(name, strlen(name));
@@ -2248,36 +2249,36 @@ yyreduce:
                }
                yyval = yyvsp[0];
          }
-#line 2252 "awkgram.c" /* yacc.c:1652  */
+#line 2253 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 32:
-#line 482 "awkgram.y" /* yacc.c:1652  */
+#line 483 "awkgram.y" /* yacc.c:1652  */
     {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
-#line 2262 "awkgram.c" /* yacc.c:1652  */
+#line 2263 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 33:
-#line 488 "awkgram.y" /* yacc.c:1652  */
+#line 489 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = yyvsp[0];
                at_seen = false;
          }
-#line 2271 "awkgram.c" /* yacc.c:1652  */
+#line 2272 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 36:
-#line 500 "awkgram.y" /* yacc.c:1652  */
+#line 501 "awkgram.y" /* yacc.c:1652  */
     { want_param_names = FUNC_HEADER; }
-#line 2277 "awkgram.c" /* yacc.c:1652  */
+#line 2278 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 37:
-#line 501 "awkgram.y" /* yacc.c:1652  */
+#line 502 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *func_comment = NULL;
                // Merge any comments found in the parameter list with those
@@ -2303,17 +2304,17 @@ yyreduce:
                yyval = yyvsp[-6];
                want_param_names = FUNC_BODY;
          }
-#line 2307 "awkgram.c" /* yacc.c:1652  */
+#line 2308 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 38:
-#line 534 "awkgram.y" /* yacc.c:1652  */
+#line 535 "awkgram.y" /* yacc.c:1652  */
     { want_regexp = true; }
-#line 2313 "awkgram.c" /* yacc.c:1652  */
+#line 2314 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 39:
-#line 536 "awkgram.y" /* yacc.c:1652  */
+#line 537 "awkgram.y" /* yacc.c:1652  */
     {
                  NODE *n, *exp;
                  char *re;
@@ -2342,11 +2343,11 @@ yyreduce:
                  yyval->opcode = Op_match_rec;
                  yyval->memory = n;
                }
-#line 2346 "awkgram.c" /* yacc.c:1652  */
+#line 2347 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 40:
-#line 568 "awkgram.y" /* yacc.c:1652  */
+#line 569 "awkgram.y" /* yacc.c:1652  */
     {
                  char *re;
                  size_t len;
@@ -2359,23 +2360,23 @@ yyreduce:
                  yyval->opcode = Op_push_re;
                  yyval->memory = make_typed_regex(re, len);
                }
-#line 2363 "awkgram.c" /* yacc.c:1652  */
+#line 2364 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 41:
-#line 583 "awkgram.y" /* yacc.c:1652  */
+#line 584 "awkgram.y" /* yacc.c:1652  */
     { bcfree(yyvsp[0]); }
-#line 2369 "awkgram.c" /* yacc.c:1652  */
+#line 2370 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 43:
-#line 589 "awkgram.y" /* yacc.c:1652  */
+#line 590 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 2375 "awkgram.c" /* yacc.c:1652  */
+#line 2376 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 44:
-#line 591 "awkgram.y" /* yacc.c:1652  */
+#line 592 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0] == NULL) {
                        yyval = yyvsp[-1];
@@ -2395,29 +2396,29 @@ yyreduce:
 
                yyerrok;
          }
-#line 2399 "awkgram.c" /* yacc.c:1652  */
+#line 2400 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 45:
-#line 611 "awkgram.y" /* yacc.c:1652  */
+#line 612 "awkgram.y" /* yacc.c:1652  */
     {  yyval = NULL; }
-#line 2405 "awkgram.c" /* yacc.c:1652  */
+#line 2406 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 46:
-#line 615 "awkgram.y" /* yacc.c:1652  */
+#line 616 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 2411 "awkgram.c" /* yacc.c:1652  */
+#line 2412 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 47:
-#line 616 "awkgram.y" /* yacc.c:1652  */
+#line 617 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 2417 "awkgram.c" /* yacc.c:1652  */
+#line 2418 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 48:
-#line 621 "awkgram.y" /* yacc.c:1652  */
+#line 622 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0] != NULL) {
                        INSTRUCTION *ip;
@@ -2428,31 +2429,31 @@ yyreduce:
                } else
                        yyval = NULL;
          }
-#line 2432 "awkgram.c" /* yacc.c:1652  */
+#line 2433 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 49:
-#line 632 "awkgram.y" /* yacc.c:1652  */
+#line 633 "awkgram.y" /* yacc.c:1652  */
     {
                trailing_comment = yyvsp[0];    // NULL or comment
                yyval = make_braced_statements(yyvsp[-2], yyvsp[-1], yyvsp[0]);
          }
-#line 2441 "awkgram.c" /* yacc.c:1652  */
+#line 2442 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 50:
-#line 637 "awkgram.y" /* yacc.c:1652  */
+#line 638 "awkgram.y" /* yacc.c:1652  */
     {
                if (do_pretty_print)
                        yyval = list_prepend(yyvsp[0], 
instruction(Op_exec_count));
                else
                        yyval = yyvsp[0];
          }
-#line 2452 "awkgram.c" /* yacc.c:1652  */
+#line 2453 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 51:
-#line 644 "awkgram.y" /* yacc.c:1652  */
+#line 645 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@ -2560,11 +2561,11 @@ yyreduce:
                break_allowed--;
                fix_break_continue(ip, tbreak, NULL);
          }
-#line 2564 "awkgram.c" /* yacc.c:1652  */
+#line 2565 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 52:
-#line 752 "awkgram.y" /* yacc.c:1652  */
+#line 753 "awkgram.y" /* yacc.c:1652  */
     {
                /*
                 *    -----------------
@@ -2615,11 +2616,11 @@ yyreduce:
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
-#line 2619 "awkgram.c" /* yacc.c:1652  */
+#line 2620 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 53:
-#line 803 "awkgram.y" /* yacc.c:1652  */
+#line 804 "awkgram.y" /* yacc.c:1652  */
     {
                /*
                 *    -----------------
@@ -2669,11 +2670,11 @@ yyreduce:
                /* else
                        $1 and $4 are NULLs */
          }
-#line 2673 "awkgram.c" /* yacc.c:1652  */
+#line 2674 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 54:
-#line 853 "awkgram.y" /* yacc.c:1652  */
+#line 854 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *ip;
                char *var_name = yyvsp[-5]->lextok;
@@ -2799,11 +2800,11 @@ regular_loop:
                break_allowed--;
                continue_allowed--;
          }
-#line 2803 "awkgram.c" /* yacc.c:1652  */
+#line 2804 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 55:
-#line 979 "awkgram.y" /* yacc.c:1652  */
+#line 980 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-7] != NULL) {
                        merge_comments(yyvsp[-7], NULL);
@@ -2824,11 +2825,11 @@ regular_loop:
                break_allowed--;
                continue_allowed--;
          }
-#line 2828 "awkgram.c" /* yacc.c:1652  */
+#line 2829 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 56:
-#line 1000 "awkgram.y" /* yacc.c:1652  */
+#line 1001 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-6] != NULL) {
                        merge_comments(yyvsp[-6], NULL);
@@ -2849,22 +2850,22 @@ regular_loop:
                break_allowed--;
                continue_allowed--;
          }
-#line 2853 "awkgram.c" /* yacc.c:1652  */
+#line 2854 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 57:
-#line 1021 "awkgram.y" /* yacc.c:1652  */
+#line 1022 "awkgram.y" /* yacc.c:1652  */
     {
                if (do_pretty_print)
                        yyval = list_prepend(yyvsp[0], 
instruction(Op_exec_count));
                else
                        yyval = yyvsp[0];
          }
-#line 2864 "awkgram.c" /* yacc.c:1652  */
+#line 2865 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 58:
-#line 1031 "awkgram.y" /* yacc.c:1652  */
+#line 1032 "awkgram.y" /* yacc.c:1652  */
     {
                if (! break_allowed)
                        error_ln(yyvsp[-1]->source_line,
@@ -2874,11 +2875,11 @@ regular_loop:
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
-#line 2878 "awkgram.c" /* yacc.c:1652  */
+#line 2879 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 59:
-#line 1041 "awkgram.y" /* yacc.c:1652  */
+#line 1042 "awkgram.y" /* yacc.c:1652  */
     {
                if (! continue_allowed)
                        error_ln(yyvsp[-1]->source_line,
@@ -2888,11 +2889,11 @@ regular_loop:
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
-#line 2892 "awkgram.c" /* yacc.c:1652  */
+#line 2893 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 60:
-#line 1051 "awkgram.y" /* yacc.c:1652  */
+#line 1052 "awkgram.y" /* yacc.c:1652  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@ -2903,11 +2904,11 @@ regular_loop:
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
-#line 2907 "awkgram.c" /* yacc.c:1652  */
+#line 2908 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 61:
-#line 1062 "awkgram.y" /* yacc.c:1652  */
+#line 1063 "awkgram.y" /* yacc.c:1652  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@ -2920,11 +2921,11 @@ regular_loop:
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
-#line 2924 "awkgram.c" /* yacc.c:1652  */
+#line 2925 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 62:
-#line 1075 "awkgram.y" /* yacc.c:1652  */
+#line 1076 "awkgram.y" /* yacc.c:1652  */
     {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time.
@@ -2941,21 +2942,24 @@ regular_loop:
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
-#line 2945 "awkgram.c" /* yacc.c:1652  */
+#line 2946 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 63:
-#line 1092 "awkgram.y" /* yacc.c:1652  */
+#line 1093 "awkgram.y" /* yacc.c:1652  */
     {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
-#line 2954 "awkgram.c" /* yacc.c:1652  */
+#line 2955 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 64:
-#line 1095 "awkgram.y" /* yacc.c:1652  */
+#line 1096 "awkgram.y" /* yacc.c:1652  */
     {
+               if (called_from_eval)
+                       yyvsp[-3]->opcode = Op_K_return_from_eval;
+
                if (yyvsp[-1] == NULL) {
                        yyval = list_create(yyvsp[-3]);
                        (void) list_prepend(yyval, instruction(Op_push_i));
@@ -2965,28 +2969,28 @@ regular_loop:
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
-#line 2969 "awkgram.c" /* yacc.c:1652  */
+#line 2973 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 65:
-#line 1106 "awkgram.y" /* yacc.c:1652  */
+#line 1110 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyvsp[-1], yyvsp[0]);
                else
                        yyval = yyvsp[-1];
          }
-#line 2980 "awkgram.c" /* yacc.c:1652  */
+#line 2984 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 66:
-#line 1123 "awkgram.y" /* yacc.c:1652  */
+#line 1127 "awkgram.y" /* yacc.c:1652  */
     { in_print = true; in_parens = 0; }
-#line 2986 "awkgram.c" /* yacc.c:1652  */
+#line 2990 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 67:
-#line 1124 "awkgram.y" /* yacc.c:1652  */
+#line 1128 "awkgram.y" /* yacc.c:1652  */
     {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@ -3087,17 +3091,17 @@ regular_print:
                        }
                }
          }
-#line 3091 "awkgram.c" /* yacc.c:1652  */
+#line 3095 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 68:
-#line 1225 "awkgram.y" /* yacc.c:1652  */
+#line 1229 "awkgram.y" /* yacc.c:1652  */
     { sub_counter = 0; }
-#line 3097 "awkgram.c" /* yacc.c:1652  */
+#line 3101 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 69:
-#line 1226 "awkgram.y" /* yacc.c:1652  */
+#line 1230 "awkgram.y" /* yacc.c:1652  */
     {
                char *arr = yyvsp[-2]->lextok;
 
@@ -3130,11 +3134,11 @@ regular_print:
                        yyval = list_append(list_append(yyvsp[0], yyvsp[-2]), 
yyvsp[-3]);
                }
          }
-#line 3134 "awkgram.c" /* yacc.c:1652  */
+#line 3138 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 70:
-#line 1263 "awkgram.y" /* yacc.c:1652  */
+#line 1267 "awkgram.y" /* yacc.c:1652  */
     {
                static bool warned = false;
                char *arr = yyvsp[-1]->lextok;
@@ -3160,54 +3164,54 @@ regular_print:
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
-#line 3164 "awkgram.c" /* yacc.c:1652  */
+#line 3168 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 71:
-#line 1289 "awkgram.y" /* yacc.c:1652  */
+#line 1293 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = optimize_assignment(yyvsp[0]);
          }
-#line 3172 "awkgram.c" /* yacc.c:1652  */
+#line 3176 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 72:
-#line 1296 "awkgram.y" /* yacc.c:1652  */
+#line 1300 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3178 "awkgram.c" /* yacc.c:1652  */
+#line 3182 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 73:
-#line 1298 "awkgram.y" /* yacc.c:1652  */
+#line 1302 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3184 "awkgram.c" /* yacc.c:1652  */
+#line 3188 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 74:
-#line 1303 "awkgram.y" /* yacc.c:1652  */
+#line 1307 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3190 "awkgram.c" /* yacc.c:1652  */
+#line 3194 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 75:
-#line 1305 "awkgram.y" /* yacc.c:1652  */
+#line 1309 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-1] == NULL)
                        yyval = list_create(yyvsp[0]);
                else
                        yyval = list_prepend(yyvsp[-1], yyvsp[0]);
          }
-#line 3201 "awkgram.c" /* yacc.c:1652  */
+#line 3205 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 76:
-#line 1312 "awkgram.y" /* yacc.c:1652  */
+#line 1316 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3207 "awkgram.c" /* yacc.c:1652  */
+#line 3211 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 77:
-#line 1317 "awkgram.y" /* yacc.c:1652  */
+#line 1321 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *casestmt = yyvsp[0];
                if (yyvsp[0] == NULL)
@@ -3220,11 +3224,11 @@ regular_print:
                bcfree(yyvsp[-2]);
                yyval = yyvsp[-4];
          }
-#line 3224 "awkgram.c" /* yacc.c:1652  */
+#line 3228 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 78:
-#line 1330 "awkgram.y" /* yacc.c:1652  */
+#line 1334 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *casestmt = yyvsp[0];
                if (yyvsp[0] == NULL)
@@ -3236,17 +3240,17 @@ regular_print:
                yyvsp[-3]->comment = yyvsp[-1];
                yyval = yyvsp[-3];
          }
-#line 3240 "awkgram.c" /* yacc.c:1652  */
+#line 3244 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 79:
-#line 1345 "awkgram.y" /* yacc.c:1652  */
+#line 1349 "awkgram.y" /* yacc.c:1652  */
     {  yyval = yyvsp[0]; }
-#line 3246 "awkgram.c" /* yacc.c:1652  */
+#line 3250 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 80:
-#line 1347 "awkgram.y" /* yacc.c:1652  */
+#line 1351 "awkgram.y" /* yacc.c:1652  */
     {
                NODE *n = yyvsp[0]->memory;
                (void) force_number(n);
@@ -3254,28 +3258,28 @@ regular_print:
                bcfree(yyvsp[-1]);
                yyval = yyvsp[0];
          }
-#line 3258 "awkgram.c" /* yacc.c:1652  */
+#line 3262 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 81:
-#line 1355 "awkgram.y" /* yacc.c:1652  */
+#line 1359 "awkgram.y" /* yacc.c:1652  */
     {
                NODE *n = yyvsp[0]->lasti->memory;
                bcfree(yyvsp[-1]);
                add_sign_to_num(n, '+');
                yyval = yyvsp[0];
          }
-#line 3269 "awkgram.c" /* yacc.c:1652  */
+#line 3273 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 82:
-#line 1362 "awkgram.y" /* yacc.c:1652  */
+#line 1366 "awkgram.y" /* yacc.c:1652  */
     {  yyval = yyvsp[0]; }
-#line 3275 "awkgram.c" /* yacc.c:1652  */
+#line 3279 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 83:
-#line 1364 "awkgram.y" /* yacc.c:1652  */
+#line 1368 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0]->memory->type == Node_regex)
                        yyvsp[0]->opcode = Op_push_re;
@@ -3283,57 +3287,57 @@ regular_print:
                        yyvsp[0]->opcode = Op_push;
                yyval = yyvsp[0];
          }
-#line 3287 "awkgram.c" /* yacc.c:1652  */
+#line 3291 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 84:
-#line 1372 "awkgram.y" /* yacc.c:1652  */
+#line 1376 "awkgram.y" /* yacc.c:1652  */
     {
                assert((yyvsp[0]->memory->flags & REGEX) == REGEX);
                yyvsp[0]->opcode = Op_push_re;
                yyval = yyvsp[0];
          }
-#line 3297 "awkgram.c" /* yacc.c:1652  */
+#line 3301 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 85:
-#line 1381 "awkgram.y" /* yacc.c:1652  */
+#line 1385 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3303 "awkgram.c" /* yacc.c:1652  */
+#line 3307 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 86:
-#line 1383 "awkgram.y" /* yacc.c:1652  */
+#line 1387 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3309 "awkgram.c" /* yacc.c:1652  */
+#line 3313 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 88:
-#line 1393 "awkgram.y" /* yacc.c:1652  */
+#line 1397 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = yyvsp[-1];
          }
-#line 3317 "awkgram.c" /* yacc.c:1652  */
+#line 3321 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 89:
-#line 1400 "awkgram.y" /* yacc.c:1652  */
+#line 1404 "awkgram.y" /* yacc.c:1652  */
     {
                in_print = false;
                in_parens = 0;
                yyval = NULL;
          }
-#line 3327 "awkgram.c" /* yacc.c:1652  */
+#line 3331 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 90:
-#line 1405 "awkgram.y" /* yacc.c:1652  */
+#line 1409 "awkgram.y" /* yacc.c:1652  */
     { in_print = false; in_parens = 0; }
-#line 3333 "awkgram.c" /* yacc.c:1652  */
+#line 3337 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 91:
-#line 1406 "awkgram.y" /* yacc.c:1652  */
+#line 1410 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-2]->redir_type == redirect_twoway
                        && yyvsp[0]->lasti->opcode == Op_K_getline_redir
@@ -3343,21 +3347,21 @@ regular_print:
                        lintwarn(_("concatenation as I/O `>' redirection target 
is ambiguous"));
                yyval = list_prepend(yyvsp[0], yyvsp[-2]);
          }
-#line 3347 "awkgram.c" /* yacc.c:1652  */
+#line 3351 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 92:
-#line 1419 "awkgram.y" /* yacc.c:1652  */
+#line 1423 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-1] != NULL)
                        yyvsp[-5]->comment = yyvsp[-1];
                yyval = mk_condition(yyvsp[-3], yyvsp[-5], yyvsp[0], NULL, 
NULL);
          }
-#line 3357 "awkgram.c" /* yacc.c:1652  */
+#line 3361 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 93:
-#line 1426 "awkgram.y" /* yacc.c:1652  */
+#line 1430 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-4] != NULL)
                        yyvsp[-8]->comment = yyvsp[-4];
@@ -3365,19 +3369,19 @@ regular_print:
                        yyvsp[-2]->comment = yyvsp[-1];
                yyval = mk_condition(yyvsp[-6], yyvsp[-8], yyvsp[-3], 
yyvsp[-2], yyvsp[0]);
          }
-#line 3369 "awkgram.c" /* yacc.c:1652  */
+#line 3373 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 94:
-#line 1437 "awkgram.y" /* yacc.c:1652  */
+#line 1441 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = yyvsp[0];
          }
-#line 3377 "awkgram.c" /* yacc.c:1652  */
+#line 3381 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 95:
-#line 1441 "awkgram.y" /* yacc.c:1652  */
+#line 1445 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-1] != NULL && yyvsp[0] != NULL) {
                        if (yyvsp[-1]->memory->comment_type == EOL_COMMENT) {
@@ -3395,59 +3399,59 @@ regular_print:
                } else
                        yyval = NULL;
          }
-#line 3399 "awkgram.c" /* yacc.c:1652  */
+#line 3403 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 96:
-#line 1462 "awkgram.y" /* yacc.c:1652  */
+#line 1466 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3405 "awkgram.c" /* yacc.c:1652  */
+#line 3409 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 97:
-#line 1464 "awkgram.y" /* yacc.c:1652  */
+#line 1468 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3411 "awkgram.c" /* yacc.c:1652  */
+#line 3415 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 98:
-#line 1469 "awkgram.y" /* yacc.c:1652  */
+#line 1473 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3417 "awkgram.c" /* yacc.c:1652  */
+#line 3421 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 99:
-#line 1471 "awkgram.y" /* yacc.c:1652  */
+#line 1475 "awkgram.y" /* yacc.c:1652  */
     {
                bcfree(yyvsp[-1]);
                yyval = yyvsp[0];
          }
-#line 3426 "awkgram.c" /* yacc.c:1652  */
+#line 3430 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 100:
-#line 1479 "awkgram.y" /* yacc.c:1652  */
+#line 1483 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3432 "awkgram.c" /* yacc.c:1652  */
+#line 3436 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 101:
-#line 1481 "awkgram.y" /* yacc.c:1652  */
+#line 1485 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3438 "awkgram.c" /* yacc.c:1652  */
+#line 3442 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 102:
-#line 1486 "awkgram.y" /* yacc.c:1652  */
+#line 1490 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->param_count = 0;
                yyval = list_create(yyvsp[0]);
          }
-#line 3447 "awkgram.c" /* yacc.c:1652  */
+#line 3451 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 103:
-#line 1491 "awkgram.y" /* yacc.c:1652  */
+#line 1495 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-2] != NULL && yyvsp[0] != NULL) {
                        yyvsp[0]->param_count = yyvsp[-2]->lasti->param_count + 
1;
@@ -3464,76 +3468,76 @@ regular_print:
                } else
                        yyval = NULL;
          }
-#line 3468 "awkgram.c" /* yacc.c:1652  */
+#line 3472 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 104:
-#line 1508 "awkgram.y" /* yacc.c:1652  */
+#line 1512 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3474 "awkgram.c" /* yacc.c:1652  */
+#line 3478 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 105:
-#line 1510 "awkgram.y" /* yacc.c:1652  */
+#line 1514 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[-1]; }
-#line 3480 "awkgram.c" /* yacc.c:1652  */
+#line 3484 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 106:
-#line 1512 "awkgram.y" /* yacc.c:1652  */
+#line 1516 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[-2]; }
-#line 3486 "awkgram.c" /* yacc.c:1652  */
+#line 3490 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 107:
-#line 1518 "awkgram.y" /* yacc.c:1652  */
+#line 1522 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3492 "awkgram.c" /* yacc.c:1652  */
+#line 3496 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 108:
-#line 1520 "awkgram.y" /* yacc.c:1652  */
+#line 1524 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3498 "awkgram.c" /* yacc.c:1652  */
+#line 3502 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 109:
-#line 1525 "awkgram.y" /* yacc.c:1652  */
+#line 1529 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3504 "awkgram.c" /* yacc.c:1652  */
+#line 3508 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 110:
-#line 1527 "awkgram.y" /* yacc.c:1652  */
+#line 1531 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3510 "awkgram.c" /* yacc.c:1652  */
+#line 3514 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 111:
-#line 1532 "awkgram.y" /* yacc.c:1652  */
+#line 1536 "awkgram.y" /* yacc.c:1652  */
     {  yyval = mk_expression_list(NULL, yyvsp[0]); }
-#line 3516 "awkgram.c" /* yacc.c:1652  */
+#line 3520 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 112:
-#line 1534 "awkgram.y" /* yacc.c:1652  */
+#line 1538 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
                yyerrok;
          }
-#line 3527 "awkgram.c" /* yacc.c:1652  */
+#line 3531 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 113:
-#line 1541 "awkgram.y" /* yacc.c:1652  */
+#line 1545 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3533 "awkgram.c" /* yacc.c:1652  */
+#line 3537 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 114:
-#line 1543 "awkgram.y" /* yacc.c:1652  */
+#line 1547 "awkgram.y" /* yacc.c:1652  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3541,66 +3545,66 @@ regular_print:
                 */
                yyval = yyvsp[-1];
          }
-#line 3545 "awkgram.c" /* yacc.c:1652  */
+#line 3549 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 115:
-#line 1551 "awkgram.y" /* yacc.c:1652  */
+#line 1555 "awkgram.y" /* yacc.c:1652  */
     {
                /* Ditto */
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
          }
-#line 3554 "awkgram.c" /* yacc.c:1652  */
+#line 3558 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 116:
-#line 1556 "awkgram.y" /* yacc.c:1652  */
+#line 1560 "awkgram.y" /* yacc.c:1652  */
     {
                /* Ditto */
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = yyvsp[-2];
          }
-#line 3565 "awkgram.c" /* yacc.c:1652  */
+#line 3569 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 117:
-#line 1566 "awkgram.y" /* yacc.c:1652  */
+#line 1570 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3571 "awkgram.c" /* yacc.c:1652  */
+#line 3575 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 118:
-#line 1568 "awkgram.y" /* yacc.c:1652  */
+#line 1572 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3577 "awkgram.c" /* yacc.c:1652  */
+#line 3581 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 119:
-#line 1573 "awkgram.y" /* yacc.c:1652  */
+#line 1577 "awkgram.y" /* yacc.c:1652  */
     {  yyval = mk_expression_list(NULL, yyvsp[0]); }
-#line 3583 "awkgram.c" /* yacc.c:1652  */
+#line 3587 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 120:
-#line 1575 "awkgram.y" /* yacc.c:1652  */
+#line 1579 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
                yyerrok;
          }
-#line 3594 "awkgram.c" /* yacc.c:1652  */
+#line 3598 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 121:
-#line 1582 "awkgram.y" /* yacc.c:1652  */
+#line 1586 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 3600 "awkgram.c" /* yacc.c:1652  */
+#line 3604 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 122:
-#line 1584 "awkgram.y" /* yacc.c:1652  */
+#line 1588 "awkgram.y" /* yacc.c:1652  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3608,74 +3612,74 @@ regular_print:
                 */
                yyval = yyvsp[-1];
          }
-#line 3612 "awkgram.c" /* yacc.c:1652  */
+#line 3616 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 123:
-#line 1592 "awkgram.y" /* yacc.c:1652  */
+#line 1596 "awkgram.y" /* yacc.c:1652  */
     {
                /* Ditto */
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
          }
-#line 3621 "awkgram.c" /* yacc.c:1652  */
+#line 3625 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 124:
-#line 1597 "awkgram.y" /* yacc.c:1652  */
+#line 1601 "awkgram.y" /* yacc.c:1652  */
     {
                /* Ditto */
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->comment = yyvsp[-1];
                yyval = yyvsp[-2];
          }
-#line 3632 "awkgram.c" /* yacc.c:1652  */
+#line 3636 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 125:
-#line 1606 "awkgram.y" /* yacc.c:1652  */
+#line 1610 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3638 "awkgram.c" /* yacc.c:1652  */
+#line 3642 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 126:
-#line 1607 "awkgram.y" /* yacc.c:1652  */
+#line 1611 "awkgram.y" /* yacc.c:1652  */
     { yyval = list_create(yyvsp[0]); }
-#line 3644 "awkgram.c" /* yacc.c:1652  */
+#line 3648 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 127:
-#line 1613 "awkgram.y" /* yacc.c:1652  */
+#line 1617 "awkgram.y" /* yacc.c:1652  */
     {
                if (do_lint && yyvsp[0]->lasti->opcode == Op_match_rec)
                        lintwarn_ln(yyvsp[-1]->source_line,
                                _("regular expression on right of assignment"));
                yyval = mk_assignment(yyvsp[-2], yyvsp[0], yyvsp[-1]);
          }
-#line 3655 "awkgram.c" /* yacc.c:1652  */
+#line 3659 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 128:
-#line 1620 "awkgram.y" /* yacc.c:1652  */
+#line 1624 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = mk_assignment(yyvsp[-2], list_create(yyvsp[0]), 
yyvsp[-1]);
          }
-#line 3663 "awkgram.c" /* yacc.c:1652  */
+#line 3667 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 129:
-#line 1624 "awkgram.y" /* yacc.c:1652  */
+#line 1628 "awkgram.y" /* yacc.c:1652  */
     {  yyval = mk_boolean(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3669 "awkgram.c" /* yacc.c:1652  */
+#line 3673 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 130:
-#line 1626 "awkgram.y" /* yacc.c:1652  */
+#line 1630 "awkgram.y" /* yacc.c:1652  */
     {  yyval = mk_boolean(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3675 "awkgram.c" /* yacc.c:1652  */
+#line 3679 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 131:
-#line 1628 "awkgram.y" /* yacc.c:1652  */
+#line 1632 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-2]->lasti->opcode == Op_match_rec)
                        warning_ln(yyvsp[-1]->source_line,
@@ -3688,11 +3692,11 @@ regular_print:
                bcfree(yyvsp[0]);
                yyval = list_append(yyvsp[-2], yyvsp[-1]);
          }
-#line 3692 "awkgram.c" /* yacc.c:1652  */
+#line 3696 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 132:
-#line 1641 "awkgram.y" /* yacc.c:1652  */
+#line 1645 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[-2]->lasti->opcode == Op_match_rec)
                        warning_ln(yyvsp[-1]->source_line,
@@ -3709,11 +3713,11 @@ regular_print:
                        yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), 
yyvsp[-1]);
                }
          }
-#line 3713 "awkgram.c" /* yacc.c:1652  */
+#line 3717 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 133:
-#line 1658 "awkgram.y" /* yacc.c:1652  */
+#line 1662 "awkgram.y" /* yacc.c:1652  */
     {
                if (do_lint_old)
                        warning_ln(yyvsp[-1]->source_line,
@@ -3723,91 +3727,91 @@ regular_print:
                yyvsp[-1]->expr_count = 1;
                yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), yyvsp[-1]);
          }
-#line 3727 "awkgram.c" /* yacc.c:1652  */
+#line 3731 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 134:
-#line 1668 "awkgram.y" /* yacc.c:1652  */
+#line 1672 "awkgram.y" /* yacc.c:1652  */
     {
                if (do_lint && yyvsp[0]->lasti->opcode == Op_match_rec)
                        lintwarn_ln(yyvsp[-1]->source_line,
                                _("regular expression on right of comparison"));
                yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), yyvsp[-1]);
          }
-#line 3738 "awkgram.c" /* yacc.c:1652  */
+#line 3742 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 135:
-#line 1675 "awkgram.y" /* yacc.c:1652  */
+#line 1679 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_condition(yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], 
yyvsp[0]); }
-#line 3744 "awkgram.c" /* yacc.c:1652  */
+#line 3748 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 136:
-#line 1677 "awkgram.y" /* yacc.c:1652  */
+#line 1681 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3750 "awkgram.c" /* yacc.c:1652  */
+#line 3754 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 137:
-#line 1682 "awkgram.y" /* yacc.c:1652  */
+#line 1686 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3756 "awkgram.c" /* yacc.c:1652  */
+#line 3760 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 138:
-#line 1684 "awkgram.y" /* yacc.c:1652  */
+#line 1688 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3762 "awkgram.c" /* yacc.c:1652  */
+#line 3766 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 139:
-#line 1686 "awkgram.y" /* yacc.c:1652  */
+#line 1690 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->opcode = Op_assign_quotient;
                yyval = yyvsp[0];
          }
-#line 3771 "awkgram.c" /* yacc.c:1652  */
+#line 3775 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 140:
-#line 1694 "awkgram.y" /* yacc.c:1652  */
+#line 1698 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3777 "awkgram.c" /* yacc.c:1652  */
+#line 3781 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 141:
-#line 1696 "awkgram.y" /* yacc.c:1652  */
+#line 1700 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3783 "awkgram.c" /* yacc.c:1652  */
+#line 3787 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 142:
-#line 1701 "awkgram.y" /* yacc.c:1652  */
+#line 1705 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3789 "awkgram.c" /* yacc.c:1652  */
+#line 3793 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 143:
-#line 1703 "awkgram.y" /* yacc.c:1652  */
+#line 1707 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3795 "awkgram.c" /* yacc.c:1652  */
+#line 3799 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 144:
-#line 1708 "awkgram.y" /* yacc.c:1652  */
+#line 1712 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3801 "awkgram.c" /* yacc.c:1652  */
+#line 3805 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 145:
-#line 1710 "awkgram.y" /* yacc.c:1652  */
+#line 1714 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 3807 "awkgram.c" /* yacc.c:1652  */
+#line 3811 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 146:
-#line 1712 "awkgram.y" /* yacc.c:1652  */
+#line 1716 "awkgram.y" /* yacc.c:1652  */
     {
                int count = 2;
                bool is_simple_var = false;
@@ -3861,47 +3865,47 @@ regular_print:
                                max_args = count;
                }
          }
-#line 3865 "awkgram.c" /* yacc.c:1652  */
+#line 3869 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 148:
-#line 1771 "awkgram.y" /* yacc.c:1652  */
+#line 1775 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3871 "awkgram.c" /* yacc.c:1652  */
+#line 3875 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 149:
-#line 1773 "awkgram.y" /* yacc.c:1652  */
+#line 1777 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3877 "awkgram.c" /* yacc.c:1652  */
+#line 3881 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 150:
-#line 1775 "awkgram.y" /* yacc.c:1652  */
+#line 1779 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3883 "awkgram.c" /* yacc.c:1652  */
+#line 3887 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 151:
-#line 1777 "awkgram.y" /* yacc.c:1652  */
+#line 1781 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3889 "awkgram.c" /* yacc.c:1652  */
+#line 3893 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 152:
-#line 1779 "awkgram.y" /* yacc.c:1652  */
+#line 1783 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3895 "awkgram.c" /* yacc.c:1652  */
+#line 3899 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 153:
-#line 1781 "awkgram.y" /* yacc.c:1652  */
+#line 1785 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3901 "awkgram.c" /* yacc.c:1652  */
+#line 3905 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 154:
-#line 1783 "awkgram.y" /* yacc.c:1652  */
+#line 1787 "awkgram.y" /* yacc.c:1652  */
     {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3915,29 +3919,29 @@ regular_print:
                                _("non-redirected `getline' undefined inside 
END action"));
                yyval = mk_getline(yyvsp[-2], yyvsp[-1], yyvsp[0], 
redirect_input);
          }
-#line 3919 "awkgram.c" /* yacc.c:1652  */
+#line 3923 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 155:
-#line 1797 "awkgram.y" /* yacc.c:1652  */
+#line 1801 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->opcode = Op_postincrement;
                yyval = mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
-#line 3928 "awkgram.c" /* yacc.c:1652  */
+#line 3932 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 156:
-#line 1802 "awkgram.y" /* yacc.c:1652  */
+#line 1806 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->opcode = Op_postdecrement;
                yyval = mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
-#line 3937 "awkgram.c" /* yacc.c:1652  */
+#line 3941 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 157:
-#line 1807 "awkgram.y" /* yacc.c:1652  */
+#line 1811 "awkgram.y" /* yacc.c:1652  */
     {
                if (do_lint_old) {
                    warning_ln(yyvsp[-1]->source_line,
@@ -3957,64 +3961,64 @@ regular_print:
                        yyval = list_append(list_merge(t, yyvsp[0]), yyvsp[-1]);
                }
          }
-#line 3961 "awkgram.c" /* yacc.c:1652  */
+#line 3965 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 158:
-#line 1832 "awkgram.y" /* yacc.c:1652  */
+#line 1836 "awkgram.y" /* yacc.c:1652  */
     {
                  yyval = mk_getline(yyvsp[-1], yyvsp[0], yyvsp[-3], 
yyvsp[-2]->redir_type);
                  bcfree(yyvsp[-2]);
                }
-#line 3970 "awkgram.c" /* yacc.c:1652  */
+#line 3974 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 159:
-#line 1838 "awkgram.y" /* yacc.c:1652  */
+#line 1842 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3976 "awkgram.c" /* yacc.c:1652  */
+#line 3980 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 160:
-#line 1840 "awkgram.y" /* yacc.c:1652  */
+#line 1844 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3982 "awkgram.c" /* yacc.c:1652  */
+#line 3986 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 161:
-#line 1842 "awkgram.y" /* yacc.c:1652  */
+#line 1846 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3988 "awkgram.c" /* yacc.c:1652  */
+#line 3992 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 162:
-#line 1844 "awkgram.y" /* yacc.c:1652  */
+#line 1848 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 3994 "awkgram.c" /* yacc.c:1652  */
+#line 3998 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 163:
-#line 1846 "awkgram.y" /* yacc.c:1652  */
+#line 1850 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 4000 "awkgram.c" /* yacc.c:1652  */
+#line 4004 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 164:
-#line 1848 "awkgram.y" /* yacc.c:1652  */
+#line 1852 "awkgram.y" /* yacc.c:1652  */
     { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
-#line 4006 "awkgram.c" /* yacc.c:1652  */
+#line 4010 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 165:
-#line 1853 "awkgram.y" /* yacc.c:1652  */
+#line 1857 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = list_create(yyvsp[0]);
          }
-#line 4014 "awkgram.c" /* yacc.c:1652  */
+#line 4018 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 166:
-#line 1857 "awkgram.y" /* yacc.c:1652  */
+#line 1861 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0]->opcode == Op_match_rec) {
                        yyvsp[0]->opcode = Op_nomatch;
@@ -4046,11 +4050,11 @@ regular_print:
                        }
                }
           }
-#line 4050 "awkgram.c" /* yacc.c:1652  */
+#line 4054 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 167:
-#line 1889 "awkgram.y" /* yacc.c:1652  */
+#line 1893 "awkgram.y" /* yacc.c:1652  */
     {
                // Always include. Allows us to lint warn on
                // print "foo" > "bar" 1
@@ -4058,31 +4062,31 @@ regular_print:
                // print "foo" > ("bar" 1)
                yyval = list_append(yyvsp[-1], bcalloc(Op_parens, 1, 
sourceline));
          }
-#line 4062 "awkgram.c" /* yacc.c:1652  */
+#line 4066 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 168:
-#line 1897 "awkgram.y" /* yacc.c:1652  */
+#line 1901 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = snode(yyvsp[-1], yyvsp[-3]);
                if (yyval == NULL)
                        YYABORT;
          }
-#line 4072 "awkgram.c" /* yacc.c:1652  */
+#line 4076 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 169:
-#line 1903 "awkgram.y" /* yacc.c:1652  */
+#line 1907 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = snode(yyvsp[-1], yyvsp[-3]);
                if (yyval == NULL)
                        YYABORT;
          }
-#line 4082 "awkgram.c" /* yacc.c:1652  */
+#line 4086 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 170:
-#line 1909 "awkgram.y" /* yacc.c:1652  */
+#line 1913 "awkgram.y" /* yacc.c:1652  */
     {
                static bool warned = false;
 
@@ -4095,45 +4099,45 @@ regular_print:
                if (yyval == NULL)
                        YYABORT;
          }
-#line 4099 "awkgram.c" /* yacc.c:1652  */
+#line 4103 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 173:
-#line 1924 "awkgram.y" /* yacc.c:1652  */
+#line 1928 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[-1]->opcode = Op_preincrement;
                yyval = mk_assignment(yyvsp[0], NULL, yyvsp[-1]);
          }
-#line 4108 "awkgram.c" /* yacc.c:1652  */
+#line 4112 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 174:
-#line 1929 "awkgram.y" /* yacc.c:1652  */
+#line 1933 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[-1]->opcode = Op_predecrement;
                yyval = mk_assignment(yyvsp[0], NULL, yyvsp[-1]);
          }
-#line 4117 "awkgram.c" /* yacc.c:1652  */
+#line 4121 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 175:
-#line 1934 "awkgram.y" /* yacc.c:1652  */
+#line 1938 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = list_create(yyvsp[0]);
          }
-#line 4125 "awkgram.c" /* yacc.c:1652  */
+#line 4129 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 176:
-#line 1938 "awkgram.y" /* yacc.c:1652  */
+#line 1942 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = list_create(yyvsp[0]);
          }
-#line 4133 "awkgram.c" /* yacc.c:1652  */
+#line 4137 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 177:
-#line 1942 "awkgram.y" /* yacc.c:1652  */
+#line 1946 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0]->lasti->opcode == Op_push_i
                        && (yyvsp[0]->lasti->memory->flags & STRING) == 0
@@ -4148,11 +4152,11 @@ regular_print:
                        yyval = list_append(yyvsp[0], yyvsp[-1]);
                }
          }
-#line 4152 "awkgram.c" /* yacc.c:1652  */
+#line 4156 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 178:
-#line 1957 "awkgram.y" /* yacc.c:1652  */
+#line 1961 "awkgram.y" /* yacc.c:1652  */
     {
                if (yyvsp[0]->lasti->opcode == Op_push_i
                        && (yyvsp[0]->lasti->memory->flags & STRING) == 0
@@ -4170,20 +4174,20 @@ regular_print:
                        yyval = list_append(yyvsp[0], yyvsp[-1]);
                }
          }
-#line 4174 "awkgram.c" /* yacc.c:1652  */
+#line 4178 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 179:
-#line 1978 "awkgram.y" /* yacc.c:1652  */
+#line 1982 "awkgram.y" /* yacc.c:1652  */
     {
                func_use(yyvsp[0]->lasti->func_name, FUNC_USE);
                yyval = yyvsp[0];
          }
-#line 4183 "awkgram.c" /* yacc.c:1652  */
+#line 4187 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 180:
-#line 1983 "awkgram.y" /* yacc.c:1652  */
+#line 1987 "awkgram.y" /* yacc.c:1652  */
     {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@ -4217,11 +4221,11 @@ regular_print:
                yyval = list_prepend(yyvsp[0], t);
                at_seen = false;
          }
-#line 4221 "awkgram.c" /* yacc.c:1652  */
+#line 4225 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 181:
-#line 2020 "awkgram.y" /* yacc.c:1652  */
+#line 2024 "awkgram.y" /* yacc.c:1652  */
     {
                NODE *n;
                char *name = yyvsp[-3]->func_name;
@@ -4254,49 +4258,49 @@ regular_print:
                        yyval = list_append(t, yyvsp[-3]);
                }
          }
-#line 4258 "awkgram.c" /* yacc.c:1652  */
+#line 4262 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 182:
-#line 2056 "awkgram.y" /* yacc.c:1652  */
+#line 2060 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 4264 "awkgram.c" /* yacc.c:1652  */
+#line 4268 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 183:
-#line 2058 "awkgram.y" /* yacc.c:1652  */
+#line 2062 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 4270 "awkgram.c" /* yacc.c:1652  */
+#line 4274 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 184:
-#line 2063 "awkgram.y" /* yacc.c:1652  */
+#line 2067 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 4276 "awkgram.c" /* yacc.c:1652  */
+#line 4280 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 185:
-#line 2065 "awkgram.y" /* yacc.c:1652  */
+#line 2069 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[-1]; }
-#line 4282 "awkgram.c" /* yacc.c:1652  */
+#line 4286 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 186:
-#line 2070 "awkgram.y" /* yacc.c:1652  */
+#line 2074 "awkgram.y" /* yacc.c:1652  */
     {  yyval = yyvsp[0]; }
-#line 4288 "awkgram.c" /* yacc.c:1652  */
+#line 4292 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 187:
-#line 2072 "awkgram.y" /* yacc.c:1652  */
+#line 2076 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = list_merge(yyvsp[-1], yyvsp[0]);
          }
-#line 4296 "awkgram.c" /* yacc.c:1652  */
+#line 4300 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 188:
-#line 2079 "awkgram.y" /* yacc.c:1652  */
+#line 2083 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *ip = yyvsp[0]->lasti;
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@ -4310,11 +4314,11 @@ regular_print:
                sub_counter++;  /* count # of dimensions */
                yyval = yyvsp[0];
          }
-#line 4314 "awkgram.c" /* yacc.c:1652  */
+#line 4318 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 189:
-#line 2096 "awkgram.y" /* yacc.c:1652  */
+#line 2100 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *t = yyvsp[-1];
                if (yyvsp[-1] == NULL) {
@@ -4328,41 +4332,41 @@ regular_print:
                        yyvsp[0]->sub_count = count_expressions(&t, false);
                yyval = list_append(t, yyvsp[0]);
          }
-#line 4332 "awkgram.c" /* yacc.c:1652  */
+#line 4336 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 190:
-#line 2113 "awkgram.y" /* yacc.c:1652  */
+#line 2117 "awkgram.y" /* yacc.c:1652  */
     {  yyval = yyvsp[0]; }
-#line 4338 "awkgram.c" /* yacc.c:1652  */
+#line 4342 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 191:
-#line 2115 "awkgram.y" /* yacc.c:1652  */
+#line 2119 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = list_merge(yyvsp[-1], yyvsp[0]);
          }
-#line 4346 "awkgram.c" /* yacc.c:1652  */
+#line 4350 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 192:
-#line 2122 "awkgram.y" /* yacc.c:1652  */
+#line 2126 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[-1]; }
-#line 4352 "awkgram.c" /* yacc.c:1652  */
+#line 4356 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 193:
-#line 2127 "awkgram.y" /* yacc.c:1652  */
+#line 2131 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->opcode = Op_push;
                yyvsp[0]->memory = variable(yyvsp[0]->source_line, 
yyvsp[0]->lextok, Node_var_new);
                yyval = list_create(yyvsp[0]);
          }
-#line 4362 "awkgram.c" /* yacc.c:1652  */
+#line 4366 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 194:
-#line 2133 "awkgram.y" /* yacc.c:1652  */
+#line 2137 "awkgram.y" /* yacc.c:1652  */
     {
                char *arr = yyvsp[-1]->lextok;
 
@@ -4370,11 +4374,11 @@ regular_print:
                yyvsp[-1]->opcode = Op_push_array;
                yyval = list_prepend(yyvsp[0], yyvsp[-1]);
          }
-#line 4374 "awkgram.c" /* yacc.c:1652  */
+#line 4378 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 195:
-#line 2144 "awkgram.y" /* yacc.c:1652  */
+#line 2148 "awkgram.y" /* yacc.c:1652  */
     {
                INSTRUCTION *ip = yyvsp[0]->nexti;
                if (ip->opcode == Op_push
@@ -4386,85 +4390,85 @@ regular_print:
                } else
                        yyval = yyvsp[0];
          }
-#line 4390 "awkgram.c" /* yacc.c:1652  */
+#line 4394 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 196:
-#line 2156 "awkgram.y" /* yacc.c:1652  */
+#line 2160 "awkgram.y" /* yacc.c:1652  */
     {
                yyval = list_append(yyvsp[-1], yyvsp[-2]);
                if (yyvsp[0] != NULL)
                        mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
-#line 4400 "awkgram.c" /* yacc.c:1652  */
+#line 4404 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 197:
-#line 2165 "awkgram.y" /* yacc.c:1652  */
+#line 2169 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->opcode = Op_postincrement;
          }
-#line 4408 "awkgram.c" /* yacc.c:1652  */
+#line 4412 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 198:
-#line 2169 "awkgram.y" /* yacc.c:1652  */
+#line 2173 "awkgram.y" /* yacc.c:1652  */
     {
                yyvsp[0]->opcode = Op_postdecrement;
          }
-#line 4416 "awkgram.c" /* yacc.c:1652  */
+#line 4420 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 199:
-#line 2173 "awkgram.y" /* yacc.c:1652  */
+#line 2177 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 4422 "awkgram.c" /* yacc.c:1652  */
+#line 4426 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 200:
-#line 2177 "awkgram.y" /* yacc.c:1652  */
+#line 2181 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; }
-#line 4428 "awkgram.c" /* yacc.c:1652  */
+#line 4432 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 201:
-#line 2181 "awkgram.y" /* yacc.c:1652  */
+#line 2185 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; yyerrok; }
-#line 4434 "awkgram.c" /* yacc.c:1652  */
+#line 4438 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 202:
-#line 2185 "awkgram.y" /* yacc.c:1652  */
+#line 2189 "awkgram.y" /* yacc.c:1652  */
     { yyerrok; }
-#line 4440 "awkgram.c" /* yacc.c:1652  */
+#line 4444 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 203:
-#line 2190 "awkgram.y" /* yacc.c:1652  */
+#line 2194 "awkgram.y" /* yacc.c:1652  */
     { yyval = NULL; }
-#line 4446 "awkgram.c" /* yacc.c:1652  */
+#line 4450 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 205:
-#line 2195 "awkgram.y" /* yacc.c:1652  */
+#line 2199 "awkgram.y" /* yacc.c:1652  */
     { yyerrok; }
-#line 4452 "awkgram.c" /* yacc.c:1652  */
+#line 4456 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 206:
-#line 2199 "awkgram.y" /* yacc.c:1652  */
+#line 2203 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; yyerrok; }
-#line 4458 "awkgram.c" /* yacc.c:1652  */
+#line 4462 "awkgram.c" /* yacc.c:1652  */
     break;
 
   case 207:
-#line 2203 "awkgram.y" /* yacc.c:1652  */
+#line 2207 "awkgram.y" /* yacc.c:1652  */
     { yyval = yyvsp[0]; yyerrok; }
-#line 4464 "awkgram.c" /* yacc.c:1652  */
+#line 4468 "awkgram.c" /* yacc.c:1652  */
     break;
 
 
-#line 4468 "awkgram.c" /* yacc.c:1652  */
+#line 4472 "awkgram.c" /* yacc.c:1652  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4695,7 +4699,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2205 "awkgram.y" /* yacc.c:1918  */
+#line 2209 "awkgram.y" /* yacc.c:1918  */
 
 
 struct token {
@@ -5226,10 +5230,12 @@ out:
 /* parse_program --- read in the program and convert into a list of 
instructions */
 
 int
-parse_program(INSTRUCTION **pcode)
+parse_program(INSTRUCTION **pcode, bool from_eval)
 {
        int ret;
 
+       called_from_eval = from_eval;
+
        /* pre-create non-local jump targets
         * ip_end (Op_no_op) -- used as jump target for `exit'
         * outside an END block.
diff --git a/awkgram.y b/awkgram.y
index 9f2b4d3..87570df 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -176,6 +176,7 @@ static INSTRUCTION *ip_end;
 static INSTRUCTION *ip_endfile;
 static INSTRUCTION *ip_beginfile;
 INSTRUCTION *main_beginfile;
+static bool called_from_eval = false;
 
 static inline INSTRUCTION *list_create(INSTRUCTION *x);
 static inline INSTRUCTION *list_append(INSTRUCTION *l, INSTRUCTION *x);
@@ -1093,6 +1094,9 @@ non_compound_stmt
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          } opt_exp statement_term {
+               if (called_from_eval)
+                       $1->opcode = Op_K_return_from_eval;
+
                if ($3 == NULL) {
                        $$ = list_create($1);
                        (void) list_prepend($$, instruction(Op_push_i));
@@ -2732,10 +2736,12 @@ out:
 /* parse_program --- read in the program and convert into a list of 
instructions */
 
 int
-parse_program(INSTRUCTION **pcode)
+parse_program(INSTRUCTION **pcode, bool from_eval)
 {
        int ret;
 
+       called_from_eval = from_eval;
+
        /* pre-create non-local jump targets
         * ip_end (Op_no_op) -- used as jump target for `exit'
         * outside an END block.
diff --git a/debug.c b/debug.c
index 452b6b6..1987428 100644
--- a/debug.c
+++ b/debug.c
@@ -5522,7 +5522,7 @@ pre_execute_code(INSTRUCTION **pi)
                                op2str(ei->opcode));
                *pi = ei->nexti;
                break;
-       case Op_K_return:
+       case Op_K_return_from_eval:
                if (ei->nexti != NULL) {        /* not an implicit return */
                        NODE *r;
                        d_error(_("`return' not allowed in current context;"
@@ -5600,7 +5600,7 @@ do_eval(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
        push_context(ctxt);
        the_source = add_srcfile(SRC_CMDLINE, arg->a_string, srcfiles, NULL, 
NULL);
        do_flags = false;
-       ret = parse_program(&code);
+       ret = parse_program(&code, true);
        do_flags = save_flags;
        remove_params(this_func);
        if (ret != 0) {
@@ -5783,7 +5783,7 @@ parse_condition(int type, int num, char *expr)
        push_context(ctxt);
        (void) add_srcfile(SRC_CMDLINE, expr, srcfiles, NULL, NULL);
        do_flags = false;
-       ret = parse_program(&code);
+       ret = parse_program(&code, true);
        do_flags = save_flags;
        remove_params(this_func);
        pop_context();
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 3ed04bb..d3da4d2 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2019-02-17         Arnold D. Robbins     <address@hidden>
+
+       * gawktexi.in (Viewing And Changing Data): Revise note for eval
+       to list commands that are not allowed using it.
+
 2019-02-15         Arnold D. Robbins     <address@hidden>
 
        * gawktexi.in: Fix wording for %f.
diff --git a/doc/gawk.info b/doc/gawk.info
index a91a2c6..d624d96 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -22342,10 +22342,9 @@ The commands for viewing and changing variables inside 
of 'gawk' are:
      can do anything that an 'awk' program would do: assign values to
      variables, call functions, and so on.
 
-          NOTE: Do to implementation constraintss, using 'eval' to call
-          a user-defined function that returns a value does not work,
-          generating an error message.  We hope to one day remove this
-          constraint.
+          NOTE: You cannot use 'eval' to execute a statement containing
+          any of the following: 'exit', 'getline', 'next', 'nextfile',
+          or 'return'.
 
 'eval' PARAM, ...
 AWK STATEMENTS
@@ -33979,7 +33978,7 @@ Index
 * assert() user-defined function:        Assert Function.     (line  28)
 * assertions:                            Assert Function.     (line   6)
 * assign values to variables, in debugger: Viewing And Changing Data.
-                                                              (line  63)
+                                                              (line  62)
 * assignment operators:                  Assignment Ops.      (line   6)
 * assignment operators, evaluation order: Assignment Ops.     (line 110)
 * assignment operators, lvalues/rvalues: Assignment Ops.      (line  31)
@@ -34572,11 +34571,11 @@ Index
 * debugger commands, o (option):         Debugger Info.       (line  57)
 * debugger commands, option:             Debugger Info.       (line  57)
 * debugger commands, p (print):          Viewing And Changing Data.
-                                                              (line  40)
+                                                              (line  39)
 * debugger commands, print:              Viewing And Changing Data.
-                                                              (line  40)
+                                                              (line  39)
 * debugger commands, printf:             Viewing And Changing Data.
-                                                              (line  58)
+                                                              (line  57)
 * debugger commands, q (quit):           Miscellaneous Debugger Commands.
                                                               (line 100)
 * debugger commands, quit:               Miscellaneous Debugger Commands.
@@ -34590,7 +34589,7 @@ Index
 * debugger commands, s (step):           Debugger Execution Control.
                                                               (line  68)
 * debugger commands, set:                Viewing And Changing Data.
-                                                              (line  63)
+                                                              (line  62)
 * debugger commands, si (stepi):         Debugger Execution Control.
                                                               (line  75)
 * debugger commands, silent:             Debugger Execution Control.
@@ -34606,16 +34605,16 @@ Index
 * debugger commands, u (until):          Debugger Execution Control.
                                                               (line  82)
 * debugger commands, undisplay:          Viewing And Changing Data.
-                                                              (line  84)
+                                                              (line  83)
 * debugger commands, until:              Debugger Execution Control.
                                                               (line  82)
 * debugger commands, unwatch:            Viewing And Changing Data.
-                                                              (line  88)
+                                                              (line  87)
 * debugger commands, up:                 Execution Stack.     (line  36)
 * debugger commands, w (watch):          Viewing And Changing Data.
-                                                              (line  71)
+                                                              (line  70)
 * debugger commands, watch:              Viewing And Changing Data.
-                                                              (line  71)
+                                                              (line  70)
 * debugger commands, where (backtrace):  Execution Stack.     (line  13)
 * debugger, b command:                   Finding The Bug.     (line  32)
 * debugger, backtrace command:           Finding The Bug.     (line  52)
@@ -34665,7 +34664,7 @@ Index
 * delete debugger command:               Breakpoint Control.  (line  64)
 * delete statement:                      Delete.              (line   6)
 * delete watchpoint:                     Viewing And Changing Data.
-                                                              (line  88)
+                                                              (line  87)
 * deleting elements in arrays:           Delete.              (line   6)
 * deleting entire arrays:                Delete.              (line  39)
 * Demaille, Akim:                        Acknowledgments.     (line  60)
@@ -35889,7 +35888,7 @@ Index
 * output, records:                       Output Separators.   (line  20)
 * output, standard:                      Special FD.          (line   6)
 * p debugger command (alias for print):  Viewing And Changing Data.
-                                                              (line  40)
+                                                              (line  39)
 * package, definition of:                Global Namespace.    (line  18)
 * Papadopoulos, Panos:                   Contributors.        (line 131)
 * parent process ID of gawk process:     Auto-set.            (line 251)
@@ -36033,7 +36032,7 @@ Index
 * pretty printing <1>:                   Profiling.           (line 222)
 * pretty-printing, profiling, difference with: Profiling.     (line 229)
 * print debugger command:                Viewing And Changing Data.
-                                                              (line  40)
+                                                              (line  39)
 * print statement:                       Printing.            (line  16)
 * print statement, BEGIN/END patterns and: I/O And BEGIN/END. (line  15)
 * print statement, commas, omitting:     Print Examples.      (line  30)
@@ -36044,9 +36043,9 @@ Index
                                                               (line  17)
 * print statement, sprintf() function and: Round Function.    (line   6)
 * print variables, in debugger:          Viewing And Changing Data.
-                                                              (line  40)
+                                                              (line  39)
 * printf debugger command:               Viewing And Changing Data.
-                                                              (line  58)
+                                                              (line  57)
 * printf statement:                      Printing.            (line  16)
 * printf statement <1>:                  Printf.              (line   6)
 * printf statement, columns, aligning:   Print Examples.      (line  69)
@@ -36347,10 +36346,10 @@ Index
 * separators, subscript:                 User-modified.       (line 149)
 * set breakpoint:                        Breakpoint Control.  (line  11)
 * set debugger command:                  Viewing And Changing Data.
-                                                              (line  63)
+                                                              (line  62)
 * set directory of message catalogs:     I18N Functions.      (line  11)
 * set watchpoint:                        Viewing And Changing Data.
-                                                              (line  71)
+                                                              (line  70)
 * shadowing of variable values:          Definition Syntax.   (line  77)
 * shell quoting, rules for:              Quoting.             (line   6)
 * shells, piping commands into:          Redirection.         (line 136)
@@ -36509,7 +36508,7 @@ Index
 * stepi debugger command:                Debugger Execution Control.
                                                               (line  75)
 * stop automatic display, in debugger:   Viewing And Changing Data.
-                                                              (line  84)
+                                                              (line  83)
 * stream editors:                        Full Line Fields.    (line  22)
 * stream editors <1>:                    Simple Sed.          (line   6)
 * strftime:                              Time Functions.      (line  50)
@@ -36679,7 +36678,7 @@ Index
                                                               (line  29)
 * underscore (_), translatable string:   Programmer i18n.     (line  69)
 * undisplay debugger command:            Viewing And Changing Data.
-                                                              (line  84)
+                                                              (line  83)
 * undocumented features:                 Undocumented.        (line   6)
 * Unicode:                               Ordinal Functions.   (line  45)
 * Unicode <1>:                           Ranges and Locales.  (line  61)
@@ -36700,7 +36699,7 @@ Index
 * until debugger command:                Debugger Execution Control.
                                                               (line  82)
 * unwatch debugger command:              Viewing And Changing Data.
-                                                              (line  88)
+                                                              (line  87)
 * up debugger command:                   Execution Stack.     (line  36)
 * uppercase names, namespace for:        Default Namespace.   (line  10)
 * user database, reading:                Passwd Functions.    (line   6)
@@ -36761,7 +36760,7 @@ Index
 * vertical bar (|), || operator <1>:     Precedence.          (line  88)
 * Vinschen, Corinna:                     Acknowledgments.     (line  60)
 * w debugger command (alias for watch):  Viewing And Changing Data.
-                                                              (line  71)
+                                                              (line  70)
 * w utility:                             Fixed width data.    (line  17)
 * wait() extension function:             Extension Sample Fork.
                                                               (line  22)
@@ -36773,7 +36772,7 @@ Index
 * Wallin, Anders:                        Contributors.        (line 106)
 * warnings, issuing:                     Options.             (line 210)
 * watch debugger command:                Viewing And Changing Data.
-                                                              (line  71)
+                                                              (line  70)
 * watchpoint (debugger):                 Debugging Terms.     (line  42)
 * wc utility:                            Wc Program.          (line   6)
 * wc.awk program:                        Wc Program.          (line  46)
@@ -37214,198 +37213,198 @@ Node: List of Debugger Commands895922
 Node: Breakpoint Control897255
 Node: Debugger Execution Control900949
 Node: Viewing And Changing Data904311
-Node: Execution Stack907921
-Node: Debugger Info909558
-Node: Miscellaneous Debugger Commands913629
-Node: Readline Support918691
-Node: Limitations919587
-Node: Debugging Summary921696
-Node: Namespaces922975
-Node: Global Namespace924054
-Node: Qualified Names925452
-Node: Default Namespace926451
-Node: Changing The Namespace927192
-Node: Naming Rules928806
-Node: Internal Name Management930654
-Node: Namespace Example931696
-Node: Namespace And Features934258
-Node: Namespace Summary935693
-Node: Arbitrary Precision Arithmetic937170
-Node: Computer Arithmetic938657
-Ref: table-numeric-ranges942423
-Ref: table-floating-point-ranges942916
-Ref: Computer Arithmetic-Footnote-1943574
-Node: Math Definitions943631
-Ref: table-ieee-formats946947
-Ref: Math Definitions-Footnote-1947550
-Node: MPFR features947655
-Node: FP Math Caution949373
-Ref: FP Math Caution-Footnote-1950445
-Node: Inexactness of computations950814
-Node: Inexact representation951774
-Node: Comparing FP Values953134
-Node: Errors accumulate954375
-Node: Getting Accuracy955808
-Node: Try To Round958518
-Node: Setting precision959417
-Ref: table-predefined-precision-strings960114
-Node: Setting the rounding mode961944
-Ref: table-gawk-rounding-modes962318
-Ref: Setting the rounding mode-Footnote-1966249
-Node: Arbitrary Precision Integers966428
-Ref: Arbitrary Precision Integers-Footnote-1969603
-Node: Checking for MPFR969752
-Node: POSIX Floating Point Problems971226
-Ref: POSIX Floating Point Problems-Footnote-1975511
-Node: Floating point summary975549
-Node: Dynamic Extensions977739
-Node: Extension Intro979292
-Node: Plugin License980558
-Node: Extension Mechanism Outline981355
-Ref: figure-load-extension981794
-Ref: figure-register-new-function983359
-Ref: figure-call-new-function984451
-Node: Extension API Description986513
-Node: Extension API Functions Introduction988155
-Ref: table-api-std-headers989991
-Node: General Data Types993856
-Ref: General Data Types-Footnote-11002217
-Node: Memory Allocation Functions1002516
-Ref: Memory Allocation Functions-Footnote-11006726
-Node: Constructor Functions1006825
-Node: Registration Functions1010411
-Node: Extension Functions1011096
-Node: Exit Callback Functions1016418
-Node: Extension Version String1017668
-Node: Input Parsers1018331
-Node: Output Wrappers1031052
-Node: Two-way processors1035564
-Node: Printing Messages1037829
-Ref: Printing Messages-Footnote-11039000
-Node: Updating ERRNO1039153
-Node: Requesting Values1039892
-Ref: table-value-types-returned1040629
-Node: Accessing Parameters1041565
-Node: Symbol Table Access1042800
-Node: Symbol table by name1043312
-Ref: Symbol table by name-Footnote-11046336
-Node: Symbol table by cookie1046464
-Ref: Symbol table by cookie-Footnote-11050649
-Node: Cached values1050713
-Ref: Cached values-Footnote-11054249
-Node: Array Manipulation1054402
-Ref: Array Manipulation-Footnote-11055493
-Node: Array Data Types1055530
-Ref: Array Data Types-Footnote-11058188
-Node: Array Functions1058280
-Node: Flattening Arrays1062778
-Node: Creating Arrays1069754
-Node: Redirection API1074521
-Node: Extension API Variables1077354
-Node: Extension Versioning1078065
-Ref: gawk-api-version1078494
-Node: Extension GMP/MPFR Versioning1080225
-Node: Extension API Informational Variables1081853
-Node: Extension API Boilerplate1082926
-Node: Changes from API V11086900
-Node: Finding Extensions1088472
-Node: Extension Example1089031
-Node: Internal File Description1089829
-Node: Internal File Ops1093909
-Ref: Internal File Ops-Footnote-11105259
-Node: Using Internal File Ops1105399
-Ref: Using Internal File Ops-Footnote-11107782
-Node: Extension Samples1108056
-Node: Extension Sample File Functions1109585
-Node: Extension Sample Fnmatch1117234
-Node: Extension Sample Fork1118721
-Node: Extension Sample Inplace1119939
-Node: Extension Sample Ord1123243
-Node: Extension Sample Readdir1124079
-Ref: table-readdir-file-types1124968
-Node: Extension Sample Revout1125773
-Node: Extension Sample Rev2way1126362
-Node: Extension Sample Read write array1127102
-Node: Extension Sample Readfile1129044
-Node: Extension Sample Time1130139
-Node: Extension Sample API Tests1131487
-Node: gawkextlib1131979
-Node: Extension summary1134897
-Node: Extension Exercises1138599
-Node: Language History1139841
-Node: V7/SVR3.11141497
-Node: SVR41143649
-Node: POSIX1145083
-Node: BTL1146463
-Node: POSIX/GNU1147192
-Node: Feature History1152970
-Node: Common Extensions1169016
-Node: Ranges and Locales1170299
-Ref: Ranges and Locales-Footnote-11174915
-Ref: Ranges and Locales-Footnote-21174942
-Ref: Ranges and Locales-Footnote-31175177
-Node: Contributors1175398
-Node: History summary1181343
-Node: Installation1182723
-Node: Gawk Distribution1183667
-Node: Getting1184151
-Node: Extracting1185114
-Node: Distribution contents1186752
-Node: Unix Installation1193232
-Node: Quick Installation1193914
-Node: Shell Startup Files1196328
-Node: Additional Configuration Options1197417
-Node: Configuration Philosophy1199582
-Node: Non-Unix Installation1201951
-Node: PC Installation1202411
-Node: PC Binary Installation1203249
-Node: PC Compiling1203684
-Node: PC Using1204801
-Node: Cygwin1208354
-Node: MSYS1209453
-Node: VMS Installation1209954
-Node: VMS Compilation1210745
-Ref: VMS Compilation-Footnote-11211974
-Node: VMS Dynamic Extensions1212032
-Node: VMS Installation Details1213717
-Node: VMS Running1215970
-Node: VMS GNV1220249
-Node: VMS Old Gawk1220984
-Node: Bugs1221455
-Node: Bug address1222118
-Node: Usenet1225100
-Node: Maintainers1226104
-Node: Other Versions1227365
-Node: Installation summary1234279
-Node: Notes1235481
-Node: Compatibility Mode1236275
-Node: Additions1237057
-Node: Accessing The Source1237982
-Node: Adding Code1239419
-Node: New Ports1245638
-Node: Derived Files1250126
-Ref: Derived Files-Footnote-11255772
-Ref: Derived Files-Footnote-21255807
-Ref: Derived Files-Footnote-31256405
-Node: Future Extensions1256519
-Node: Implementation Limitations1257177
-Node: Extension Design1258360
-Node: Old Extension Problems1259504
-Ref: Old Extension Problems-Footnote-11261022
-Node: Extension New Mechanism Goals1261079
-Ref: Extension New Mechanism Goals-Footnote-11264443
-Node: Extension Other Design Decisions1264632
-Node: Extension Future Growth1266745
-Node: Notes summary1267581
-Node: Basic Concepts1268756
-Node: Basic High Level1269437
-Ref: figure-general-flow1269719
-Ref: figure-process-flow1270404
-Ref: Basic High Level-Footnote-11273705
-Node: Basic Data Typing1273890
-Node: Glossary1277218
-Node: Copying1309056
-Node: GNU Free Documentation License1346599
-Node: Index1371719
+Node: Execution Stack907852
+Node: Debugger Info909489
+Node: Miscellaneous Debugger Commands913560
+Node: Readline Support918622
+Node: Limitations919518
+Node: Debugging Summary921627
+Node: Namespaces922906
+Node: Global Namespace923985
+Node: Qualified Names925383
+Node: Default Namespace926382
+Node: Changing The Namespace927123
+Node: Naming Rules928737
+Node: Internal Name Management930585
+Node: Namespace Example931627
+Node: Namespace And Features934189
+Node: Namespace Summary935624
+Node: Arbitrary Precision Arithmetic937101
+Node: Computer Arithmetic938588
+Ref: table-numeric-ranges942354
+Ref: table-floating-point-ranges942847
+Ref: Computer Arithmetic-Footnote-1943505
+Node: Math Definitions943562
+Ref: table-ieee-formats946878
+Ref: Math Definitions-Footnote-1947481
+Node: MPFR features947586
+Node: FP Math Caution949304
+Ref: FP Math Caution-Footnote-1950376
+Node: Inexactness of computations950745
+Node: Inexact representation951705
+Node: Comparing FP Values953065
+Node: Errors accumulate954306
+Node: Getting Accuracy955739
+Node: Try To Round958449
+Node: Setting precision959348
+Ref: table-predefined-precision-strings960045
+Node: Setting the rounding mode961875
+Ref: table-gawk-rounding-modes962249
+Ref: Setting the rounding mode-Footnote-1966180
+Node: Arbitrary Precision Integers966359
+Ref: Arbitrary Precision Integers-Footnote-1969534
+Node: Checking for MPFR969683
+Node: POSIX Floating Point Problems971157
+Ref: POSIX Floating Point Problems-Footnote-1975442
+Node: Floating point summary975480
+Node: Dynamic Extensions977670
+Node: Extension Intro979223
+Node: Plugin License980489
+Node: Extension Mechanism Outline981286
+Ref: figure-load-extension981725
+Ref: figure-register-new-function983290
+Ref: figure-call-new-function984382
+Node: Extension API Description986444
+Node: Extension API Functions Introduction988086
+Ref: table-api-std-headers989922
+Node: General Data Types993787
+Ref: General Data Types-Footnote-11002148
+Node: Memory Allocation Functions1002447
+Ref: Memory Allocation Functions-Footnote-11006657
+Node: Constructor Functions1006756
+Node: Registration Functions1010342
+Node: Extension Functions1011027
+Node: Exit Callback Functions1016349
+Node: Extension Version String1017599
+Node: Input Parsers1018262
+Node: Output Wrappers1030983
+Node: Two-way processors1035495
+Node: Printing Messages1037760
+Ref: Printing Messages-Footnote-11038931
+Node: Updating ERRNO1039084
+Node: Requesting Values1039823
+Ref: table-value-types-returned1040560
+Node: Accessing Parameters1041496
+Node: Symbol Table Access1042731
+Node: Symbol table by name1043243
+Ref: Symbol table by name-Footnote-11046267
+Node: Symbol table by cookie1046395
+Ref: Symbol table by cookie-Footnote-11050580
+Node: Cached values1050644
+Ref: Cached values-Footnote-11054180
+Node: Array Manipulation1054333
+Ref: Array Manipulation-Footnote-11055424
+Node: Array Data Types1055461
+Ref: Array Data Types-Footnote-11058119
+Node: Array Functions1058211
+Node: Flattening Arrays1062709
+Node: Creating Arrays1069685
+Node: Redirection API1074452
+Node: Extension API Variables1077285
+Node: Extension Versioning1077996
+Ref: gawk-api-version1078425
+Node: Extension GMP/MPFR Versioning1080156
+Node: Extension API Informational Variables1081784
+Node: Extension API Boilerplate1082857
+Node: Changes from API V11086831
+Node: Finding Extensions1088403
+Node: Extension Example1088962
+Node: Internal File Description1089760
+Node: Internal File Ops1093840
+Ref: Internal File Ops-Footnote-11105190
+Node: Using Internal File Ops1105330
+Ref: Using Internal File Ops-Footnote-11107713
+Node: Extension Samples1107987
+Node: Extension Sample File Functions1109516
+Node: Extension Sample Fnmatch1117165
+Node: Extension Sample Fork1118652
+Node: Extension Sample Inplace1119870
+Node: Extension Sample Ord1123174
+Node: Extension Sample Readdir1124010
+Ref: table-readdir-file-types1124899
+Node: Extension Sample Revout1125704
+Node: Extension Sample Rev2way1126293
+Node: Extension Sample Read write array1127033
+Node: Extension Sample Readfile1128975
+Node: Extension Sample Time1130070
+Node: Extension Sample API Tests1131418
+Node: gawkextlib1131910
+Node: Extension summary1134828
+Node: Extension Exercises1138530
+Node: Language History1139772
+Node: V7/SVR3.11141428
+Node: SVR41143580
+Node: POSIX1145014
+Node: BTL1146394
+Node: POSIX/GNU1147123
+Node: Feature History1152901
+Node: Common Extensions1168947
+Node: Ranges and Locales1170230
+Ref: Ranges and Locales-Footnote-11174846
+Ref: Ranges and Locales-Footnote-21174873
+Ref: Ranges and Locales-Footnote-31175108
+Node: Contributors1175329
+Node: History summary1181274
+Node: Installation1182654
+Node: Gawk Distribution1183598
+Node: Getting1184082
+Node: Extracting1185045
+Node: Distribution contents1186683
+Node: Unix Installation1193163
+Node: Quick Installation1193845
+Node: Shell Startup Files1196259
+Node: Additional Configuration Options1197348
+Node: Configuration Philosophy1199513
+Node: Non-Unix Installation1201882
+Node: PC Installation1202342
+Node: PC Binary Installation1203180
+Node: PC Compiling1203615
+Node: PC Using1204732
+Node: Cygwin1208285
+Node: MSYS1209384
+Node: VMS Installation1209885
+Node: VMS Compilation1210676
+Ref: VMS Compilation-Footnote-11211905
+Node: VMS Dynamic Extensions1211963
+Node: VMS Installation Details1213648
+Node: VMS Running1215901
+Node: VMS GNV1220180
+Node: VMS Old Gawk1220915
+Node: Bugs1221386
+Node: Bug address1222049
+Node: Usenet1225031
+Node: Maintainers1226035
+Node: Other Versions1227296
+Node: Installation summary1234210
+Node: Notes1235412
+Node: Compatibility Mode1236206
+Node: Additions1236988
+Node: Accessing The Source1237913
+Node: Adding Code1239350
+Node: New Ports1245569
+Node: Derived Files1250057
+Ref: Derived Files-Footnote-11255703
+Ref: Derived Files-Footnote-21255738
+Ref: Derived Files-Footnote-31256336
+Node: Future Extensions1256450
+Node: Implementation Limitations1257108
+Node: Extension Design1258291
+Node: Old Extension Problems1259435
+Ref: Old Extension Problems-Footnote-11260953
+Node: Extension New Mechanism Goals1261010
+Ref: Extension New Mechanism Goals-Footnote-11264374
+Node: Extension Other Design Decisions1264563
+Node: Extension Future Growth1266676
+Node: Notes summary1267512
+Node: Basic Concepts1268687
+Node: Basic High Level1269368
+Ref: figure-general-flow1269650
+Ref: figure-process-flow1270335
+Ref: Basic High Level-Footnote-11273636
+Node: Basic Data Typing1273821
+Node: Glossary1277149
+Node: Copying1308987
+Node: GNU Free Documentation License1346530
+Node: Index1371650
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index b0b4d3d..2464643 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -31132,9 +31132,14 @@ You can do anything that an @command{awk} program 
would do: assign
 values to variables, call functions, and so on.
 
 @quotation NOTE
-Do to implementation constraintss, using @code{eval} to call a
-user-defined function that returns a value does not work, generating
-an error message.  We hope to one day remove this constraint.
+You cannot use @code{eval} to execute a statement containing
+any of the following:
address@hidden,
address@hidden,
address@hidden,
address@hidden,
+or
address@hidden
 @end quotation
 
 @item @code{eval} @var{param}, @dots{}
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 3f514c8..559244f 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -30144,9 +30144,14 @@ You can do anything that an @command{awk} program 
would do: assign
 values to variables, call functions, and so on.
 
 @quotation NOTE
-Do to implementation constraintss, using @code{eval} to call a
-user-defined function that returns a value does not work, generating
-an error message.  We hope to one day remove this constraint.
+You cannot use @code{eval} to execute a statement containing
+any of the following:
address@hidden,
address@hidden,
address@hidden,
address@hidden,
+or
address@hidden
 @end quotation
 
 @item @code{eval} @var{param}, @dots{}
diff --git a/eval.c b/eval.c
index aa78d3e..4858fa6 100644
--- a/eval.c
+++ b/eval.c
@@ -325,6 +325,7 @@ static struct optypetab {
        { "Op_K_next", "next" },
        { "Op_K_exit", "exit" },
        { "Op_K_return", "return" },
+       { "Op_K_return_from_eval", "return" },
        { "Op_K_delete", "delete" },
        { "Op_K_delete_loop", NULL },
        { "Op_K_getline_redir", "getline" },
diff --git a/interpret.h b/interpret.h
index c16da88..cc6e02a 100644
--- a/interpret.h
+++ b/interpret.h
@@ -1199,6 +1199,10 @@ match_re:
                        JUMPTO(ni);     /* Op_func */
                }
 
+               case Op_K_return_from_eval:
+                       cant_happen();
+                       break;
+
                case Op_K_return:
                        m = POP_SCALAR();       /* return value */
 
diff --git a/main.c b/main.c
index d42d1f4..5800231 100644
--- a/main.c
+++ b/main.c
@@ -465,7 +465,7 @@ main(int argc, char **argv)
        setlocale(LC_NUMERIC, "C");
 #endif
        /* Read in the program */
-       if (parse_program(& code_block) != 0 || dash_v_errs > 0)
+       if (parse_program(& code_block, false) != 0 || dash_v_errs > 0)
                exit(EXIT_FAILURE);
 
        if (do_intl)
diff --git a/test/ChangeLog b/test/ChangeLog
index 173832d..0c9b7ce 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2019-02-17         Arnold D. Robbins     <address@hidden>
+
+       * Makefile.am (EXTRA_DIST): New test: dbugeval3.
+       * dbugeval3.awk, dbugeval3.in, dbugeval3.ok: New files.
+
 2019-02-17         Andrew J. Schorr     <address@hidden>
 
        * timeout.awk, timeout.ok: Increase READ_TIMEOUT to 400 to increase
diff --git a/test/Makefile.am b/test/Makefile.am
index 19f1d68..cba648e 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -217,6 +217,9 @@ EXTRA_DIST = \
        dbugeval2.awk \
        dbugeval2.in \
        dbugeval2.ok \
+       dbugeval3.awk \
+       dbugeval3.in \
+       dbugeval3.ok \
        dbugtypedre1.awk \
        dbugtypedre1.in \
        dbugtypedre1.ok \
@@ -1321,7 +1324,7 @@ GAWK_EXT_TESTS = \
        backw badargs beginfile1 beginfile2 binmode1 \
        charasbytes colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \
        clos1way6 crlf \
-       dbugeval dbugeval2 dbugtypedre1 dbugtypedre2 delsub \
+       dbugeval dbugeval2 dbugeval3 dbugtypedre1 dbugtypedre2 delsub \
        devfd devfd1 devfd2 dfacheck1 dumpvars \
        errno exit \
        fieldwdth forcenum fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpatnull fsfwfs \
@@ -1372,7 +1375,7 @@ SHLIB_TESTS = \
        testext time
 
 # List of the tests which should be run with --debug option:
-NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 symtab10
+NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 dbugeval3 symtab10
 
 # List of the tests which should be run with --lint option:
 NEED_LINT = \
diff --git a/test/Makefile.in b/test/Makefile.in
index 502533a..114bf30 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -475,6 +475,9 @@ EXTRA_DIST = \
        dbugeval2.awk \
        dbugeval2.in \
        dbugeval2.ok \
+       dbugeval3.awk \
+       dbugeval3.in \
+       dbugeval3.ok \
        dbugtypedre1.awk \
        dbugtypedre1.in \
        dbugtypedre1.ok \
@@ -1579,7 +1582,7 @@ GAWK_EXT_TESTS = \
        backw badargs beginfile1 beginfile2 binmode1 \
        charasbytes colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \
        clos1way6 crlf \
-       dbugeval dbugeval2 dbugtypedre1 dbugtypedre2 delsub \
+       dbugeval dbugeval2 dbugeval3 dbugtypedre1 dbugtypedre2 delsub \
        devfd devfd1 devfd2 dfacheck1 dumpvars \
        errno exit \
        fieldwdth forcenum fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpatnull fsfwfs \
@@ -1627,7 +1630,7 @@ SHLIB_TESTS = \
 
 
 # List of the tests which should be run with --debug option:
-NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 symtab10
+NEED_DEBUG = dbugtypedre1 dbugtypedre2 dbugeval2 dbugeval3 symtab10
 
 # List of the tests which should be run with --lint option:
 NEED_LINT = \
@@ -4039,6 +4042,11 @@ dbugeval2:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --debug < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+dbugeval3:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --debug < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 dbugtypedre1:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --debug < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 84a0218..bdc9633 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1320,6 +1320,11 @@ dbugeval2:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --debug < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+dbugeval3:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --debug < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 dbugtypedre1:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --debug < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/dbugeval3.awk b/test/dbugeval3.awk
new file mode 100644
index 0000000..cc69752
--- /dev/null
+++ b/test/dbugeval3.awk
@@ -0,0 +1,4 @@
+
+function isnumeric(x) {
+    return (length(x) && x == x+0)
+}
diff --git a/test/dbugeval3.in b/test/dbugeval3.in
new file mode 100644
index 0000000..5ea4902
--- /dev/null
+++ b/test/dbugeval3.in
@@ -0,0 +1,2 @@
+eval "print isnumeric(\"hello\")"
+eval "print isnumeric(\"42.5\")"
diff --git a/test/dbugeval3.ok b/test/dbugeval3.ok
new file mode 100644
index 0000000..2255020
--- /dev/null
+++ b/test/dbugeval3.ok
@@ -0,0 +1,3 @@
+0
+1
+EXIT CODE: 2

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                          |  19 +
 awk.h                              |   3 +-
 awkgram.c                          | 844 +++++++++++++++++++------------------
 awkgram.y                          |   8 +-
 debug.c                            |   6 +-
 doc/ChangeLog                      |   5 +
 doc/gawk.info                      | 435 ++++++++++---------
 doc/gawk.texi                      |  11 +-
 doc/gawktexi.in                    |  11 +-
 eval.c                             |   1 +
 interpret.h                        |   4 +
 main.c                             |   2 +-
 po/ChangeLog                       |   4 +
 po/it.po                           | 589 +++++++++++++-------------
 test/ChangeLog                     |   5 +
 test/Makefile.am                   |   7 +-
 test/Makefile.in                   |  12 +-
 test/Maketests                     |   5 +
 test/dbugeval3.awk                 |   4 +
 test/dbugeval3.in                  |   2 +
 test/{dbugeval.ok => dbugeval3.ok} |   2 +
 21 files changed, 1035 insertions(+), 944 deletions(-)
 create mode 100644 test/dbugeval3.awk
 create mode 100644 test/dbugeval3.in
 copy test/{dbugeval.ok => dbugeval3.ok} (76%)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]