gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-3792-gbd1561d
Date: Sun, 2 Dec 2018 13:58:08 -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, feature/namespaces has been updated
       via  bd1561d52d7afd6e173e245cee466f5aa180e42f (commit)
       via  ee2f450c7cf2550ca68fb205c5df22eca13e5b74 (commit)
       via  1e12bcb4ceac5850999f4d714a305a00ce7a9ddc (commit)
       via  bc16d450354d41c95e9d8a4a72654e98d16ba185 (commit)
       via  10bbf2bd8efce5d262e79592b5b5340a1148ce8a (commit)
       via  555942e71dd64c7e85cbb5c6389017c0bace1558 (commit)
       via  dc9c45a6258d9ab495bcd6dc97992532d5a2b862 (commit)
       via  1e6c88c44319694bfb2e9c0ca11db01ec670f0ad (commit)
       via  ed06eeafe3dc901759e20466446fec48e83402fc (commit)
       via  ccf5a6d8f08e024c93922440b16c90f0339fbe33 (commit)
       via  d5724bb61af6f7c3d3b491612cbd0bcc05f5d056 (commit)
       via  5f60e83a43df739f1dd02c4f7601148f3c9006ab (commit)
       via  d28c1790597b456e8eb649b77c96d68e50badc09 (commit)
       via  4363e64969996a284a84e72185db5a6a36b13e2a (commit)
       via  ac700ecf05bd7f2f877be20311c39c0aefc4887a (commit)
       via  f2e733ea2a3213e2571bffb269f80bd62f4448c3 (commit)
       via  9ddbeb9e80d011313b28c25b2308bd4e84d9f9b9 (commit)
       via  55dd6a0d24a9433e606a23b24650e84b5d3c3678 (commit)
       via  249657989189d3c6a79ab6b1a2990450e7898381 (commit)
       via  a4ebe81f4db69fba0003f1b2b2d3b0467e302fb4 (commit)
       via  f18b0c25e4502198efe4394d00d79186ad77994b (commit)
       via  e3ead1babe31b521fcd14405272b4cf7041cb6c3 (commit)
       via  95d4e3d618b8cc2fe2bfa5939248fda406685c3c (commit)
       via  393ec32778207ec0bd8d088515f2e0d076c189d3 (commit)
       via  c9219a146b0057e8fc6bba5b522f4b5fdfeed9ef (commit)
       via  02a2344c2f13692c5e008b076c4f41e1d78e8c56 (commit)
       via  6c6d5fbd85be4a94600ca20b4ad0765bb75ae905 (commit)
       via  6e1521ee04ea12f551f8c98d669b13ab13a25a8c (commit)
       via  5c7402f68fb31d70f78243c4d6d9c30a8e8aa9da (commit)
       via  b5f87dcdaff84e5e72684bb1a8fe0160981a66ae (commit)
       via  4a3d2f254868347ddf54bc649c1ebf1d0af5ae0c (commit)
       via  8848f21e0a2e0223a3963f84cf24aa1bbf4f7e55 (commit)
       via  19ecd045e33ad66f27d859034141ccf09c8032b9 (commit)
       via  ff61236a00e0243b1f7be4bb6bfe63bc783cae06 (commit)
       via  6b7db4aa16976837b4c11544e95aaa4ba9b9cc6c (commit)
       via  d508085853c94f298960606a28691ac36f89e5f7 (commit)
       via  113d1060248e350200bc098a3d1c22fdb4835db3 (commit)
       via  44e10d37e08fa5f846e9d459dca9e1498be65156 (commit)
       via  8e09dc452d7d365e13db28d1c6ca2b392f6df6ce (commit)
       via  d8234e1784bfbfd4d72dccc1412b962d38fec549 (commit)
       via  a6c1a66946657f06b1bae08c9ea596befed5be2f (commit)
       via  57e001a46bf4bb712a5a7bc835bde33dacf6a92a (commit)
       via  2a6f87c56b5c169ab86f7fab24ec0ce12815f6bd (commit)
       via  40ac8fe8a7ee533b680e8b5f3828c6346d675096 (commit)
       via  43acbfb0d399a7506771615884126dd2a791f7e4 (commit)
       via  87d56a23a4da53be611103ba0d7b4960e4ff5fa7 (commit)
       via  d4befb42bec0fa280b3ab43efb2c12ca0d58ce4b (commit)
       via  b31e1e36d785413939ff46380b9387789054de8b (commit)
       via  450251f1adca89a83c7f472b8318baba67a543d4 (commit)
       via  006feb1f312f45e81004be5cb61540c25a8e0bbb (commit)
       via  9bd846b32089bf025d0dc82b61a59e503ee1767c (commit)
       via  e1be82e01980281819732b2c7012f6d331267cfd (commit)
       via  dfa06e8677737ca794f9505aac71d67679979c6d (commit)
       via  362a100732b1017b54d3d6c6f14ea6ba59e657c2 (commit)
       via  c515c7d93ca941383e14de219dca592743ec0495 (commit)
       via  50d936950ecfa737d1c5b8ac2ed6584493edabe6 (commit)
       via  a2136c31d4236ce17d2d8810a39dd39b3e2d10cb (commit)
       via  2c61707777c631d919dd03b8da378145dc3ecf99 (commit)
       via  e04cfd3ebacb887e789ee73b342125602ea21b99 (commit)
       via  627dd872d95178608379df6f4e1901e7469a4a40 (commit)
       via  889ffee94883bdc2064f10ebfb47502d3fa2d37b (commit)
       via  8c98835747648947abc5abada119e8697cd111a9 (commit)
       via  1b896a4326a64731694617ad3ae9f432da8f9241 (commit)
       via  40bc8f8ac8ea55298269b0dc7ab09542f69628a8 (commit)
       via  1eb30c8f781adfc37cc4f957fd2686ba7a86bdc7 (commit)
       via  746d2b79d760e9e59bc2c1f3ca06cadae4fb1554 (commit)
       via  882905db28d022514cdffe47ba8153fffb05e9d5 (commit)
       via  ef5a30e67615e1acc931e2f542b09f114ba30a97 (commit)
       via  0b5a1bcd8b7189cb2d3048ef8e8d39dd33e2bec6 (commit)
       via  c8bcf55be11e29d5df00013d2a267ce0ca2ba4c6 (commit)
       via  d5d9470814e516fd04dd5a0122e8e4e702c767d9 (commit)
       via  163c05980eaa4736ae800d3cb1ebcb84bf54ec9f (commit)
       via  f59bc1d895b5cc3d0dfad1ced3fc998ba5f7e976 (commit)
       via  11d1cd05ef84f8dedf79020128ffcb8a9764f3b8 (commit)
       via  a279891d608390b651563b1083fa60d903052225 (commit)
       via  002c1fea9a83ec2d4abca4a84c7eeeee41bc219c (commit)
       via  6d352b599c28cb165f14ccf71a06cdaa016646b6 (commit)
       via  6f17822859a111f153ba9a2efdf30f4430150c0d (commit)
       via  bc61f29c492b480545ae31b4b5709f76fe3710b0 (commit)
       via  b8213e3abbd39a851b1510b39b7155b022b02d99 (commit)
       via  25b0b016e33315857b299fbacf7c17e3d35a9e4f (commit)
       via  e4c4d7bdb58cc90d8397a5d7d72d03974ad6a5fb (commit)
       via  fe18b51cdabcc4d0d035c69de858db831b609d1a (commit)
       via  b6de667a0fde62f36fdad941c948a03ae9356745 (commit)
       via  7efb68565eabba93f5c437e8ad03203c4dc7ba1a (commit)
       via  cee34c9cf2fde9473c44a437a2af6f99f73b0a07 (commit)
       via  50a9099f5947a2326e250558622054fe490754b7 (commit)
       via  affc8d2a0b056aa2355f9c1faf393680d8e9867e (commit)
       via  9ca04e641b11ac80dba4913283ebe9444e8692bb (commit)
       via  02e868874af2b01dfec60881716a36d2bb97328c (commit)
       via  796b586c1ddaf9427a5a1843bf5c9809521e9d27 (commit)
       via  f89f146a084b2368f52543aa2f197f19f210936d (commit)
       via  5ff0c8cd5bd07d03af406746e1012ffbf5ffb17a (commit)
       via  4a4e94a4eb04cb8a57d54a357409da47821020ab (commit)
       via  91ce0a8aea87f8bbafe3d6718e146d10c955c296 (commit)
       via  0c6db4c9922af10ca5f115b00f2754aef4c38b0e (commit)
       via  045e99fdb3c11ad12632bc234e54394b8f0f86b9 (commit)
       via  864c5291a320710d20051a15af247ec3c433de23 (commit)
       via  db0ad810899edd82b68ac681a4b1111fc25b3e30 (commit)
       via  38126dd894446fdbdddded3f3d4bd807d1764ebc (commit)
       via  f593c9b0818fdf6f6299ec16660277206390c648 (commit)
       via  0c336a08a7e596d9bb2e24384e3c6f2120567c5a (commit)
       via  adcc3b031e9cf213dc895825e29cadc05e124bde (commit)
       via  264ef6a7dad099f3fdb10c7cab88f1d4e6257c96 (commit)
       via  9e06eb5b97fb92f15344a909dfbf7455946564c5 (commit)
       via  6a6cb14de2bfe86b1dd753c7700deea30fbcf922 (commit)
       via  ed1faa79b624518172ffe51c0bd098d142e15db1 (commit)
       via  2851796ba5a630da07559169df261afa094ee0d9 (commit)
       via  60c5e72ad30f6c2108574f8c072a386302bc0f51 (commit)
       via  a0753d1e2b362e9e6b4ea35ff6135505758521f6 (commit)
       via  4a4c35ecc8cedd1189220d0d1044cd2b35c108a2 (commit)
       via  da3ac2919cb102b1af573bfa413ffbf85af722d9 (commit)
       via  3a28e7e5a0dfbd3367712a28c205f318c5312c25 (commit)
       via  f59e5b3ed70fb01b00e41c8a066bfc5965c85acb (commit)
       via  4d69f051413a8ef6e845bfa2b57640ef09f8ab62 (commit)
       via  deae724e08b70da1504fa2147d1b12ef52634b8a (commit)
       via  4d866d7c40f03f51f4c075a9a77952a5e019fce0 (commit)
       via  942e431b1612f16bba5290e5f55719851295d1e3 (commit)
       via  ebfda3714dadb6dab80e83fdfa2156999d054728 (commit)
       via  96685ed2909ec198bf28ba81ccff755ea88ecda7 (commit)
       via  7c32c835b7f15d2906a691fa7776d3fcd77be0f7 (commit)
       via  ed481a06a208413ac4797164060bc1b86065dff7 (commit)
       via  51240806dba74353b26539895689d1462ba32db8 (commit)
       via  5554945b429c999ac3ac504c0ed405f9b4fa3b34 (commit)
       via  010109780684c3d96038352919274f232f98973a (commit)
       via  7c06b4c0b81bd6acbf6d3a90be4db2862caccf06 (commit)
       via  9fcde376b4fd901bf851b7e6695c96eb53cd9f63 (commit)
       via  19df2993cce3967760f3f6c660a17dac006afcc1 (commit)
       via  271c0a2c9a4e3000684c2c61c926f2011aba6a2c (commit)
       via  521679e82cba143a0ac852cc7a246dea4d19cc56 (commit)
       via  27c4a44456fa4dbd4229c9ec92e7e2b39493a188 (commit)
       via  889b4363d9aa51ba469bbea3aed2db83feda21e3 (commit)
       via  bf79cd041962eb3532185d457a24e1c377272a09 (commit)
       via  54339b144559c429ef11da55dbbd364c00fc1439 (commit)
       via  53a10f5c9fb536e387ac1e85568458a569aad84c (commit)
       via  8386cc08fc52831a83a5a45dd48a86d79dd14471 (commit)
       via  484dfea93df13ffdacbb79698ef7b400ce0a6fe2 (commit)
       via  325bb48d676c8d0f6ddbd9d293fc97d3c887ec6d (commit)
       via  99de0d0b65410e0c53239cce62df89094f9f2993 (commit)
       via  cc8c981c9eaed42e1afd278afac787cd2aeab55f (commit)
       via  dd2516767fa58d56684e003f646ef6d611051a64 (commit)
       via  bf8adb089c0dab26292ede736e74d1bb20d6dbc8 (commit)
       via  18906a48d06521c9bbd77ffe6c3dbf9498ca5b20 (commit)
       via  348c16bbdf8c1599188d7f60e9e9ff58fa9e7484 (commit)
       via  a8d7da921ec42af328a00a387e637aa53b558d1a (commit)
       via  31964a0f57a269734730a6bc597d4733e1518eb8 (commit)
       via  b38e210c1b96e7e38bf2e479759f697ccaa006b5 (commit)
       via  f48a559e74daf1ad48513988b39d8be6c557c567 (commit)
       via  10bbe21f972b46f7fcc1e4146cfb63ba3c3b816a (commit)
       via  d099d159dc4ecdcb84e0120b23ca003d152121d0 (commit)
       via  562bd6b5763decba10251f90c9320abd322f6fd7 (commit)
       via  df39482aeb06588dec07e3d25779547dbe9fd98b (commit)
       via  b3388ecca941bbd76ecca9413c78295c97b9013c (commit)
       via  cedf898bfd8d45a028d087a512fe7c1c789ee6dc (commit)
       via  152dbfa7b8b695112d9e02be8ba99ef3b8aa75a0 (commit)
       via  c041b9c07df56c3c58067172cad6190595d09ca8 (commit)
       via  58145a7003efe799838e12092e30cf487798dbd8 (commit)
       via  d676b8b3b9b11efbd2c43e87a166c52a183842ce (commit)
       via  7b2e99aec44f88d10508cd56598112190397bb93 (commit)
       via  03a2e7153e6e3c63babfce5c14539c99fd7ac31c (commit)
       via  235cdcf449ae3630d53da430267c76b6d8b58d76 (commit)
       via  767a091d2b99cd2afe8c427ed944ba588aedb02b (commit)
       via  a88d9db6a0a279e6b47a4348e7df37d89e4261ed (commit)
       via  7ba932b59a753fff5ad742c3af0ba963c8153cfe (commit)
       via  c4202295a383fe01ac7ed1e0d29dcc93ddf3e3fc (commit)
       via  9a0488b6224c1b25b4222e36c209a5787508ea72 (commit)
       via  d0f55780cc2e6078c2c28db5f1b5731a4cb580bc (commit)
       via  1af6b1b8112f7a67c8a5080d610eee19d14fed7d (commit)
       via  adf9117f975ab24f21ea6d11e555a83f1a218bf5 (commit)
       via  cf79df35d1569a1c1f60c51e66e2ab44566ea4d5 (commit)
       via  56d3294aaae852fae059ec61ab56482bef2679f2 (commit)
       via  f6f4abd11c600e16a2fe868bdd0bbda5e616f0c8 (commit)
       via  7b6a89830ee4fca90b004317796d9964f1322532 (commit)
       via  eef5c5927c807fa306ddfb61ba521ff78b448a3b (commit)
       via  b5135dccd7880a2f47e5d085c47b81e5ebfa2f74 (commit)
       via  e6cd838ca9361814e5b46358ba7984af3f3c0bb6 (commit)
       via  3760edc4a0d4b977dbd7e96f45a3e8d88c293918 (commit)
       via  e4f68191b510ea46eed8156630d4029cf7dffc8f (commit)
       via  a168e61dfc53b7c69df577986ce25e0ee358f80a (commit)
       via  1e4501628ad5cd421aaf94f75f0b238366a12c8a (commit)
       via  2833e91f2b4f6290bf525c16e242d6a9a9b78368 (commit)
       via  92981467dda3bfc9b14237685f3fdde6d14f5e0c (commit)
       via  3e4ea22c1306a6fce3908e17857b78f541ec415f (commit)
       via  4de8268b55a21cb4310762c08207d7bdd518adfc (commit)
       via  ad01d9f1b9c0b686a850e789d51b76ecdc459497 (commit)
       via  52a73873a93202b5193413e195ab625a950f33d4 (commit)
       via  d02e30ba01f4c525628883c79ea7b2266ed1bb65 (commit)
       via  90bfba1f56ce568c9fadf1b4f8405f1aabf3a33d (commit)
       via  3026fdcf67f5259cffa0d233224421cc31482279 (commit)
       via  c331972bc926336b15d75c1d0a54c7a95cc2d2c2 (commit)
       via  17a3f345fa455eab10880401b7dbfdde367bd420 (commit)
       via  1fe0ca0da2eb3b3cabe7cf194c3afe1d7aa79726 (commit)
       via  372ecb0475ac991ceb3a9e00073e753826cafb06 (commit)
       via  e3d10b231e20e64c673556d3ed4eb96dbe8bbff3 (commit)
       via  ebb3d8ff179f99fd2abf088743b1076fb8eaa20b (commit)
       via  d8f8817921b8ff1fb41f79f6ecf12cce42441e9f (commit)
       via  b33eb7a4bf226ce8d9f568927f875afe290d9b06 (commit)
       via  b723f14ac83c52de73771a97b0b84d97cc640fd0 (commit)
       via  28462b12ebc714843113ba497b7951d010b52485 (commit)
       via  02611bd78181f3b09166d9ceffe56a87cf6960a0 (commit)
       via  63d8faa8b5d2bdeec73044c95f345b3992248c74 (commit)
       via  af0df5a7a88ef9ae38f364302652b13e760f872d (commit)
       via  a32072dc3298f3d368829b188969c2f58168675a (commit)
       via  e9a95e3295e35e326114dc9c973d36e4a3f64ee2 (commit)
       via  dad18227724e6c1dd4cc154fc8ee2efa2af33e38 (commit)
       via  7bc08ecbc5d97f743b4af5df9d66f67ac9dcefdf (commit)
       via  b8bdfa1429fef5f936e09733fb1807d700413656 (commit)
       via  a44b1722ee607f3b8bf305612ff7641b393accc3 (commit)
       via  d4a0eadbeb6882e47fb539e6373dd227ba8274a2 (commit)
       via  2a601eeb568e0ab063d528b39cccddd9dfb69abe (commit)
       via  8fd24bcfb5aef731055beb9272377e4c1a8ed9ee (commit)
       via  58d5ed311047006058d9188336521bdb56403fbb (commit)
       via  1ebf12cfe09b3d6b65704a7d6a1b05dfa375ed63 (commit)
       via  4dfba438f210317f2d85516d33faa208e70e4d5c (commit)
       via  1d8243e10c9e2462adcd72ca34702d33bd896d32 (commit)
       via  edd9b851e6b5b2219f1edaaef50c5e59733349bc (commit)
       via  2605a7ca7e145375b21504a796dacfdeb9a57937 (commit)
       via  dbcc874f3199814a2c8e8e2d022acaaa662a8ed3 (commit)
       via  2b66d88934d49362f1423149d6ae9919660b6704 (commit)
       via  483a1d122f228518851a6f8ba0a79870e5ecee4a (commit)
       via  5ea4224acd6effc77359d42436de4804b86f1112 (commit)
       via  231cb5df34699fd98001e2e124d73da5d2f795f9 (commit)
       via  d8332ae3fad279790df98ef8422cad916454ea4b (commit)
       via  4185899b49f2076b82bb25c19ded1bbe862b7cad (commit)
       via  f4b51ea2cf4d83f13a5bfb7b834d943fd3e09647 (commit)
       via  dd0ccae4e7dded481ecf7faa3ec522b857859442 (commit)
       via  fe056e01e183711c4a77b2d9260ebff276d100d7 (commit)
       via  118227dabe11cf08f8e8bef50315fb3cb2e861be (commit)
       via  9ecc175aa94f9fb475add4a456586397210493cf (commit)
       via  bdbdd060fb4bcf5d57935ef2a7a6761f26d16cb8 (commit)
       via  6b92538ab4feb0ad6d9b6370d5d93af71cc77092 (commit)
       via  e60fe2cb465707ce32c8076fa139679dc38e0f7b (commit)
       via  a3d548382b056d681d9cca957a683931212880b2 (commit)
       via  063ac75f58041edcca56cc0112ecf5764ebaea52 (commit)
       via  163768347284cf33a0220f803dc7af21a9003ca9 (commit)
       via  e5536facc478349ccf6c04fbde4e5629d37b0f01 (commit)
       via  b9082c02695653b1089c6c0a81c83602ebfa9520 (commit)
       via  3a01684c2edafbcc64db1162f4b99ab6946004e2 (commit)
       via  cb012bf63a9cb943ff22441d6e10ab8d63c06971 (commit)
       via  6c6328fd6df629b5105a5f149cd81b1cef1650a1 (commit)
       via  6898627474811b138029ec7ccefa147255e27a25 (commit)
       via  852a9bd02415747bce315e14401ec42046c36a03 (commit)
       via  66c19316fa004ddafde9ceab7b9e374fb97e0fc3 (commit)
       via  e6ec3d5d5ab9f31142c09a70ff17741939a52192 (commit)
       via  24b4f2c59b1c365d47ab6e3535a84ccdbcfb08eb (commit)
       via  5b78c79a7172eaf4f63369f54b804f9365a00d4b (commit)
       via  31246324a2be2ace19fed10302241a7bb45df6b6 (commit)
       via  3a8955be982e26d8b0932d9baa50bb13ea9b3296 (commit)
       via  3cb9f16bb195a3d004692e85e7f9190a9469fcb1 (commit)
       via  1be20bcb0e717e35a6de5074223252f2eb1c5aa5 (commit)
       via  bb83ae45d4c9989b21e599e3cdab90a17541d2b2 (commit)
       via  49ccc0da1e2cee9064ba9957c265994b1741b15d (commit)
       via  10dca06f9b2dfe44e93747adfd8bd74389e3ee56 (commit)
       via  6bde18debec532b9fe7f167afd129af9cf0f0436 (commit)
       via  3e6b928e9a840efe0a98dda193e78719f337e27d (commit)
       via  71649092611573639e39f95b7ca148a98b759242 (commit)
       via  3ec01878b6a4a55e4e0cfe635c1f7bd97d740b80 (commit)
       via  ed9330ba24aba0b7f37b6a1108f31ee355d6a9f9 (commit)
       via  02a908967090b5b9388aea273ae9afeaafa35c64 (commit)
       via  a766c09e84eca3c990ec42c9b8a2420e4fc05420 (commit)
       via  0160c2a1e9122d396a307fcce6a60309381d302e (commit)
       via  b9413c191ba2d80896d39d13c0622330fb4246d4 (commit)
       via  1b16d9ba6161b176d1d9bfbf48f2242261604650 (commit)
       via  cfa4c7fba65bc4ac2b4b1b677d50c5891eb8f6b1 (commit)
       via  6f7208768103e6d8b5149964e1a48338ea674ff7 (commit)
       via  41e269d652c1260c9e72868fc761f347ef9f9155 (commit)
       via  97f413037ece028b55f5a53251ae06e6b443e233 (commit)
       via  738b247c58504fbb00ce7f4f1d1d72ce6fdb52a2 (commit)
       via  df801a207996689d3ab65c0db9387413b5fbad1d (commit)
       via  125c0cc16af6d57fa6b7fa19420e3e957f4e85ac (commit)
       via  ca87b9c44b803aa1eb97d8f61ba7939ee618195d (commit)
       via  a41dd1535e2c1306247deeaca3e7a173a54ff542 (commit)
       via  9df2391a0914ca1404f9c8705bd1175733c2b21c (commit)
       via  07b07e52396c4eb221a2a5b8f330aa22ffbd7887 (commit)
       via  ccc6ba7f80cc864cc6dd2309728240013acd3145 (commit)
       via  876a3380a5bae3a86aa0f1116e99f4fbea600a7a (commit)
       via  bb6f0828d2b8079d45585b3898d32c3c01f123bc (commit)
       via  b8df3bc900016bd52173f196dbd29bdec4ffe2d3 (commit)
       via  4aa8be7f39becfedbf40c120a934ac0d6d1b5660 (commit)
       via  195f6c171ee765ef7c0bcba5b98ffea15b439882 (commit)
       via  75793ea4b9a82c7aaae712d42c8f4a6370c54944 (commit)
       via  6e99ac5bfb2aaeef7a6138a6d84d3543bf55fdff (commit)
       via  40ecf95c1ce83fae380623f24afad017ac4816cc (commit)
       via  779fea594a8823c53b3600fa98f75ed9e660b879 (commit)
       via  b16dd7ad0af13d337fdcb36d9d59acf303804fcb (commit)
       via  9c30bfea5a9492ea97dc2c4c75ba1031d56b32b9 (commit)
       via  62a4c67085d3c30a24286582b5c9f4d799cbe2de (commit)
       via  ebe7330c39ce5e8a8be3ef8f66417cf4b68c7a1f (commit)
       via  89ddac3e53fa2c74cdad8bb601293870ecd3324c (commit)
       via  721922d8f4b0c62501224867da92afe654d6cdd5 (commit)
       via  d306e3eeace6bf3c8eee0f707a81675e20e607ba (commit)
       via  1cbb3be18d3fe7d21e6f701d1bfbdfef55ff8e15 (commit)
       via  83bda11fb93706c35c5a7f2825d8037faa4a6a53 (commit)
       via  6402c9480ffcd8610b1322a381f0c14a42d95083 (commit)
       via  2af62b50e5b9574c0e169fb4d99c4912e56eef1f (commit)
       via  1358693d2464c89a8d715fa6104ed36b48e45990 (commit)
       via  dab794829e6ef2cc1ed1522a6de96776f0a414bc (commit)
       via  4f14e3cf02b2abeb2c77fbba12f41735e56bfb61 (commit)
       via  5d3bfc0b70ddb25e486c05a1354038c4e7b2a030 (commit)
       via  5b481a85111b33d9430b7f4c63474709ffbd0fab (commit)
       via  2d0858d286df94ea822bf8f51656ecf7ac05b6ea (commit)
       via  7640888eeb72fc4ff315c43dba5857e4f8cec42a (commit)
       via  be76bc0ee3461800eaba3e41fadd307167c0c6e5 (commit)
       via  26e5cfc94a913dfbbba37d6413d3ad68a7047da6 (commit)
      from  b60edf4de48a8728b00fac0f8f2f72871619fcc5 (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=bd1561d52d7afd6e173e245cee466f5aa180e42f

commit bd1561d52d7afd6e173e245cee466f5aa180e42f
Merge: b60edf4 ee2f450
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Dec 2 20:57:56 2018 +0200

    Merge branch 'master' into feature/namespaces

diff --cc NEWS
index 1c27f22,25a5a6a..99c933b
--- a/NEWS
+++ b/NEWS
@@@ -21,8 -21,10 +21,12 @@@ Changes from 4.2.x to 5.0.
  5. Writing to elements of SYMTAB that are not variable names now
     causes a fatal error.
  
- 6. Namespaces have been implemented! See the manual.
+ 6. Comment handling in the pretty-printer has been reworked almost completely
+    from scratch. As a result, comments in many corner cases that were
+    previously lost are now included in the formatted output.
+ 
++7. Namespaces have been implemented! See the manual.
 +
  Changes from 4.2.1 to 4.2.2
  ---------------------------
  
diff --cc awk.h
index be49c88,6f0f516..1b9f5bb
--- a/awk.h
+++ b/awk.h
@@@ -1012,8 -1016,7 +1019,8 @@@ typedef struct srcfile 
        char *lexeme;
        char *lexptr_begin;
        int lasttok;
- 
+       INSTRUCTION *comment;   /* comment on @load line */
 +      const char *namespace;
  } SRCFILE;
  
  // structure for INSTRUCTION pool, needed mainly for debugger
diff --cc awkgram.c
index 97faebd,d467eb1..32b1b7c
--- a/awkgram.c
+++ b/awkgram.c
@@@ -96,13 -96,28 +96,30 @@@ static int isnoeffect(OPCODE type)
  static INSTRUCTION *make_assignable(INSTRUCTION *ip);
  static void dumpintlstr(const char *str, size_t len);
  static void dumpintlstr2(const char *str1, size_t len1, const char *str2, 
size_t len2);
- static int include_source(INSTRUCTION *file);
- static int load_library(INSTRUCTION *file);
+ static bool include_source(INSTRUCTION *file, void **srcfile_p);
+ static bool load_library(INSTRUCTION *file, void **srcfile_p);
 +static void set_namespace(INSTRUCTION *ns);
  static void next_sourcefile(void);
  static char *tokexpand(void);
  static NODE *set_profile_text(NODE *n, const char *str, size_t len);
 +static char *make_pp_namespace();
+ static INSTRUCTION *trailing_comment;
+ static INSTRUCTION *outer_comment;
+ static INSTRUCTION *interblock_comment;
+ static INSTRUCTION *pending_comment;
+ 
+ #ifdef DEBUG_COMMENTS
+ static void
+ debug_print_comment_s(const char *name, INSTRUCTION *comment, int line)
+ {
+       if (comment != NULL)
+               fprintf(stderr, "%d: %s: <%.*s>\n", line, name,
+                               (int) (comment->memory->stlen - 1),
+                               comment->memory->stptr);
+ }
+ #define debug_print_comment(comment) \
+        debug_print_comment_s(# comment, comment, __LINE__)
+ #endif
  
  #define instruction(t)        bcalloc(t, 1, 0)
  
@@@ -221,7 -221,7 +227,7 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
--#line 225 "awkgram.c" /* yacc.c:338  */
++#line 231 "awkgram.c" /* yacc.c:338  */
  # ifndef YY_NULLPTR
  #  if defined __cplusplus
  #   if 201103L <= __cplusplus
@@@ -613,16 -611,16 +619,16 @@@ union yyallo
  /* YYFINAL -- State number of the termination state.  */
  #define YYFINAL  2
  /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   1199
 -#define YYLAST   1209
++#define YYLAST   1191
  
  /* YYNTOKENS -- Number of terminals.  */
 -#define YYNTOKENS  76
 +#define YYNTOKENS  77
  /* YYNNTS -- Number of nonterminals.  */
 -#define YYNNTS  70
 +#define YYNNTS  71
  /* YYNRULES -- Number of rules.  */
 -#define YYNRULES  203
 +#define YYNRULES  207
  /* YYNSTATES -- Number of states.  */
- #define YYNSTATES  356
 -#define YYNSTATES  349
++#define YYNSTATES  355
  
  /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
     by yylex, with out-of-bounds checking.  */
@@@ -674,27 -671,27 +680,27 @@@ static const yytype_uint8 yytranslate[
    /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        0,   221,   221,   223,   228,   229,   233,   245,   250,   261,
-      268,   274,   280,   293,   301,   303,   308,   316,   318,   323,
-      325,   327,   333,   341,   351,   381,   395,   409,   417,   428,
-      440,   442,   444,   450,   458,   459,   463,   463,   509,   508,
-      542,   557,   559,   564,   574,   621,   626,   627,   631,   633,
-      635,   642,   732,   774,   816,   929,   936,   943,   954,   964,
-      974,   984,   996,  1013,  1012,  1026,  1038,  1038,  1137,  1137,
-     1171,  1202,  1211,  1212,  1218,  1219,  1226,  1231,  1243,  1257,
-     1259,  1267,  1274,  1276,  1284,  1293,  1295,  1304,  1305,  1313,
-     1318,  1318,  1331,  1335,  1343,  1344,  1347,  1349,  1354,  1355,
-     1364,  1365,  1370,  1375,  1384,  1386,  1388,  1395,  1396,  1402,
-     1403,  1408,  1410,  1415,  1417,  1425,  1430,  1439,  1440,  1445,
-     1447,  1452,  1454,  1462,  1467,  1475,  1476,  1481,  1488,  1492,
-     1494,  1496,  1509,  1526,  1536,  1543,  1545,  1550,  1552,  1554,
-     1562,  1564,  1569,  1571,  1576,  1578,  1580,  1637,  1639,  1641,
-     1643,  1645,  1647,  1649,  1651,  1665,  1670,  1675,  1700,  1706,
-     1708,  1710,  1712,  1714,  1716,  1721,  1725,  1757,  1765,  1771,
-     1777,  1790,  1791,  1792,  1797,  1802,  1806,  1810,  1825,  1846,
-     1851,  1888,  1930,  1931,  1937,  1938,  1943,  1945,  1952,  1969,
-     1986,  1988,  1995,  2000,  2008,  2018,  2030,  2039,  2043,  2047,
-     2051,  2055,  2059,  2062,  2064,  2068,  2072,  2076
 -       0,   223,   223,   224,   229,   239,   243,   255,   263,   277,
 -     288,   298,   311,   321,   323,   328,   338,   340,   346,   350,
 -     355,   385,   397,   409,   415,   424,   442,   444,   446,   452,
 -     460,   461,   465,   465,   499,   498,   532,   547,   549,   554,
 -     555,   575,   580,   581,   585,   596,   601,   608,   716,   767,
 -     817,   943,   964,   985,   995,  1005,  1015,  1026,  1039,  1057,
 -    1056,  1070,  1088,  1088,  1186,  1186,  1219,  1249,  1257,  1258,
 -    1264,  1265,  1272,  1277,  1290,  1305,  1307,  1315,  1322,  1324,
 -    1332,  1341,  1343,  1352,  1353,  1361,  1366,  1366,  1379,  1385,
 -    1397,  1401,  1423,  1424,  1430,  1431,  1440,  1441,  1446,  1451,
 -    1468,  1470,  1472,  1479,  1480,  1486,  1487,  1492,  1494,  1501,
 -    1503,  1511,  1516,  1527,  1528,  1533,  1535,  1542,  1544,  1552,
 -    1557,  1567,  1568,  1573,  1580,  1584,  1586,  1588,  1601,  1618,
 -    1628,  1635,  1637,  1642,  1644,  1646,  1654,  1656,  1661,  1663,
 -    1668,  1670,  1672,  1729,  1731,  1733,  1735,  1737,  1739,  1741,
 -    1743,  1757,  1762,  1767,  1792,  1798,  1800,  1802,  1804,  1806,
 -    1808,  1813,  1817,  1849,  1857,  1863,  1869,  1882,  1883,  1884,
 -    1889,  1894,  1898,  1902,  1917,  1938,  1943,  1980,  2009,  2010,
 -    2016,  2017,  2022,  2024,  2031,  2048,  2065,  2067,  2074,  2079,
 -    2087,  2097,  2109,  2118,  2122,  2127,  2131,  2135,  2139,  2144,
 -    2145,  2149,  2153,  2157
++       0,   229,   229,   230,   235,   245,   249,   261,   269,   283,
++     294,   304,   314,   327,   337,   339,   344,   354,   356,   361,
++     363,   365,   371,   375,   380,   410,   422,   434,   440,   449,
++     467,   469,   471,   477,   485,   486,   490,   490,   524,   523,
++     557,   572,   574,   579,   580,   600,   605,   606,   610,   621,
++     626,   633,   741,   792,   842,   968,   989,  1010,  1020,  1030,
++    1040,  1051,  1064,  1082,  1081,  1095,  1113,  1113,  1211,  1211,
++    1244,  1274,  1282,  1283,  1289,  1290,  1297,  1302,  1315,  1330,
++    1332,  1340,  1347,  1349,  1357,  1366,  1368,  1377,  1378,  1386,
++    1391,  1391,  1404,  1410,  1422,  1426,  1448,  1449,  1455,  1456,
++    1465,  1466,  1471,  1476,  1493,  1495,  1497,  1504,  1505,  1511,
++    1512,  1517,  1519,  1526,  1528,  1536,  1541,  1552,  1553,  1558,
++    1560,  1567,  1569,  1577,  1582,  1592,  1593,  1598,  1605,  1609,
++    1611,  1613,  1626,  1643,  1653,  1660,  1662,  1667,  1669,  1671,
++    1679,  1681,  1686,  1688,  1693,  1695,  1697,  1754,  1756,  1758,
++    1760,  1762,  1764,  1766,  1768,  1782,  1787,  1792,  1817,  1823,
++    1825,  1827,  1829,  1831,  1833,  1838,  1842,  1874,  1882,  1888,
++    1894,  1907,  1908,  1909,  1914,  1919,  1923,  1927,  1942,  1963,
++    1968,  2005,  2047,  2048,  2054,  2055,  2060,  2062,  2069,  2086,
++    2103,  2105,  2112,  2117,  2125,  2135,  2147,  2156,  2160,  2165,
++    2169,  2173,  2177,  2182,  2183,  2187,  2191,  2195
  };
  #endif
  
@@@ -750,56 -746,55 +756,56 @@@ static const yytype_uint16 yytoknum[] 
  };
  # endif
  
- #define YYPACT_NINF -294
 -#define YYPACT_NINF -277
++#define YYPACT_NINF -283
  
  #define yypact_value_is_default(Yystate) \
-   (!!((Yystate) == (-294)))
 -  (!!((Yystate) == (-277)))
++  (!!((Yystate) == (-283)))
  
 -#define YYTABLE_NINF -115
 +#define YYTABLE_NINF -119
  
  #define yytable_value_is_error(Yytable_value) \
 -  (!!((Yytable_value) == (-115)))
 +  (!!((Yytable_value) == (-119)))
  
    /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
       STATE-NUM.  */
  static const yytype_int16 yypact[] =
  {
-     -294,   343,  -294,  -294,   -20,   -16,  -294,  -294,  -294,  -294,
-       14,  -294,  -294,    26,    26,    26,    -7,    13,  -294,  -294,
-     -294,  1074,  1074,  -294,  1074,  1102,   845,   248,  -294,   194,
-      -10,  -294,  -294,    25,   312,  1001,   366,   405,  -294,  -294,
-     -294,  -294,   320,   769,   845,  -294,     9,  -294,  -294,  -294,
-     -294,  -294,    59,    76,  -294,   101,  -294,  -294,  -294,   769,
-      769,   159,    98,   129,    98,    98,  1074,   140,  -294,  -294,
-        0,   265,    28,    39,    45,  -294,   115,  -294,  -294,  -294,
-       25,  -294,   115,  -294,   165,  -294,  -294,  1029,   176,  1074,
-     1074,  1074,   115,  -294,  -294,  -294,  1074,   149,   366,  1074,
-     1074,  1074,  1074,  1074,  1074,  1074,  1074,  1074,  1074,  1074,
-     1074,  -294,   186,  -294,  -294,   189,  1074,  -294,  -294,  -294,
-      130,    23,  -294,  1044,    83,  1044,  -294,  -294,  -294,  -294,
-     1074,  -294,   130,   130,   265,  -294,  -294,  -294,  1074,   115,
-     -294,   167,   873,  -294,  -294,    20,    -5,  -294,    82,    -5,
-     -294,    90,    -5,    25,  -294,   569,  -294,  -294,  -294,    18,
-     -294,   342,   157,  1140,  1074,   199,    26,    88,    88,    98,
-       98,    98,    98,    88,    88,    98,    98,    98,    98,  -294,
-     -294,  1044,  -294,  1029,   797,  -294,    43,   366,  -294,  -294,
-     1044,  -294,   176,  -294,  1044,  -294,  -294,  -294,  -294,  -294,
-     -294,  -294,   145,  -294,    10,   151,   155,   115,   163,    -5,
-       -5,  -294,  -294,    -5,  1074,    -5,   115,  -294,  -294,    -5,
-     -294,  -294,  1044,  -294,   168,   115,  1074,  1044,  -294,  -294,
-     -294,  -294,  -294,  -294,   130,    91,  -294,  1074,  1074,  -294,
-      245,  1074,  1074,   687,   922,  -294,  -294,  -294,    -5,  1044,
-     -294,  -294,  -294,   617,   569,   115,  -294,  -294,  1044,   115,
-     -294,   110,   265,    -5,   -16,   184,   265,   265,   239,    -6,
-     -294,   168,  -294,   845,   263,  -294,   193,  -294,  -294,  -294,
-     -294,  -294,   115,  -294,  -294,    15,  -294,  -294,  -294,   115,
-      115,   207,   176,   115,     0,  -294,  -294,   687,  -294,  -294,
-      -10,   687,  1074,   130,   721,   167,  1074,   258,  -294,  -294,
-      265,   115,   134,   115,  1001,   115,   180,   115,   687,   115,
-      956,   687,  -294,   332,   225,  -294,   208,  -294,  -294,   956,
-      130,  -294,  -294,  -294,   278,   282,  -294,  -294,   225,  -294,
-      115,  -294,   130,   115,  -294,  -294,   115,  -294,   115,   687,
-     -294,   417,   687,  -294,   493,  -294
 -    -277,   349,  -277,  -277,   -34,   -17,  -277,  -277,  -277,  -277,
 -     166,  -277,  -277,    62,    62,    62,    -7,    -4,  -277,  -277,
 -    -277,  1112,  1112,  -277,  1112,  1139,   842,    26,  -277,   -24,
 -      -6,  -277,  -277,    87,   857,  1038,   344,   372,  -277,  -277,
 -    -277,  -277,   233,   768,   842,  -277,     0,  -277,  -277,  -277,
 -    -277,  -277,    84,    78,  -277,    99,  -277,  -277,  -277,   768,
 -     768,   157,   105,   106,   105,   105,  1112,   113,  -277,  -277,
 -     108,   320,    44,    47,  -277,   120,  -277,  -277,  -277,    87,
 -    -277,   120,  -277,   171,  -277,  -277,  1065,   178,  1112,  1112,
 -    1112,   120,  -277,  -277,  -277,  1112,  1112,   146,   344,  1112,
 -    1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,
 -    1112,  -277,   177,  -277,  -277,   173,  1112,  -277,  -277,  -277,
 -     128,   109,  -277,  1080,    20,  1080,  -277,  -277,  -277,  -277,
 -    1112,  -277,   128,   128,   320,  -277,  -277,  -277,  1112,  -277,
 -     160,   889,  -277,  -277,     3,    18,  -277,    39,    18,    87,
 -    -277,   572,  -277,  -277,  -277,    25,  -277,    16,   618,  1021,
 -    -277,   126,  1080,    62,    82,    82,   105,   105,   105,   105,
 -      82,    82,   105,   105,   105,   105,  -277,  -277,  1080,  -277,
 -    1065,   815,  -277,    43,   344,  -277,  -277,  1080,   178,  -277,
 -    1080,  -277,  -277,  -277,  -277,  -277,   134,  -277,    12,   136,
 -     137,   120,   140,    18,    18,  -277,  -277,    18,  1112,    18,
 -     120,  -277,  -277,    18,  -277,  -277,  1080,  -277,   150,   120,
 -    1112,  -277,  -277,  -277,  -277,  -277,  -277,   128,   112,  -277,
 -    1112,  1112,  -277,   223,  1112,  1112,   688,   922,  -277,  -277,
 -    -277,    18,  1080,  -277,  -277,  -277,   619,   572,   120,  -277,
 -    -277,  1080,   120,  -277,    59,   320,    18,   -17,   169,   320,
 -     320,   208,    -9,  -277,   150,  -277,   842,   240,  -277,   198,
 -    -277,  -277,  -277,  -277,  -277,   120,  -277,  -277,     1,  -277,
 -    -277,  -277,   120,   120,   176,   178,   120,   108,  -277,  -277,
 -     688,  -277,  -277,    -6,   688,  1112,   128,   735,   160,  1112,
 -     231,  -277,  -277,   320,   120,   285,   120,  1038,   120,   148,
 -     120,   688,   120,   970,   688,  -277,   311,   200,  -277,   182,
 -    -277,  -277,   970,   128,  -277,  -277,  -277,   251,   253,  -277,
 -    -277,   200,  -277,   120,  -277,   128,   120,  -277,  -277,   120,
 -    -277,   120,   688,  -277,   422,   688,  -277,   497,  -277
++    -283,   316,  -283,  -283,   -45,   -28,  -283,  -283,  -283,  -283,
++     160,  -283,  -283,    23,    23,    23,   -39,   -18,  -283,  -283,
++    -283,  1047,  1047,  -283,  1047,  1075,   818,   257,  -283,    99,
++     -20,  -283,  -283,    11,  1017,   974,   378,   415,  -283,  -283,
++    -283,  -283,   329,   742,   818,  -283,     0,  -283,  -283,  -283,
++    -283,  -283,    25,     9,  -283,    22,  -283,  -283,  -283,   742,
++     742,    79,    46,    18,    46,    46,  1047,   114,  -283,  -283,
++      13,   286,    44,    47,    60,  -283,    94,  -283,  -283,  -283,
++      11,  -283,    94,  -283,   151,  -283,  -283,  1002,   162,  1047,
++    1047,  1047,    94,  -283,  -283,  -283,  1047,  1047,   132,   378,
++    1047,  1047,  1047,  1047,  1047,  1047,  1047,  1047,  1047,  1047,
++    1047,  1047,  -283,   170,  -283,  -283,   168,  1047,  -283,  -283,
++    -283,   116,    14,  -283,  1132,    76,  1132,  -283,  -283,  -283,
++    -283,  1047,  -283,   116,   116,   286,  -283,  -283,  -283,  1047,
++    -283,   144,   846,  -283,  -283,    34,    91,  -283,    39,    91,
++    -283,    59,    91,    11,  -283,   542,  -283,  -283,  -283,   145,
++    -283,   135,   580,  1113,  -283,   189,  1132,    23,   230,   230,
++      46,    46,    46,    46,   230,   230,    46,    46,    46,    46,
++    -283,  -283,  1132,  -283,  1002,   770,  -283,    27,   378,  -283,
++    -283,  1132,   162,  -283,  1132,  -283,  -283,  -283,  -283,  -283,
++    -283,  -283,   119,  -283,    12,   123,   126,    94,   128,    91,
++      91,  -283,  -283,    91,  1047,    91,    94,  -283,  -283,    91,
++    -283,  -283,  1132,  -283,   122,    94,  1047,  -283,  -283,  -283,
++    -283,  -283,  -283,   116,    73,  -283,  1047,  1047,  -283,   198,
++    1047,  1047,   660,   895,  -283,  -283,  -283,    91,  1132,  -283,
++    -283,  -283,   590,   542,    94,  -283,  -283,  1132,    94,  -283,
++      28,   286,    91,   -28,   141,   286,   286,   190,   -23,  -283,
++     122,  -283,   818,   205,  -283,   325,  -283,  -283,  -283,  -283,
++    -283,    94,  -283,  -283,   115,  -283,  -283,  -283,    94,    94,
++     153,   162,    94,    13,  -283,  -283,   660,  -283,  -283,   -20,
++     660,  1047,   116,   694,   144,  1047,   209,  -283,  -283,   286,
++      94,  1090,    94,   974,    94,   152,    94,   660,    94,   929,
++     660,  -283,   342,   176,  -283,   158,  -283,  -283,   929,   116,
++    -283,  -283,  -283,   236,   243,  -283,  -283,   176,  -283,    94,
++    -283,   116,    94,  -283,  -283,    94,  -283,    94,   660,  -283,
++     390,   660,  -283,   466,  -283
  };
  
    /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@@ -807,68 -802,65 +813,68 @@@
       means the default is an error.  */
  static const yytype_uint8 yydefact[] =
  {
 -       2,     0,     1,     6,     0,   189,   171,   172,    21,    22,
 -       0,    23,    24,   178,     0,     0,     0,   166,     5,    90,
 -      38,     0,     0,    37,     0,     0,     0,     0,     3,     0,
 -       0,   161,    34,     4,    19,   132,   140,   141,   143,   167,
 -     175,   191,   168,     0,     0,   186,     0,   190,    27,    26,
 -      30,    31,     0,     0,    28,    94,   179,   169,   170,     0,
 -       0,     0,   174,   168,   173,   162,     0,   195,   168,   109,
 -       0,   107,     0,     0,   176,    92,   201,     7,     8,    42,
 -      39,    92,     9,     0,    91,   136,     0,     0,     0,     0,
 -       0,    92,   137,   139,   138,     0,     0,     0,   142,     0,
 +       2,     0,     1,     6,     0,   193,   175,   176,    25,    26,
 +       0,    27,    28,   182,     0,     0,     0,   170,     5,    94,
 +      42,     0,     0,    41,     0,     0,     0,     0,     3,     0,
 +       0,   165,    38,     4,    23,   136,   144,   145,   147,   171,
 +     179,   195,   172,     0,     0,   190,     0,   194,    31,    30,
 +      34,    35,     0,     0,    32,    98,   183,   173,   174,     0,
 +       0,     0,   178,   172,   177,   166,     0,   199,   172,   113,
 +       0,   111,     0,     0,     0,   180,    96,   205,     7,     8,
 +      46,    43,    96,     9,     0,    95,   140,     0,     0,     0,
-        0,     0,    96,   141,   143,   142,     0,     0,   146,     0,
++       0,     0,    96,   141,   143,   142,     0,     0,     0,   146,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,   138,   137,   155,   156,     0,     0,   121,    40,   126,
-        0,     0,   119,   125,     0,   111,   192,   191,    33,    36,
-        0,   154,     0,     0,     0,   197,   198,   196,   114,    96,
 -       0,   134,   133,   151,   152,     0,     0,   117,    36,   122,
 -       0,     0,   115,   121,     0,   107,   188,   187,    29,    32,
 -       0,   150,     0,     0,     0,   193,   194,   192,   110,   198,
 -       0,     0,   163,    14,     0,     0,    17,     0,     0,    93,
 -     196,     0,    43,    35,   127,   128,   129,   125,   126,     0,
 -     203,   130,    20,   178,   148,   149,   145,   146,   147,   144,
 -     159,   160,   156,   157,   158,   155,   124,   135,   123,   177,
 -     118,     0,   185,     0,    95,   164,   165,   111,     0,   112,
 -     108,    13,    10,    16,    11,    41,     0,    59,     0,     0,
 -       0,    92,     0,     0,     0,    81,    82,     0,   103,     0,
 -      92,    40,    53,     0,    62,    46,    67,    39,   199,    92,
 -       0,   154,   119,   120,   116,   100,    98,     0,     0,   153,
 -       0,   103,    64,     0,     0,     0,     0,    68,    54,    55,
 -      56,     0,   104,    57,   197,    61,     0,     0,    92,   200,
 -      44,   131,    92,   101,     0,     0,     0,   180,     0,     0,
 -       0,     0,   189,    69,     0,    58,     0,    85,    83,     0,
 -      45,    25,    33,   102,    99,    92,    60,    65,     0,   182,
 -     184,    66,    92,    92,     0,     0,    92,     0,    86,    63,
 -       0,   181,   183,     0,     0,     0,     0,     0,    84,     0,
 -      88,    70,    48,     0,    92,     0,    92,    87,    92,     0,
 -      92,     0,    92,    68,     0,    72,     0,     0,    71,     0,
 -      49,    50,    68,     0,    89,    75,    78,     0,     0,    79,
 -      80,     0,   202,    92,    47,     0,    92,    77,    76,    92,
 -      39,    92,     0,    39,     0,     0,    52,     0,    51
++       0,     0,   138,   137,   155,   156,     0,     0,   121,    40,
++     126,     0,     0,   119,   125,     0,   111,   192,   191,    33,
++      36,     0,   154,     0,     0,     0,   197,   198,   196,   114,
 +     202,     0,     0,   167,    15,     0,     0,    18,     0,     0,
 +      21,     0,     0,    97,   200,     0,    47,    39,   131,   132,
-      133,   129,   130,     0,     0,   134,   182,   152,   153,   149,
-      150,   151,   148,   163,   164,   160,   161,   162,   159,   128,
-      139,   127,   181,   122,     0,   189,     0,    99,   168,   169,
-      115,   207,     0,   116,   112,    14,    10,    17,    11,    20,
++     133,   129,   130,     0,   207,   134,    24,   182,   152,   153,
++     149,   150,   151,   148,   163,   164,   160,   161,   162,   159,
++     128,   139,   127,   181,   122,     0,   189,     0,    99,   168,
++     169,   115,     0,   116,   112,    14,    10,    17,    11,    20,
 +      12,    45,     0,    63,     0,     0,     0,    96,     0,     0,
 +       0,    85,    86,     0,   107,     0,    96,    44,    57,     0,
-       66,    50,    71,    43,   203,    96,     0,    24,   158,   123,
-      124,   120,   104,   102,     0,     0,   157,     0,   107,    68,
-        0,     0,     0,     0,    72,    58,    59,    60,     0,   108,
-       61,   201,    65,     0,     0,    96,   204,    48,   135,    96,
-      105,     0,     0,     0,   184,     0,     0,     0,     0,   193,
-       73,     0,    62,     0,    89,    87,     0,    49,    29,    37,
-      106,   103,    96,    64,    69,     0,   186,   188,    70,    96,
-       96,     0,     0,    96,     0,    90,    67,     0,   185,   187,
-        0,     0,     0,     0,     0,    88,     0,    92,    74,    52,
-        0,    96,     0,    96,    91,    96,     0,    96,     0,    96,
-       72,     0,    76,     0,     0,    75,     0,    53,    54,    72,
-        0,    93,    79,    82,     0,     0,    83,    84,     0,   206,
-       96,    51,     0,    96,    81,    80,    96,    43,    96,     0,
-       43,     0,     0,    56,     0,    55
++      66,    50,    71,    43,   203,    96,     0,   158,   123,   124,
++     120,   104,   102,     0,     0,   157,     0,   107,    68,     0,
++       0,     0,     0,    72,    58,    59,    60,     0,   108,    61,
++     201,    65,     0,     0,    96,   204,    48,   135,    96,   105,
++       0,     0,     0,   184,     0,     0,     0,     0,   193,    73,
++       0,    62,     0,    89,    87,     0,    49,    29,    37,   106,
++     103,    96,    64,    69,     0,   186,   188,    70,    96,    96,
++       0,     0,    96,     0,    90,    67,     0,   185,   187,     0,
++       0,     0,     0,     0,    88,     0,    92,    74,    52,     0,
++      96,     0,    96,    91,    96,     0,    96,     0,    96,    72,
++       0,    76,     0,     0,    75,     0,    53,    54,    72,     0,
++      93,    79,    82,     0,     0,    83,    84,     0,   206,    96,
++      51,     0,    96,    81,    80,    96,    43,    96,     0,    43,
++       0,     0,    56,     0,    55
  };
  
    /* YYPGOTO[NTERM-NUM].  */
  static const yytype_int16 yypgoto[] =
  {
-     -294,  -294,  -294,  -294,  -294,  -294,  -294,   261,  -294,  -294,
-     -294,  -294,   -31,  -294,   -81,  -294,  -216,   -77,   -90,  -294,
-     -294,  -190,  -294,  -294,  -293,  -294,  -294,  -294,  -294,  -294,
-     -294,  -294,  -294,     8,   -29,  -294,  -294,  -294,    55,  -294,
-      -34,   131,  -294,    51,    -1,  -294,  -294,  -294,   -12,    17,
-     -294,   271,  -294,   -11,   132,  -294,  -294,    30,   -42,  -294,
-     -294,   -80,    -2,  -294,   -27,  -180,   -65,  -294,    24,   -36,
-     -106
 -    -277,  -277,  -277,  -277,  -277,  -277,   232,  -277,  -277,  -277,
 -    -277,   -55,  -277,   -85,  -277,  -208,    95,  -152,  -277,  -277,
 -    -232,  -277,  -277,  -276,  -277,  -277,  -277,  -277,  -277,  -277,
 -    -277,  -277,     7,     5,  -277,  -277,  -277,    33,  -277,   -29,
 -      94,  -277,   -14,    -1,  -277,  -277,  -277,   -31,    17,  -277,
 -     244,  -277,   114,   107,  -277,  -277,    -3,   -36,  -277,  -277,
 -     -57,    -2,  -277,   -27,  -240,   -64,  -277,   -15,   -59,   -10
++    -283,  -283,  -283,  -283,  -283,  -283,  -283,   226,  -283,  -283,
++    -283,  -283,   -63,  -283,   -77,  -283,  -215,   -73,   -30,  -283,
++    -283,  -234,  -283,  -283,  -282,  -283,  -283,  -283,  -283,  -283,
++    -283,  -283,  -283,     5,   -35,  -283,  -283,  -283,    24,  -283,
++     -43,   101,  -283,   -15,    -1,  -283,  -283,  -283,   -40,    17,
++    -283,   237,  -283,    -6,    96,  -283,  -283,   -16,   -42,  -283,
++    -283,   -81,    -2,  -283,   -27,  -186,   -65,  -283,   -62,   -68,
++      -8
  };
  
    /* YYDEFGOTO[NTERM-NUM].  */
  static const yytype_int16 yydefgoto[] =
  {
 -      -1,     1,    28,   145,   148,    29,    77,    53,    54,    30,
 -     183,    31,    83,   119,    32,   151,    78,   211,   212,   231,
 -     213,   246,   257,   264,   309,   318,   331,   214,   267,   289,
 -     299,   215,   149,   150,   131,   227,   228,   241,   268,    70,
 -     120,   121,   122,   216,   116,    94,    95,    35,    36,    37,
 -      38,    39,    40,    55,   277,   278,   279,    45,    46,    47,
 -      41,    42,   137,   217,   218,   142,   248,   219,   333,   141
 +      -1,     1,    28,   146,   149,   152,    29,    78,    53,    54,
-       30,   186,    31,    84,   119,    32,   155,    79,   217,   218,
-      238,   219,   253,   264,   271,   316,   325,   338,   220,   274,
-      296,   306,   221,   153,   154,   131,   234,   235,   248,   275,
-       70,   120,   121,   122,   222,   116,    95,    96,    35,    36,
-       37,    38,    39,    40,    55,   284,   285,   286,    45,    46,
-       47,    41,    42,   137,   223,   224,   143,   255,    82,   340,
++      30,   187,    31,    84,   120,    32,   155,    79,   217,   218,
++     237,   219,   252,   263,   270,   315,   324,   337,   220,   273,
++     295,   305,   221,   153,   154,   132,   233,   234,   247,   274,
++      70,   121,   122,   123,   222,   117,    95,    96,    35,    36,
++      37,    38,    39,    40,    55,   283,   284,   285,    45,    46,
++      47,    41,    42,   138,   223,   224,   143,   254,    82,   339,
 +     142
  };
  
    /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@@ -876,292 -868,293 +882,292 @@@
       number is the opposite.  If YYTABLE_NINF, syntax error.  */
  static const yytype_int16 yytable[] =
  {
-       34,   138,    81,    81,   127,   141,   158,   254,   160,    33,
-      124,    56,    57,    58,   239,   184,    75,    48,    49,    63,
-       63,   195,    63,    68,   183,    71,   126,   330,    86,   144,
-        5,   179,   298,    63,   145,   292,   342,    80,    62,    64,
-      147,    65,   123,   125,   232,   148,   150,   233,    19,    43,
-       75,   151,    98,   156,   270,   182,    44,   139,   123,   123,
-       50,    51,    59,   164,    76,   134,    44,   188,   189,   196,
-      140,    77,   198,   -13,   277,   200,    93,    94,    85,   240,
-      139,    44,    60,   197,   138,    52,   159,    44,   161,   162,
-      163,   199,   260,  -118,    25,   165,   -13,    63,    63,    63,
-       63,    63,    63,    63,    63,    63,    63,    63,    63,   128,
-      191,   280,   236,  -100,   281,   181,   167,   168,   169,   170,
-      171,   172,   173,   174,   175,   176,   177,   178,    63,   261,
-      270,   351,   245,   246,   354,   -16,   247,   190,   250,   270,
-      139,   194,   252,   -19,    86,   129,   341,   187,   139,    87,
-      101,   102,   103,   268,    80,   104,   185,    80,   -16,   130,
-       80,  -101,     4,   227,    56,   104,   -19,    86,    19,   259,
-      157,   272,    87,   113,   114,    88,    89,    90,   243,   225,
-        5,   322,   123,   123,   135,   136,   283,   251,   166,    91,
-      132,   133,    93,    94,   138,   118,   257,   282,    88,    89,
-      140,   289,   290,   180,  -110,   323,   324,   307,   192,  -119,
-       77,   309,   303,   249,   237,    93,    94,    80,    80,   276,
-      241,    80,   287,    80,   242,   258,   278,    80,   328,   305,
-      279,   331,   244,    19,   229,   231,   262,   249,   311,   294,
-      266,   267,   337,   287,    77,   317,  -110,    19,   256,   265,
-      139,     4,   125,   297,   288,   -96,    80,  -119,  -119,   353,
-      300,   301,   355,  -110,   304,   343,   291,   225,    76,  -110,
-       77,    80,    71,   308,   295,    86,   302,   348,   225,   315,
-       87,   339,   318,   216,   320,   344,   321,   326,   327,   345,
-      329,    83,   336,   263,   314,   293,    67,    72,   228,    73,
-       74,   310,   346,   312,    63,     0,    88,    89,    90,     0,
-        0,   347,    63,     0,   349,   299,     0,   350,     0,   352,
-       91,   225,    86,    93,    94,   225,     0,    87,   313,     0,
-        0,    98,     0,   111,   112,   140,   319,     0,     0,   332,
-      333,   118,   225,     2,     3,   225,     4,     5,     0,     0,
-        6,     7,    86,    88,    89,    90,     0,    87,     0,     0,
-        0,     8,     9,     0,   113,   114,     0,    91,     0,    92,
-       93,    94,     0,   225,   115,   225,   225,     0,   225,    10,
-       11,    12,    13,    88,     0,     0,    20,    14,    15,    16,
-       17,    18,   334,   335,     0,    23,    19,    20,     0,     0,
-       93,    94,     0,    21,    22,     0,    23,     0,    24,     0,
-        0,    25,    26,     0,    27,     0,     0,   -22,   201,   -22,
-        4,     5,     0,     0,     6,     7,    99,   100,   101,   102,
-      103,     0,     0,   104,     0,     0,     0,   202,     0,   203,
-      204,   205,   -78,   -78,   206,   207,   208,   209,   210,   211,
-      212,   213,   214,     0,     0,     0,    13,   215,     0,     0,
-        0,    14,    15,    16,    17,   105,   106,   107,   108,   109,
-      -78,    20,   110,     0,     0,     0,     0,    21,    22,     0,
-       23,     0,    24,     0,     0,    25,    26,     0,    61,     0,
-        0,    76,   -78,    77,   201,     0,     4,     5,     0,     0,
-        6,     7,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,   202,     0,   203,   204,   205,   -77,   -77,
-      206,   207,   208,   209,   210,   211,   212,   213,   214,     0,
-        0,     0,    13,   215,     0,     0,     0,    14,    15,    16,
-       17,     0,     0,     0,     0,     0,   -77,    20,     0,     0,
-        0,     0,     0,    21,    22,     0,    23,     0,    24,     0,
-        0,    25,    26,     0,    61,     0,     0,    76,   -77,    77,
-      201,     0,     4,     5,     0,     0,     6,     7,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,     0,     0,   202,
-        0,   203,   204,   205,     0,     0,   206,   207,   208,   209,
-      210,   211,   212,   213,   214,     0,     0,     0,    13,   215,
-        0,     0,     0,    14,    15,    16,    17,     0,    69,     0,
-        4,     5,     0,    20,     6,     7,     0,     0,  -109,    21,
 -      34,   154,    80,    80,   191,   263,   140,   270,    33,   247,
 -     127,    56,    57,    58,    81,   124,   232,   126,   291,    63,
 -      63,   138,    63,    68,    96,    71,    85,   176,    19,     4,
 -     156,    86,   285,    63,    43,    85,    79,   323,    62,    64,
 -     193,    65,   123,   125,   225,   143,   335,   226,   146,    75,
 -     144,    76,    98,   147,    44,   -12,   179,    87,   123,   123,
 -     273,    59,    44,   274,    60,   134,     5,    75,   185,   186,
 -      19,    44,    44,    92,    93,    72,    91,    73,   -12,   334,
 -     233,   263,    92,    93,   261,   155,   152,   157,   158,   159,
 -     263,   -15,   182,    76,   161,   162,   160,    63,    63,    63,
 -      63,    63,    63,    63,    63,    63,    63,    63,    63,   138,
 -     180,   181,   -96,   253,   -15,   178,   164,   165,   166,   167,
 -     168,   169,   170,   171,   172,   173,   174,   175,    63,    25,
 -      81,   229,   344,    81,   128,   347,  -115,   187,   300,    84,
 -     190,    74,   302,   101,   102,   103,   129,   184,   104,   315,
 -     113,   114,    79,   132,   133,    79,   130,   135,   136,   321,
 -       4,    56,   324,   252,    91,    91,   222,   224,    91,    48,
 -      49,   104,    19,   316,   317,    74,   153,   139,  -114,   123,
 -     123,   -97,     5,  -115,  -115,   163,   118,   177,    81,    81,
 -     346,   275,    81,   348,    81,   282,   283,   139,    81,   138,
 -      19,   188,   230,   249,   234,   235,   236,   242,   237,  -106,
 -      79,    79,    50,    51,    79,   244,    79,   269,   254,   251,
 -      79,   280,   -92,   298,   250,    76,    81,   258,   296,   255,
 -     242,   330,   304,   259,   260,   284,    52,   287,   281,   310,
 -     192,    81,   280,   194,   295,   125,   111,   112,    79,   286,
 -    -106,   288,   308,   271,    91,   332,   210,   272,   337,   336,
 -     338,   329,    82,    79,   256,    71,   301,  -106,   307,    67,
 -     221,   341,   339,  -106,     0,   292,     0,   113,   114,     0,
 -     290,     0,   306,     0,     0,     0,   115,   293,   294,     0,
 -     312,   297,     0,     0,   303,    85,   305,    63,   238,   239,
 -      86,     0,   240,     0,   243,    63,     0,     0,   245,   311,
 -       0,   313,     0,   314,   319,   320,     0,   322,   325,   326,
 -     118,     0,     0,     0,    98,     0,    87,    88,    89,     0,
 -      85,     0,     0,     0,     0,    86,   265,     0,   340,    90,
 -       0,   342,    92,    93,   343,     0,   345,     0,     0,     2,
 -       3,   276,     4,     5,     0,     0,     6,     7,     0,     0,
 -      76,    87,    88,    89,    20,     0,     0,     8,     9,     0,
 -     327,   328,     0,    23,    90,     0,     0,    92,    93,     0,
 -       0,     0,     0,     0,     0,    10,    11,    12,    13,   139,
 -       0,     0,     0,    14,    15,    16,    17,    18,     0,     0,
 -       0,    19,    20,    99,   100,   101,   102,   103,    21,    22,
 -     104,    23,     0,    24,     0,     0,    25,    26,     0,    27,
 -       0,     0,   -18,   195,   -18,     4,     5,     0,     0,     6,
 -       7,   105,   106,   107,   108,   109,     0,     0,   110,     0,
 -       0,     0,   196,     0,   197,   198,   199,   -74,   -74,   200,
 -     201,   202,   203,   204,   205,   206,   207,   208,     0,     0,
 -       0,    13,   209,     0,     0,     0,    14,    15,    16,    17,
 -       0,     0,     0,     0,   -74,    20,     0,     0,     0,     0,
 -       0,    21,    22,     0,    23,     0,    24,     0,     0,    25,
 -      26,     0,    61,     0,     0,    75,   -74,    76,   195,     0,
 -       4,     5,     0,     0,     6,     7,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,   196,     0,   197,
 -     198,   199,   -73,   -73,   200,   201,   202,   203,   204,   205,
 -     206,   207,   208,     0,     0,     0,    13,   209,     0,     0,
 -       0,    14,    15,    16,    17,     0,     0,     0,     0,   -73,
++      34,   125,    81,    81,   128,   141,    33,   160,   253,   269,
++     158,    56,    57,    58,   139,   184,   238,   127,   291,    63,
++      63,    75,    63,    68,    43,    71,    97,     5,   231,   279,
++      59,   232,   280,    63,    80,   195,   180,   329,    62,    64,
++     197,    65,   124,   126,    44,   144,   341,   156,   147,    44,
++     145,    60,    99,   148,    76,    75,   183,   164,   124,   124,
++     199,   150,   114,   115,    85,   135,   151,   276,   189,   190,
++      92,    92,    44,   196,   259,   129,   198,   139,   130,   200,
++     131,   239,     4,   140,  -118,   269,   159,   -13,   161,   162,
++     163,    25,   -16,   225,   269,   165,   166,  -100,    63,    63,
++      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
++     -13,   235,   -19,   105,   185,   -16,   182,   168,   169,   170,
++     171,   172,   173,   174,   175,   176,   177,   178,   179,    63,
++      92,   350,   297,    92,   353,   -19,   244,   245,   191,   340,
++     246,   194,   249,  -101,    19,    86,   251,    19,   188,   186,
++      87,    80,    19,   321,    80,    86,   157,    80,   136,   137,
++     133,   134,   255,    48,    49,    56,     5,    77,   258,   228,
++     230,   167,   242,    76,   271,    77,    88,   322,   323,   119,
++     225,   250,   181,   124,   124,   192,   140,    44,   236,   282,
++     256,   225,   240,    93,    94,   241,   281,   243,    77,  -119,
++     288,   289,   264,    93,    94,    19,    50,    51,   292,   275,
++     302,   287,   267,   248,    80,    80,   294,   290,    80,   277,
++      80,   286,   301,   278,    80,   257,   260,   -96,   304,   293,
++     314,    52,   338,   216,   225,   261,   248,   310,   225,   265,
++     266,   312,   286,   343,   316,   336,   296,  -119,  -119,   318,
++     344,   126,    80,   299,   300,   225,    83,   303,   225,   335,
++       4,   262,    67,   227,   342,   313,   306,    80,   298,   345,
++     308,    71,   307,     0,     0,   317,   347,   319,     0,   320,
++     325,   326,     0,   328,     0,     0,   225,   327,   225,   225,
++     330,   225,   102,   103,   104,     0,    86,   105,     0,     0,
++     309,    87,   311,    63,   346,     0,    72,   348,    73,    74,
++     349,    63,   351,     0,     0,     0,     2,     3,   352,     4,
++       5,   354,     0,     6,     7,     0,   139,    88,    89,    90,
++      99,     0,     0,     0,     8,     9,  -110,     0,     0,     0,
++       0,    91,   112,   113,    93,    94,     0,     0,     0,   331,
++     332,   119,    10,    11,    12,    13,   140,     0,     0,     0,
++      14,    15,    16,    17,    18,     0,     0,     0,     0,    19,
++      20,     0,     0,   114,   115,     0,    21,    22,  -110,    23,
++       0,    24,    92,   116,    25,    26,     0,    27,     0,     0,
++     -22,   201,   -22,     4,     5,  -110,    20,     6,     7,     0,
++       0,  -110,   333,   334,     0,    23,     0,     0,     0,     0,
++     202,     0,   203,   204,   205,   -78,   -78,   206,   207,   208,
++     209,   210,   211,   212,   213,   214,     0,     0,     0,    13,
++     215,     0,     0,     0,    14,    15,    16,    17,   100,   101,
++     102,   103,   104,   -78,    20,   105,     0,     0,     0,     0,
++      21,    22,     0,    23,     0,    24,     0,     0,    25,    26,
++       0,    61,     0,     0,    76,   -78,    77,   201,     0,     4,
++       5,     0,     0,     6,     7,   106,   107,   108,   109,   110,
++       0,     0,   111,     0,     0,     0,   202,     0,   203,   204,
++     205,   -77,   -77,   206,   207,   208,   209,   210,   211,   212,
++     213,   214,     0,     0,     0,    13,   215,     0,     0,     0,
++      14,    15,    16,    17,     0,     0,     0,     0,     0,   -77,
+       20,     0,     0,     0,     0,     0,    21,    22,     0,    23,
+        0,    24,     0,     0,    25,    26,     0,    61,     0,     0,
 -      75,   -73,    76,   195,     0,     4,     5,     0,     0,     6,
++      76,   -77,    77,   201,     0,     4,     5,     0,     0,     6,
+        7,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,   196,     0,   197,   198,   199,     0,     0,   200,
 -     201,   202,   203,   204,   205,   206,   207,   208,     0,     0,
 -       0,    13,   209,     0,     0,     0,    14,    15,    16,    17,
 -      69,     0,     4,     5,     0,    20,     6,     7,    85,     0,
 -    -105,    21,    22,    86,    23,     0,    24,     0,     0,    25,
 -      26,     0,    61,     0,     0,    75,   210,    76,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,    13,    87,
 -      88,     0,     0,    14,    15,    16,    17,     0,     0,     0,
 -       0,  -105,    20,     0,     0,    92,    93,     0,    21,    22,
 -       0,    23,     0,    24,     0,     0,    25,   266,  -105,    61,
 -       0,     4,     5,     0,  -105,     6,     7,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,   196,     0,
 -     197,   198,   199,     0,     0,   200,   201,   202,   203,   204,
 -     205,   206,   207,   208,     0,     0,     0,    13,   209,     0,
 -       0,     0,    14,    15,    16,    17,     0,     0,     4,     5,
 -       0,    20,     6,     7,     0,     0,     0,    21,    22,     0,
 -      23,     0,    24,     0,     0,    25,    26,     0,    61,     0,
 -       0,    75,     0,    76,     0,     0,     0,     0,     0,   117,
 -       0,     4,     5,     0,    13,     6,     7,   118,     0,    14,
 -      15,    16,    17,     0,     0,     0,     0,     0,    20,     0,
 -       0,     0,     0,     0,    21,    22,     0,    23,     0,    24,
 -       0,     0,    25,    26,     0,    61,     0,    13,     0,     0,
 -      76,     0,    14,    15,    16,    17,   223,     0,     4,     5,
 -       0,    20,     6,     7,   118,     0,     0,    21,    22,     0,
 -      23,     0,    24,     0,     0,    25,    26,  -113,    61,     0,
 -       0,     0,     0,    69,     0,     4,     5,     0,     0,     6,
 -       7,     0,     0,     0,    13,     0,     0,     0,     0,    14,
 -      15,    16,    17,     0,     0,     0,     0,    85,    20,     0,
 -       0,     0,    86,     0,    21,    22,     0,    23,     0,    24,
 -       0,    13,    25,    26,     0,    61,    14,    15,    16,    17,
 -     189,     0,     4,     5,     0,    20,     6,     7,    87,    88,
 -      89,    21,    22,     0,    23,     0,    24,     0,     0,    25,
 -      26,    90,    61,    91,    92,    93,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     4,   262,     0,    13,     6,
 -       7,     0,     0,    14,    15,    16,    17,     0,     0,     0,
 -       0,     0,    20,     0,     0,   198,     0,     0,    21,    22,
 -       0,    23,     0,    24,   205,   206,    25,    26,     0,    61,
++       0,     0,   202,     0,   203,   204,   205,     0,     0,   206,
++     207,   208,   209,   210,   211,   212,   213,   214,     0,     0,
++       0,    13,   215,     0,     0,     0,    14,    15,    16,    17,
++      86,    69,     0,     4,     5,    87,    20,     6,     7,     0,
++       0,  -109,    21,    22,     0,    23,     0,    24,     0,     0,
++      25,    26,     0,    61,     0,     0,    76,   216,    77,     0,
++       0,    88,    89,     0,     0,     0,     0,     0,     0,    13,
++       0,     0,     0,     0,    14,    15,    16,    17,    93,    94,
++       0,     0,     0,  -109,    20,     0,     0,     0,     0,     0,
++      21,    22,     0,    23,     0,    24,     0,     0,    25,   272,
++    -109,    61,     0,     4,     5,     0,  -109,     6,     7,     0,
++       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++     202,     0,   203,   204,   205,     0,     0,   206,   207,   208,
++     209,   210,   211,   212,   213,   214,     0,     4,     5,    13,
++     215,     6,     7,     0,    14,    15,    16,    17,     0,     0,
++       0,     0,     0,     0,    20,     0,     0,     0,     0,     0,
++      21,    22,     0,    23,     0,    24,     0,     0,    25,    26,
++       0,    61,     0,    13,    76,     0,    77,     0,    14,    15,
++      16,    17,     0,   118,     0,     4,     5,     0,    20,     6,
++       7,   119,     0,     0,    21,    22,     0,    23,     0,    24,
++       0,     0,    25,    26,     0,    61,     0,     0,     0,     0,
++      77,   229,     0,     4,     5,     0,     0,     6,     7,   119,
+        0,    13,     0,     0,     0,     0,    14,    15,    16,    17,
 -       0,     0,     0,     4,     5,    20,     0,     6,     7,     0,
 -       0,    21,    22,     0,    23,     0,    24,     0,     0,    25,
 -      26,     0,    61,   198,     0,     0,     0,     0,     0,     0,
 -       0,     0,   205,   206,     0,     0,     0,     0,     0,    13,
 -       0,     0,     0,     0,    14,    15,    16,    17,     0,     0,
 -       0,     0,     0,    20,     0,     0,     0,     0,     0,    21,
 -      22,    85,    23,     0,    24,     0,    86,    25,    26,     0,
 -      61,     4,     5,     0,     0,     6,     7,     0,     0,     0,
 -      97,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,    87,    88,    89,     0,     0,     0,     4,     5,
 -       0,     0,     6,     7,   118,    90,   220,    13,    92,    93,
++       0,     0,     0,     0,     0,     0,    20,     0,     0,     0,
++       0,     0,    21,    22,     0,    23,     0,    24,     0,    13,
++      25,    26,  -117,    61,    14,    15,    16,    17,     0,    69,
++       0,     4,     5,     0,    20,     6,     7,     0,     0,     0,
++      21,    22,     0,    23,     0,    24,     0,     0,    25,    26,
++       0,    61,     0,     0,     0,     0,     0,   193,     0,     4,
++       5,     0,     0,     6,     7,     0,     0,    13,     0,     0,
+        0,     0,    14,    15,    16,    17,     0,     0,     0,     0,
 -      85,    20,     0,     0,     0,    86,     0,    21,    22,     0,
 -      23,     0,    24,     0,    13,    25,    26,     0,    61,    14,
 -      15,    16,    17,     0,     0,     4,     5,     0,    20,     6,
 -       7,    87,    88,    89,    21,    22,     0,    23,     0,    24,
 -       0,     0,    25,    26,    90,    61,     0,    92,    93,     0,
 -       0,     0,     4,     5,     0,     0,     6,     7,     0,     0,
 -       0,    13,     0,     0,     0,     0,    14,    15,    16,    17,
 -       0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
 -       0,    21,    22,     0,    23,     0,    24,     0,     0,    25,
 -      26,     0,    61,    14,    15,    16,    17,     0,     0,     0,
+        0,     0,    20,     0,     0,     0,     0,     0,    21,    22,
 -       0,    23,     0,    24,     0,     0,    25,    66,     0,    61
++       0,    23,     0,    24,     0,    13,    25,    26,     0,    61,
++      14,    15,    16,    17,     0,     0,     0,     0,     4,   268,
++      20,     0,     6,     7,     0,     0,    21,    22,     0,    23,
++       0,    24,     0,     0,    25,    26,     0,    61,   204,     0,
++       0,     0,     0,     0,     0,     0,     0,   211,   212,     0,
++       0,     0,     4,     5,    13,     0,     6,     7,     0,    14,
++      15,    16,    17,     0,     0,     0,     0,     0,     0,    20,
++       0,     0,   204,     0,     0,    21,    22,     0,    23,     0,
++      24,   211,   212,    25,    26,     0,    61,     0,    13,     0,
++       0,     0,     0,    14,    15,    16,    17,     4,     5,     0,
++       0,     6,     7,    20,     0,     0,    98,     0,     0,    21,
 +      22,     0,    23,     0,    24,     0,     0,    25,    26,     0,
-       61,     0,     0,    76,   216,    77,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,    13,     0,     0,     0,
-        0,    14,    15,    16,    17,     0,     0,     0,     0,     0,
-     -109,    20,     0,     0,     0,     0,     0,    21,    22,     0,
-       23,     0,    24,     0,     0,    25,   273,  -109,    61,     0,
-        4,     5,     0,  -109,     6,     7,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,   202,     0,   203,
-      204,   205,     0,     0,   206,   207,   208,   209,   210,   211,
-      212,   213,   214,     0,     4,     5,    13,   215,     6,     7,
++      61,     0,     0,     0,     0,     4,     5,     0,     0,     6,
++       7,   119,     0,    13,     0,     0,     0,     0,    14,    15,
++      16,    17,     0,     0,     0,     0,     0,    86,    20,     0,
++       0,     0,    87,     0,    21,    22,     0,    23,     0,    24,
++       0,    13,    25,    26,     0,    61,    14,    15,    16,    17,
++       4,     5,     0,     0,     6,     7,    20,     0,    88,    89,
++      90,     0,    21,    22,     0,    23,     0,    24,     0,     0,
++      25,    26,    91,    61,    92,    93,    94,     0,     4,     5,
++       0,     0,     6,     7,     0,     0,    13,     0,     0,     0,
 +       0,    14,    15,    16,    17,     0,     0,     0,     0,     0,
-        0,    20,     0,     0,     0,     0,     0,    21,    22,     0,
-       23,     0,    24,     0,     0,    25,    26,     0,    61,     0,
-       13,    76,     0,    77,     0,    14,    15,    16,    17,     0,
-      117,     0,     4,     5,     0,    20,     6,     7,   118,     0,
-        0,    21,    22,     0,    23,     0,    24,     0,     0,    25,
-       26,     0,    61,     0,     0,     0,     0,    77,   230,     0,
-        4,     5,     0,     0,     6,     7,   118,     0,    13,     0,
-        0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-        0,     0,     0,    20,     0,     0,     0,     0,     0,    21,
-       22,     0,    23,     0,    24,     0,    13,    25,    26,  -117,
-       61,    14,    15,    16,    17,     0,    69,     0,     4,     5,
-        0,    20,     6,     7,     0,     0,     0,    21,    22,     0,
-       23,     0,    24,     0,     0,    25,    26,     0,    61,     0,
-        0,     0,     0,     0,   193,     0,     4,     5,     0,     0,
-        6,     7,     0,     0,    13,     0,     0,     0,     0,    14,
-       15,    16,    17,     0,     0,     0,     0,     0,     0,    20,
-        0,     0,     0,     0,     0,    21,    22,     0,    23,     0,
-       24,     0,    13,    25,    26,     0,    61,    14,    15,    16,
-       17,     0,     0,     0,     0,     4,   269,    20,     0,     6,
-        7,     0,     0,    21,    22,     0,    23,     0,    24,     0,
-        0,    25,    26,     0,    61,   204,     0,     0,     0,     0,
-        0,     0,     0,     0,   211,   212,     0,     0,     0,     4,
-        5,    13,     0,     6,     7,     0,    14,    15,    16,    17,
-        0,     0,     0,     0,     0,     0,    20,     0,     0,   204,
-        0,     0,    21,    22,     0,    23,     0,    24,   211,   212,
-       25,    26,     0,    61,     0,    13,     0,     0,     0,     0,
-       14,    15,    16,    17,     4,     5,     0,     0,     6,     7,
-       20,     0,     0,    97,     0,     0,    21,    22,     0,    23,
-        0,    24,     0,     0,    25,    26,     0,    61,     0,     0,
-        0,     0,     4,     5,     0,     0,     6,     7,   118,     0,
-       13,     0,     0,     0,     0,    14,    15,    16,    17,     0,
-        0,     0,     0,     0,    86,    20,     0,     0,     0,    87,
-        0,    21,    22,     0,    23,     0,    24,     0,    13,    25,
-       26,     0,    61,    14,    15,    16,    17,     4,     5,     0,
-        0,     6,     7,    20,     0,    88,    89,    90,     0,    21,
-       22,     0,    23,     0,    24,     0,     0,    25,    26,    91,
-       61,     0,    93,    94,     0,     4,     5,     0,     0,     6,
-        7,     0,     0,    13,     0,     0,     0,     0,    14,    15,
-       16,    17,     0,     0,     0,     0,     0,     0,    20,     0,
-        0,     0,     0,     0,    21,    22,     0,    23,     0,    24,
-        0,     0,    25,    26,     0,    61,    14,    15,    16,    17,
-       86,     0,     0,     0,     0,    87,    20,     0,     0,     0,
-        0,     0,    21,    22,     0,    23,     0,    24,     0,     0,
-       25,    66,     0,    61,     0,     0,     0,     0,     0,     0,
-        0,    88,    89,    90,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,    91,   226,     0,    93,    94
++      86,    20,     0,     0,     0,    87,     0,    21,    22,     0,
++      23,     0,    24,     0,     0,    25,    26,     0,    61,    14,
++      15,    16,    17,    86,     0,     0,     0,     0,    87,    20,
++       0,    88,    89,    90,     0,    21,    22,     0,    23,     0,
++      24,     0,    86,    25,    66,    91,    61,    87,    93,    94,
++       0,     0,     0,     0,    88,    89,    90,     0,     0,     0,
++       0,     0,     0,     0,     0,     0,    77,     0,    91,   226,
++       0,    93,    94,    88,    89,    90,     0,     0,     0,     0,
++       0,     0,     0,     0,     0,     0,     0,    91,     0,     0,
++      93,    94
  };
  
  static const yytype_int16 yycheck[] =
  {
-        1,     1,    29,    30,    46,    70,    87,   223,    88,     1,
-       44,    13,    14,    15,     4,   121,    27,     3,     4,    21,
-       22,     1,    24,    25,     1,    26,    17,   320,    10,     1,
-        4,   112,    17,    35,     6,    41,   329,    29,    21,    22,
-        1,    24,    43,    44,     1,     6,     1,     4,    53,    69,
-       61,     6,    35,    82,   244,   120,    72,    57,    59,    60,
-       46,    47,    69,    92,    74,    66,    72,   132,   133,   146,
-       70,    76,   149,    53,   254,   152,    58,    59,    53,    69,
-       57,    72,    69,     1,     1,    71,    87,    72,    89,    90,
-       91,     1,     1,    70,    68,    96,    76,    99,   100,   101,
-      102,   103,   104,   105,   106,   107,   108,   109,   110,    50,
-      139,     1,   192,    70,     4,   116,    99,   100,   101,   102,
-      103,   104,   105,   106,   107,   108,   109,   110,   130,   235,
-      320,   347,   209,   210,   350,    53,   213,   138,   215,   329,
-       57,   142,   219,    53,    10,    69,   326,   130,    57,    15,
-       62,    63,    64,   243,   146,    67,    73,   149,    76,    58,
-      152,    70,     3,   164,   166,    67,    76,    10,    53,   234,
-        5,   248,    15,    44,    45,    41,    42,    43,   207,   155,
-        4,     1,   183,   184,    44,    45,   263,   216,    39,    55,
-       59,    60,    58,    59,     1,     9,   225,   262,    41,    42,
-       70,   266,   267,    14,    11,    25,    26,   297,    41,    10,
-       76,   301,   292,   214,    69,    58,    59,   209,   210,   253,
-       69,   213,   264,   215,    69,   226,   255,   219,   318,   294,
-      259,   321,    69,    53,   183,   184,   237,   238,   303,   273,
-      241,   242,   323,   285,    76,   310,    53,    53,   224,     4,
-       57,     3,   253,   282,    70,    75,   248,    58,    59,   349,
-      289,   290,   352,    70,   293,   330,    27,   243,    74,    76,
-       76,   263,   273,   300,    11,    10,    69,   342,   254,    21,
-       15,    56,   311,    75,   313,     7,   315,   316,   317,     7,
-      319,    30,   323,   238,   306,   271,    25,    49,   166,    51,
-       52,   302,   338,   304,   306,    -1,    41,    42,    43,    -1,
-       -1,   340,   314,    -1,   343,   285,    -1,   346,    -1,   348,
-       55,   297,    10,    58,    59,   301,    -1,    15,   304,    -1,
-       -1,   314,    -1,    13,    14,    70,   312,    -1,    -1,     7,
-        8,     9,   318,     0,     1,   321,     3,     4,    -1,    -1,
-        7,     8,    10,    41,    42,    43,    -1,    15,    -1,    -1,
-       -1,    18,    19,    -1,    44,    45,    -1,    55,    -1,    57,
-       58,    59,    -1,   349,    54,   351,   352,    -1,   354,    36,
-       37,    38,    39,    41,    -1,    -1,    54,    44,    45,    46,
-       47,    48,    60,    61,    -1,    63,    53,    54,    -1,    -1,
-       58,    59,    -1,    60,    61,    -1,    63,    -1,    65,    -1,
-       -1,    68,    69,    -1,    71,    -1,    -1,    74,     1,    76,
-        3,     4,    -1,    -1,     7,     8,    60,    61,    62,    63,
-       64,    -1,    -1,    67,    -1,    -1,    -1,    20,    -1,    22,
 -       1,    86,    29,    30,     1,   237,    70,   247,     1,   217,
 -      46,    13,    14,    15,    29,    44,     4,    17,    17,    21,
 -      22,     1,    24,    25,    34,    26,    10,   112,    52,     3,
 -      87,    15,    41,    35,    68,    10,    29,   313,    21,    22,
 -       1,    24,    43,    44,     1,     1,   322,     4,     1,    73,
 -       6,    75,    35,     6,    71,    52,   120,    41,    59,    60,
 -       1,    68,    71,     4,    68,    66,     4,    73,   132,   133,
 -      52,    71,    71,    57,    58,    49,    56,    51,    75,   319,
 -      68,   313,    57,    58,   236,    86,    81,    88,    89,    90,
 -     322,    52,    72,    75,    95,    96,    91,    99,   100,   101,
 -     102,   103,   104,   105,   106,   107,   108,   109,   110,     1,
 -       1,   121,    69,     1,    75,   116,    99,   100,   101,   102,
 -     103,   104,   105,   106,   107,   108,   109,   110,   130,    67,
 -     145,   188,   340,   148,    50,   343,    10,   138,   290,    52,
 -     141,    27,   294,    61,    62,    63,    68,   130,    66,     1,
 -      44,    45,   145,    59,    60,   148,    57,    44,    45,   311,
 -       3,   163,   314,   227,    56,    56,   180,   181,    56,     3,
 -       4,    66,    52,    25,    26,    61,     5,    69,    69,   180,
 -     181,    69,     4,    57,    58,    39,     9,    14,   203,   204,
 -     342,   255,   207,   345,   209,   259,   260,    69,   213,     1,
 -      52,    41,    68,   218,    68,    68,   201,   208,    68,    11,
 -     203,   204,    46,    47,   207,   210,   209,   246,   228,   220,
 -     213,   257,    74,   287,   219,    75,   241,     4,   285,   230,
 -     231,   316,   296,   234,   235,    27,    70,   266,    69,   303,
 -     145,   256,   278,   148,    68,   246,    13,    14,   241,   264,
 -      52,    11,    21,   248,    56,    55,    74,   252,     7,   323,
 -       7,   316,    30,   256,   231,   266,   293,    69,   299,    25,
 -     163,   335,   331,    75,    -1,   278,    -1,    44,    45,    -1,
 -     275,    -1,   297,    -1,    -1,    -1,    53,   282,   283,    -1,
 -     305,   286,    -1,    -1,   295,    10,   297,   299,   203,   204,
 -      15,    -1,   207,    -1,   209,   307,    -1,    -1,   213,   304,
 -      -1,   306,    -1,   308,   309,   310,    -1,   312,     7,     8,
 -       9,    -1,    -1,    -1,   307,    -1,    41,    42,    43,    -1,
 -      10,    -1,    -1,    -1,    -1,    15,   241,    -1,   333,    54,
 -      -1,   336,    57,    58,   339,    -1,   341,    -1,    -1,     0,
 -       1,   256,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
 -      75,    41,    42,    43,    53,    -1,    -1,    18,    19,    -1,
 -      59,    60,    -1,    62,    54,    -1,    -1,    57,    58,    -1,
 -      -1,    -1,    -1,    -1,    -1,    36,    37,    38,    39,    69,
 -      -1,    -1,    -1,    44,    45,    46,    47,    48,    -1,    -1,
 -      -1,    52,    53,    59,    60,    61,    62,    63,    59,    60,
 -      66,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
 -      -1,    -1,    73,     1,    75,     3,     4,    -1,    -1,     7,
 -       8,    59,    60,    61,    62,    63,    -1,    -1,    66,    -1,
 -      -1,    -1,    20,    -1,    22,    23,    24,    25,    26,    27,
 -      28,    29,    30,    31,    32,    33,    34,    35,    -1,    -1,
 -      -1,    39,    40,    -1,    -1,    -1,    44,    45,    46,    47,
 -      -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,
 -      -1,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
 -      68,    -1,    70,    -1,    -1,    73,    74,    75,     1,    -1,
 -       3,     4,    -1,    -1,     7,     8,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,    22,
--      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
--      33,    34,    35,    -1,    -1,    -1,    39,    40,    -1,    -1,
-       -1,    44,    45,    46,    47,    60,    61,    62,    63,    64,
-       53,    54,    67,    -1,    -1,    -1,    -1,    60,    61,    -1,
-       63,    -1,    65,    -1,    -1,    68,    69,    -1,    71,    -1,
-       -1,    74,    75,    76,     1,    -1,     3,     4,    -1,    -1,
-        7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    20,    -1,    22,    23,    24,    25,    26,
-       27,    28,    29,    30,    31,    32,    33,    34,    35,    -1,
-       -1,    -1,    39,    40,    -1,    -1,    -1,    44,    45,    46,
-       47,    -1,    -1,    -1,    -1,    -1,    53,    54,    -1,    -1,
-       -1,    -1,    -1,    60,    61,    -1,    63,    -1,    65,    -1,
-       -1,    68,    69,    -1,    71,    -1,    -1,    74,    75,    76,
-        1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
-       -1,    22,    23,    24,    -1,    -1,    27,    28,    29,    30,
-       31,    32,    33,    34,    35,    -1,    -1,    -1,    39,    40,
-       -1,    -1,    -1,    44,    45,    46,    47,    -1,     1,    -1,
-        3,     4,    -1,    54,     7,     8,    -1,    -1,    11,    60,
 -      -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    52,
 -      53,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
 -      -1,    64,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,
 -      73,    74,    75,     1,    -1,     3,     4,    -1,    -1,     7,
++       1,    44,    29,    30,    46,    70,     1,    88,   223,   243,
++      87,    13,    14,    15,     1,     1,     4,    17,    41,    21,
++      22,    27,    24,    25,    69,    26,    34,     4,     1,     1,
++      69,     4,     4,    35,    29,     1,   113,   319,    21,    22,
++       1,    24,    43,    44,    72,     1,   328,    82,     1,    72,
++       6,    69,    35,     6,    74,    61,   121,    92,    59,    60,
++       1,     1,    44,    45,    53,    66,     6,   253,   133,   134,
++      57,    57,    72,   146,     1,    50,   149,     1,    69,   152,
++      58,    69,     3,    70,    70,   319,    87,    53,    89,    90,
++      91,    68,    53,   155,   328,    96,    97,    70,   100,   101,
++     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
++      76,   192,    53,    67,   122,    76,   117,   100,   101,   102,
++     103,   104,   105,   106,   107,   108,   109,   110,   111,   131,
++      57,   346,    17,    57,   349,    76,   209,   210,   139,   325,
++     213,   142,   215,    70,    53,    10,   219,    53,   131,    73,
++      15,   146,    53,     1,   149,    10,     5,   152,    44,    45,
++      59,    60,   224,     3,     4,   167,     4,    76,   233,   184,
++     185,    39,   207,    74,   247,    76,    41,    25,    26,     9,
++     242,   216,    14,   184,   185,    41,    70,    72,    69,   262,
++     225,   253,    69,    58,    59,    69,   261,    69,    76,    10,
++     265,   266,     4,    58,    59,    53,    46,    47,   270,   252,
++     291,    70,   242,   214,   209,   210,    11,    27,   213,   254,
++     215,   263,    69,   258,   219,   226,   234,    75,   293,   272,
++      21,    71,    56,    75,   296,   236,   237,   302,   300,   240,
++     241,   303,   284,     7,   309,   322,   281,    58,    59,   311,
++       7,   252,   247,   288,   289,   317,    30,   292,   320,   322,
++       3,   237,    25,   167,   329,   305,   296,   262,   284,   337,
++     300,   272,   299,    -1,    -1,   310,   341,   312,    -1,   314,
++     315,   316,    -1,   318,    -1,    -1,   348,   317,   350,   351,
++     320,   353,    62,    63,    64,    -1,    10,    67,    -1,    -1,
++     301,    15,   303,   305,   339,    -1,    49,   342,    51,    52,
++     345,   313,   347,    -1,    -1,    -1,     0,     1,   348,     3,
++       4,   351,    -1,     7,     8,    -1,     1,    41,    42,    43,
++     313,    -1,    -1,    -1,    18,    19,    11,    -1,    -1,    -1,
++      -1,    55,    13,    14,    58,    59,    -1,    -1,    -1,     7,
++       8,     9,    36,    37,    38,    39,    70,    -1,    -1,    -1,
++      44,    45,    46,    47,    48,    -1,    -1,    -1,    -1,    53,
++      54,    -1,    -1,    44,    45,    -1,    60,    61,    53,    63,
++      -1,    65,    57,    54,    68,    69,    -1,    71,    -1,    -1,
++      74,     1,    76,     3,     4,    70,    54,     7,     8,    -1,
++      -1,    76,    60,    61,    -1,    63,    -1,    -1,    -1,    -1,
++      20,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
++      30,    31,    32,    33,    34,    35,    -1,    -1,    -1,    39,
++      40,    -1,    -1,    -1,    44,    45,    46,    47,    60,    61,
++      62,    63,    64,    53,    54,    67,    -1,    -1,    -1,    -1,
++      60,    61,    -1,    63,    -1,    65,    -1,    -1,    68,    69,
++      -1,    71,    -1,    -1,    74,    75,    76,     1,    -1,     3,
++       4,    -1,    -1,     7,     8,    60,    61,    62,    63,    64,
++      -1,    -1,    67,    -1,    -1,    -1,    20,    -1,    22,    23,
++      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
++      34,    35,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,
++      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    53,
++      54,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    63,
++      -1,    65,    -1,    -1,    68,    69,    -1,    71,    -1,    -1,
++      74,    75,    76,     1,    -1,     3,     4,    -1,    -1,     7,
+        8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    20,    -1,    22,    23,    24,    -1,    -1,    27,
+       28,    29,    30,    31,    32,    33,    34,    35,    -1,    -1,
+       -1,    39,    40,    -1,    -1,    -1,    44,    45,    46,    47,
 -       1,    -1,     3,     4,    -1,    53,     7,     8,    10,    -1,
 -      11,    59,    60,    15,    62,    -1,    64,    -1,    -1,    67,
 -      68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    41,
 -      42,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
 -      -1,    52,    53,    -1,    -1,    57,    58,    -1,    59,    60,
 -      -1,    62,    -1,    64,    -1,    -1,    67,    68,    69,    70,
 -      -1,     3,     4,    -1,    75,     7,     8,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,
 -      22,    23,    24,    -1,    -1,    27,    28,    29,    30,    31,
 -      32,    33,    34,    35,    -1,    -1,    -1,    39,    40,    -1,
 -      -1,    -1,    44,    45,    46,    47,    -1,    -1,     3,     4,
 -      -1,    53,     7,     8,    -1,    -1,    -1,    59,    60,    -1,
 -      62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,    -1,
 -      -1,    73,    -1,    75,    -1,    -1,    -1,    -1,    -1,     1,
 -      -1,     3,     4,    -1,    39,     7,     8,     9,    -1,    44,
 -      45,    46,    47,    -1,    -1,    -1,    -1,    -1,    53,    -1,
 -      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
 -      -1,    -1,    67,    68,    -1,    70,    -1,    39,    -1,    -1,
 -      75,    -1,    44,    45,    46,    47,     1,    -1,     3,     4,
 -      -1,    53,     7,     8,     9,    -1,    -1,    59,    60,    -1,
 -      62,    -1,    64,    -1,    -1,    67,    68,    69,    70,    -1,
 -      -1,    -1,    -1,     1,    -1,     3,     4,    -1,    -1,     7,
 -       8,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    44,
 -      45,    46,    47,    -1,    -1,    -1,    -1,    10,    53,    -1,
 -      -1,    -1,    15,    -1,    59,    60,    -1,    62,    -1,    64,
 -      -1,    39,    67,    68,    -1,    70,    44,    45,    46,    47,
 -       1,    -1,     3,     4,    -1,    53,     7,     8,    41,    42,
 -      43,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
 -      68,    54,    70,    56,    57,    58,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,     3,     4,    -1,    39,     7,
 -       8,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
 -      -1,    -1,    53,    -1,    -1,    23,    -1,    -1,    59,    60,
 -      -1,    62,    -1,    64,    32,    33,    67,    68,    -1,    70,
++      10,     1,    -1,     3,     4,    15,    54,     7,     8,    -1,
++      -1,    11,    60,    61,    -1,    63,    -1,    65,    -1,    -1,
++      68,    69,    -1,    71,    -1,    -1,    74,    75,    76,    -1,
++      -1,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    39,
++      -1,    -1,    -1,    -1,    44,    45,    46,    47,    58,    59,
++      -1,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,
++      60,    61,    -1,    63,    -1,    65,    -1,    -1,    68,    69,
++      70,    71,    -1,     3,     4,    -1,    76,     7,     8,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++      20,    -1,    22,    23,    24,    -1,    -1,    27,    28,    29,
++      30,    31,    32,    33,    34,    35,    -1,     3,     4,    39,
++      40,     7,     8,    -1,    44,    45,    46,    47,    -1,    -1,
++      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,    -1,
++      60,    61,    -1,    63,    -1,    65,    -1,    -1,    68,    69,
++      -1,    71,    -1,    39,    74,    -1,    76,    -1,    44,    45,
++      46,    47,    -1,     1,    -1,     3,     4,    -1,    54,     7,
++       8,     9,    -1,    -1,    60,    61,    -1,    63,    -1,    65,
++      -1,    -1,    68,    69,    -1,    71,    -1,    -1,    -1,    -1,
++      76,     1,    -1,     3,     4,    -1,    -1,     7,     8,     9,
+       -1,    39,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
 -      -1,    -1,    -1,     3,     4,    53,    -1,     7,     8,    -1,
 -      -1,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
 -      68,    -1,    70,    23,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    32,    33,    -1,    -1,    -1,    -1,    -1,    39,
 -      -1,    -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,
 -      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    59,
 -      60,    10,    62,    -1,    64,    -1,    15,    67,    68,    -1,
 -      70,     3,     4,    -1,    -1,     7,     8,    -1,    -1,    -1,
 -      12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    41,    42,    43,    -1,    -1,    -1,     3,     4,
 -      -1,    -1,     7,     8,     9,    54,    55,    39,    57,    58,
++      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
++      -1,    -1,    60,    61,    -1,    63,    -1,    65,    -1,    39,
++      68,    69,    70,    71,    44,    45,    46,    47,    -1,     1,
++      -1,     3,     4,    -1,    54,     7,     8,    -1,    -1,    -1,
++      60,    61,    -1,    63,    -1,    65,    -1,    -1,    68,    69,
++      -1,    71,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,
++       4,    -1,    -1,     7,     8,    -1,    -1,    39,    -1,    -1,
+       -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
 -      10,    53,    -1,    -1,    -1,    15,    -1,    59,    60,    -1,
 -      62,    -1,    64,    -1,    39,    67,    68,    -1,    70,    44,
 -      45,    46,    47,    -1,    -1,     3,     4,    -1,    53,     7,
 -       8,    41,    42,    43,    59,    60,    -1,    62,    -1,    64,
 -      -1,    -1,    67,    68,    54,    70,    -1,    57,    58,    -1,
 -      -1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
 -      -1,    39,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
 -      -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
 -      -1,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
 -      68,    -1,    70,    44,    45,    46,    47,    -1,    -1,    -1,
 -      -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    59,    60,
 -      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70
++      -1,    -1,    54,    -1,    -1,    -1,    -1,    -1,    60,    61,
++      -1,    63,    -1,    65,    -1,    39,    68,    69,    -1,    71,
++      44,    45,    46,    47,    -1,    -1,    -1,    -1,     3,     4,
++      54,    -1,     7,     8,    -1,    -1,    60,    61,    -1,    63,
++      -1,    65,    -1,    -1,    68,    69,    -1,    71,    23,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,    -1,
++      -1,    -1,     3,     4,    39,    -1,     7,     8,    -1,    44,
++      45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
++      -1,    -1,    23,    -1,    -1,    60,    61,    -1,    63,    -1,
++      65,    32,    33,    68,    69,    -1,    71,    -1,    39,    -1,
++      -1,    -1,    -1,    44,    45,    46,    47,     3,     4,    -1,
++      -1,     7,     8,    54,    -1,    -1,    12,    -1,    -1,    60,
 +      61,    -1,    63,    -1,    65,    -1,    -1,    68,    69,    -1,
-       71,    -1,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
-       -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-       53,    54,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,
-       63,    -1,    65,    -1,    -1,    68,    69,    70,    71,    -1,
-        3,     4,    -1,    76,     7,     8,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,    22,
-       23,    24,    -1,    -1,    27,    28,    29,    30,    31,    32,
-       33,    34,    35,    -1,     3,     4,    39,    40,     7,     8,
++      71,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
++       8,     9,    -1,    39,    -1,    -1,    -1,    -1,    44,    45,
++      46,    47,    -1,    -1,    -1,    -1,    -1,    10,    54,    -1,
++      -1,    -1,    15,    -1,    60,    61,    -1,    63,    -1,    65,
++      -1,    39,    68,    69,    -1,    71,    44,    45,    46,    47,
++       3,     4,    -1,    -1,     7,     8,    54,    -1,    41,    42,
++      43,    -1,    60,    61,    -1,    63,    -1,    65,    -1,    -1,
++      68,    69,    55,    71,    57,    58,    59,    -1,     3,     4,
++      -1,    -1,     7,     8,    -1,    -1,    39,    -1,    -1,    -1,
 +      -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-       -1,    54,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,
-       63,    -1,    65,    -1,    -1,    68,    69,    -1,    71,    -1,
-       39,    74,    -1,    76,    -1,    44,    45,    46,    47,    -1,
-        1,    -1,     3,     4,    -1,    54,     7,     8,     9,    -1,
-       -1,    60,    61,    -1,    63,    -1,    65,    -1,    -1,    68,
-       69,    -1,    71,    -1,    -1,    -1,    -1,    76,     1,    -1,
-        3,     4,    -1,    -1,     7,     8,     9,    -1,    39,    -1,
-       -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-       -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,    -1,    60,
-       61,    -1,    63,    -1,    65,    -1,    39,    68,    69,    70,
-       71,    44,    45,    46,    47,    -1,     1,    -1,     3,     4,
-       -1,    54,     7,     8,    -1,    -1,    -1,    60,    61,    -1,
-       63,    -1,    65,    -1,    -1,    68,    69,    -1,    71,    -1,
-       -1,    -1,    -1,    -1,     1,    -1,     3,     4,    -1,    -1,
-        7,     8,    -1,    -1,    39,    -1,    -1,    -1,    -1,    44,
-       45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
-       -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,
-       65,    -1,    39,    68,    69,    -1,    71,    44,    45,    46,
-       47,    -1,    -1,    -1,    -1,     3,     4,    54,    -1,     7,
-        8,    -1,    -1,    60,    61,    -1,    63,    -1,    65,    -1,
-       -1,    68,    69,    -1,    71,    23,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    32,    33,    -1,    -1,    -1,     3,
-        4,    39,    -1,     7,     8,    -1,    44,    45,    46,    47,
-       -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    23,
-       -1,    -1,    60,    61,    -1,    63,    -1,    65,    32,    33,
-       68,    69,    -1,    71,    -1,    39,    -1,    -1,    -1,    -1,
-       44,    45,    46,    47,     3,     4,    -1,    -1,     7,     8,
-       54,    -1,    -1,    12,    -1,    -1,    60,    61,    -1,    63,
-       -1,    65,    -1,    -1,    68,    69,    -1,    71,    -1,    -1,
-       -1,    -1,     3,     4,    -1,    -1,     7,     8,     9,    -1,
-       39,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    -1,
-       -1,    -1,    -1,    -1,    10,    54,    -1,    -1,    -1,    15,
-       -1,    60,    61,    -1,    63,    -1,    65,    -1,    39,    68,
-       69,    -1,    71,    44,    45,    46,    47,     3,     4,    -1,
-       -1,     7,     8,    54,    -1,    41,    42,    43,    -1,    60,
-       61,    -1,    63,    -1,    65,    -1,    -1,    68,    69,    55,
-       71,    -1,    58,    59,    -1,     3,     4,    -1,    -1,     7,
-        8,    -1,    -1,    39,    -1,    -1,    -1,    -1,    44,    45,
-       46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
-       -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,    65,
-       -1,    -1,    68,    69,    -1,    71,    44,    45,    46,    47,
-       10,    -1,    -1,    -1,    -1,    15,    54,    -1,    -1,    -1,
-       -1,    -1,    60,    61,    -1,    63,    -1,    65,    -1,    -1,
-       68,    69,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,    59
++      10,    54,    -1,    -1,    -1,    15,    -1,    60,    61,    -1,
++      63,    -1,    65,    -1,    -1,    68,    69,    -1,    71,    44,
++      45,    46,    47,    10,    -1,    -1,    -1,    -1,    15,    54,
++      -1,    41,    42,    43,    -1,    60,    61,    -1,    63,    -1,
++      65,    -1,    10,    68,    69,    55,    71,    15,    58,    59,
++      -1,    -1,    -1,    -1,    41,    42,    43,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    55,    56,
++      -1,    58,    59,    41,    42,    43,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,
++      58,    59
  };
  
    /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
       symbol of state STATE-NUM.  */
  static const yytype_uint8 yystos[] =
  {
 -       0,    77,     0,     1,     3,     4,     7,     8,    18,    19,
 -      36,    37,    38,    39,    44,    45,    46,    47,    48,    52,
 -      53,    59,    60,    62,    64,    67,    68,    70,    78,    81,
 -      85,    87,    90,   108,   119,   123,   124,   125,   126,   127,
 -     128,   136,   137,    68,    71,   133,   134,   135,     3,     4,
 -      46,    47,    70,    83,    84,   129,   137,   137,   137,    68,
 -      68,    70,   124,   137,   124,   124,    68,   126,   137,     1,
 -     115,   119,    49,    51,   128,    73,    75,    82,    92,   108,
 -     139,   143,    82,    88,    52,    10,    15,    41,    42,    43,
 -      54,    56,    57,    58,   121,   122,   145,    12,   124,    59,
 -      60,    61,    62,    63,    66,    59,    60,    61,    62,    63,
 -      66,    13,    14,    44,    45,    53,   120,     1,     9,    89,
 -     116,   117,   118,   119,   115,   119,    17,   133,    50,    68,
 -      57,   110,   116,   116,   119,    44,    45,   138,     1,    69,
 -     141,   145,   141,     1,     6,    79,     1,     6,    80,   108,
 -     109,    91,   109,     5,    89,   119,   136,   119,   119,   119,
 -     109,   119,   119,    39,   124,   124,   124,   124,   124,   124,
 -     124,   124,   124,   124,   124,   124,    89,    14,   119,   141,
 -       1,   145,    72,    86,   124,   141,   141,   119,    41,     1,
 -     119,     1,    92,     1,    92,     1,    20,    22,    23,    24,
 -      27,    28,    29,    30,    31,    32,    33,    34,    35,    40,
 -      74,    93,    94,    96,   103,   107,   119,   139,   140,   143,
 -      55,   129,   118,     1,   118,     1,     4,   111,   112,   136,
 -      68,    95,     4,    68,    68,    68,   109,    68,    92,    92,
 -      92,   113,   119,    92,   109,    92,    97,    91,   142,   143,
 -     109,   119,   141,     1,   145,   119,   113,    98,     4,   119,
 -     119,    93,     4,    96,    99,    92,    68,   104,   114,   115,
 -     140,   109,   109,     1,     4,   141,    92,   130,   131,   132,
 -     133,    69,   141,   141,    27,    41,   143,   115,    11,   105,
 -     109,    17,   132,   109,   109,    68,   136,   109,   141,   106,
 -      93,   139,    93,   119,   141,   119,   143,   123,    21,   100,
 -     141,   109,   143,   109,   109,     1,    25,    26,   101,   109,
 -     109,    93,   109,    99,    93,     7,     8,    59,    60,    87,
 -      89,   102,    55,   144,   140,    99,   141,     7,     7,   144,
 -     109,   141,   109,   109,    91,   109,    93,    91,    93
 +       0,    78,     0,     1,     3,     4,     7,     8,    18,    19,
 +      36,    37,    38,    39,    44,    45,    46,    47,    48,    53,
 +      54,    60,    61,    63,    65,    68,    69,    71,    79,    83,
 +      87,    89,    92,   110,   121,   125,   126,   127,   128,   129,
 +     130,   138,   139,    69,    72,   135,   136,   137,     3,     4,
 +      46,    47,    71,    85,    86,   131,   139,   139,   139,    69,
 +      69,    71,   126,   139,   126,   126,    69,   128,   139,     1,
 +     117,   121,    49,    51,    52,   130,    74,    76,    84,    94,
 +     110,   141,   145,    84,    90,    53,    10,    15,    41,    42,
-       43,    55,    57,    58,    59,   123,   124,    12,   126,    60,
-       61,    62,    63,    64,    67,    60,    61,    62,    63,    64,
-       67,    13,    14,    44,    45,    54,   122,     1,     9,    91,
-      118,   119,   120,   121,   117,   121,    17,   135,    50,    69,
-       58,   112,   118,   118,   121,    44,    45,   140,     1,    57,
++      43,    55,    57,    58,    59,   123,   124,   147,    12,   126,
++      60,    61,    62,    63,    64,    67,    60,    61,    62,    63,
++      64,    67,    13,    14,    44,    45,    54,   122,     1,     9,
++      91,   118,   119,   120,   121,   117,   121,    17,   135,    50,
++      69,    58,   112,   118,   118,   121,    44,    45,   140,     1,
 +      70,   143,   147,   143,     1,     6,    80,     1,     6,    81,
 +       1,     6,    82,   110,   111,    93,   111,     5,    91,   121,
-      138,   121,   121,   121,   111,   121,    39,   126,   126,   126,
-      126,   126,   126,   126,   126,   126,   126,   126,   126,    91,
-       14,   121,   143,     1,   147,    73,    88,   126,   143,   143,
-      121,   111,    41,     1,   121,     1,    94,     1,    94,     1,
++     138,   121,   121,   121,   111,   121,   121,    39,   126,   126,
++     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
++      91,    14,   121,   143,     1,   147,    73,    88,   126,   143,
++     143,   121,    41,     1,   121,     1,    94,     1,    94,     1,
 +      94,     1,    20,    22,    23,    24,    27,    28,    29,    30,
 +      31,    32,    33,    34,    35,    40,    75,    95,    96,    98,
-      105,   109,   121,   141,   142,   145,    56,   121,   131,   120,
-        1,   120,     1,     4,   113,   114,   138,    69,    97,     4,
-       69,    69,    69,   111,    69,    94,    94,    94,   115,   121,
-       94,   111,    94,    99,    93,   144,   145,   111,   121,   143,
-        1,   147,   121,   115,   100,     4,   121,   121,    95,     4,
-       98,   101,    94,    69,   106,   116,   117,   142,   111,   111,
-        1,     4,   143,    94,   132,   133,   134,   135,    70,   143,
-      143,    27,    41,   145,   117,    11,   107,   111,    17,   134,
-      111,   111,    69,   138,   111,   143,   108,    95,   141,    95,
-      121,   143,   121,   145,   125,    21,   102,   143,   111,   145,
-      111,   111,     1,    25,    26,   103,   111,   111,    95,   111,
-      101,    95,     7,     8,    60,    61,    89,    91,   104,    56,
-      146,   142,   101,   143,     7,     7,   146,   111,   143,   111,
-      111,    93,   111,    95,    93,    95
++     105,   109,   121,   141,   142,   145,    56,   131,   120,     1,
++     120,     1,     4,   113,   114,   138,    69,    97,     4,    69,
++      69,    69,   111,    69,    94,    94,    94,   115,   121,    94,
++     111,    94,    99,    93,   144,   145,   111,   121,   143,     1,
++     147,   121,   115,   100,     4,   121,   121,    95,     4,    98,
++     101,    94,    69,   106,   116,   117,   142,   111,   111,     1,
++       4,   143,    94,   132,   133,   134,   135,    70,   143,   143,
++      27,    41,   145,   117,    11,   107,   111,    17,   134,   111,
++     111,    69,   138,   111,   143,   108,    95,   141,    95,   121,
++     143,   121,   145,   125,    21,   102,   143,   111,   145,   111,
++     111,     1,    25,    26,   103,   111,   111,    95,   111,   101,
++      95,     7,     8,    60,    61,    89,    91,   104,    56,   146,
++     142,   101,   143,     7,     7,   146,   111,   143,   111,   111,
++      93,   111,    95,    93,    95
  };
  
    /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@@ -1194,26 -1187,26 +1200,26 @@@ static const yytype_uint8 yyr1[] 
  static const yytype_uint8 yyr2[] =
  {
         0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
 -       4,     4,     1,     2,     1,     1,     2,     1,     0,     1,
 -       3,     1,     1,     1,     1,     5,     1,     1,     1,     2,
 -       1,     1,     0,     7,     0,     3,     1,     1,     1,     0,
 -       2,     2,     1,     2,     2,     3,     1,     9,     6,     8,
 -       8,    12,    11,     1,     2,     2,     2,     2,     3,     0,
 -       4,     2,     0,     4,     0,     4,     4,     1,     0,     1,
 -       0,     2,     2,     5,     4,     1,     2,     2,     1,     1,
 -       1,     1,     1,     1,     3,     0,     0,     3,     6,     9,
 -       1,     2,     0,     1,     0,     2,     0,     1,     1,     3,
 -       1,     2,     3,     0,     1,     0,     1,     1,     3,     1,
 -       2,     3,     3,     0,     1,     1,     3,     1,     2,     3,
 -       3,     1,     1,     3,     3,     3,     3,     3,     3,     3,
 -       3,     5,     1,     1,     1,     2,     1,     1,     1,     1,
 -       1,     1,     2,     1,     3,     3,     3,     3,     3,     3,
 -       3,     2,     2,     5,     4,     3,     3,     3,     3,     3,
 -       3,     1,     2,     3,     4,     4,     1,     1,     1,     2,
 -       2,     1,     1,     2,     2,     1,     2,     4,     0,     1,
 -       0,     2,     1,     2,     1,     3,     1,     2,     2,     1,
 -       2,     1,     3,     1,     1,     0,     2,     2,     1,     0,
 -       1,     1,     1,     2
 +       4,     4,     4,     1,     2,     1,     1,     2,     1,     1,
-        2,     1,     0,     1,     4,     1,     1,     1,     1,     5,
++       2,     1,     0,     1,     3,     1,     1,     1,     1,     5,
 +       1,     1,     1,     2,     1,     1,     0,     7,     0,     3,
 +       1,     1,     1,     0,     2,     2,     1,     2,     2,     3,
 +       1,     9,     6,     8,     8,    12,    11,     1,     2,     2,
 +       2,     2,     3,     0,     4,     2,     0,     4,     0,     4,
 +       4,     1,     0,     1,     0,     2,     2,     5,     4,     1,
 +       2,     2,     1,     1,     1,     1,     1,     1,     3,     0,
 +       0,     3,     6,     9,     1,     2,     0,     1,     0,     2,
 +       0,     1,     1,     3,     1,     2,     3,     0,     1,     0,
 +       1,     1,     3,     1,     2,     3,     3,     0,     1,     1,
 +       3,     1,     2,     3,     3,     1,     1,     3,     3,     3,
 +       3,     3,     3,     3,     3,     5,     1,     1,     1,     2,
 +       1,     1,     1,     1,     1,     1,     2,     1,     3,     3,
 +       3,     3,     3,     3,     3,     2,     2,     5,     4,     3,
 +       3,     3,     3,     3,     3,     1,     2,     3,     4,     4,
 +       1,     1,     1,     2,     2,     1,     1,     2,     2,     1,
 +       2,     4,     0,     1,     0,     2,     1,     2,     1,     3,
 +       1,     2,     2,     1,     2,     1,     3,     1,     1,     0,
 +       2,     2,     1,     0,     1,     1,     1,     2
  };
  
  
@@@ -1889,25 -1882,45 +1895,45 @@@ yyreduce
    YY_REDUCE_PRINT (yyn);
    switch (yyn)
      {
-         case 3:
- #line 224 "awkgram.y" /* yacc.c:1645  */
+         case 2:
 -#line 223 "awkgram.y" /* yacc.c:1645  */
++#line 229 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = NULL; }
 -#line 1889 "awkgram.c" /* yacc.c:1645  */
++#line 1902 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
+   case 3:
 -#line 225 "awkgram.y" /* yacc.c:1645  */
++#line 231 "awkgram.y" /* yacc.c:1645  */
      {
                rule = 0;
                yyerrok;
          }
- #line 1899 "awkgram.c" /* yacc.c:1645  */
 -#line 1898 "awkgram.c" /* yacc.c:1645  */
++#line 1911 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
+   case 4:
 -#line 230 "awkgram.y" /* yacc.c:1645  */
++#line 236 "awkgram.y" /* yacc.c:1645  */
+     {
+               if ((yyvsp[0]) != NULL) {
+                       if ((yyvsp[-1]) == NULL)
+                               outer_comment = (yyvsp[0]);
+                       else
+                               interblock_comment = (yyvsp[0]);
+               }
+               (yyval) = (yyvsp[-1]);
+         }
 -#line 1912 "awkgram.c" /* yacc.c:1645  */
++#line 1925 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 5:
- #line 230 "awkgram.y" /* yacc.c:1645  */
 -#line 240 "awkgram.y" /* yacc.c:1645  */
++#line 246 "awkgram.y" /* yacc.c:1645  */
      {
                next_sourcefile();
          }
- #line 1907 "awkgram.c" /* yacc.c:1645  */
 -#line 1920 "awkgram.c" /* yacc.c:1645  */
++#line 1933 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 6:
- #line 234 "awkgram.y" /* yacc.c:1645  */
 -#line 244 "awkgram.y" /* yacc.c:1645  */
++#line 250 "awkgram.y" /* yacc.c:1645  */
      {
                rule = 0;
                /*
@@@ -1916,20 -1929,23 +1942,23 @@@
                 */
                /* yyerrok; */
          }
- #line 1920 "awkgram.c" /* yacc.c:1645  */
 -#line 1933 "awkgram.c" /* yacc.c:1645  */
++#line 1946 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 7:
- #line 246 "awkgram.y" /* yacc.c:1645  */
 -#line 256 "awkgram.y" /* yacc.c:1645  */
++#line 262 "awkgram.y" /* yacc.c:1645  */
      {
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
-               first_rule = false;
+               if (pending_comment != NULL) {
+                       interblock_comment = pending_comment;
+                       pending_comment = NULL;
+               }
          }
- #line 1929 "awkgram.c" /* yacc.c:1645  */
 -#line 1945 "awkgram.c" /* yacc.c:1645  */
++#line 1958 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 8:
- #line 251 "awkgram.y" /* yacc.c:1645  */
 -#line 264 "awkgram.y" /* yacc.c:1645  */
++#line 270 "awkgram.y" /* yacc.c:1645  */
      {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -1937,151 -1953,129 +1966,161 @@@
                } else if ((yyvsp[-1]) == NULL) {
                        msg(_("each rule must have a pattern or an action 
part"));
                        errcount++;
-               } else          /* pattern rule with non-empty pattern */
+               } else {        /* pattern rule with non-empty pattern */
+                       if ((yyvsp[0]) != NULL)
+                               list_append((yyvsp[-1]), (yyvsp[0]));
                        (void) append_rule((yyvsp[-1]), NULL);
+               }
          }
- #line 1944 "awkgram.c" /* yacc.c:1645  */
 -#line 1963 "awkgram.c" /* yacc.c:1645  */
++#line 1976 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 9:
- #line 262 "awkgram.y" /* yacc.c:1645  */
 -#line 278 "awkgram.y" /* yacc.c:1645  */
++#line 284 "awkgram.y" /* yacc.c:1645  */
      {
                in_function = NULL;
                (void) mk_function((yyvsp[-1]), (yyvsp[0]));
                want_param_names = DONT_CHECK;
+               if (pending_comment != NULL) {
+                       interblock_comment = pending_comment;
+                       pending_comment = NULL;
+               }
                yyerrok;
          }
- #line 1955 "awkgram.c" /* yacc.c:1645  */
 -#line 1978 "awkgram.c" /* yacc.c:1645  */
++#line 1991 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 10:
- #line 269 "awkgram.y" /* yacc.c:1645  */
 -#line 289 "awkgram.y" /* yacc.c:1645  */
++#line 295 "awkgram.y" /* yacc.c:1645  */
      {
                want_source = false;
                at_seen = false;
+               if ((yyvsp[-1]) != NULL && (yyvsp[0]) != NULL) {
+                       SRCFILE *s = (SRCFILE *) (yyvsp[-1]);
+                       s->comment = (yyvsp[0]);
+               }
                yyerrok;
          }
- #line 1965 "awkgram.c" /* yacc.c:1645  */
 -#line 1992 "awkgram.c" /* yacc.c:1645  */
++#line 2005 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 11:
- #line 275 "awkgram.y" /* yacc.c:1645  */
 -#line 299 "awkgram.y" /* yacc.c:1645  */
++#line 305 "awkgram.y" /* yacc.c:1645  */
      {
                want_source = false;
                at_seen = false;
+               if ((yyvsp[-1]) != NULL && (yyvsp[0]) != NULL) {
+                       SRCFILE *s = (SRCFILE *) (yyvsp[-1]);
+                       s->comment = (yyvsp[0]);
+               }
                yyerrok;
          }
- #line 1975 "awkgram.c" /* yacc.c:1645  */
 -#line 2006 "awkgram.c" /* yacc.c:1645  */
++#line 2019 "awkgram.c" /* yacc.c:1645  */
      break;
  
    case 12:
- #line 281 "awkgram.y" /* yacc.c:1645  */
 -#line 312 "awkgram.y" /* yacc.c:1645  */
++#line 315 "awkgram.y" /* yacc.c:1645  */
 +    {
 +              want_source = false;
 +              at_seen = false;
 +
 +              // this frees $3 storage in all cases
 +              set_namespace((yyvsp[-1]));
 +
 +              yyerrok;
 +        }
- #line 1989 "awkgram.c" /* yacc.c:1645  */
++#line 2033 "awkgram.c" /* yacc.c:1645  */
 +    break;
 +
 +  case 13:
- #line 294 "awkgram.y" /* yacc.c:1645  */
++#line 328 "awkgram.y" /* yacc.c:1645  */
      {
-               if (include_source((yyvsp[0])) < 0)
+               void *srcfile = NULL;
+ 
+               if (! include_source((yyvsp[0]), & srcfile))
                        YYABORT;
                efree((yyvsp[0])->lextok);
                bcfree((yyvsp[0]));
-               (yyval) = NULL;
+               (yyval) = (INSTRUCTION *) srcfile;
          }
- #line 2001 "awkgram.c" /* yacc.c:1645  */
 -#line 2020 "awkgram.c" /* yacc.c:1645  */
++#line 2047 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 13:
 -#line 322 "awkgram.y" /* yacc.c:1645  */
 +  case 14:
- #line 302 "awkgram.y" /* yacc.c:1645  */
++#line 338 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 2007 "awkgram.c" /* yacc.c:1645  */
 -#line 2026 "awkgram.c" /* yacc.c:1645  */
++#line 2053 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 14:
 -#line 324 "awkgram.y" /* yacc.c:1645  */
 +  case 15:
- #line 304 "awkgram.y" /* yacc.c:1645  */
++#line 340 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 2013 "awkgram.c" /* yacc.c:1645  */
 -#line 2032 "awkgram.c" /* yacc.c:1645  */
++#line 2059 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 15:
 -#line 329 "awkgram.y" /* yacc.c:1645  */
 +  case 16:
- #line 309 "awkgram.y" /* yacc.c:1645  */
++#line 345 "awkgram.y" /* yacc.c:1645  */
      {
-               if (load_library((yyvsp[0])) < 0)
+               void *srcfile;
+ 
+               if (! load_library((yyvsp[0]), & srcfile))
                        YYABORT;
                efree((yyvsp[0])->lextok);
                bcfree((yyvsp[0]));
-               (yyval) = NULL;
+               (yyval) = (INSTRUCTION *) srcfile;
          }
- #line 2025 "awkgram.c" /* yacc.c:1645  */
 -#line 2046 "awkgram.c" /* yacc.c:1645  */
++#line 2073 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 16:
 -#line 339 "awkgram.y" /* yacc.c:1645  */
 +  case 17:
- #line 317 "awkgram.y" /* yacc.c:1645  */
++#line 355 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 2031 "awkgram.c" /* yacc.c:1645  */
 -#line 2052 "awkgram.c" /* yacc.c:1645  */
++#line 2079 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 17:
 -#line 341 "awkgram.y" /* yacc.c:1645  */
 +  case 18:
- #line 319 "awkgram.y" /* yacc.c:1645  */
++#line 357 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 2037 "awkgram.c" /* yacc.c:1645  */
 -#line 2058 "awkgram.c" /* yacc.c:1645  */
++#line 2085 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 18:
 -#line 346 "awkgram.y" /* yacc.c:1645  */
 +  case 19:
- #line 324 "awkgram.y" /* yacc.c:1645  */
++#line 362 "awkgram.y" /* yacc.c:1645  */
 +    { (yyval) = (yyvsp[0]); }
- #line 2043 "awkgram.c" /* yacc.c:1645  */
++#line 2091 "awkgram.c" /* yacc.c:1645  */
 +    break;
 +
 +  case 20:
- #line 326 "awkgram.y" /* yacc.c:1645  */
++#line 364 "awkgram.y" /* yacc.c:1645  */
 +    { (yyval) = NULL; }
- #line 2049 "awkgram.c" /* yacc.c:1645  */
++#line 2097 "awkgram.c" /* yacc.c:1645  */
 +    break;
 +
 +  case 21:
- #line 328 "awkgram.y" /* yacc.c:1645  */
++#line 366 "awkgram.y" /* yacc.c:1645  */
 +    { (yyval) = NULL; }
- #line 2055 "awkgram.c" /* yacc.c:1645  */
++#line 2103 "awkgram.c" /* yacc.c:1645  */
 +    break;
 +
 +  case 22:
- #line 333 "awkgram.y" /* yacc.c:1645  */
++#line 371 "awkgram.y" /* yacc.c:1645  */
      {
                rule = Rule;
-               if (comment != NULL) {
-                       (yyval) = list_create(comment);
-                       comment = NULL;
-               } else
-                       (yyval) = NULL;
+               (yyval) = NULL;
          }
- #line 2068 "awkgram.c" /* yacc.c:1645  */
 -#line 2067 "awkgram.c" /* yacc.c:1645  */
++#line 2112 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 19:
 -#line 351 "awkgram.y" /* yacc.c:1645  */
 +  case 23:
- #line 342 "awkgram.y" /* yacc.c:1645  */
++#line 376 "awkgram.y" /* yacc.c:1645  */
      {
                rule = Rule;
-               if (comment != NULL) {
-                       (yyval) = list_prepend((yyvsp[0]), comment);
-                       comment = NULL;
-               } else
-                       (yyval) = (yyvsp[0]);
          }
- #line 2081 "awkgram.c" /* yacc.c:1645  */
 -#line 2075 "awkgram.c" /* yacc.c:1645  */
++#line 2120 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 20:
 -#line 356 "awkgram.y" /* yacc.c:1645  */
 +  case 24:
- #line 352 "awkgram.y" /* yacc.c:1645  */
++#line 381 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *tp;
  
@@@ -2089,33 -2083,33 +2128,33 @@@
                add_lint((yyvsp[0]), LINT_assign_in_cond);
  
                tp = instruction(Op_no_op);
-               list_prepend((yyvsp[-3]), bcalloc(Op_line_range, 
!!do_pretty_print + 1, 0));
-               (yyvsp[-3])->nexti->triggered = false;
-               (yyvsp[-3])->nexti->target_jmp = (yyvsp[0])->nexti;
+               list_prepend((yyvsp[-2]), bcalloc(Op_line_range, 
!!do_pretty_print + 1, 0));
+               (yyvsp[-2])->nexti->triggered = false;
+               (yyvsp[-2])->nexti->target_jmp = (yyvsp[0])->nexti;
  
-               list_append((yyvsp[-3]), instruction(Op_cond_pair));
-               (yyvsp[-3])->lasti->line_range = (yyvsp[-3])->nexti;
-               (yyvsp[-3])->lasti->target_jmp = tp;
+               list_append((yyvsp[-2]), instruction(Op_cond_pair));
+               (yyvsp[-2])->lasti->line_range = (yyvsp[-2])->nexti;
+               (yyvsp[-2])->lasti->target_jmp = tp;
  
                list_append((yyvsp[0]), instruction(Op_cond_pair));
-               (yyvsp[0])->lasti->line_range = (yyvsp[-3])->nexti;
+               (yyvsp[0])->lasti->line_range = (yyvsp[-2])->nexti;
                (yyvsp[0])->lasti->target_jmp = tp;
                if (do_pretty_print) {
-                       ((yyvsp[-3])->nexti + 1)->condpair_left = 
(yyvsp[-3])->lasti;
-                       ((yyvsp[-3])->nexti + 1)->condpair_right = 
(yyvsp[0])->lasti;
+                       ((yyvsp[-2])->nexti + 1)->condpair_left = 
(yyvsp[-2])->lasti;
+                       ((yyvsp[-2])->nexti + 1)->condpair_right = 
(yyvsp[0])->lasti;
                }
-               if (comment != NULL) {
-                       (yyval) = 
list_append(list_merge(list_prepend((yyvsp[-3]), comment), (yyvsp[0])), tp);
-                       comment = NULL;
-               } else
-                       (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
+               /* Put any comments in front of the range expression */
+               if ((yyvsp[-1]) != NULL)
+                       (yyval) = 
list_append(list_merge(list_prepend((yyvsp[-2]), (yyvsp[-1])), (yyvsp[0])), tp);
+               else
+                       (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
- #line 2115 "awkgram.c" /* yacc.c:1645  */
 -#line 2109 "awkgram.c" /* yacc.c:1645  */
++#line 2154 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 21:
 -#line 386 "awkgram.y" /* yacc.c:1645  */
 +  case 25:
- #line 382 "awkgram.y" /* yacc.c:1645  */
++#line 411 "awkgram.y" /* yacc.c:1645  */
      {
                static int begin_seen = 0;
  
@@@ -2126,14 -2119,13 +2164,13 @@@
  
                (yyvsp[0])->in_rule = rule = BEGIN;
                (yyvsp[0])->source_file = source;
-               check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2133 "awkgram.c" /* yacc.c:1645  */
 -#line 2125 "awkgram.c" /* yacc.c:1645  */
++#line 2170 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 22:
 -#line 398 "awkgram.y" /* yacc.c:1645  */
 +  case 26:
- #line 396 "awkgram.y" /* yacc.c:1645  */
++#line 423 "awkgram.y" /* yacc.c:1645  */
      {
                static int end_seen = 0;
  
@@@ -2144,116 -2135,105 +2180,105 @@@
  
                (yyvsp[0])->in_rule = rule = END;
                (yyvsp[0])->source_file = source;
-               check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2151 "awkgram.c" /* yacc.c:1645  */
 -#line 2141 "awkgram.c" /* yacc.c:1645  */
++#line 2186 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 23:
 -#line 410 "awkgram.y" /* yacc.c:1645  */
 +  case 27:
- #line 410 "awkgram.y" /* yacc.c:1645  */
++#line 435 "awkgram.y" /* yacc.c:1645  */
      {
-               func_first = false;
                (yyvsp[0])->in_rule = rule = BEGINFILE;
                (yyvsp[0])->source_file = source;
-               check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2163 "awkgram.c" /* yacc.c:1645  */
 -#line 2151 "awkgram.c" /* yacc.c:1645  */
++#line 2196 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 24:
 -#line 416 "awkgram.y" /* yacc.c:1645  */
 +  case 28:
- #line 418 "awkgram.y" /* yacc.c:1645  */
++#line 441 "awkgram.y" /* yacc.c:1645  */
      {
-               func_first = false;
                (yyvsp[0])->in_rule = rule = ENDFILE;
                (yyvsp[0])->source_file = source;
-               check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2175 "awkgram.c" /* yacc.c:1645  */
 -#line 2161 "awkgram.c" /* yacc.c:1645  */
++#line 2206 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 25:
 -#line 425 "awkgram.y" /* yacc.c:1645  */
 +  case 29:
- #line 429 "awkgram.y" /* yacc.c:1645  */
++#line 450 "awkgram.y" /* yacc.c:1645  */
      {
-               INSTRUCTION *ip;
-               if ((yyvsp[-3]) == NULL)
-                       ip = list_create(instruction(Op_no_op));
-               else
-                       ip = (yyvsp[-3]);
+               INSTRUCTION *ip = make_braced_statements((yyvsp[-4]), 
(yyvsp[-3]), (yyvsp[-2]));
+ 
+               if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
+                       merge_comments((yyvsp[-2]), (yyvsp[0]));
+                       pending_comment = (yyvsp[-2]);
+               } else if ((yyvsp[-2]) != NULL) {
+                       pending_comment = (yyvsp[-2]);
+               } else if ((yyvsp[0]) != NULL) {
+                       pending_comment = (yyvsp[0]);
+               }
+ 
                (yyval) = ip;
          }
- #line 2188 "awkgram.c" /* yacc.c:1645  */
 -#line 2180 "awkgram.c" /* yacc.c:1645  */
++#line 2225 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 26:
 -#line 443 "awkgram.y" /* yacc.c:1645  */
 +  case 30:
- #line 441 "awkgram.y" /* yacc.c:1645  */
++#line 468 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 2194 "awkgram.c" /* yacc.c:1645  */
 -#line 2186 "awkgram.c" /* yacc.c:1645  */
++#line 2231 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 27:
 -#line 445 "awkgram.y" /* yacc.c:1645  */
 +  case 31:
- #line 443 "awkgram.y" /* yacc.c:1645  */
++#line 470 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 2200 "awkgram.c" /* yacc.c:1645  */
 -#line 2192 "awkgram.c" /* yacc.c:1645  */
++#line 2237 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 28:
 -#line 447 "awkgram.y" /* yacc.c:1645  */
 +  case 32:
- #line 445 "awkgram.y" /* yacc.c:1645  */
++#line 472 "awkgram.y" /* yacc.c:1645  */
      {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
- #line 2210 "awkgram.c" /* yacc.c:1645  */
 -#line 2202 "awkgram.c" /* yacc.c:1645  */
++#line 2247 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 29:
 -#line 453 "awkgram.y" /* yacc.c:1645  */
 +  case 33:
- #line 451 "awkgram.y" /* yacc.c:1645  */
++#line 478 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = (yyvsp[0]);
                at_seen = false;
          }
- #line 2219 "awkgram.c" /* yacc.c:1645  */
 -#line 2211 "awkgram.c" /* yacc.c:1645  */
++#line 2256 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 32:
 -#line 465 "awkgram.y" /* yacc.c:1645  */
 +  case 36:
- #line 463 "awkgram.y" /* yacc.c:1645  */
++#line 490 "awkgram.y" /* yacc.c:1645  */
      { want_param_names = FUNC_HEADER; }
- #line 2225 "awkgram.c" /* yacc.c:1645  */
 -#line 2217 "awkgram.c" /* yacc.c:1645  */
++#line 2262 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 33:
 -#line 466 "awkgram.y" /* yacc.c:1645  */
 +  case 37:
- #line 464 "awkgram.y" /* yacc.c:1645  */
++#line 491 "awkgram.y" /* yacc.c:1645  */
      {
-               /*
-                *  treat any comments between BOF and the first function
-                *  definition (with no intervening BEGIN etc block) as
-                *  program comments.  Special kludge: iff there are more
-                *  than one such comments, treat the last as a function
-                *  comment.
-                */
-               if (prior_comment != NULL) {
-                       comment_to_save = prior_comment;
-                       prior_comment = NULL;
-               } else if (comment != NULL) {
-                       comment_to_save = comment;
-                       comment = NULL;
-               } else
-                       comment_to_save = NULL;
- 
-               if (comment_to_save != NULL && func_first
-                   && strstr(comment_to_save->memory->stptr, "\n\n") != NULL)
-                       split_comment();
- 
-               /* save any other pre-function comment as function comment  */
-               if (comment_to_save != NULL) {
-                       function_comment = comment_to_save;
-                       comment_to_save = NULL;
+               INSTRUCTION *func_comment = NULL;
+               // Merge any comments found in the parameter list with those
+               // following the function header, associate the whole shebang
+               // with the function as one block comment.
+               if ((yyvsp[-2]) != NULL && (yyvsp[-2])->comment != NULL) {
+                       if ((yyvsp[0]) != NULL) {
+                               merge_comments((yyvsp[-2])->comment, 
(yyvsp[0]));
+                       }
+                       func_comment = (yyvsp[-2])->comment;
+               } else if ((yyvsp[0]) != NULL) {
+                       func_comment = (yyvsp[0]);
                }
-               func_first = false;
+ 
                (yyvsp[-6])->source_file = source;
+               (yyvsp[-6])->comment = func_comment;
                if (install_function((yyvsp[-5])->lextok, (yyvsp[-6]), 
(yyvsp[-2])) < 0)
                        YYABORT;
                in_function = (yyvsp[-5])->lextok;
@@@ -2263,17 -2243,17 +2288,17 @@@
                (yyval) = (yyvsp[-6]);
                want_param_names = FUNC_BODY;
          }
- #line 2267 "awkgram.c" /* yacc.c:1645  */
 -#line 2247 "awkgram.c" /* yacc.c:1645  */
++#line 2292 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 34:
 -#line 499 "awkgram.y" /* yacc.c:1645  */
 +  case 38:
- #line 509 "awkgram.y" /* yacc.c:1645  */
++#line 524 "awkgram.y" /* yacc.c:1645  */
      { want_regexp = true; }
- #line 2273 "awkgram.c" /* yacc.c:1645  */
 -#line 2253 "awkgram.c" /* yacc.c:1645  */
++#line 2298 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 35:
 -#line 501 "awkgram.y" /* yacc.c:1645  */
 +  case 39:
- #line 511 "awkgram.y" /* yacc.c:1645  */
++#line 526 "awkgram.y" /* yacc.c:1645  */
      {
                  NODE *n, *exp;
                  char *re;
@@@ -2302,11 -2282,11 +2327,11 @@@
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
- #line 2306 "awkgram.c" /* yacc.c:1645  */
 -#line 2286 "awkgram.c" /* yacc.c:1645  */
++#line 2331 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 36:
 -#line 533 "awkgram.y" /* yacc.c:1645  */
 +  case 40:
- #line 543 "awkgram.y" /* yacc.c:1645  */
++#line 558 "awkgram.y" /* yacc.c:1645  */
      {
                  char *re;
                  size_t len;
@@@ -2319,46 -2299,26 +2344,26 @@@
                  (yyval)->opcode = Op_push_re;
                  (yyval)->memory = make_typed_regex(re, len);
                }
- #line 2323 "awkgram.c" /* yacc.c:1645  */
 -#line 2303 "awkgram.c" /* yacc.c:1645  */
++#line 2348 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 37:
 -#line 548 "awkgram.y" /* yacc.c:1645  */
 +  case 41:
- #line 558 "awkgram.y" /* yacc.c:1645  */
++#line 573 "awkgram.y" /* yacc.c:1645  */
      { bcfree((yyvsp[0])); }
- #line 2329 "awkgram.c" /* yacc.c:1645  */
 -#line 2309 "awkgram.c" /* yacc.c:1645  */
++#line 2354 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 39:
 -#line 554 "awkgram.y" /* yacc.c:1645  */
 +  case 43:
- #line 564 "awkgram.y" /* yacc.c:1645  */
-     {
-               if (prior_comment != NULL) {
-                       (yyval) = list_create(prior_comment);
-                       prior_comment = NULL;
-               } else if (comment != NULL) {
-                       (yyval) = list_create(comment);
-                       comment = NULL;
-               } else
-                       (yyval) = NULL;
-         }
- #line 2344 "awkgram.c" /* yacc.c:1645  */
++#line 579 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = NULL; }
 -#line 2315 "awkgram.c" /* yacc.c:1645  */
++#line 2360 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 40:
 -#line 556 "awkgram.y" /* yacc.c:1645  */
 +  case 44:
- #line 575 "awkgram.y" /* yacc.c:1645  */
++#line 581 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[0]) == NULL) {
-                       if (prior_comment != NULL) {
-                               (yyval) = list_append((yyvsp[-1]), 
prior_comment);
-                               prior_comment = NULL;
-                               if (comment != NULL) {
-                                       (yyval) = list_append((yyval), comment);
-                                       comment = NULL;
-                               }
-                       } else if (comment != NULL) {
-                               (yyval) = list_append((yyvsp[-1]), comment);
-                               comment = NULL;
-                       } else
-                               (yyval) = (yyvsp[-1]);
+                       (yyval) = (yyvsp[-1]);
                } else {
                        add_lint((yyvsp[0]), LINT_no_effect);
                        if ((yyvsp[-1]) == NULL) {
@@@ -2378,53 -2327,72 +2372,72 @@@
                                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
                        }
                }
+ 
+               if (trailing_comment != NULL) {
+                       (yyval) = list_append((yyval), trailing_comment);
+                       trailing_comment = NULL;
+               }
+ 
                yyerrok;
          }
- #line 2395 "awkgram.c" /* yacc.c:1645  */
 -#line 2339 "awkgram.c" /* yacc.c:1645  */
++#line 2384 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 41:
 -#line 576 "awkgram.y" /* yacc.c:1645  */
 +  case 45:
- #line 622 "awkgram.y" /* yacc.c:1645  */
++#line 601 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 2401 "awkgram.c" /* yacc.c:1645  */
 -#line 2345 "awkgram.c" /* yacc.c:1645  */
++#line 2390 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 42:
 -#line 580 "awkgram.y" /* yacc.c:1645  */
++  case 46:
++#line 605 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = (yyvsp[0]); }
 -#line 2351 "awkgram.c" /* yacc.c:1645  */
++#line 2396 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 43:
 -#line 581 "awkgram.y" /* yacc.c:1645  */
++  case 47:
++#line 606 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = (yyvsp[0]); }
 -#line 2357 "awkgram.c" /* yacc.c:1645  */
++#line 2402 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 44:
 -#line 586 "awkgram.y" /* yacc.c:1645  */
 +  case 48:
- #line 632 "awkgram.y" /* yacc.c:1645  */
-     { (yyval) = NULL; }
- #line 2407 "awkgram.c" /* yacc.c:1645  */
++#line 611 "awkgram.y" /* yacc.c:1645  */
+     {
+               if ((yyvsp[0]) != NULL) {
+                       INSTRUCTION *ip;
+ 
+                       merge_comments((yyvsp[0]), NULL);
+                       ip = list_create(instruction(Op_no_op));
+                       (yyval) = list_append(ip, (yyvsp[0])); 
+               } else
+                       (yyval) = NULL;
+         }
 -#line 2372 "awkgram.c" /* yacc.c:1645  */
++#line 2417 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 45:
 -#line 597 "awkgram.y" /* yacc.c:1645  */
 +  case 49:
- #line 634 "awkgram.y" /* yacc.c:1645  */
-     { (yyval) = (yyvsp[-1]); }
- #line 2413 "awkgram.c" /* yacc.c:1645  */
++#line 622 "awkgram.y" /* yacc.c:1645  */
+     {
+               trailing_comment = (yyvsp[0]);  // NULL or comment
+               (yyval) = make_braced_statements((yyvsp[-2]), (yyvsp[-1]), 
(yyvsp[0]));
+         }
 -#line 2381 "awkgram.c" /* yacc.c:1645  */
++#line 2426 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 46:
 -#line 602 "awkgram.y" /* yacc.c:1645  */
 +  case 50:
- #line 636 "awkgram.y" /* yacc.c:1645  */
++#line 627 "awkgram.y" /* yacc.c:1645  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2424 "awkgram.c" /* yacc.c:1645  */
 -#line 2392 "awkgram.c" /* yacc.c:1645  */
++#line 2437 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 47:
 -#line 609 "awkgram.y" /* yacc.c:1645  */
 +  case 51:
- #line 643 "awkgram.y" /* yacc.c:1645  */
++#line 634 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2514,11 -2500,11 +2545,11 @@@
                break_allowed--;
                fix_break_continue(ip, tbreak, NULL);
          }
- #line 2518 "awkgram.c" /* yacc.c:1645  */
 -#line 2504 "awkgram.c" /* yacc.c:1645  */
++#line 2549 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 48:
 -#line 717 "awkgram.y" /* yacc.c:1645  */
 +  case 52:
- #line 733 "awkgram.y" /* yacc.c:1645  */
++#line 742 "awkgram.y" /* yacc.c:1645  */
      {
                /*
                 *    -----------------
@@@ -2560,11 -2555,11 +2600,11 @@@
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
- #line 2564 "awkgram.c" /* yacc.c:1645  */
 -#line 2559 "awkgram.c" /* yacc.c:1645  */
++#line 2604 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 49:
 -#line 768 "awkgram.y" /* yacc.c:1645  */
 +  case 53:
- #line 775 "awkgram.y" /* yacc.c:1645  */
++#line 793 "awkgram.y" /* yacc.c:1645  */
      {
                /*
                 *    -----------------
@@@ -2603,14 -2603,17 +2648,17 @@@
                        ((yyvsp[-7]) + 1)->doloop_cond = tcont;
                        (yyval) = list_prepend(ip, (yyvsp[-7]));
                        bcfree((yyvsp[-4]));
-               } /* else
+                       if ((yyvsp[0]) != NULL)
+                               (yyvsp[-7])->comment = (yyvsp[0]);
+               }
+               /* else
                        $1 and $4 are NULLs */
          }
- #line 2610 "awkgram.c" /* yacc.c:1645  */
 -#line 2613 "awkgram.c" /* yacc.c:1645  */
++#line 2658 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 50:
 -#line 818 "awkgram.y" /* yacc.c:1645  */
 +  case 54:
- #line 817 "awkgram.y" /* yacc.c:1645  */
++#line 843 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@@ -2723,73 -2739,100 +2784,100 @@@ regular_loop
                break_allowed--;
                continue_allowed--;
          }
- #line 2727 "awkgram.c" /* yacc.c:1645  */
 -#line 2743 "awkgram.c" /* yacc.c:1645  */
++#line 2788 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 51:
 -#line 944 "awkgram.y" /* yacc.c:1645  */
 +  case 55:
- #line 930 "awkgram.y" /* yacc.c:1645  */
++#line 969 "awkgram.y" /* yacc.c:1645  */
      {
+               if ((yyvsp[-7]) != NULL) {
+                       merge_comments((yyvsp[-7]), NULL);
+                       (yyvsp[-11])->comment = (yyvsp[-7]);
+               }
+               if ((yyvsp[-4]) != NULL) {
+                       merge_comments((yyvsp[-4]), NULL);
+                       if ((yyvsp[-11])->comment == NULL) {
+                               (yyvsp[-4])->memory->comment_type = FOR_COMMENT;
+                               (yyvsp[-11])->comment = (yyvsp[-4]);
+                       } else
+                               (yyvsp[-11])->comment->comment = (yyvsp[-4]);
+               }
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[0]) = list_prepend((yyvsp[0]), (yyvsp[-1]));
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2738 "awkgram.c" /* yacc.c:1645  */
 -#line 2768 "awkgram.c" /* yacc.c:1645  */
++#line 2813 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 52:
 -#line 965 "awkgram.y" /* yacc.c:1645  */
 +  case 56:
- #line 937 "awkgram.y" /* yacc.c:1645  */
++#line 990 "awkgram.y" /* yacc.c:1645  */
      {
+               if ((yyvsp[-6]) != NULL) {
+                       merge_comments((yyvsp[-6]), NULL);
+                       (yyvsp[-10])->comment = (yyvsp[-6]);
+               }
+               if ((yyvsp[-4]) != NULL) {
+                       merge_comments((yyvsp[-4]), NULL);
+                       if ((yyvsp[-10])->comment == NULL) {
+                               (yyvsp[-4])->memory->comment_type = FOR_COMMENT;
+                               (yyvsp[-10])->comment = (yyvsp[-4]);
+                       } else
+                               (yyvsp[-10])->comment->comment = (yyvsp[-4]);
+               }
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[0]) = list_prepend((yyvsp[0]), (yyvsp[-1]));
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2749 "awkgram.c" /* yacc.c:1645  */
 -#line 2793 "awkgram.c" /* yacc.c:1645  */
++#line 2838 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 53:
 -#line 986 "awkgram.y" /* yacc.c:1645  */
 +  case 57:
- #line 944 "awkgram.y" /* yacc.c:1645  */
++#line 1011 "awkgram.y" /* yacc.c:1645  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
-               (yyval) = add_pending_comment((yyval));
          }
- #line 2761 "awkgram.c" /* yacc.c:1645  */
 -#line 2804 "awkgram.c" /* yacc.c:1645  */
++#line 2849 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 54:
 -#line 996 "awkgram.y" /* yacc.c:1645  */
 +  case 58:
- #line 955 "awkgram.y" /* yacc.c:1645  */
++#line 1021 "awkgram.y" /* yacc.c:1645  */
      {
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
                                _("`break' is not allowed outside a loop or 
switch"));
                (yyvsp[-1])->target_jmp = NULL;
                (yyval) = list_create((yyvsp[-1]));
-               (yyval) = add_pending_comment((yyval));
- 
+               if ((yyvsp[0]) != NULL)
+                       (yyval) = list_append((yyval), (yyvsp[0]));
          }
- #line 2775 "awkgram.c" /* yacc.c:1645  */
 -#line 2818 "awkgram.c" /* yacc.c:1645  */
++#line 2863 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 55:
 -#line 1006 "awkgram.y" /* yacc.c:1645  */
 +  case 59:
- #line 965 "awkgram.y" /* yacc.c:1645  */
++#line 1031 "awkgram.y" /* yacc.c:1645  */
      {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
                                _("`continue' is not allowed outside a loop"));
                (yyvsp[-1])->target_jmp = NULL;
                (yyval) = list_create((yyvsp[-1]));
-               (yyval) = add_pending_comment((yyval));
- 
+               if ((yyvsp[0]) != NULL)
+                       (yyval) = list_append((yyval), (yyvsp[0]));
          }
- #line 2789 "awkgram.c" /* yacc.c:1645  */
 -#line 2832 "awkgram.c" /* yacc.c:1645  */
++#line 2877 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 56:
 -#line 1016 "awkgram.y" /* yacc.c:1645  */
 +  case 60:
- #line 975 "awkgram.y" /* yacc.c:1645  */
++#line 1041 "awkgram.y" /* yacc.c:1645  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2797,13 -2840,14 +2885,14 @@@
                                _("`next' used in %s action"), ruletab[rule]);
                (yyvsp[-1])->target_jmp = ip_rec;
                (yyval) = list_create((yyvsp[-1]));
-               (yyval) = add_pending_comment((yyval));
+               if ((yyvsp[0]) != NULL)
+                       (yyval) = list_append((yyval), (yyvsp[0]));
          }
- #line 2803 "awkgram.c" /* yacc.c:1645  */
 -#line 2847 "awkgram.c" /* yacc.c:1645  */
++#line 2892 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 57:
 -#line 1027 "awkgram.y" /* yacc.c:1645  */
 +  case 61:
- #line 985 "awkgram.y" /* yacc.c:1645  */
++#line 1052 "awkgram.y" /* yacc.c:1645  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2813,13 -2857,14 +2902,14 @@@
                (yyvsp[-1])->target_newfile = ip_newfile;
                (yyvsp[-1])->target_endfile = ip_endfile;
                (yyval) = list_create((yyvsp[-1]));
-               (yyval) = add_pending_comment((yyval));
+               if ((yyvsp[0]) != NULL)
+                       (yyval) = list_append((yyval), (yyvsp[0]));
          }
- #line 2819 "awkgram.c" /* yacc.c:1645  */
 -#line 2864 "awkgram.c" /* yacc.c:1645  */
++#line 2909 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 58:
 -#line 1040 "awkgram.y" /* yacc.c:1645  */
 +  case 62:
- #line 997 "awkgram.y" /* yacc.c:1645  */
++#line 1065 "awkgram.y" /* yacc.c:1645  */
      {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time.
@@@ -2833,22 -2878,23 +2923,23 @@@
                        (yyval)->nexti->memory = dupnode(Nnull_string);
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
-               (yyval) = add_pending_comment((yyval));
+               if ((yyvsp[0]) != NULL)
+                       (yyval) = list_append((yyval), (yyvsp[0]));
          }
- #line 2839 "awkgram.c" /* yacc.c:1645  */
 -#line 2885 "awkgram.c" /* yacc.c:1645  */
++#line 2930 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 59:
 -#line 1057 "awkgram.y" /* yacc.c:1645  */
 +  case 63:
- #line 1013 "awkgram.y" /* yacc.c:1645  */
++#line 1082 "awkgram.y" /* yacc.c:1645  */
      {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
- #line 2848 "awkgram.c" /* yacc.c:1645  */
 -#line 2894 "awkgram.c" /* yacc.c:1645  */
++#line 2939 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 60:
 -#line 1060 "awkgram.y" /* yacc.c:1645  */
 +  case 64:
- #line 1016 "awkgram.y" /* yacc.c:1645  */
++#line 1085 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@@ -2856,20 -2902,31 +2947,31 @@@
                        (yyval)->nexti->memory = dupnode(Nnull_string);
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
+               if ((yyvsp[0]) != NULL)
+                       (yyval) = list_append((yyval), (yyvsp[0]));
+         }
 -#line 2909 "awkgram.c" /* yacc.c:1645  */
++#line 2954 "awkgram.c" /* yacc.c:1645  */
+     break;
  
-               (yyval) = add_pending_comment((yyval));
 -  case 61:
 -#line 1071 "awkgram.y" /* yacc.c:1645  */
++  case 65:
++#line 1096 "awkgram.y" /* yacc.c:1645  */
+     {
+               if ((yyvsp[0]) != NULL)
+                       (yyval) = list_append((yyvsp[-1]), (yyvsp[0]));
+               else
+                       (yyval) = (yyvsp[-1]);
          }
- #line 2863 "awkgram.c" /* yacc.c:1645  */
 -#line 2920 "awkgram.c" /* yacc.c:1645  */
++#line 2965 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 62:
 -#line 1088 "awkgram.y" /* yacc.c:1645  */
 +  case 66:
- #line 1038 "awkgram.y" /* yacc.c:1645  */
++#line 1113 "awkgram.y" /* yacc.c:1645  */
      { in_print = true; in_parens = 0; }
- #line 2869 "awkgram.c" /* yacc.c:1645  */
 -#line 2926 "awkgram.c" /* yacc.c:1645  */
++#line 2971 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 63:
 -#line 1089 "awkgram.y" /* yacc.c:1645  */
 +  case 67:
- #line 1039 "awkgram.y" /* yacc.c:1645  */
++#line 1114 "awkgram.y" /* yacc.c:1645  */
      {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@@ -2965,19 -3022,18 +3067,18 @@@ regular_print
                                }
                        }
                }
-               (yyval) = add_pending_comment((yyval));
          }
- #line 2971 "awkgram.c" /* yacc.c:1645  */
 -#line 3027 "awkgram.c" /* yacc.c:1645  */
++#line 3072 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 64:
 -#line 1186 "awkgram.y" /* yacc.c:1645  */
 +  case 68:
- #line 1137 "awkgram.y" /* yacc.c:1645  */
++#line 1211 "awkgram.y" /* yacc.c:1645  */
      { sub_counter = 0; }
- #line 2977 "awkgram.c" /* yacc.c:1645  */
 -#line 3033 "awkgram.c" /* yacc.c:1645  */
++#line 3078 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 65:
 -#line 1187 "awkgram.y" /* yacc.c:1645  */
 +  case 69:
- #line 1138 "awkgram.y" /* yacc.c:1645  */
++#line 1212 "awkgram.y" /* yacc.c:1645  */
      {
                char *arr = (yyvsp[-2])->lextok;
  
@@@ -3009,13 -3065,12 +3110,12 @@@
                        (yyvsp[-3])->expr_count = sub_counter;
                        (yyval) = list_append(list_append((yyvsp[0]), 
(yyvsp[-2])), (yyvsp[-3]));
                }
-               (yyval) = add_pending_comment((yyval));
          }
- #line 3015 "awkgram.c" /* yacc.c:1645  */
 -#line 3070 "awkgram.c" /* yacc.c:1645  */
++#line 3115 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 66:
 -#line 1224 "awkgram.y" /* yacc.c:1645  */
 +  case 70:
- #line 1176 "awkgram.y" /* yacc.c:1645  */
++#line 1249 "awkgram.y" /* yacc.c:1645  */
      {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@@ -3040,57 -3095,55 +3140,55 @@@
                        else if ((yyvsp[-1])->memory == func_table)
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
-               (yyval) = add_pending_comment((yyval));
          }
- #line 3046 "awkgram.c" /* yacc.c:1645  */
 -#line 3100 "awkgram.c" /* yacc.c:1645  */
++#line 3145 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 67:
 -#line 1250 "awkgram.y" /* yacc.c:1645  */
 +  case 71:
- #line 1203 "awkgram.y" /* yacc.c:1645  */
++#line 1275 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = optimize_assignment((yyvsp[0]));
-               (yyval) = add_pending_comment((yyval));
          }
- #line 3055 "awkgram.c" /* yacc.c:1645  */
 -#line 3108 "awkgram.c" /* yacc.c:1645  */
++#line 3153 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 68:
 -#line 1257 "awkgram.y" /* yacc.c:1645  */
 +  case 72:
- #line 1211 "awkgram.y" /* yacc.c:1645  */
++#line 1282 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3061 "awkgram.c" /* yacc.c:1645  */
 -#line 3114 "awkgram.c" /* yacc.c:1645  */
++#line 3159 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 69:
 -#line 1259 "awkgram.y" /* yacc.c:1645  */
 +  case 73:
- #line 1213 "awkgram.y" /* yacc.c:1645  */
++#line 1284 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3067 "awkgram.c" /* yacc.c:1645  */
 -#line 3120 "awkgram.c" /* yacc.c:1645  */
++#line 3165 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 70:
 -#line 1264 "awkgram.y" /* yacc.c:1645  */
 +  case 74:
- #line 1218 "awkgram.y" /* yacc.c:1645  */
++#line 1289 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3073 "awkgram.c" /* yacc.c:1645  */
 -#line 3126 "awkgram.c" /* yacc.c:1645  */
++#line 3171 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 71:
 -#line 1266 "awkgram.y" /* yacc.c:1645  */
 +  case 75:
- #line 1220 "awkgram.y" /* yacc.c:1645  */
++#line 1291 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
- #line 3084 "awkgram.c" /* yacc.c:1645  */
 -#line 3137 "awkgram.c" /* yacc.c:1645  */
++#line 3182 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 72:
 -#line 1273 "awkgram.y" /* yacc.c:1645  */
 +  case 76:
- #line 1227 "awkgram.y" /* yacc.c:1645  */
++#line 1298 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3090 "awkgram.c" /* yacc.c:1645  */
 -#line 3143 "awkgram.c" /* yacc.c:1645  */
++#line 3188 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 73:
 -#line 1278 "awkgram.y" /* yacc.c:1645  */
 +  case 77:
- #line 1232 "awkgram.y" /* yacc.c:1645  */
++#line 1303 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -3102,11 -3156,11 +3201,11 @@@
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
- #line 3106 "awkgram.c" /* yacc.c:1645  */
 -#line 3160 "awkgram.c" /* yacc.c:1645  */
++#line 3205 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 74:
 -#line 1291 "awkgram.y" /* yacc.c:1645  */
 +  case 78:
- #line 1244 "awkgram.y" /* yacc.c:1645  */
++#line 1316 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -3115,19 -3169,20 +3214,20 @@@
                        (void) list_prepend(casestmt, 
instruction(Op_exec_count));
                bcfree((yyvsp[-2]));
                (yyvsp[-3])->case_stmt = casestmt;
+               (yyvsp[-3])->comment = (yyvsp[-1]);
                (yyval) = (yyvsp[-3]);
          }
- #line 3121 "awkgram.c" /* yacc.c:1645  */
 -#line 3176 "awkgram.c" /* yacc.c:1645  */
++#line 3221 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 75:
 -#line 1306 "awkgram.y" /* yacc.c:1645  */
 +  case 79:
- #line 1258 "awkgram.y" /* yacc.c:1645  */
++#line 1331 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3127 "awkgram.c" /* yacc.c:1645  */
 -#line 3182 "awkgram.c" /* yacc.c:1645  */
++#line 3227 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 76:
 -#line 1308 "awkgram.y" /* yacc.c:1645  */
 +  case 80:
- #line 1260 "awkgram.y" /* yacc.c:1645  */
++#line 1333 "awkgram.y" /* yacc.c:1645  */
      {
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@@ -3135,28 -3190,28 +3235,28 @@@
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3139 "awkgram.c" /* yacc.c:1645  */
 -#line 3194 "awkgram.c" /* yacc.c:1645  */
++#line 3239 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 77:
 -#line 1316 "awkgram.y" /* yacc.c:1645  */
 +  case 81:
- #line 1268 "awkgram.y" /* yacc.c:1645  */
++#line 1341 "awkgram.y" /* yacc.c:1645  */
      {
                NODE *n = (yyvsp[0])->lasti->memory;
                bcfree((yyvsp[-1]));
                add_sign_to_num(n, '+');
                (yyval) = (yyvsp[0]);
          }
- #line 3150 "awkgram.c" /* yacc.c:1645  */
 -#line 3205 "awkgram.c" /* yacc.c:1645  */
++#line 3250 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 78:
 -#line 1323 "awkgram.y" /* yacc.c:1645  */
 +  case 82:
- #line 1275 "awkgram.y" /* yacc.c:1645  */
++#line 1348 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3156 "awkgram.c" /* yacc.c:1645  */
 -#line 3211 "awkgram.c" /* yacc.c:1645  */
++#line 3256 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 79:
 -#line 1325 "awkgram.y" /* yacc.c:1645  */
 +  case 83:
- #line 1277 "awkgram.y" /* yacc.c:1645  */
++#line 1350 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[0])->memory->type == Node_regex)
                        (yyvsp[0])->opcode = Op_push_re;
@@@ -3164,57 -3219,57 +3264,57 @@@
                        (yyvsp[0])->opcode = Op_push;
                (yyval) = (yyvsp[0]);
          }
- #line 3168 "awkgram.c" /* yacc.c:1645  */
 -#line 3223 "awkgram.c" /* yacc.c:1645  */
++#line 3268 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 80:
 -#line 1333 "awkgram.y" /* yacc.c:1645  */
 +  case 84:
- #line 1285 "awkgram.y" /* yacc.c:1645  */
++#line 1358 "awkgram.y" /* yacc.c:1645  */
      {
                assert(((yyvsp[0])->memory->flags & REGEX) == REGEX);
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
- #line 3178 "awkgram.c" /* yacc.c:1645  */
 -#line 3233 "awkgram.c" /* yacc.c:1645  */
++#line 3278 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 81:
 -#line 1342 "awkgram.y" /* yacc.c:1645  */
 +  case 85:
- #line 1294 "awkgram.y" /* yacc.c:1645  */
++#line 1367 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3184 "awkgram.c" /* yacc.c:1645  */
 -#line 3239 "awkgram.c" /* yacc.c:1645  */
++#line 3284 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 82:
 -#line 1344 "awkgram.y" /* yacc.c:1645  */
 +  case 86:
- #line 1296 "awkgram.y" /* yacc.c:1645  */
++#line 1369 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3190 "awkgram.c" /* yacc.c:1645  */
 -#line 3245 "awkgram.c" /* yacc.c:1645  */
++#line 3290 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 84:
 -#line 1354 "awkgram.y" /* yacc.c:1645  */
 +  case 88:
- #line 1306 "awkgram.y" /* yacc.c:1645  */
++#line 1379 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = (yyvsp[-1]);
          }
- #line 3198 "awkgram.c" /* yacc.c:1645  */
 -#line 3253 "awkgram.c" /* yacc.c:1645  */
++#line 3298 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 85:
 -#line 1361 "awkgram.y" /* yacc.c:1645  */
 +  case 89:
- #line 1313 "awkgram.y" /* yacc.c:1645  */
++#line 1386 "awkgram.y" /* yacc.c:1645  */
      {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
- #line 3208 "awkgram.c" /* yacc.c:1645  */
 -#line 3263 "awkgram.c" /* yacc.c:1645  */
++#line 3308 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 86:
 -#line 1366 "awkgram.y" /* yacc.c:1645  */
 +  case 90:
- #line 1318 "awkgram.y" /* yacc.c:1645  */
++#line 1391 "awkgram.y" /* yacc.c:1645  */
      { in_print = false; in_parens = 0; }
- #line 3214 "awkgram.c" /* yacc.c:1645  */
 -#line 3269 "awkgram.c" /* yacc.c:1645  */
++#line 3314 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 87:
 -#line 1367 "awkgram.y" /* yacc.c:1645  */
 +  case 91:
- #line 1319 "awkgram.y" /* yacc.c:1645  */
++#line 1392 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@@ -3224,139 -3279,197 +3324,197 @@@
                        lintwarn(_("concatenation as I/O `>' redirection target 
is ambiguous"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
- #line 3228 "awkgram.c" /* yacc.c:1645  */
 -#line 3283 "awkgram.c" /* yacc.c:1645  */
++#line 3328 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 88:
 -#line 1380 "awkgram.y" /* yacc.c:1645  */
 +  case 92:
- #line 1332 "awkgram.y" /* yacc.c:1645  */
++#line 1405 "awkgram.y" /* yacc.c:1645  */
      {
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[-5])->comment = (yyvsp[-1]);
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
- #line 3236 "awkgram.c" /* yacc.c:1645  */
 -#line 3293 "awkgram.c" /* yacc.c:1645  */
++#line 3338 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 89:
 -#line 1387 "awkgram.y" /* yacc.c:1645  */
 +  case 93:
- #line 1337 "awkgram.y" /* yacc.c:1645  */
++#line 1412 "awkgram.y" /* yacc.c:1645  */
      {
+               if ((yyvsp[-4]) != NULL)
+                       (yyvsp[-8])->comment = (yyvsp[-4]);
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[-2])->comment = (yyvsp[-1]);
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
- #line 3244 "awkgram.c" /* yacc.c:1645  */
 -#line 3305 "awkgram.c" /* yacc.c:1645  */
++#line 3350 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 90:
 -#line 1398 "awkgram.y" /* yacc.c:1645  */
++  case 94:
++#line 1423 "awkgram.y" /* yacc.c:1645  */
+     {
+               (yyval) = (yyvsp[0]);
+         }
 -#line 3313 "awkgram.c" /* yacc.c:1645  */
++#line 3358 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 91:
 -#line 1402 "awkgram.y" /* yacc.c:1645  */
++  case 95:
++#line 1427 "awkgram.y" /* yacc.c:1645  */
+     {
+               if ((yyvsp[-1]) != NULL && (yyvsp[0]) != NULL) {
+                       if ((yyvsp[-1])->memory->comment_type == EOL_COMMENT) {
+                               assert((yyvsp[0])->memory->comment_type == 
BLOCK_COMMENT);
+                               (yyvsp[-1])->comment = (yyvsp[0]);      // 
chain them
+                       } else {
+                               merge_comments((yyvsp[-1]), (yyvsp[0]));
+                       }
+ 
+                       (yyval) = (yyvsp[-1]);
+               } else if ((yyvsp[-1]) != NULL) {
+                       (yyval) = (yyvsp[-1]);
+               } else if ((yyvsp[0]) != NULL) {
+                       (yyval) = (yyvsp[0]);
+               } else
+                       (yyval) = NULL;
+         }
 -#line 3335 "awkgram.c" /* yacc.c:1645  */
++#line 3380 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 92:
 -#line 1423 "awkgram.y" /* yacc.c:1645  */
++  case 96:
++#line 1448 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = NULL; }
 -#line 3341 "awkgram.c" /* yacc.c:1645  */
++#line 3386 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 93:
 -#line 1425 "awkgram.y" /* yacc.c:1645  */
++  case 97:
++#line 1450 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = (yyvsp[0]); }
 -#line 3347 "awkgram.c" /* yacc.c:1645  */
++#line 3392 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 94:
 -#line 1430 "awkgram.y" /* yacc.c:1645  */
 +  case 98:
- #line 1354 "awkgram.y" /* yacc.c:1645  */
++#line 1455 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3250 "awkgram.c" /* yacc.c:1645  */
 -#line 3353 "awkgram.c" /* yacc.c:1645  */
++#line 3398 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 95:
 -#line 1432 "awkgram.y" /* yacc.c:1645  */
 +  case 99:
- #line 1356 "awkgram.y" /* yacc.c:1645  */
++#line 1457 "awkgram.y" /* yacc.c:1645  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3259 "awkgram.c" /* yacc.c:1645  */
 -#line 3362 "awkgram.c" /* yacc.c:1645  */
++#line 3407 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 96:
 -#line 1440 "awkgram.y" /* yacc.c:1645  */
 +  case 100:
- #line 1364 "awkgram.y" /* yacc.c:1645  */
++#line 1465 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3265 "awkgram.c" /* yacc.c:1645  */
 -#line 3368 "awkgram.c" /* yacc.c:1645  */
++#line 3413 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 97:
 -#line 1442 "awkgram.y" /* yacc.c:1645  */
 +  case 101:
- #line 1366 "awkgram.y" /* yacc.c:1645  */
++#line 1467 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3271 "awkgram.c" /* yacc.c:1645  */
 -#line 3374 "awkgram.c" /* yacc.c:1645  */
++#line 3419 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 98:
 -#line 1447 "awkgram.y" /* yacc.c:1645  */
 +  case 102:
- #line 1371 "awkgram.y" /* yacc.c:1645  */
++#line 1472 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3280 "awkgram.c" /* yacc.c:1645  */
 -#line 3383 "awkgram.c" /* yacc.c:1645  */
++#line 3428 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 99:
 -#line 1452 "awkgram.y" /* yacc.c:1645  */
 +  case 103:
- #line 1376 "awkgram.y" /* yacc.c:1645  */
++#line 1477 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
-                       (yyvsp[0])->param_count =  
(yyvsp[-2])->lasti->param_count + 1;
+                       (yyvsp[0])->param_count = 
(yyvsp[-2])->lasti->param_count + 1;
                        (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
                        yyerrok;
+ 
+                       // newlines are allowed after commas, catch any comments
+                       if ((yyvsp[-1]) != NULL) {
+                               if ((yyvsp[-2])->comment != NULL)
+                                       merge_comments((yyvsp[-2])->comment, 
(yyvsp[-1]));
+                               else
+                                       (yyvsp[-2])->comment = (yyvsp[-1]);
+                       }
                } else
                        (yyval) = NULL;
          }
- #line 3293 "awkgram.c" /* yacc.c:1645  */
 -#line 3404 "awkgram.c" /* yacc.c:1645  */
++#line 3449 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 100:
 -#line 1469 "awkgram.y" /* yacc.c:1645  */
 +  case 104:
- #line 1385 "awkgram.y" /* yacc.c:1645  */
++#line 1494 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3299 "awkgram.c" /* yacc.c:1645  */
 -#line 3410 "awkgram.c" /* yacc.c:1645  */
++#line 3455 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 101:
 -#line 1471 "awkgram.y" /* yacc.c:1645  */
 +  case 105:
- #line 1387 "awkgram.y" /* yacc.c:1645  */
++#line 1496 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[-1]); }
- #line 3305 "awkgram.c" /* yacc.c:1645  */
 -#line 3416 "awkgram.c" /* yacc.c:1645  */
++#line 3461 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 102:
 -#line 1473 "awkgram.y" /* yacc.c:1645  */
 +  case 106:
- #line 1389 "awkgram.y" /* yacc.c:1645  */
++#line 1498 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[-2]); }
- #line 3311 "awkgram.c" /* yacc.c:1645  */
 -#line 3422 "awkgram.c" /* yacc.c:1645  */
++#line 3467 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 103:
 -#line 1479 "awkgram.y" /* yacc.c:1645  */
 +  case 107:
- #line 1395 "awkgram.y" /* yacc.c:1645  */
++#line 1504 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3317 "awkgram.c" /* yacc.c:1645  */
 -#line 3428 "awkgram.c" /* yacc.c:1645  */
++#line 3473 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 104:
 -#line 1481 "awkgram.y" /* yacc.c:1645  */
 +  case 108:
- #line 1397 "awkgram.y" /* yacc.c:1645  */
++#line 1506 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3323 "awkgram.c" /* yacc.c:1645  */
 -#line 3434 "awkgram.c" /* yacc.c:1645  */
++#line 3479 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 105:
 -#line 1486 "awkgram.y" /* yacc.c:1645  */
 +  case 109:
- #line 1402 "awkgram.y" /* yacc.c:1645  */
++#line 1511 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3329 "awkgram.c" /* yacc.c:1645  */
 -#line 3440 "awkgram.c" /* yacc.c:1645  */
++#line 3485 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 106:
 -#line 1488 "awkgram.y" /* yacc.c:1645  */
 +  case 110:
- #line 1404 "awkgram.y" /* yacc.c:1645  */
++#line 1513 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3335 "awkgram.c" /* yacc.c:1645  */
 -#line 3446 "awkgram.c" /* yacc.c:1645  */
++#line 3491 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 107:
 -#line 1493 "awkgram.y" /* yacc.c:1645  */
 +  case 111:
- #line 1409 "awkgram.y" /* yacc.c:1645  */
++#line 1518 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3341 "awkgram.c" /* yacc.c:1645  */
 -#line 3452 "awkgram.c" /* yacc.c:1645  */
++#line 3497 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 108:
 -#line 1495 "awkgram.y" /* yacc.c:1645  */
 +  case 112:
- #line 1411 "awkgram.y" /* yacc.c:1645  */
++#line 1520 "awkgram.y" /* yacc.c:1645  */
      {
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[-2])->lasti->comment = (yyvsp[-1]);
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3350 "awkgram.c" /* yacc.c:1645  */
 -#line 3463 "awkgram.c" /* yacc.c:1645  */
++#line 3508 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 109:
 -#line 1502 "awkgram.y" /* yacc.c:1645  */
 +  case 113:
- #line 1416 "awkgram.y" /* yacc.c:1645  */
++#line 1527 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3356 "awkgram.c" /* yacc.c:1645  */
 -#line 3469 "awkgram.c" /* yacc.c:1645  */
++#line 3514 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 110:
 -#line 1504 "awkgram.y" /* yacc.c:1645  */
 +  case 114:
- #line 1418 "awkgram.y" /* yacc.c:1645  */
++#line 1529 "awkgram.y" /* yacc.c:1645  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3364,62 -3477,66 +3522,66 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3368 "awkgram.c" /* yacc.c:1645  */
 -#line 3481 "awkgram.c" /* yacc.c:1645  */
++#line 3526 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 111:
 -#line 1512 "awkgram.y" /* yacc.c:1645  */
 +  case 115:
- #line 1426 "awkgram.y" /* yacc.c:1645  */
++#line 1537 "awkgram.y" /* yacc.c:1645  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3377 "awkgram.c" /* yacc.c:1645  */
 -#line 3490 "awkgram.c" /* yacc.c:1645  */
++#line 3535 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 112:
 -#line 1517 "awkgram.y" /* yacc.c:1645  */
 +  case 116:
- #line 1431 "awkgram.y" /* yacc.c:1645  */
++#line 1542 "awkgram.y" /* yacc.c:1645  */
      {
                /* Ditto */
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[-2])->lasti->comment = (yyvsp[-1]);
                (yyval) = (yyvsp[-2]);
          }
- #line 3386 "awkgram.c" /* yacc.c:1645  */
 -#line 3501 "awkgram.c" /* yacc.c:1645  */
++#line 3546 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 113:
 -#line 1527 "awkgram.y" /* yacc.c:1645  */
 +  case 117:
- #line 1439 "awkgram.y" /* yacc.c:1645  */
++#line 1552 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3392 "awkgram.c" /* yacc.c:1645  */
 -#line 3507 "awkgram.c" /* yacc.c:1645  */
++#line 3552 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 114:
 -#line 1529 "awkgram.y" /* yacc.c:1645  */
 +  case 118:
- #line 1441 "awkgram.y" /* yacc.c:1645  */
++#line 1554 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3398 "awkgram.c" /* yacc.c:1645  */
 -#line 3513 "awkgram.c" /* yacc.c:1645  */
++#line 3558 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 115:
 -#line 1534 "awkgram.y" /* yacc.c:1645  */
 +  case 119:
- #line 1446 "awkgram.y" /* yacc.c:1645  */
++#line 1559 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3404 "awkgram.c" /* yacc.c:1645  */
 -#line 3519 "awkgram.c" /* yacc.c:1645  */
++#line 3564 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 116:
 -#line 1536 "awkgram.y" /* yacc.c:1645  */
 +  case 120:
- #line 1448 "awkgram.y" /* yacc.c:1645  */
++#line 1561 "awkgram.y" /* yacc.c:1645  */
      {
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[-2])->lasti->comment = (yyvsp[-1]);
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3413 "awkgram.c" /* yacc.c:1645  */
 -#line 3530 "awkgram.c" /* yacc.c:1645  */
++#line 3575 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 117:
 -#line 1543 "awkgram.y" /* yacc.c:1645  */
 +  case 121:
- #line 1453 "awkgram.y" /* yacc.c:1645  */
++#line 1568 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 3419 "awkgram.c" /* yacc.c:1645  */
 -#line 3536 "awkgram.c" /* yacc.c:1645  */
++#line 3581 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 118:
 -#line 1545 "awkgram.y" /* yacc.c:1645  */
 +  case 122:
- #line 1455 "awkgram.y" /* yacc.c:1645  */
++#line 1570 "awkgram.y" /* yacc.c:1645  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3427,72 -3544,74 +3589,74 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3431 "awkgram.c" /* yacc.c:1645  */
 -#line 3548 "awkgram.c" /* yacc.c:1645  */
++#line 3593 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 119:
 -#line 1553 "awkgram.y" /* yacc.c:1645  */
 +  case 123:
- #line 1463 "awkgram.y" /* yacc.c:1645  */
++#line 1578 "awkgram.y" /* yacc.c:1645  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3440 "awkgram.c" /* yacc.c:1645  */
 -#line 3557 "awkgram.c" /* yacc.c:1645  */
++#line 3602 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 120:
 -#line 1558 "awkgram.y" /* yacc.c:1645  */
 +  case 124:
- #line 1468 "awkgram.y" /* yacc.c:1645  */
++#line 1583 "awkgram.y" /* yacc.c:1645  */
      {
                /* Ditto */
+               if ((yyvsp[-1]) != NULL)
+                       (yyvsp[-2])->comment = (yyvsp[-1]);
                (yyval) = (yyvsp[-2]);
          }
- #line 3449 "awkgram.c" /* yacc.c:1645  */
 -#line 3568 "awkgram.c" /* yacc.c:1645  */
++#line 3613 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 121:
 -#line 1567 "awkgram.y" /* yacc.c:1645  */
 +  case 125:
- #line 1475 "awkgram.y" /* yacc.c:1645  */
++#line 1592 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3455 "awkgram.c" /* yacc.c:1645  */
 -#line 3574 "awkgram.c" /* yacc.c:1645  */
++#line 3619 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 122:
 -#line 1568 "awkgram.y" /* yacc.c:1645  */
 +  case 126:
- #line 1476 "awkgram.y" /* yacc.c:1645  */
++#line 1593 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = list_create((yyvsp[0])); }
- #line 3461 "awkgram.c" /* yacc.c:1645  */
 -#line 3580 "awkgram.c" /* yacc.c:1645  */
++#line 3625 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 123:
 -#line 1574 "awkgram.y" /* yacc.c:1645  */
 +  case 127:
- #line 1482 "awkgram.y" /* yacc.c:1645  */
++#line 1599 "awkgram.y" /* yacc.c:1645  */
      {
                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 3472 "awkgram.c" /* yacc.c:1645  */
 -#line 3591 "awkgram.c" /* yacc.c:1645  */
++#line 3636 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 124:
 -#line 1581 "awkgram.y" /* yacc.c:1645  */
 +  case 128:
- #line 1489 "awkgram.y" /* yacc.c:1645  */
++#line 1606 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3480 "awkgram.c" /* yacc.c:1645  */
 -#line 3599 "awkgram.c" /* yacc.c:1645  */
++#line 3644 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 125:
 -#line 1585 "awkgram.y" /* yacc.c:1645  */
 +  case 129:
- #line 1493 "awkgram.y" /* yacc.c:1645  */
++#line 1610 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3486 "awkgram.c" /* yacc.c:1645  */
 -#line 3605 "awkgram.c" /* yacc.c:1645  */
++#line 3650 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 126:
 -#line 1587 "awkgram.y" /* yacc.c:1645  */
 +  case 130:
- #line 1495 "awkgram.y" /* yacc.c:1645  */
++#line 1612 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3492 "awkgram.c" /* yacc.c:1645  */
 -#line 3611 "awkgram.c" /* yacc.c:1645  */
++#line 3656 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 127:
 -#line 1589 "awkgram.y" /* yacc.c:1645  */
 +  case 131:
- #line 1497 "awkgram.y" /* yacc.c:1645  */
++#line 1614 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3505,11 -3624,11 +3669,11 @@@
                bcfree((yyvsp[0]));
                (yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
          }
- #line 3509 "awkgram.c" /* yacc.c:1645  */
 -#line 3628 "awkgram.c" /* yacc.c:1645  */
++#line 3673 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 128:
 -#line 1602 "awkgram.y" /* yacc.c:1645  */
 +  case 132:
- #line 1510 "awkgram.y" /* yacc.c:1645  */
++#line 1627 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3526,11 -3645,11 +3690,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
- #line 3530 "awkgram.c" /* yacc.c:1645  */
 -#line 3649 "awkgram.c" /* yacc.c:1645  */
++#line 3694 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 129:
 -#line 1619 "awkgram.y" /* yacc.c:1645  */
 +  case 133:
- #line 1527 "awkgram.y" /* yacc.c:1645  */
++#line 1644 "awkgram.y" /* yacc.c:1645  */
      {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3540,91 -3659,91 +3704,91 @@@
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3544 "awkgram.c" /* yacc.c:1645  */
 -#line 3663 "awkgram.c" /* yacc.c:1645  */
++#line 3708 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 130:
 -#line 1629 "awkgram.y" /* yacc.c:1645  */
 +  case 134:
- #line 1537 "awkgram.y" /* yacc.c:1645  */
++#line 1654 "awkgram.y" /* yacc.c:1645  */
      {
                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 3555 "awkgram.c" /* yacc.c:1645  */
 -#line 3674 "awkgram.c" /* yacc.c:1645  */
++#line 3719 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 131:
 -#line 1636 "awkgram.y" /* yacc.c:1645  */
 +  case 135:
- #line 1544 "awkgram.y" /* yacc.c:1645  */
++#line 1661 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
- #line 3561 "awkgram.c" /* yacc.c:1645  */
 -#line 3680 "awkgram.c" /* yacc.c:1645  */
++#line 3725 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 132:
 -#line 1638 "awkgram.y" /* yacc.c:1645  */
 +  case 136:
- #line 1546 "awkgram.y" /* yacc.c:1645  */
++#line 1663 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3567 "awkgram.c" /* yacc.c:1645  */
 -#line 3686 "awkgram.c" /* yacc.c:1645  */
++#line 3731 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 133:
 -#line 1643 "awkgram.y" /* yacc.c:1645  */
 +  case 137:
- #line 1551 "awkgram.y" /* yacc.c:1645  */
++#line 1668 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3573 "awkgram.c" /* yacc.c:1645  */
 -#line 3692 "awkgram.c" /* yacc.c:1645  */
++#line 3737 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 134:
 -#line 1645 "awkgram.y" /* yacc.c:1645  */
 +  case 138:
- #line 1553 "awkgram.y" /* yacc.c:1645  */
++#line 1670 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3579 "awkgram.c" /* yacc.c:1645  */
 -#line 3698 "awkgram.c" /* yacc.c:1645  */
++#line 3743 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 135:
 -#line 1647 "awkgram.y" /* yacc.c:1645  */
 +  case 139:
- #line 1555 "awkgram.y" /* yacc.c:1645  */
++#line 1672 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
- #line 3588 "awkgram.c" /* yacc.c:1645  */
 -#line 3707 "awkgram.c" /* yacc.c:1645  */
++#line 3752 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 136:
 -#line 1655 "awkgram.y" /* yacc.c:1645  */
 +  case 140:
- #line 1563 "awkgram.y" /* yacc.c:1645  */
++#line 1680 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3594 "awkgram.c" /* yacc.c:1645  */
 -#line 3713 "awkgram.c" /* yacc.c:1645  */
++#line 3758 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 137:
 -#line 1657 "awkgram.y" /* yacc.c:1645  */
 +  case 141:
- #line 1565 "awkgram.y" /* yacc.c:1645  */
++#line 1682 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3600 "awkgram.c" /* yacc.c:1645  */
 -#line 3719 "awkgram.c" /* yacc.c:1645  */
++#line 3764 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 138:
 -#line 1662 "awkgram.y" /* yacc.c:1645  */
 +  case 142:
- #line 1570 "awkgram.y" /* yacc.c:1645  */
++#line 1687 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3606 "awkgram.c" /* yacc.c:1645  */
 -#line 3725 "awkgram.c" /* yacc.c:1645  */
++#line 3770 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 139:
 -#line 1664 "awkgram.y" /* yacc.c:1645  */
 +  case 143:
- #line 1572 "awkgram.y" /* yacc.c:1645  */
++#line 1689 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3612 "awkgram.c" /* yacc.c:1645  */
 -#line 3731 "awkgram.c" /* yacc.c:1645  */
++#line 3776 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 140:
 -#line 1669 "awkgram.y" /* yacc.c:1645  */
 +  case 144:
- #line 1577 "awkgram.y" /* yacc.c:1645  */
++#line 1694 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3618 "awkgram.c" /* yacc.c:1645  */
 -#line 3737 "awkgram.c" /* yacc.c:1645  */
++#line 3782 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 141:
 -#line 1671 "awkgram.y" /* yacc.c:1645  */
 +  case 145:
- #line 1579 "awkgram.y" /* yacc.c:1645  */
++#line 1696 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 3624 "awkgram.c" /* yacc.c:1645  */
 -#line 3743 "awkgram.c" /* yacc.c:1645  */
++#line 3788 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 142:
 -#line 1673 "awkgram.y" /* yacc.c:1645  */
 +  case 146:
- #line 1581 "awkgram.y" /* yacc.c:1645  */
++#line 1698 "awkgram.y" /* yacc.c:1645  */
      {
                int count = 2;
                bool is_simple_var = false;
@@@ -3678,47 -3797,47 +3842,47 @@@
                                max_args = count;
                }
          }
- #line 3682 "awkgram.c" /* yacc.c:1645  */
 -#line 3801 "awkgram.c" /* yacc.c:1645  */
++#line 3846 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 144:
 -#line 1732 "awkgram.y" /* yacc.c:1645  */
 +  case 148:
- #line 1640 "awkgram.y" /* yacc.c:1645  */
++#line 1757 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3688 "awkgram.c" /* yacc.c:1645  */
 -#line 3807 "awkgram.c" /* yacc.c:1645  */
++#line 3852 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 145:
 -#line 1734 "awkgram.y" /* yacc.c:1645  */
 +  case 149:
- #line 1642 "awkgram.y" /* yacc.c:1645  */
++#line 1759 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3694 "awkgram.c" /* yacc.c:1645  */
 -#line 3813 "awkgram.c" /* yacc.c:1645  */
++#line 3858 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 146:
 -#line 1736 "awkgram.y" /* yacc.c:1645  */
 +  case 150:
- #line 1644 "awkgram.y" /* yacc.c:1645  */
++#line 1761 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3700 "awkgram.c" /* yacc.c:1645  */
 -#line 3819 "awkgram.c" /* yacc.c:1645  */
++#line 3864 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 147:
 -#line 1738 "awkgram.y" /* yacc.c:1645  */
 +  case 151:
- #line 1646 "awkgram.y" /* yacc.c:1645  */
++#line 1763 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3706 "awkgram.c" /* yacc.c:1645  */
 -#line 3825 "awkgram.c" /* yacc.c:1645  */
++#line 3870 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 148:
 -#line 1740 "awkgram.y" /* yacc.c:1645  */
 +  case 152:
- #line 1648 "awkgram.y" /* yacc.c:1645  */
++#line 1765 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3712 "awkgram.c" /* yacc.c:1645  */
 -#line 3831 "awkgram.c" /* yacc.c:1645  */
++#line 3876 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 149:
 -#line 1742 "awkgram.y" /* yacc.c:1645  */
 +  case 153:
- #line 1650 "awkgram.y" /* yacc.c:1645  */
++#line 1767 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3718 "awkgram.c" /* yacc.c:1645  */
 -#line 3837 "awkgram.c" /* yacc.c:1645  */
++#line 3882 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 150:
 -#line 1744 "awkgram.y" /* yacc.c:1645  */
 +  case 154:
- #line 1652 "awkgram.y" /* yacc.c:1645  */
++#line 1769 "awkgram.y" /* yacc.c:1645  */
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -3732,29 -3851,29 +3896,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
- #line 3736 "awkgram.c" /* yacc.c:1645  */
 -#line 3855 "awkgram.c" /* yacc.c:1645  */
++#line 3900 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 151:
 -#line 1758 "awkgram.y" /* yacc.c:1645  */
 +  case 155:
- #line 1666 "awkgram.y" /* yacc.c:1645  */
++#line 1783 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3745 "awkgram.c" /* yacc.c:1645  */
 -#line 3864 "awkgram.c" /* yacc.c:1645  */
++#line 3909 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 152:
 -#line 1763 "awkgram.y" /* yacc.c:1645  */
 +  case 156:
- #line 1671 "awkgram.y" /* yacc.c:1645  */
++#line 1788 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3754 "awkgram.c" /* yacc.c:1645  */
 -#line 3873 "awkgram.c" /* yacc.c:1645  */
++#line 3918 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 153:
 -#line 1768 "awkgram.y" /* yacc.c:1645  */
 +  case 157:
- #line 1676 "awkgram.y" /* yacc.c:1645  */
++#line 1793 "awkgram.y" /* yacc.c:1645  */
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@@ -3774,64 -3893,64 +3938,64 @@@
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
- #line 3778 "awkgram.c" /* yacc.c:1645  */
 -#line 3897 "awkgram.c" /* yacc.c:1645  */
++#line 3942 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 154:
 -#line 1793 "awkgram.y" /* yacc.c:1645  */
 +  case 158:
- #line 1701 "awkgram.y" /* yacc.c:1645  */
++#line 1818 "awkgram.y" /* yacc.c:1645  */
      {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
- #line 3787 "awkgram.c" /* yacc.c:1645  */
 -#line 3906 "awkgram.c" /* yacc.c:1645  */
++#line 3951 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 155:
 -#line 1799 "awkgram.y" /* yacc.c:1645  */
 +  case 159:
- #line 1707 "awkgram.y" /* yacc.c:1645  */
++#line 1824 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3793 "awkgram.c" /* yacc.c:1645  */
 -#line 3912 "awkgram.c" /* yacc.c:1645  */
++#line 3957 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 156:
 -#line 1801 "awkgram.y" /* yacc.c:1645  */
 +  case 160:
- #line 1709 "awkgram.y" /* yacc.c:1645  */
++#line 1826 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3799 "awkgram.c" /* yacc.c:1645  */
 -#line 3918 "awkgram.c" /* yacc.c:1645  */
++#line 3963 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 157:
 -#line 1803 "awkgram.y" /* yacc.c:1645  */
 +  case 161:
- #line 1711 "awkgram.y" /* yacc.c:1645  */
++#line 1828 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3805 "awkgram.c" /* yacc.c:1645  */
 -#line 3924 "awkgram.c" /* yacc.c:1645  */
++#line 3969 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 158:
 -#line 1805 "awkgram.y" /* yacc.c:1645  */
 +  case 162:
- #line 1713 "awkgram.y" /* yacc.c:1645  */
++#line 1830 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3811 "awkgram.c" /* yacc.c:1645  */
 -#line 3930 "awkgram.c" /* yacc.c:1645  */
++#line 3975 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 159:
 -#line 1807 "awkgram.y" /* yacc.c:1645  */
 +  case 163:
- #line 1715 "awkgram.y" /* yacc.c:1645  */
++#line 1832 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3817 "awkgram.c" /* yacc.c:1645  */
 -#line 3936 "awkgram.c" /* yacc.c:1645  */
++#line 3981 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 160:
 -#line 1809 "awkgram.y" /* yacc.c:1645  */
 +  case 164:
- #line 1717 "awkgram.y" /* yacc.c:1645  */
++#line 1834 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3823 "awkgram.c" /* yacc.c:1645  */
 -#line 3942 "awkgram.c" /* yacc.c:1645  */
++#line 3987 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 161:
 -#line 1814 "awkgram.y" /* yacc.c:1645  */
 +  case 165:
- #line 1722 "awkgram.y" /* yacc.c:1645  */
++#line 1839 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3831 "awkgram.c" /* yacc.c:1645  */
 -#line 3950 "awkgram.c" /* yacc.c:1645  */
++#line 3995 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 162:
 -#line 1818 "awkgram.y" /* yacc.c:1645  */
 +  case 166:
- #line 1726 "awkgram.y" /* yacc.c:1645  */
++#line 1843 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@@ -3863,11 -3982,11 +4027,11 @@@
                        }
                }
           }
- #line 3867 "awkgram.c" /* yacc.c:1645  */
 -#line 3986 "awkgram.c" /* yacc.c:1645  */
++#line 4031 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 163:
 -#line 1850 "awkgram.y" /* yacc.c:1645  */
 +  case 167:
- #line 1758 "awkgram.y" /* yacc.c:1645  */
++#line 1875 "awkgram.y" /* yacc.c:1645  */
      {
                // Always include. Allows us to lint warn on
                // print "foo" > "bar" 1
@@@ -3875,31 -3994,31 +4039,31 @@@
                // print "foo" > ("bar" 1)
                (yyval) = list_append((yyvsp[-1]), bcalloc(Op_parens, 1, 
sourceline));
          }
- #line 3879 "awkgram.c" /* yacc.c:1645  */
 -#line 3998 "awkgram.c" /* yacc.c:1645  */
++#line 4043 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 164:
 -#line 1858 "awkgram.y" /* yacc.c:1645  */
 +  case 168:
- #line 1766 "awkgram.y" /* yacc.c:1645  */
++#line 1883 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3889 "awkgram.c" /* yacc.c:1645  */
 -#line 4008 "awkgram.c" /* yacc.c:1645  */
++#line 4053 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 165:
 -#line 1864 "awkgram.y" /* yacc.c:1645  */
 +  case 169:
- #line 1772 "awkgram.y" /* yacc.c:1645  */
++#line 1889 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3899 "awkgram.c" /* yacc.c:1645  */
 -#line 4018 "awkgram.c" /* yacc.c:1645  */
++#line 4063 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 166:
 -#line 1870 "awkgram.y" /* yacc.c:1645  */
 +  case 170:
- #line 1778 "awkgram.y" /* yacc.c:1645  */
++#line 1895 "awkgram.y" /* yacc.c:1645  */
      {
                static bool warned = false;
  
@@@ -3912,45 -4031,45 +4076,45 @@@
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3916 "awkgram.c" /* yacc.c:1645  */
 -#line 4035 "awkgram.c" /* yacc.c:1645  */
++#line 4080 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 169:
 -#line 1885 "awkgram.y" /* yacc.c:1645  */
 +  case 173:
- #line 1793 "awkgram.y" /* yacc.c:1645  */
++#line 1910 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3925 "awkgram.c" /* yacc.c:1645  */
 -#line 4044 "awkgram.c" /* yacc.c:1645  */
++#line 4089 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 170:
 -#line 1890 "awkgram.y" /* yacc.c:1645  */
 +  case 174:
- #line 1798 "awkgram.y" /* yacc.c:1645  */
++#line 1915 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3934 "awkgram.c" /* yacc.c:1645  */
 -#line 4053 "awkgram.c" /* yacc.c:1645  */
++#line 4098 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 171:
 -#line 1895 "awkgram.y" /* yacc.c:1645  */
 +  case 175:
- #line 1803 "awkgram.y" /* yacc.c:1645  */
++#line 1920 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3942 "awkgram.c" /* yacc.c:1645  */
 -#line 4061 "awkgram.c" /* yacc.c:1645  */
++#line 4106 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 172:
 -#line 1899 "awkgram.y" /* yacc.c:1645  */
 +  case 176:
- #line 1807 "awkgram.y" /* yacc.c:1645  */
++#line 1924 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3950 "awkgram.c" /* yacc.c:1645  */
 -#line 4069 "awkgram.c" /* yacc.c:1645  */
++#line 4114 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 173:
 -#line 1903 "awkgram.y" /* yacc.c:1645  */
 +  case 177:
- #line 1811 "awkgram.y" /* yacc.c:1645  */
++#line 1928 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@@ -3965,11 -4084,11 +4129,11 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
- #line 3969 "awkgram.c" /* yacc.c:1645  */
 -#line 4088 "awkgram.c" /* yacc.c:1645  */
++#line 4133 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 174:
 -#line 1918 "awkgram.y" /* yacc.c:1645  */
 +  case 178:
- #line 1826 "awkgram.y" /* yacc.c:1645  */
++#line 1943 "awkgram.y" /* yacc.c:1645  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@@ -3987,20 -4106,20 +4151,20 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
- #line 3991 "awkgram.c" /* yacc.c:1645  */
 -#line 4110 "awkgram.c" /* yacc.c:1645  */
++#line 4155 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 175:
 -#line 1939 "awkgram.y" /* yacc.c:1645  */
 +  case 179:
- #line 1847 "awkgram.y" /* yacc.c:1645  */
++#line 1964 "awkgram.y" /* yacc.c:1645  */
      {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
- #line 4000 "awkgram.c" /* yacc.c:1645  */
 -#line 4119 "awkgram.c" /* yacc.c:1645  */
++#line 4164 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 176:
 -#line 1944 "awkgram.y" /* yacc.c:1645  */
 +  case 180:
- #line 1852 "awkgram.y" /* yacc.c:1645  */
++#line 1969 "awkgram.y" /* yacc.c:1645  */
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -4034,28 -4153,16 +4198,28 @@@
                (yyval) = list_prepend((yyvsp[0]), t);
                at_seen = false;
          }
- #line 4038 "awkgram.c" /* yacc.c:1645  */
 -#line 4157 "awkgram.c" /* yacc.c:1645  */
++#line 4202 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 177:
 -#line 1981 "awkgram.y" /* yacc.c:1645  */
 +  case 181:
- #line 1889 "awkgram.y" /* yacc.c:1645  */
++#line 2006 "awkgram.y" /* yacc.c:1645  */
      {
                NODE *n;
 +              const char *name = (yyvsp[-3])->func_name;
 +
 +              if (current_namespace != awk_namespace && strchr(name, ':') == 
NULL) {
 +                      size_t len = strlen(current_namespace) + 2 + 
strlen(name) + 1;
 +                      char *buf;
 +
 +                      emalloc(buf, char *, len, "direct_func_call");
 +                      sprintf(buf, "%s::%s", current_namespace, name);
 +
 +                      efree((void *) (yyvsp[-3])->func_name);
 +                      (yyvsp[-3])->func_name = buf;
 +              }
  
                if (! at_seen) {
 -                      n = lookup((yyvsp[-3])->func_name);
 +                      n = lookup((yyvsp[-3])->func_name, true);
                        if (n != NULL && n->type != Node_func
                            && n->type != Node_ext_func) {
                                error_ln((yyvsp[-3])->source_line,
@@@ -4076,49 -4182,49 +4240,49 @@@
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
- #line 4080 "awkgram.c" /* yacc.c:1645  */
 -#line 4186 "awkgram.c" /* yacc.c:1645  */
++#line 4244 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 178:
 -#line 2009 "awkgram.y" /* yacc.c:1645  */
 +  case 182:
- #line 1930 "awkgram.y" /* yacc.c:1645  */
++#line 2047 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 4086 "awkgram.c" /* yacc.c:1645  */
 -#line 4192 "awkgram.c" /* yacc.c:1645  */
++#line 4250 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 179:
 -#line 2011 "awkgram.y" /* yacc.c:1645  */
 +  case 183:
- #line 1932 "awkgram.y" /* yacc.c:1645  */
++#line 2049 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 4092 "awkgram.c" /* yacc.c:1645  */
 -#line 4198 "awkgram.c" /* yacc.c:1645  */
++#line 4256 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 180:
 -#line 2016 "awkgram.y" /* yacc.c:1645  */
 +  case 184:
- #line 1937 "awkgram.y" /* yacc.c:1645  */
++#line 2054 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 4098 "awkgram.c" /* yacc.c:1645  */
 -#line 4204 "awkgram.c" /* yacc.c:1645  */
++#line 4262 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 181:
 -#line 2018 "awkgram.y" /* yacc.c:1645  */
 +  case 185:
- #line 1939 "awkgram.y" /* yacc.c:1645  */
++#line 2056 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[-1]); }
- #line 4104 "awkgram.c" /* yacc.c:1645  */
 -#line 4210 "awkgram.c" /* yacc.c:1645  */
++#line 4268 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 182:
 -#line 2023 "awkgram.y" /* yacc.c:1645  */
 +  case 186:
- #line 1944 "awkgram.y" /* yacc.c:1645  */
++#line 2061 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 4110 "awkgram.c" /* yacc.c:1645  */
 -#line 4216 "awkgram.c" /* yacc.c:1645  */
++#line 4274 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 183:
 -#line 2025 "awkgram.y" /* yacc.c:1645  */
 +  case 187:
- #line 1946 "awkgram.y" /* yacc.c:1645  */
++#line 2063 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 4118 "awkgram.c" /* yacc.c:1645  */
 -#line 4224 "awkgram.c" /* yacc.c:1645  */
++#line 4282 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 184:
 -#line 2032 "awkgram.y" /* yacc.c:1645  */
 +  case 188:
- #line 1953 "awkgram.y" /* yacc.c:1645  */
++#line 2070 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *ip = (yyvsp[0])->lasti;
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -4132,11 -4238,11 +4296,11 @@@
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
- #line 4136 "awkgram.c" /* yacc.c:1645  */
 -#line 4242 "awkgram.c" /* yacc.c:1645  */
++#line 4300 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 185:
 -#line 2049 "awkgram.y" /* yacc.c:1645  */
 +  case 189:
- #line 1970 "awkgram.y" /* yacc.c:1645  */
++#line 2087 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@@ -4150,31 -4256,31 +4314,31 @@@
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
- #line 4154 "awkgram.c" /* yacc.c:1645  */
 -#line 4260 "awkgram.c" /* yacc.c:1645  */
++#line 4318 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 186:
 -#line 2066 "awkgram.y" /* yacc.c:1645  */
 +  case 190:
- #line 1987 "awkgram.y" /* yacc.c:1645  */
++#line 2104 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); }
- #line 4160 "awkgram.c" /* yacc.c:1645  */
 -#line 4266 "awkgram.c" /* yacc.c:1645  */
++#line 4324 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 187:
 -#line 2068 "awkgram.y" /* yacc.c:1645  */
 +  case 191:
- #line 1989 "awkgram.y" /* yacc.c:1645  */
++#line 2106 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 4168 "awkgram.c" /* yacc.c:1645  */
 -#line 4274 "awkgram.c" /* yacc.c:1645  */
++#line 4332 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 188:
 -#line 2075 "awkgram.y" /* yacc.c:1645  */
 +  case 192:
- #line 1996 "awkgram.y" /* yacc.c:1645  */
++#line 2113 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[-1]); }
- #line 4174 "awkgram.c" /* yacc.c:1645  */
 -#line 4280 "awkgram.c" /* yacc.c:1645  */
++#line 4338 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 189:
 -#line 2080 "awkgram.y" /* yacc.c:1645  */
 +  case 193:
- #line 2001 "awkgram.y" /* yacc.c:1645  */
++#line 2118 "awkgram.y" /* yacc.c:1645  */
      {
                char *var_name = (yyvsp[0])->lextok;
  
@@@ -4182,22 -4288,22 +4346,22 @@@
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
- #line 4186 "awkgram.c" /* yacc.c:1645  */
 -#line 4292 "awkgram.c" /* yacc.c:1645  */
++#line 4350 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 190:
 -#line 2088 "awkgram.y" /* yacc.c:1645  */
 +  case 194:
- #line 2009 "awkgram.y" /* yacc.c:1645  */
++#line 2126 "awkgram.y" /* yacc.c:1645  */
      {
                char *arr = (yyvsp[-1])->lextok;
                (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, 
Node_var_new);
                (yyvsp[-1])->opcode = Op_push_array;
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1]));
          }
- #line 4197 "awkgram.c" /* yacc.c:1645  */
 -#line 4303 "awkgram.c" /* yacc.c:1645  */
++#line 4361 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 191:
 -#line 2098 "awkgram.y" /* yacc.c:1645  */
 +  case 195:
- #line 2019 "awkgram.y" /* yacc.c:1645  */
++#line 2136 "awkgram.y" /* yacc.c:1645  */
      {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@@ -4209,73 -4315,85 +4373,85 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 4213 "awkgram.c" /* yacc.c:1645  */
 -#line 4319 "awkgram.c" /* yacc.c:1645  */
++#line 4377 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 192:
 -#line 2110 "awkgram.y" /* yacc.c:1645  */
 +  case 196:
- #line 2031 "awkgram.y" /* yacc.c:1645  */
++#line 2148 "awkgram.y" /* yacc.c:1645  */
      {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 4223 "awkgram.c" /* yacc.c:1645  */
 -#line 4329 "awkgram.c" /* yacc.c:1645  */
++#line 4387 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 193:
 -#line 2119 "awkgram.y" /* yacc.c:1645  */
 +  case 197:
- #line 2040 "awkgram.y" /* yacc.c:1645  */
++#line 2157 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
          }
- #line 4231 "awkgram.c" /* yacc.c:1645  */
 -#line 4337 "awkgram.c" /* yacc.c:1645  */
++#line 4395 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 194:
 -#line 2123 "awkgram.y" /* yacc.c:1645  */
 +  case 198:
- #line 2044 "awkgram.y" /* yacc.c:1645  */
++#line 2161 "awkgram.y" /* yacc.c:1645  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
- #line 4239 "awkgram.c" /* yacc.c:1645  */
 -#line 4345 "awkgram.c" /* yacc.c:1645  */
++#line 4403 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 195:
 -#line 2127 "awkgram.y" /* yacc.c:1645  */
 +  case 199:
- #line 2047 "awkgram.y" /* yacc.c:1645  */
++#line 2165 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = NULL; }
- #line 4245 "awkgram.c" /* yacc.c:1645  */
 -#line 4351 "awkgram.c" /* yacc.c:1645  */
++#line 4409 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 196:
 -#line 2131 "awkgram.y" /* yacc.c:1645  */
++  case 200:
++#line 2169 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = (yyvsp[0]); }
 -#line 4357 "awkgram.c" /* yacc.c:1645  */
++#line 4415 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 197:
 -#line 2135 "awkgram.y" /* yacc.c:1645  */
 +  case 201:
- #line 2055 "awkgram.y" /* yacc.c:1645  */
-     { yyerrok; }
- #line 4251 "awkgram.c" /* yacc.c:1645  */
++#line 2173 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = (yyvsp[0]); yyerrok; }
 -#line 4363 "awkgram.c" /* yacc.c:1645  */
++#line 4421 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 198:
 -#line 2139 "awkgram.y" /* yacc.c:1645  */
 +  case 202:
- #line 2059 "awkgram.y" /* yacc.c:1645  */
++#line 2177 "awkgram.y" /* yacc.c:1645  */
      { yyerrok; }
- #line 4257 "awkgram.c" /* yacc.c:1645  */
 -#line 4369 "awkgram.c" /* yacc.c:1645  */
++#line 4427 "awkgram.c" /* yacc.c:1645  */
+     break;
+ 
 -  case 199:
 -#line 2144 "awkgram.y" /* yacc.c:1645  */
++  case 203:
++#line 2182 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = NULL; }
 -#line 4375 "awkgram.c" /* yacc.c:1645  */
++#line 4433 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 201:
 -#line 2149 "awkgram.y" /* yacc.c:1645  */
 +  case 205:
- #line 2068 "awkgram.y" /* yacc.c:1645  */
++#line 2187 "awkgram.y" /* yacc.c:1645  */
      { yyerrok; }
- #line 4263 "awkgram.c" /* yacc.c:1645  */
 -#line 4381 "awkgram.c" /* yacc.c:1645  */
++#line 4439 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 202:
 -#line 2153 "awkgram.y" /* yacc.c:1645  */
 +  case 206:
- #line 2072 "awkgram.y" /* yacc.c:1645  */
++#line 2191 "awkgram.y" /* yacc.c:1645  */
      { (yyval) = (yyvsp[0]); yyerrok; }
- #line 4269 "awkgram.c" /* yacc.c:1645  */
 -#line 4387 "awkgram.c" /* yacc.c:1645  */
++#line 4445 "awkgram.c" /* yacc.c:1645  */
      break;
  
 -  case 203:
 -#line 2157 "awkgram.y" /* yacc.c:1645  */
 +  case 207:
- #line 2076 "awkgram.y" /* yacc.c:1645  */
-     { yyerrok; }
- #line 4275 "awkgram.c" /* yacc.c:1645  */
++#line 2195 "awkgram.y" /* yacc.c:1645  */
+     { (yyval) = (yyvsp[0]); yyerrok; }
 -#line 4393 "awkgram.c" /* yacc.c:1645  */
++#line 4451 "awkgram.c" /* yacc.c:1645  */
      break;
  
  
- #line 4279 "awkgram.c" /* yacc.c:1645  */
 -#line 4397 "awkgram.c" /* yacc.c:1645  */
++#line 4455 "awkgram.c" /* yacc.c:1645  */
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4502,7 -4620,7 +4678,7 @@@ yyreturn
  #endif
    return yyresult;
  }
- #line 2078 "awkgram.y" /* yacc.c:1903  */
 -#line 2159 "awkgram.y" /* yacc.c:1903  */
++#line 2197 "awkgram.y" /* yacc.c:1903  */
  
  
  struct token {
@@@ -4971,6 -5075,6 +5148,16 @@@ mk_program(
                        (void) list_merge(cp, beginfile_block);
                        (void) list_merge(cp, endfile_block);
  
++                      if (outer_comment != NULL) {
++                              cp = list_merge(list_create(outer_comment), cp);
++                              outer_comment = NULL;
++                      }
++
++                      if (interblock_comment != NULL) {
++                              (void) list_append(cp, interblock_comment);
++                              interblock_comment = NULL;
++                      }
++
                        goto out;
  
                } else {
@@@ -5230,8 -5335,8 +5419,9 @@@ include_source(INSTRUCTION *file, void 
        lasttok = 0;
        lexeof = false;
        eof_warned = false;
 +      current_namespace = awk_namespace;
-       return 0;
+       *srcfile_p = (void *) s;
+       return true;
  }
  
  /* load_library --- load a shared library */
@@@ -7261,10 -7332,13 +7447,15 @@@ mk_function(INSTRUCTION *fi, INSTRUCTIO
        def->lasti->memory = dupnode(Nnull_string);
        (void) list_append(def, instruction(Op_K_return));
  
+       if (trailing_comment != NULL) {
+               (void) list_append(def, trailing_comment);
+               trailing_comment = NULL;
+       }
+ 
 -      if (do_pretty_print)
 +      if (do_pretty_print) {
 +              fi[3].ns_name = make_pp_namespace();
                (void) list_prepend(def, instruction(Op_exec_count));
 +      }
  
        /* fi->opcode = Op_func */
        (fi + 1)->firsti = def->nexti;
@@@ -7971,14 -8040,13 +8162,13 @@@ append_rule(INSTRUCTION *pattern, INSTR
                (rp + 1)->lasti = action->lasti;
                (rp + 2)->first_line = pattern->source_line;
                (rp + 2)->last_line = lastline;
-               if (block_comment != NULL) {
-                       ip = list_prepend(list_prepend(action, block_comment), 
rp);
-                       block_comment = NULL;
-               } else
-                       ip = list_prepend(action, rp);
- 
+               ip = list_prepend(action, rp);
+               if (interblock_comment != NULL) {
+                       ip = list_prepend(ip, interblock_comment);
+                       interblock_comment = NULL;
+               }
        } else {
 -              rp = bcalloc(Op_rule, 3, 0);
 +              rp = bcalloc(Op_rule, 4, 0);
                rp->in_rule = Rule;
                rp->source_file = source;
                tp = instruction(Op_no_op);
@@@ -8862,176 -8911,90 +9039,264 @@@ set_profile_text(NODE *n, const char *s
        return n;
  }
  
+ /*
+  * merge_comments --- merge c2 into c1 and free c2 if successful.
+  *    Allow c2 to be NULL, in which case just merged chained
+  *    comments in c1.
+  */
+ 
+ static void
+ merge_comments(INSTRUCTION *c1, INSTRUCTION *c2)
+ {
+       assert(c1->opcode == Op_comment);
+ 
+       if (c1->comment == NULL && c2 == NULL)  // nothing to do
+               return;
+ 
+       size_t total = c1->memory->stlen;
+       if (c1->comment != NULL)
+               total += 1 /* \n */ + c1->comment->memory->stlen;
+ 
+       if (c2 != NULL) {
+               assert(c2->opcode == Op_comment);
+               total += 1 /* \n */ + c2->memory->stlen;
+               if (c2->comment != NULL)
+                       total += c2->comment->memory->stlen + 1;
+       }
+ 
+       char *buffer;
+       emalloc(buffer, char *, total + 1, "merge_comments");
+ 
+       strcpy(buffer, c1->memory->stptr);
+       if (c1->comment != NULL) {
+               strcat(buffer, "\n");
+               strcat(buffer, c1->comment->memory->stptr);
+       }
+ 
+       if (c2 != NULL) {
+               strcat(buffer, "\n");
+               strcat(buffer, c2->memory->stptr);
+               if (c2->comment != NULL) {
+                       strcat(buffer, "\n");
+                       strcat(buffer, c2->comment->memory->stptr);
+               }
+ 
+               unref(c2->memory);
+               if (c2->comment != NULL) {
+                       unref(c2->comment->memory);
+                       bcfree(c2->comment);
+                       c2->comment = NULL;
+               }
+               bcfree(c2);
+       }
+ 
+       c1->memory->comment_type = BLOCK_COMMENT;
+       free(c1->memory->stptr);
+       c1->memory->stptr = buffer;
+       c1->memory->stlen = strlen(buffer);
+ 
+       // now free everything else
+       if (c1->comment != NULL) {
+               unref(c1->comment->memory);
+               bcfree(c1->comment);
+               c1->comment = NULL;
+       }
+ }
+ 
+ /* make_braced_statements --- handle `l_brace statements r_brace' with 
comments */
+ 
+ static INSTRUCTION *
+ make_braced_statements(INSTRUCTION *lbrace, INSTRUCTION *stmts, INSTRUCTION 
*rbrace)
+ {
+       INSTRUCTION *ip;
+ 
+       if (stmts == NULL)
+               ip = list_create(instruction(Op_no_op));
+       else
+               ip = stmts;
+ 
+       if (lbrace != NULL) {
+               INSTRUCTION *comment2 = lbrace->comment;
+               if (comment2 != NULL) {
+                       ip = list_prepend(ip, comment2);
+                       lbrace->comment = NULL;
+               }
+               ip = list_prepend(ip, lbrace);
+       }
+ 
+       return ip;
+ }
++
 +/* validate_qualified_name --- make sure that a qualified name is built 
correctly */
 +
 +/*
 + * This routine returns upon first error, no need to produce multiple, 
possibly
 + * conflicting / confusing error messages.
 + */
 +
 +bool
 +validate_qualified_name(char *token)
 +{
 +      char *cp, *cp2;
 +
 +      // no colon, by definition it's well formed
 +      if ((cp = strchr(token, ':')) == NULL)
 +              return true;
 +
 +      if (do_traditional || do_posix) {
 +              error_ln(sourceline, _("identifier %s: qualified names not 
allowed in traditional / POSIX mode"), token);
 +              return false;
 +      }
 +
 +      if (cp[1] != ':') {     // could happen from command line
 +              error_ln(sourceline, _("identifier %s: namespace separator is 
two colons, not one"), token);
 +              return false;
 +      }
 +
 +      if (! is_letter(cp[2])) {
 +              error_ln(sourceline,
 +                              _("qualified identifier `%s' is badly formed"),
 +                              token);
 +              return false;
 +      }
 +
 +      if ((cp2 = strchr(cp+2, ':')) != NULL) {
 +              error_ln(sourceline,
 +                      _("identifier `%s': namespace separator can only appear 
once in a qualified name"),
 +                      token);
 +              return false;
 +      }
 +
 +      return true;
 +}
 +
 +/* check_qualified_name --- decide if a name is special or not */
 +
 +int
 +check_qualified_name(char *token)
 +{
 +      char *cp;
 +
 +      if ((cp = strchr(token, ':')) == NULL && current_namespace == 
awk_namespace)
 +              return check_special(token);
 +
 +      /*
 +       * Now it's more complicated.  Here are the rules.
 +       *
 +       * 1. Namespace name cannot be a standard awk reserved word or function.
 +       * 2. Subordinate part of the name cannot be standard awk reserved word 
or function.
 +       * 3. If namespace part is explicitly "awk", return result of 
check_special().
 +       * 4. Else return -1 (gawk extensions allowed, we check standard awk in 
step 2).
 +       */
 +
 +      const struct token *tok;
 +      int i;
 +      if (cp == NULL) {       // namespace not awk, but a simple identifier
 +              i = check_special(token);
 +              if (i < 0)
 +                      return i;
 +
 +              tok = & tokentab[i];
 +              if ((tok->flags & GAWKX) != 0 && tok->class == LEX_BUILTIN)
 +                      return -1;
 +              else
 +                      return i;
 +      }
 +
 +      char *ns, *end, *subname;
 +      ns = token;
 +      *(end = cp) = '\0';     // temporarily turn it into standalone string
 +      subname = end + 2;
 +
 +      // First check the namespace part
 +      i = check_special(ns);
 +      if (i >= 0 && (tokentab[i].flags & GAWKX) == 0) {
 +              error_ln(sourceline, _("using reserved identifier `%s' as a 
namespace is not allowed"), ns);
 +              goto done;
 +      }
 +
 +      // Now check the subordinate part
 +      i = check_special(subname);
 +      if (i >= 0 && (tokentab[i].flags & GAWKX) == 0 && strcmp(ns, "awk") != 
0) {
 +              error_ln(sourceline, _("using reserved identifier `%s' as 
second component of a qualified name is not allowed"), subname);
 +              goto done;
 +      }
 +
 +      if (strcmp(ns, "awk") == 0) {
 +              i = check_special(subname);
 +              if (i >= 0) {
 +                      if ((tokentab[i].flags & GAWKX) != 0 && 
tokentab[i].class == LEX_BUILTIN)
 +                              ;       // gawk additional builtin function, is 
ok
 +                      else
 +                              error_ln(sourceline, _("using reserved 
identifier `%s' as second component of a qualified name is not allowed"), 
subname);
 +              }
 +      } else
 +              i = -1;
 +done:
 +      *end = ':';
 +      return i;
 +}
 +
 +/* set_namespace --- change the current namespace */
 +
 +static void
 +set_namespace(INSTRUCTION *ns)
 +{
 +      if (ns == NULL)
 +              return;
 +
 +      if (do_traditional || do_posix) {
 +              error_ln(ns->source_line, _("@namespace is a gawk extension"));
 +              efree(ns->lextok);
 +              bcfree(ns);
 +              return;
 +      }
 +
 +      if (! is_valid_identifier(ns->lextok)) {
 +              error_ln(ns->source_line, _("namespace name `%s' must meet 
identifier naming rules"), ns->lextok);
 +              efree(ns->lextok);
 +              bcfree(ns);
 +              return;
 +      }
 +
 +      int mid = check_special(ns->lextok);
 +
 +      if (mid >= 0) {
 +              error_ln(ns->source_line, _("using reserved identifier `%s' as 
a namespace is not allowed"), ns->lextok);
 +              efree(ns->lextok);
 +              bcfree(ns);
 +              return;
 +      }
 +
 +      if (strcmp(ns->lextok, current_namespace) == 0)
 +              efree(ns->lextok);
 +      else if (strcmp(ns->lextok, awk_namespace) == 0) {
 +              efree(ns->lextok);
 +              current_namespace = awk_namespace;
 +      } else {
 +              if (current_namespace != awk_namespace)
 +                      efree((char *) current_namespace);
 +              current_namespace = ns->lextok;
 +      }
 +
 +      ns->lextok = NULL;
 +      bcfree(ns);
 +
 +      namespace_changed = true;
 +
 +      return;
 +}
 +
 +/* make_pp_namespace --- make namespace string for use by pretty printer */
 +
 +static char *
 +make_pp_namespace()
 +{
 +      size_t len = strlen(current_namespace) + 3;
 +      char *buf;
 +
 +      emalloc(buf, char *, len, "make_pp_namespace");
 +      sprintf(buf, "%s::", current_namespace);
 +
 +      return buf;
 +}
diff --cc awkgram.y
index 81b0b8a,4187630..0699db8
--- a/awkgram.y
+++ b/awkgram.y
@@@ -53,13 -53,28 +53,30 @@@ static int isnoeffect(OPCODE type)
  static INSTRUCTION *make_assignable(INSTRUCTION *ip);
  static void dumpintlstr(const char *str, size_t len);
  static void dumpintlstr2(const char *str1, size_t len1, const char *str2, 
size_t len2);
- static int include_source(INSTRUCTION *file);
- static int load_library(INSTRUCTION *file);
+ static bool include_source(INSTRUCTION *file, void **srcfile_p);
+ static bool load_library(INSTRUCTION *file, void **srcfile_p);
 +static void set_namespace(INSTRUCTION *ns);
  static void next_sourcefile(void);
  static char *tokexpand(void);
  static NODE *set_profile_text(NODE *n, const char *str, size_t len);
 +static char *make_pp_namespace();
+ static INSTRUCTION *trailing_comment;
+ static INSTRUCTION *outer_comment;
+ static INSTRUCTION *interblock_comment;
+ static INSTRUCTION *pending_comment;
+ 
+ #ifdef DEBUG_COMMENTS
+ static void
+ debug_print_comment_s(const char *name, INSTRUCTION *comment, int line)
+ {
+       if (comment != NULL)
+               fprintf(stderr, "%d: %s: <%.*s>\n", line, name,
+                               (int) (comment->memory->stlen - 1),
+                               comment->memory->stptr);
+ }
+ #define debug_print_comment(comment) \
+        debug_print_comment_s(# comment, comment, __LINE__)
+ #endif
  
  #define instruction(t)        bcalloc(t, 1, 0)
  
@@@ -275,18 -299,12 +305,22 @@@ rul
          {
                want_source = false;
                at_seen = false;
+               if ($3 != NULL && $4 != NULL) {
+                       SRCFILE *s = (SRCFILE *) $3;
+                       s->comment = $4;
+               }
                yyerrok;
          }
 +      | '@' LEX_NAMESPACE namespace statement_term
 +        {
 +              want_source = false;
 +              at_seen = false;
 +
 +              // this frees $3 storage in all cases
 +              set_namespace($3);
 +
 +              yyerrok;
 +        }
        ;
  
  source
@@@ -2543,6 -2610,6 +2663,16 @@@ mk_program(
                        (void) list_merge(cp, beginfile_block);
                        (void) list_merge(cp, endfile_block);
  
++                      if (outer_comment != NULL) {
++                              cp = list_merge(list_create(outer_comment), cp);
++                              outer_comment = NULL;
++                      }
++
++                      if (interblock_comment != NULL) {
++                              (void) list_append(cp, interblock_comment);
++                              interblock_comment = NULL;
++                      }
++
                        goto out;
  
                } else {
@@@ -2802,8 -2870,8 +2934,9 @@@ include_source(INSTRUCTION *file, void 
        lasttok = 0;
        lexeof = false;
        eof_warned = false;
 +      current_namespace = awk_namespace;
-       return 0;
+       *srcfile_p = (void *) s;
+       return true;
  }
  
  /* load_library --- load a shared library */
@@@ -4833,10 -4867,13 +4962,15 @@@ mk_function(INSTRUCTION *fi, INSTRUCTIO
        def->lasti->memory = dupnode(Nnull_string);
        (void) list_append(def, instruction(Op_K_return));
  
+       if (trailing_comment != NULL) {
+               (void) list_append(def, trailing_comment);
+               trailing_comment = NULL;
+       }
+ 
 -      if (do_pretty_print)
 +      if (do_pretty_print) {
 +              fi[3].ns_name = make_pp_namespace();
                (void) list_prepend(def, instruction(Op_exec_count));
 +      }
  
        /* fi->opcode = Op_func */
        (fi + 1)->firsti = def->nexti;
@@@ -5543,14 -5575,13 +5677,13 @@@ append_rule(INSTRUCTION *pattern, INSTR
                (rp + 1)->lasti = action->lasti;
                (rp + 2)->first_line = pattern->source_line;
                (rp + 2)->last_line = lastline;
-               if (block_comment != NULL) {
-                       ip = list_prepend(list_prepend(action, block_comment), 
rp);
-                       block_comment = NULL;
-               } else
-                       ip = list_prepend(action, rp);
- 
+               ip = list_prepend(action, rp);
+               if (interblock_comment != NULL) {
+                       ip = list_prepend(ip, interblock_comment);
+                       interblock_comment = NULL;
+               }
        } else {
 -              rp = bcalloc(Op_rule, 3, 0);
 +              rp = bcalloc(Op_rule, 4, 0);
                rp->in_rule = Rule;
                rp->source_file = source;
                tp = instruction(Op_no_op);
@@@ -6434,176 -6446,90 +6554,264 @@@ set_profile_text(NODE *n, const char *s
        return n;
  }
  
+ /*
+  * merge_comments --- merge c2 into c1 and free c2 if successful.
+  *    Allow c2 to be NULL, in which case just merged chained
+  *    comments in c1.
+  */
+ 
+ static void
+ merge_comments(INSTRUCTION *c1, INSTRUCTION *c2)
+ {
+       assert(c1->opcode == Op_comment);
+ 
+       if (c1->comment == NULL && c2 == NULL)  // nothing to do
+               return;
+ 
+       size_t total = c1->memory->stlen;
+       if (c1->comment != NULL)
+               total += 1 /* \n */ + c1->comment->memory->stlen;
+ 
+       if (c2 != NULL) {
+               assert(c2->opcode == Op_comment);
+               total += 1 /* \n */ + c2->memory->stlen;
+               if (c2->comment != NULL)
+                       total += c2->comment->memory->stlen + 1;
+       }
+ 
+       char *buffer;
+       emalloc(buffer, char *, total + 1, "merge_comments");
+ 
+       strcpy(buffer, c1->memory->stptr);
+       if (c1->comment != NULL) {
+               strcat(buffer, "\n");
+               strcat(buffer, c1->comment->memory->stptr);
+       }
+ 
+       if (c2 != NULL) {
+               strcat(buffer, "\n");
+               strcat(buffer, c2->memory->stptr);
+               if (c2->comment != NULL) {
+                       strcat(buffer, "\n");
+                       strcat(buffer, c2->comment->memory->stptr);
+               }
+ 
+               unref(c2->memory);
+               if (c2->comment != NULL) {
+                       unref(c2->comment->memory);
+                       bcfree(c2->comment);
+                       c2->comment = NULL;
+               }
+               bcfree(c2);
+       }
+ 
+       c1->memory->comment_type = BLOCK_COMMENT;
+       free(c1->memory->stptr);
+       c1->memory->stptr = buffer;
+       c1->memory->stlen = strlen(buffer);
+ 
+       // now free everything else
+       if (c1->comment != NULL) {
+               unref(c1->comment->memory);
+               bcfree(c1->comment);
+               c1->comment = NULL;
+       }
+ }
+ 
+ /* make_braced_statements --- handle `l_brace statements r_brace' with 
comments */
+ 
+ static INSTRUCTION *
+ make_braced_statements(INSTRUCTION *lbrace, INSTRUCTION *stmts, INSTRUCTION 
*rbrace)
+ {
+       INSTRUCTION *ip;
+ 
+       if (stmts == NULL)
+               ip = list_create(instruction(Op_no_op));
+       else
+               ip = stmts;
+ 
+       if (lbrace != NULL) {
+               INSTRUCTION *comment2 = lbrace->comment;
+               if (comment2 != NULL) {
+                       ip = list_prepend(ip, comment2);
+                       lbrace->comment = NULL;
+               }
+               ip = list_prepend(ip, lbrace);
+       }
+ 
+       return ip;
+ }
++
 +/* validate_qualified_name --- make sure that a qualified name is built 
correctly */
 +
 +/*
 + * This routine returns upon first error, no need to produce multiple, 
possibly
 + * conflicting / confusing error messages.
 + */
 +
 +bool
 +validate_qualified_name(char *token)
 +{
 +      char *cp, *cp2;
 +
 +      // no colon, by definition it's well formed
 +      if ((cp = strchr(token, ':')) == NULL)
 +              return true;
 +
 +      if (do_traditional || do_posix) {
 +              error_ln(sourceline, _("identifier %s: qualified names not 
allowed in traditional / POSIX mode"), token);
 +              return false;
 +      }
 +
 +      if (cp[1] != ':') {     // could happen from command line
 +              error_ln(sourceline, _("identifier %s: namespace separator is 
two colons, not one"), token);
 +              return false;
 +      }
 +
 +      if (! is_letter(cp[2])) {
 +              error_ln(sourceline,
 +                              _("qualified identifier `%s' is badly formed"),
 +                              token);
 +              return false;
 +      }
 +
 +      if ((cp2 = strchr(cp+2, ':')) != NULL) {
 +              error_ln(sourceline,
 +                      _("identifier `%s': namespace separator can only appear 
once in a qualified name"),
 +                      token);
 +              return false;
 +      }
 +
 +      return true;
 +}
 +
 +/* check_qualified_name --- decide if a name is special or not */
 +
 +int
 +check_qualified_name(char *token)
 +{
 +      char *cp;
 +
 +      if ((cp = strchr(token, ':')) == NULL && current_namespace == 
awk_namespace)
 +              return check_special(token);
 +
 +      /*
 +       * Now it's more complicated.  Here are the rules.
 +       *
 +       * 1. Namespace name cannot be a standard awk reserved word or function.
 +       * 2. Subordinate part of the name cannot be standard awk reserved word 
or function.
 +       * 3. If namespace part is explicitly "awk", return result of 
check_special().
 +       * 4. Else return -1 (gawk extensions allowed, we check standard awk in 
step 2).
 +       */
 +
 +      const struct token *tok;
 +      int i;
 +      if (cp == NULL) {       // namespace not awk, but a simple identifier
 +              i = check_special(token);
 +              if (i < 0)
 +                      return i;
 +
 +              tok = & tokentab[i];
 +              if ((tok->flags & GAWKX) != 0 && tok->class == LEX_BUILTIN)
 +                      return -1;
 +              else
 +                      return i;
 +      }
 +
 +      char *ns, *end, *subname;
 +      ns = token;
 +      *(end = cp) = '\0';     // temporarily turn it into standalone string
 +      subname = end + 2;
 +
 +      // First check the namespace part
 +      i = check_special(ns);
 +      if (i >= 0 && (tokentab[i].flags & GAWKX) == 0) {
 +              error_ln(sourceline, _("using reserved identifier `%s' as a 
namespace is not allowed"), ns);
 +              goto done;
 +      }
 +
 +      // Now check the subordinate part
 +      i = check_special(subname);
 +      if (i >= 0 && (tokentab[i].flags & GAWKX) == 0 && strcmp(ns, "awk") != 
0) {
 +              error_ln(sourceline, _("using reserved identifier `%s' as 
second component of a qualified name is not allowed"), subname);
 +              goto done;
 +      }
 +
 +      if (strcmp(ns, "awk") == 0) {
 +              i = check_special(subname);
 +              if (i >= 0) {
 +                      if ((tokentab[i].flags & GAWKX) != 0 && 
tokentab[i].class == LEX_BUILTIN)
 +                              ;       // gawk additional builtin function, is 
ok
 +                      else
 +                              error_ln(sourceline, _("using reserved 
identifier `%s' as second component of a qualified name is not allowed"), 
subname);
 +              }
 +      } else
 +              i = -1;
 +done:
 +      *end = ':';
 +      return i;
 +}
 +
 +/* set_namespace --- change the current namespace */
 +
 +static void
 +set_namespace(INSTRUCTION *ns)
 +{
 +      if (ns == NULL)
 +              return;
 +
 +      if (do_traditional || do_posix) {
 +              error_ln(ns->source_line, _("@namespace is a gawk extension"));
 +              efree(ns->lextok);
 +              bcfree(ns);
 +              return;
 +      }
 +
 +      if (! is_valid_identifier(ns->lextok)) {
 +              error_ln(ns->source_line, _("namespace name `%s' must meet 
identifier naming rules"), ns->lextok);
 +              efree(ns->lextok);
 +              bcfree(ns);
 +              return;
 +      }
 +
 +      int mid = check_special(ns->lextok);
 +
 +      if (mid >= 0) {
 +              error_ln(ns->source_line, _("using reserved identifier `%s' as 
a namespace is not allowed"), ns->lextok);
 +              efree(ns->lextok);
 +              bcfree(ns);
 +              return;
 +      }
 +
 +      if (strcmp(ns->lextok, current_namespace) == 0)
 +              efree(ns->lextok);
 +      else if (strcmp(ns->lextok, awk_namespace) == 0) {
 +              efree(ns->lextok);
 +              current_namespace = awk_namespace;
 +      } else {
 +              if (current_namespace != awk_namespace)
 +                      efree((char *) current_namespace);
 +              current_namespace = ns->lextok;
 +      }
 +
 +      ns->lextok = NULL;
 +      bcfree(ns);
 +
 +      namespace_changed = true;
 +
 +      return;
 +}
 +
 +/* make_pp_namespace --- make namespace string for use by pretty printer */
 +
 +static char *
 +make_pp_namespace()
 +{
 +      size_t len = strlen(current_namespace) + 3;
 +      char *buf;
 +
 +      emalloc(buf, char *, len, "make_pp_namespace");
 +      sprintf(buf, "%s::", current_namespace);
 +
 +      return buf;
 +}
diff --cc doc/gawk.info
index 5d7ad8b,e073835..8921187
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -36603,592 -36164,580 +36600,591 @@@ Inde
  
  Tag Table:
  Node: Top1200
 -Node: Foreword343320
 -Node: Foreword447762
 -Node: Preface49294
 -Ref: Preface-Footnote-152153
 -Ref: Preface-Footnote-252260
 -Ref: Preface-Footnote-352494
 -Node: History52636
 -Node: Names54988
 -Ref: Names-Footnote-156082
 -Node: This Manual56229
 -Ref: This Manual-Footnote-162714
 -Node: Conventions62814
 -Node: Manual History65169
 -Ref: Manual History-Footnote-168166
 -Ref: Manual History-Footnote-268207
 -Node: How To Contribute68281
 -Node: Acknowledgments69207
 -Node: Getting Started74115
 -Node: Running gawk76554
 -Node: One-shot77744
 -Node: Read Terminal79007
 -Node: Long81000
 -Node: Executable Scripts82513
 -Ref: Executable Scripts-Footnote-185308
 -Node: Comments85411
 -Node: Quoting87895
 -Node: DOS Quoting93412
 -Node: Sample Data Files95468
 -Node: Very Simple98063
 -Node: Two Rules102965
 -Node: More Complex104850
 -Node: Statements/Lines107716
 -Ref: Statements/Lines-Footnote-1112175
 -Node: Other Features112440
 -Node: When113376
 -Ref: When-Footnote-1115130
 -Node: Intro Summary115195
 -Node: Invoking Gawk116079
 -Node: Command Line117593
 -Node: Options118391
 -Ref: Options-Footnote-1134953
 -Ref: Options-Footnote-2135184
 -Node: Other Arguments135209
 -Node: Naming Standard Input138156
 -Node: Environment Variables139249
 -Node: AWKPATH Variable139807
 -Ref: AWKPATH Variable-Footnote-1143219
 -Ref: AWKPATH Variable-Footnote-2143253
 -Node: AWKLIBPATH Variable143514
 -Node: Other Environment Variables145172
 -Node: Exit Status148993
 -Node: Include Files149670
 -Node: Loading Shared Libraries153195
 -Node: Obsolete154623
 -Node: Undocumented155315
 -Node: Invoking Summary155612
 -Node: Regexp157272
 -Node: Regexp Usage158726
 -Node: Escape Sequences160763
 -Node: Regexp Operators166995
 -Ref: Regexp Operators-Footnote-1174411
 -Ref: Regexp Operators-Footnote-2174558
 -Node: Bracket Expressions174656
 -Ref: table-char-classes177132
 -Node: Leftmost Longest180458
 -Node: Computed Regexps181761
 -Node: GNU Regexp Operators185188
 -Node: Case-sensitivity188867
 -Ref: Case-sensitivity-Footnote-1191754
 -Ref: Case-sensitivity-Footnote-2191989
 -Node: Regexp Summary192097
 -Node: Reading Files193563
 -Node: Records195832
 -Node: awk split records196907
 -Node: gawk split records202182
 -Ref: gawk split records-Footnote-1206768
 -Node: Fields206805
 -Node: Nonconstant Fields209546
 -Ref: Nonconstant Fields-Footnote-1211782
 -Node: Changing Fields211986
 -Node: Field Separators218017
 -Node: Default Field Splitting220715
 -Node: Regexp Field Splitting221833
 -Node: Single Character Fields225186
 -Node: Command Line Field Separator226246
 -Node: Full Line Fields229464
 -Ref: Full Line Fields-Footnote-1230986
 -Ref: Full Line Fields-Footnote-2231032
 -Node: Field Splitting Summary231133
 -Node: Constant Size233207
 -Node: Fixed width data233939
 -Node: Skipping intervening237406
 -Node: Allowing trailing data238204
 -Node: Fields with fixed data239241
 -Node: Splitting By Content240759
 -Ref: Splitting By Content-Footnote-1244409
 -Node: Testing field creation244572
 -Node: Multiple Line246197
 -Ref: Multiple Line-Footnote-1252081
 -Node: Getline252260
 -Node: Plain Getline254729
 -Node: Getline/Variable257370
 -Node: Getline/File258521
 -Node: Getline/Variable/File259909
 -Ref: Getline/Variable/File-Footnote-1261514
 -Node: Getline/Pipe261602
 -Node: Getline/Variable/Pipe264309
 -Node: Getline/Coprocess265444
 -Node: Getline/Variable/Coprocess266711
 -Node: Getline Notes267453
 -Node: Getline Summary270250
 -Ref: table-getline-variants270674
 -Node: Read Timeout271422
 -Ref: Read Timeout-Footnote-1275328
 -Node: Retrying Input275386
 -Node: Command-line directories276585
 -Node: Input Summary277491
 -Node: Input Exercises280663
 -Node: Printing281391
 -Node: Print283225
 -Node: Print Examples284682
 -Node: Output Separators287462
 -Node: OFMT289479
 -Node: Printf290835
 -Node: Basic Printf291620
 -Node: Control Letters293194
 -Node: Format Modifiers298356
 -Node: Printf Examples304371
 -Node: Redirection306857
 -Node: Special FD313698
 -Ref: Special FD-Footnote-1316866
 -Node: Special Files316940
 -Node: Other Inherited Files317557
 -Node: Special Network318558
 -Node: Special Caveats319418
 -Node: Close Files And Pipes320367
 -Ref: table-close-pipe-return-values327274
 -Ref: Close Files And Pipes-Footnote-1328087
 -Ref: Close Files And Pipes-Footnote-2328235
 -Node: Nonfatal328387
 -Node: Output Summary330725
 -Node: Output Exercises331947
 -Node: Expressions332626
 -Node: Values333814
 -Node: Constants334492
 -Node: Scalar Constants335183
 -Ref: Scalar Constants-Footnote-1337708
 -Node: Nondecimal-numbers337958
 -Node: Regexp Constants340959
 -Node: Using Constant Regexps341485
 -Node: Standard Regexp Constants342107
 -Node: Strong Regexp Constants345295
 -Node: Variables348253
 -Node: Using Variables348910
 -Node: Assignment Options350820
 -Node: Conversion353287
 -Node: Strings And Numbers353811
 -Ref: Strings And Numbers-Footnote-1356874
 -Node: Locale influences conversions356983
 -Ref: table-locale-affects359741
 -Node: All Operators360359
 -Node: Arithmetic Ops360988
 -Node: Concatenation363494
 -Ref: Concatenation-Footnote-1366341
 -Node: Assignment Ops366448
 -Ref: table-assign-ops371439
 -Node: Increment Ops372752
 -Node: Truth Values and Conditions376212
 -Node: Truth Values377286
 -Node: Typing and Comparison378334
 -Node: Variable Typing379154
 -Ref: Variable Typing-Footnote-1385617
 -Ref: Variable Typing-Footnote-2385689
 -Node: Comparison Operators385766
 -Ref: table-relational-ops386185
 -Node: POSIX String Comparison389680
 -Ref: POSIX String Comparison-Footnote-1391375
 -Ref: POSIX String Comparison-Footnote-2391514
 -Node: Boolean Ops391598
 -Ref: Boolean Ops-Footnote-1396080
 -Node: Conditional Exp396172
 -Node: Function Calls397908
 -Node: Precedence401785
 -Node: Locales405444
 -Node: Expressions Summary407076
 -Node: Patterns and Actions409649
 -Node: Pattern Overview410769
 -Node: Regexp Patterns412446
 -Node: Expression Patterns412988
 -Node: Ranges416769
 -Node: BEGIN/END419877
 -Node: Using BEGIN/END420638
 -Ref: Using BEGIN/END-Footnote-1423374
 -Node: I/O And BEGIN/END423480
 -Node: BEGINFILE/ENDFILE425794
 -Node: Empty428707
 -Node: Using Shell Variables429024
 -Node: Action Overview431298
 -Node: Statements433623
 -Node: If Statement435471
 -Node: While Statement436966
 -Node: Do Statement438994
 -Node: For Statement440142
 -Node: Switch Statement443313
 -Node: Break Statement445699
 -Node: Continue Statement447791
 -Node: Next Statement449618
 -Node: Nextfile Statement452001
 -Node: Exit Statement454653
 -Node: Built-in Variables457056
 -Node: User-modified458189
 -Node: Auto-set465956
 -Ref: Auto-set-Footnote-1482763
 -Ref: Auto-set-Footnote-2482969
 -Node: ARGC and ARGV483025
 -Node: Pattern Action Summary487238
 -Node: Arrays489668
 -Node: Array Basics490997
 -Node: Array Intro491841
 -Ref: figure-array-elements493816
 -Ref: Array Intro-Footnote-1496520
 -Node: Reference to Elements496648
 -Node: Assigning Elements499112
 -Node: Array Example499603
 -Node: Scanning an Array501362
 -Node: Controlling Scanning504384
 -Ref: Controlling Scanning-Footnote-1509783
 -Node: Numeric Array Subscripts510099
 -Node: Uninitialized Subscripts512283
 -Node: Delete513902
 -Ref: Delete-Footnote-1516654
 -Node: Multidimensional516711
 -Node: Multiscanning519806
 -Node: Arrays of Arrays521397
 -Node: Arrays Summary526165
 -Node: Functions528258
 -Node: Built-in529296
 -Node: Calling Built-in530377
 -Node: Numeric Functions532373
 -Ref: Numeric Functions-Footnote-1536401
 -Ref: Numeric Functions-Footnote-2536758
 -Ref: Numeric Functions-Footnote-3536806
 -Node: String Functions537078
 -Ref: String Functions-Footnote-1560936
 -Ref: String Functions-Footnote-2561064
 -Ref: String Functions-Footnote-3561312
 -Node: Gory Details561399
 -Ref: table-sub-escapes563190
 -Ref: table-sub-proposed564709
 -Ref: table-posix-sub566072
 -Ref: table-gensub-escapes567613
 -Ref: Gory Details-Footnote-1568436
 -Node: I/O Functions568590
 -Ref: table-system-return-values575058
 -Ref: I/O Functions-Footnote-1577138
 -Ref: I/O Functions-Footnote-2577286
 -Node: Time Functions577406
 -Ref: Time Functions-Footnote-1588077
 -Ref: Time Functions-Footnote-2588145
 -Ref: Time Functions-Footnote-3588303
 -Ref: Time Functions-Footnote-4588414
 -Ref: Time Functions-Footnote-5588526
 -Ref: Time Functions-Footnote-6588753
 -Node: Bitwise Functions589019
 -Ref: table-bitwise-ops589613
 -Ref: Bitwise Functions-Footnote-1595676
 -Ref: Bitwise Functions-Footnote-2595849
 -Node: Type Functions596040
 -Node: I18N Functions598791
 -Node: User-defined600442
 -Node: Definition Syntax601247
 -Ref: Definition Syntax-Footnote-1606934
 -Node: Function Example607005
 -Ref: Function Example-Footnote-1609927
 -Node: Function Caveats609949
 -Node: Calling A Function610467
 -Node: Variable Scope611425
 -Node: Pass By Value/Reference614419
 -Node: Return Statement617918
 -Node: Dynamic Typing620897
 -Node: Indirect Calls621827
 -Ref: Indirect Calls-Footnote-1632079
 -Node: Functions Summary632207
 -Node: Library Functions634912
 -Ref: Library Functions-Footnote-1638519
 -Ref: Library Functions-Footnote-2638662
 -Node: Library Names638833
 -Ref: Library Names-Footnote-1642293
 -Ref: Library Names-Footnote-2642516
 -Node: General Functions642602
 -Node: Strtonum Function643705
 -Node: Assert Function646727
 -Node: Round Function650053
 -Node: Cliff Random Function651593
 -Node: Ordinal Functions652609
 -Ref: Ordinal Functions-Footnote-1655672
 -Ref: Ordinal Functions-Footnote-2655924
 -Node: Join Function656134
 -Ref: Join Function-Footnote-1657904
 -Node: Getlocaltime Function658104
 -Node: Readfile Function661846
 -Node: Shell Quoting663823
 -Node: Data File Management665224
 -Node: Filetrans Function665856
 -Node: Rewind Function669952
 -Node: File Checking671862
 -Ref: File Checking-Footnote-1673196
 -Node: Empty Files673397
 -Node: Ignoring Assigns675376
 -Node: Getopt Function676926
 -Ref: Getopt Function-Footnote-1688395
 -Node: Passwd Functions688595
 -Ref: Passwd Functions-Footnote-1697434
 -Node: Group Functions697522
 -Ref: Group Functions-Footnote-1705420
 -Node: Walking Arrays705627
 -Node: Library Functions Summary708635
 -Node: Library Exercises710041
 -Node: Sample Programs710506
 -Node: Running Examples711276
 -Node: Clones712004
 -Node: Cut Program713228
 -Node: Egrep Program723157
 -Ref: Egrep Program-Footnote-1730669
 -Node: Id Program730779
 -Node: Split Program734459
 -Ref: Split Program-Footnote-1737917
 -Node: Tee Program738046
 -Node: Uniq Program740836
 -Node: Wc Program748262
 -Ref: Wc Program-Footnote-1752517
 -Node: Miscellaneous Programs752611
 -Node: Dupword Program753824
 -Node: Alarm Program755854
 -Node: Translate Program760709
 -Ref: Translate Program-Footnote-1765274
 -Node: Labels Program765544
 -Ref: Labels Program-Footnote-1768895
 -Node: Word Sorting768979
 -Node: History Sorting773051
 -Node: Extract Program774886
 -Node: Simple Sed782940
 -Node: Igawk Program786014
 -Ref: Igawk Program-Footnote-1800345
 -Ref: Igawk Program-Footnote-2800547
 -Ref: Igawk Program-Footnote-3800669
 -Node: Anagram Program800784
 -Node: Signature Program803846
 -Node: Programs Summary805093
 -Node: Programs Exercises806307
 -Ref: Programs Exercises-Footnote-1810436
 -Node: Advanced Features810527
 -Node: Nondecimal Data812517
 -Node: Array Sorting814108
 -Node: Controlling Array Traversal814808
 -Ref: Controlling Array Traversal-Footnote-1823176
 -Node: Array Sorting Functions823294
 -Ref: Array Sorting Functions-Footnote-1828385
 -Node: Two-way I/O828581
 -Ref: Two-way I/O-Footnote-1836301
 -Ref: Two-way I/O-Footnote-2836488
 -Node: TCP/IP Networking836570
 -Node: Profiling839688
 -Node: Advanced Features Summary848693
 -Node: Internationalization850537
 -Node: I18N and L10N852017
 -Node: Explaining gettext852704
 -Ref: Explaining gettext-Footnote-1858596
 -Ref: Explaining gettext-Footnote-2858781
 -Node: Programmer i18n858946
 -Ref: Programmer i18n-Footnote-1863895
 -Node: Translator i18n863944
 -Node: String Extraction864738
 -Ref: String Extraction-Footnote-1865870
 -Node: Printf Ordering865956
 -Ref: Printf Ordering-Footnote-1868742
 -Node: I18N Portability868806
 -Ref: I18N Portability-Footnote-1871262
 -Node: I18N Example871325
 -Ref: I18N Example-Footnote-1874131
 -Node: Gawk I18N874204
 -Node: I18N Summary874849
 -Node: Debugger876190
 -Node: Debugging877213
 -Node: Debugging Concepts877654
 -Node: Debugging Terms879463
 -Node: Awk Debugging882038
 -Node: Sample Debugging Session882944
 -Node: Debugger Invocation883478
 -Node: Finding The Bug884864
 -Node: List of Debugger Commands891342
 -Node: Breakpoint Control892675
 -Node: Debugger Execution Control896369
 -Node: Viewing And Changing Data899731
 -Node: Execution Stack903105
 -Node: Debugger Info904742
 -Node: Miscellaneous Debugger Commands908813
 -Node: Readline Support913875
 -Node: Limitations914771
 -Node: Debugging Summary916880
 -Node: Arbitrary Precision Arithmetic918159
 -Node: Computer Arithmetic919644
 -Ref: table-numeric-ranges923410
 -Ref: table-floating-point-ranges923903
 -Ref: Computer Arithmetic-Footnote-1924561
 -Node: Math Definitions924618
 -Ref: table-ieee-formats927934
 -Ref: Math Definitions-Footnote-1928537
 -Node: MPFR features928642
 -Node: FP Math Caution930360
 -Ref: FP Math Caution-Footnote-1931432
 -Node: Inexactness of computations931801
 -Node: Inexact representation932761
 -Node: Comparing FP Values934121
 -Node: Errors accumulate935362
 -Node: Getting Accuracy936795
 -Node: Try To Round939505
 -Node: Setting precision940404
 -Ref: table-predefined-precision-strings941101
 -Node: Setting the rounding mode942931
 -Ref: table-gawk-rounding-modes943305
 -Ref: Setting the rounding mode-Footnote-1947236
 -Node: Arbitrary Precision Integers947415
 -Ref: Arbitrary Precision Integers-Footnote-1950590
 -Node: Checking for MPFR950739
 -Node: POSIX Floating Point Problems952213
 -Ref: POSIX Floating Point Problems-Footnote-1956498
 -Node: Floating point summary956536
 -Node: Dynamic Extensions958726
 -Node: Extension Intro960279
 -Node: Plugin License961545
 -Node: Extension Mechanism Outline962342
 -Ref: figure-load-extension962781
 -Ref: figure-register-new-function964346
 -Ref: figure-call-new-function965438
 -Node: Extension API Description967500
 -Node: Extension API Functions Introduction969142
 -Node: General Data Types974682
 -Ref: General Data Types-Footnote-1983043
 -Node: Memory Allocation Functions983342
 -Ref: Memory Allocation Functions-Footnote-1987552
 -Node: Constructor Functions987651
 -Node: Registration Functions991237
 -Node: Extension Functions991922
 -Node: Exit Callback Functions997137
 -Node: Extension Version String998387
 -Node: Input Parsers999050
 -Node: Output Wrappers1011771
 -Node: Two-way processors1016283
 -Node: Printing Messages1018548
 -Ref: Printing Messages-Footnote-11019719
 -Node: Updating ERRNO1019872
 -Node: Requesting Values1020611
 -Ref: table-value-types-returned1021348
 -Node: Accessing Parameters1022284
 -Node: Symbol Table Access1023519
 -Node: Symbol table by name1024031
 -Node: Symbol table by cookie1025820
 -Ref: Symbol table by cookie-Footnote-11030005
 -Node: Cached values1030069
 -Ref: Cached values-Footnote-11033605
 -Node: Array Manipulation1033758
 -Ref: Array Manipulation-Footnote-11034849
 -Node: Array Data Types1034886
 -Ref: Array Data Types-Footnote-11037544
 -Node: Array Functions1037636
 -Node: Flattening Arrays1042134
 -Node: Creating Arrays1049110
 -Node: Redirection API1053877
 -Node: Extension API Variables1056710
 -Node: Extension Versioning1057421
 -Ref: gawk-api-version1057850
 -Node: Extension GMP/MPFR Versioning1059581
 -Node: Extension API Informational Variables1061209
 -Node: Extension API Boilerplate1062282
 -Node: Changes from API V11066256
 -Node: Finding Extensions1067828
 -Node: Extension Example1068387
 -Node: Internal File Description1069185
 -Node: Internal File Ops1073265
 -Ref: Internal File Ops-Footnote-11084615
 -Node: Using Internal File Ops1084755
 -Ref: Using Internal File Ops-Footnote-11087138
 -Node: Extension Samples1087412
 -Node: Extension Sample File Functions1088941
 -Node: Extension Sample Fnmatch1096590
 -Node: Extension Sample Fork1098077
 -Node: Extension Sample Inplace1099295
 -Node: Extension Sample Ord1102512
 -Node: Extension Sample Readdir1103348
 -Ref: table-readdir-file-types1104237
 -Node: Extension Sample Revout1105042
 -Node: Extension Sample Rev2way1105631
 -Node: Extension Sample Read write array1106371
 -Node: Extension Sample Readfile1108313
 -Node: Extension Sample Time1109408
 -Node: Extension Sample API Tests1110756
 -Node: gawkextlib1111248
 -Node: Extension summary1114166
 -Node: Extension Exercises1117868
 -Node: Language History1119366
 -Node: V7/SVR3.11121022
 -Node: SVR41123174
 -Node: POSIX1124608
 -Node: BTL1125988
 -Node: POSIX/GNU1126717
 -Node: Feature History1132495
 -Node: Common Extensions1148541
 -Node: Ranges and Locales1149824
 -Ref: Ranges and Locales-Footnote-11154440
 -Ref: Ranges and Locales-Footnote-21154467
 -Ref: Ranges and Locales-Footnote-31154702
 -Node: Contributors1154923
 -Node: History summary1160868
 -Node: Installation1162248
 -Node: Gawk Distribution1163192
 -Node: Getting1163676
 -Node: Extracting1164639
 -Node: Distribution contents1166277
 -Node: Unix Installation1172757
 -Node: Quick Installation1173439
 -Node: Shell Startup Files1175853
 -Node: Additional Configuration Options1176942
 -Node: Configuration Philosophy1179107
 -Node: Non-Unix Installation1181476
 -Node: PC Installation1181936
 -Node: PC Binary Installation1182774
 -Node: PC Compiling1183209
 -Node: PC Using1184326
 -Node: Cygwin1187879
 -Node: MSYS1188978
 -Node: VMS Installation1189479
 -Node: VMS Compilation1190270
 -Ref: VMS Compilation-Footnote-11191499
 -Node: VMS Dynamic Extensions1191557
 -Node: VMS Installation Details1193242
 -Node: VMS Running1195495
 -Node: VMS GNV1199774
 -Node: VMS Old Gawk1200509
 -Node: Bugs1200980
 -Node: Bug address1201643
 -Node: Usenet1204625
 -Node: Maintainers1205629
 -Node: Other Versions1206890
 -Node: Installation summary1213804
 -Node: Notes1215006
 -Node: Compatibility Mode1215800
 -Node: Additions1216582
 -Node: Accessing The Source1217507
 -Node: Adding Code1218944
 -Node: New Ports1225163
 -Node: Derived Files1229651
 -Ref: Derived Files-Footnote-11235297
 -Ref: Derived Files-Footnote-21235332
 -Ref: Derived Files-Footnote-31235930
 -Node: Future Extensions1236044
 -Node: Implementation Limitations1236702
 -Node: Extension Design1237885
 -Node: Old Extension Problems1239029
 -Ref: Old Extension Problems-Footnote-11240547
 -Node: Extension New Mechanism Goals1240604
 -Ref: Extension New Mechanism Goals-Footnote-11243968
 -Node: Extension Other Design Decisions1244157
 -Node: Extension Future Growth1246270
 -Node: Notes summary1247106
 -Node: Basic Concepts1248281
 -Node: Basic High Level1248962
 -Ref: figure-general-flow1249244
 -Ref: figure-process-flow1249929
 -Ref: Basic High Level-Footnote-11253230
 -Node: Basic Data Typing1253415
 -Node: Glossary1256743
 -Node: Copying1288581
 -Node: GNU Free Documentation License1326124
 -Node: Index1351244
 +Node: Foreword344048
 +Node: Foreword448490
 +Node: Preface50022
 +Ref: Preface-Footnote-152881
 +Ref: Preface-Footnote-252988
 +Ref: Preface-Footnote-353222
 +Node: History53364
 +Node: Names55716
 +Ref: Names-Footnote-156810
 +Node: This Manual56957
 +Ref: This Manual-Footnote-163596
 +Node: Conventions63696
 +Node: Manual History66051
 +Ref: Manual History-Footnote-169048
 +Ref: Manual History-Footnote-269089
 +Node: How To Contribute69163
 +Node: Acknowledgments70089
 +Node: Getting Started74997
 +Node: Running gawk77436
 +Node: One-shot78626
 +Node: Read Terminal79889
 +Node: Long81882
 +Node: Executable Scripts83395
 +Ref: Executable Scripts-Footnote-186190
 +Node: Comments86293
 +Node: Quoting88777
 +Node: DOS Quoting94294
 +Node: Sample Data Files96350
 +Node: Very Simple98945
 +Node: Two Rules103847
 +Node: More Complex105732
 +Node: Statements/Lines108598
 +Ref: Statements/Lines-Footnote-1113057
 +Node: Other Features113322
 +Node: When114258
 +Ref: When-Footnote-1116012
 +Node: Intro Summary116077
 +Node: Invoking Gawk116961
 +Node: Command Line118475
 +Node: Options119273
 +Ref: Options-Footnote-1136312
 +Ref: Options-Footnote-2136543
 +Node: Other Arguments136568
 +Node: Naming Standard Input139515
 +Node: Environment Variables140608
 +Node: AWKPATH Variable141166
 +Ref: AWKPATH Variable-Footnote-1144578
 +Ref: AWKPATH Variable-Footnote-2144612
 +Node: AWKLIBPATH Variable144873
 +Node: Other Environment Variables146531
 +Node: Exit Status150352
 +Node: Include Files151029
 +Node: Loading Shared Libraries154707
 +Node: Obsolete156135
 +Node: Undocumented156827
 +Node: Invoking Summary157124
 +Node: Regexp158784
 +Node: Regexp Usage160238
 +Node: Escape Sequences162275
 +Node: Regexp Operators168507
 +Ref: Regexp Operators-Footnote-1175923
 +Ref: Regexp Operators-Footnote-2176070
 +Node: Bracket Expressions176168
 +Ref: table-char-classes178644
 +Node: Leftmost Longest181970
 +Node: Computed Regexps183273
 +Node: GNU Regexp Operators186700
 +Node: Case-sensitivity190379
 +Ref: Case-sensitivity-Footnote-1193266
 +Ref: Case-sensitivity-Footnote-2193501
 +Node: Regexp Summary193609
 +Node: Reading Files195075
 +Node: Records197344
 +Node: awk split records198419
 +Node: gawk split records203694
 +Ref: gawk split records-Footnote-1208280
 +Node: Fields208317
 +Node: Nonconstant Fields211058
 +Ref: Nonconstant Fields-Footnote-1213294
 +Node: Changing Fields213498
 +Node: Field Separators219529
 +Node: Default Field Splitting222227
 +Node: Regexp Field Splitting223345
 +Node: Single Character Fields226698
 +Node: Command Line Field Separator227758
 +Node: Full Line Fields230976
 +Ref: Full Line Fields-Footnote-1232498
 +Ref: Full Line Fields-Footnote-2232544
 +Node: Field Splitting Summary232645
 +Node: Constant Size234719
 +Node: Fixed width data235451
 +Node: Skipping intervening238918
 +Node: Allowing trailing data239716
 +Node: Fields with fixed data240753
 +Node: Splitting By Content242271
 +Ref: Splitting By Content-Footnote-1245921
 +Node: Testing field creation246084
 +Node: Multiple Line247709
 +Ref: Multiple Line-Footnote-1253593
 +Node: Getline253772
 +Node: Plain Getline256241
 +Node: Getline/Variable258882
 +Node: Getline/File260033
 +Node: Getline/Variable/File261421
 +Ref: Getline/Variable/File-Footnote-1263026
 +Node: Getline/Pipe263114
 +Node: Getline/Variable/Pipe265821
 +Node: Getline/Coprocess266956
 +Node: Getline/Variable/Coprocess268223
 +Node: Getline Notes268965
 +Node: Getline Summary271762
 +Ref: table-getline-variants272186
 +Node: Read Timeout272934
 +Ref: Read Timeout-Footnote-1276840
 +Node: Retrying Input276898
 +Node: Command-line directories278097
 +Node: Input Summary279003
 +Node: Input Exercises282175
 +Node: Printing282903
 +Node: Print284737
 +Node: Print Examples286194
 +Node: Output Separators288974
 +Node: OFMT290991
 +Node: Printf292347
 +Node: Basic Printf293132
 +Node: Control Letters294706
 +Node: Format Modifiers299868
 +Node: Printf Examples305883
 +Node: Redirection308369
 +Node: Special FD315210
 +Ref: Special FD-Footnote-1318378
 +Node: Special Files318452
 +Node: Other Inherited Files319069
 +Node: Special Network320070
 +Node: Special Caveats320930
 +Node: Close Files And Pipes321879
 +Ref: table-close-pipe-return-values328786
 +Ref: Close Files And Pipes-Footnote-1329599
 +Ref: Close Files And Pipes-Footnote-2329747
 +Node: Nonfatal329899
 +Node: Output Summary332237
 +Node: Output Exercises333459
 +Node: Expressions334138
 +Node: Values335326
 +Node: Constants336004
 +Node: Scalar Constants336695
 +Ref: Scalar Constants-Footnote-1339220
 +Node: Nondecimal-numbers339470
 +Node: Regexp Constants342471
 +Node: Using Constant Regexps342997
 +Node: Standard Regexp Constants343619
 +Node: Strong Regexp Constants346807
 +Node: Variables349765
 +Node: Using Variables350422
 +Node: Assignment Options352332
 +Node: Conversion354799
 +Node: Strings And Numbers355323
 +Ref: Strings And Numbers-Footnote-1358386
 +Node: Locale influences conversions358495
 +Ref: table-locale-affects361253
 +Node: All Operators361871
 +Node: Arithmetic Ops362500
 +Node: Concatenation365006
 +Ref: Concatenation-Footnote-1367853
 +Node: Assignment Ops367960
 +Ref: table-assign-ops372951
 +Node: Increment Ops374264
 +Node: Truth Values and Conditions377724
 +Node: Truth Values378798
 +Node: Typing and Comparison379846
 +Node: Variable Typing380666
 +Ref: Variable Typing-Footnote-1387129
 +Ref: Variable Typing-Footnote-2387201
 +Node: Comparison Operators387278
 +Ref: table-relational-ops387697
 +Node: POSIX String Comparison391192
 +Ref: POSIX String Comparison-Footnote-1392887
 +Ref: POSIX String Comparison-Footnote-2393026
 +Node: Boolean Ops393110
 +Ref: Boolean Ops-Footnote-1397592
 +Node: Conditional Exp397684
 +Node: Function Calls399420
 +Node: Precedence403297
 +Node: Locales406956
 +Node: Expressions Summary408588
 +Node: Patterns and Actions411161
 +Node: Pattern Overview412281
 +Node: Regexp Patterns413958
 +Node: Expression Patterns414500
 +Node: Ranges418281
 +Node: BEGIN/END421389
 +Node: Using BEGIN/END422150
 +Ref: Using BEGIN/END-Footnote-1424886
 +Node: I/O And BEGIN/END424992
 +Node: BEGINFILE/ENDFILE427306
 +Node: Empty430219
 +Node: Using Shell Variables430536
 +Node: Action Overview432810
 +Node: Statements435135
 +Node: If Statement436983
 +Node: While Statement438478
 +Node: Do Statement440506
 +Node: For Statement441654
 +Node: Switch Statement444825
 +Node: Break Statement447211
 +Node: Continue Statement449303
 +Node: Next Statement451130
 +Node: Nextfile Statement453513
 +Node: Exit Statement456165
 +Node: Built-in Variables458568
 +Node: User-modified459701
 +Node: Auto-set467468
 +Ref: Auto-set-Footnote-1484275
 +Ref: Auto-set-Footnote-2484481
 +Node: ARGC and ARGV484537
 +Node: Pattern Action Summary488750
 +Node: Arrays491180
 +Node: Array Basics492509
 +Node: Array Intro493353
 +Ref: figure-array-elements495328
 +Ref: Array Intro-Footnote-1498032
 +Node: Reference to Elements498160
 +Node: Assigning Elements500624
 +Node: Array Example501115
 +Node: Scanning an Array502874
 +Node: Controlling Scanning505896
 +Ref: Controlling Scanning-Footnote-1511295
 +Node: Numeric Array Subscripts511611
 +Node: Uninitialized Subscripts513795
 +Node: Delete515414
 +Ref: Delete-Footnote-1518166
 +Node: Multidimensional518223
 +Node: Multiscanning521318
 +Node: Arrays of Arrays522909
 +Node: Arrays Summary527677
 +Node: Functions529770
 +Node: Built-in530808
 +Node: Calling Built-in531889
 +Node: Numeric Functions533885
 +Ref: Numeric Functions-Footnote-1537913
 +Ref: Numeric Functions-Footnote-2538270
 +Ref: Numeric Functions-Footnote-3538318
 +Node: String Functions538590
 +Ref: String Functions-Footnote-1562448
 +Ref: String Functions-Footnote-2562576
 +Ref: String Functions-Footnote-3562824
 +Node: Gory Details562911
 +Ref: table-sub-escapes564702
 +Ref: table-sub-proposed566221
 +Ref: table-posix-sub567584
 +Ref: table-gensub-escapes569125
 +Ref: Gory Details-Footnote-1569948
 +Node: I/O Functions570102
 +Ref: table-system-return-values576570
 +Ref: I/O Functions-Footnote-1578650
 +Ref: I/O Functions-Footnote-2578798
 +Node: Time Functions578918
 +Ref: Time Functions-Footnote-1589589
 +Ref: Time Functions-Footnote-2589657
 +Ref: Time Functions-Footnote-3589815
 +Ref: Time Functions-Footnote-4589926
 +Ref: Time Functions-Footnote-5590038
 +Ref: Time Functions-Footnote-6590265
 +Node: Bitwise Functions590531
 +Ref: table-bitwise-ops591125
 +Ref: Bitwise Functions-Footnote-1597188
 +Ref: Bitwise Functions-Footnote-2597361
 +Node: Type Functions597552
 +Node: I18N Functions600303
 +Node: User-defined601954
 +Node: Definition Syntax602759
 +Ref: Definition Syntax-Footnote-1608446
 +Node: Function Example608517
 +Ref: Function Example-Footnote-1611439
 +Node: Function Caveats611461
 +Node: Calling A Function611979
 +Node: Variable Scope612937
 +Node: Pass By Value/Reference615931
 +Node: Return Statement619430
 +Node: Dynamic Typing622409
 +Node: Indirect Calls623339
 +Ref: Indirect Calls-Footnote-1633591
 +Node: Functions Summary633719
 +Node: Library Functions636424
 +Ref: Library Functions-Footnote-1640031
 +Ref: Library Functions-Footnote-2640174
 +Node: Library Names640345
 +Ref: Library Names-Footnote-1644021
 +Ref: Library Names-Footnote-2644244
 +Node: General Functions644330
 +Node: Strtonum Function645433
 +Node: Assert Function648455
 +Node: Round Function651781
 +Node: Cliff Random Function653321
 +Node: Ordinal Functions654337
 +Ref: Ordinal Functions-Footnote-1657400
 +Ref: Ordinal Functions-Footnote-2657652
 +Node: Join Function657862
 +Ref: Join Function-Footnote-1659632
 +Node: Getlocaltime Function659832
 +Node: Readfile Function663574
 +Node: Shell Quoting665551
 +Node: Data File Management666952
 +Node: Filetrans Function667584
 +Node: Rewind Function671680
 +Node: File Checking673590
 +Ref: File Checking-Footnote-1674924
 +Node: Empty Files675125
 +Node: Ignoring Assigns677104
 +Node: Getopt Function678654
 +Ref: Getopt Function-Footnote-1690123
 +Node: Passwd Functions690323
 +Ref: Passwd Functions-Footnote-1699162
 +Node: Group Functions699250
 +Ref: Group Functions-Footnote-1707148
 +Node: Walking Arrays707355
 +Node: Library Functions Summary710363
 +Node: Library Exercises711769
 +Node: Sample Programs712234
 +Node: Running Examples713004
 +Node: Clones713732
 +Node: Cut Program714956
 +Node: Egrep Program724885
 +Ref: Egrep Program-Footnote-1732397
 +Node: Id Program732507
 +Node: Split Program736187
 +Ref: Split Program-Footnote-1739645
 +Node: Tee Program739774
 +Node: Uniq Program742564
 +Node: Wc Program749990
 +Ref: Wc Program-Footnote-1754245
 +Node: Miscellaneous Programs754339
 +Node: Dupword Program755552
 +Node: Alarm Program757582
 +Node: Translate Program762437
 +Ref: Translate Program-Footnote-1767002
 +Node: Labels Program767272
 +Ref: Labels Program-Footnote-1770623
 +Node: Word Sorting770707
 +Node: History Sorting774779
 +Node: Extract Program776614
 +Node: Simple Sed784668
 +Node: Igawk Program787742
 +Ref: Igawk Program-Footnote-1802073
 +Ref: Igawk Program-Footnote-2802275
 +Ref: Igawk Program-Footnote-3802397
 +Node: Anagram Program802512
 +Node: Signature Program805574
 +Node: Programs Summary806821
 +Node: Programs Exercises808035
 +Ref: Programs Exercises-Footnote-1812164
 +Node: Advanced Features812255
 +Node: Nondecimal Data814245
 +Node: Array Sorting815836
 +Node: Controlling Array Traversal816536
 +Ref: Controlling Array Traversal-Footnote-1824904
 +Node: Array Sorting Functions825022
 +Ref: Array Sorting Functions-Footnote-1830113
 +Node: Two-way I/O830309
 +Ref: Two-way I/O-Footnote-1838029
 +Ref: Two-way I/O-Footnote-2838216
 +Node: TCP/IP Networking838298
 +Node: Profiling841416
- Ref: Profiling-Footnote-1850088
- Node: Advanced Features Summary850411
- Node: Internationalization852255
- Node: I18N and L10N853735
- Node: Explaining gettext854422
- Ref: Explaining gettext-Footnote-1860314
- Ref: Explaining gettext-Footnote-2860499
- Node: Programmer i18n860664
- Ref: Programmer i18n-Footnote-1865613
- Node: Translator i18n865662
- Node: String Extraction866456
- Ref: String Extraction-Footnote-1867588
- Node: Printf Ordering867674
- Ref: Printf Ordering-Footnote-1870460
- Node: I18N Portability870524
- Ref: I18N Portability-Footnote-1872980
- Node: I18N Example873043
- Ref: I18N Example-Footnote-1875849
- Node: Gawk I18N875922
- Node: I18N Summary876567
- Node: Debugger877908
- Node: Debugging878911
- Node: Debugging Concepts879352
- Node: Debugging Terms881161
- Node: Awk Debugging883736
- Node: Sample Debugging Session884642
- Node: Debugger Invocation885176
- Node: Finding The Bug886562
- Node: List of Debugger Commands893040
- Node: Breakpoint Control894373
- Node: Debugger Execution Control898067
- Node: Viewing And Changing Data901429
- Node: Execution Stack904803
- Node: Debugger Info906440
- Node: Miscellaneous Debugger Commands910511
- Node: Readline Support915573
- Node: Limitations916469
- Node: Debugging Summary918578
- Node: Namespaces919857
- Node: Global Namespace920675
- Node: Qualified Names922029
- Node: Default Namespace923028
- Node: Changing The Namespace923769
- Node: Naming Rules925380
- Node: Internal Name Management927229
- Node: Namespace Example928271
- Node: Namespace And Features930833
- Node: Namespace Summary932268
- Node: Arbitrary Precision Arithmetic933745
- Node: Computer Arithmetic935232
- Ref: table-numeric-ranges938998
- Ref: table-floating-point-ranges939491
- Ref: Computer Arithmetic-Footnote-1940149
- Node: Math Definitions940206
- Ref: table-ieee-formats943522
- Ref: Math Definitions-Footnote-1944125
- Node: MPFR features944230
- Node: FP Math Caution945948
- Ref: FP Math Caution-Footnote-1947020
- Node: Inexactness of computations947389
- Node: Inexact representation948349
- Node: Comparing FP Values949709
- Node: Errors accumulate950950
- Node: Getting Accuracy952383
- Node: Try To Round955093
- Node: Setting precision955992
- Ref: table-predefined-precision-strings956689
- Node: Setting the rounding mode958519
- Ref: table-gawk-rounding-modes958893
- Ref: Setting the rounding mode-Footnote-1962824
- Node: Arbitrary Precision Integers963003
- Ref: Arbitrary Precision Integers-Footnote-1966178
- Node: Checking for MPFR966327
- Node: POSIX Floating Point Problems967801
- Ref: POSIX Floating Point Problems-Footnote-1972086
- Node: Floating point summary972124
- Node: Dynamic Extensions974314
- Node: Extension Intro975867
- Node: Plugin License977133
- Node: Extension Mechanism Outline977930
- Ref: figure-load-extension978369
- Ref: figure-register-new-function979934
- Ref: figure-call-new-function981026
- Node: Extension API Description983088
- Node: Extension API Functions Introduction984730
- Node: General Data Types990270
- Ref: General Data Types-Footnote-1998631
- Node: Memory Allocation Functions998930
- Ref: Memory Allocation Functions-Footnote-11003140
- Node: Constructor Functions1003239
- Node: Registration Functions1006825
- Node: Extension Functions1007510
- Node: Exit Callback Functions1012725
- Node: Extension Version String1013975
- Node: Input Parsers1014638
- Node: Output Wrappers1027359
- Node: Two-way processors1031871
- Node: Printing Messages1034136
- Ref: Printing Messages-Footnote-11035307
- Node: Updating ERRNO1035460
- Node: Requesting Values1036199
- Ref: table-value-types-returned1036936
- Node: Accessing Parameters1037872
- Node: Symbol Table Access1039107
- Node: Symbol table by name1039619
- Ref: Symbol table by name-Footnote-11042509
- Node: Symbol table by cookie1042637
- Ref: Symbol table by cookie-Footnote-11046822
- Node: Cached values1046886
- Ref: Cached values-Footnote-11050422
- Node: Array Manipulation1050575
- Ref: Array Manipulation-Footnote-11051666
- Node: Array Data Types1051703
- Ref: Array Data Types-Footnote-11054361
- Node: Array Functions1054453
- Node: Flattening Arrays1058951
- Node: Creating Arrays1065927
- Node: Redirection API1070694
- Node: Extension API Variables1073527
- Node: Extension Versioning1074238
- Ref: gawk-api-version1074667
- Node: Extension GMP/MPFR Versioning1076398
- Node: Extension API Informational Variables1078026
- Node: Extension API Boilerplate1079099
- Node: Changes from API V11083073
- Node: Finding Extensions1084645
- Node: Extension Example1085204
- Node: Internal File Description1086002
- Node: Internal File Ops1090082
- Ref: Internal File Ops-Footnote-11101432
- Node: Using Internal File Ops1101572
- Ref: Using Internal File Ops-Footnote-11103955
- Node: Extension Samples1104229
- Node: Extension Sample File Functions1105758
- Node: Extension Sample Fnmatch1113407
- Node: Extension Sample Fork1114894
- Node: Extension Sample Inplace1116112
- Node: Extension Sample Ord1119416
- Node: Extension Sample Readdir1120252
- Ref: table-readdir-file-types1121141
- Node: Extension Sample Revout1121946
- Node: Extension Sample Rev2way1122535
- Node: Extension Sample Read write array1123275
- Node: Extension Sample Readfile1125217
- Node: Extension Sample Time1126312
- Node: Extension Sample API Tests1127660
- Node: gawkextlib1128152
- Node: Extension summary1131070
- Node: Extension Exercises1134772
- Node: Language History1136014
- Node: V7/SVR3.11137670
- Node: SVR41139822
- Node: POSIX1141256
- Node: BTL1142636
- Node: POSIX/GNU1143365
- Node: Feature History1149143
- Node: Common Extensions1165189
- Node: Ranges and Locales1166472
- Ref: Ranges and Locales-Footnote-11171088
- Ref: Ranges and Locales-Footnote-21171115
- Ref: Ranges and Locales-Footnote-31171350
- Node: Contributors1171571
- Node: History summary1177516
- Node: Installation1178896
- Node: Gawk Distribution1179840
- Node: Getting1180324
- Node: Extracting1181287
- Node: Distribution contents1182925
- Node: Unix Installation1189405
- Node: Quick Installation1190087
- Node: Shell Startup Files1192501
- Node: Additional Configuration Options1193590
- Node: Configuration Philosophy1195755
- Node: Non-Unix Installation1198124
- Node: PC Installation1198584
- Node: PC Binary Installation1199422
- Node: PC Compiling1199857
- Node: PC Using1200974
- Node: Cygwin1204527
- Node: MSYS1205626
- Node: VMS Installation1206127
- Node: VMS Compilation1206918
- Ref: VMS Compilation-Footnote-11208147
- Node: VMS Dynamic Extensions1208205
- Node: VMS Installation Details1209890
- Node: VMS Running1212143
- Node: VMS GNV1216422
- Node: VMS Old Gawk1217157
- Node: Bugs1217628
- Node: Bug address1218291
- Node: Usenet1221273
- Node: Maintainers1222277
- Node: Other Versions1223538
- Node: Installation summary1230452
- Node: Notes1231654
- Node: Compatibility Mode1232448
- Node: Additions1233230
- Node: Accessing The Source1234155
- Node: Adding Code1235592
- Node: New Ports1241811
- Node: Derived Files1246299
- Ref: Derived Files-Footnote-11251945
- Ref: Derived Files-Footnote-21251980
- Ref: Derived Files-Footnote-31252578
- Node: Future Extensions1252692
- Node: Implementation Limitations1253350
- Node: Extension Design1254533
- Node: Old Extension Problems1255677
- Ref: Old Extension Problems-Footnote-11257195
- Node: Extension New Mechanism Goals1257252
- Ref: Extension New Mechanism Goals-Footnote-11260616
- Node: Extension Other Design Decisions1260805
- Node: Extension Future Growth1262918
- Node: Notes summary1263754
- Node: Basic Concepts1264929
- Node: Basic High Level1265610
- Ref: figure-general-flow1265892
- Ref: figure-process-flow1266577
- Ref: Basic High Level-Footnote-11269878
- Node: Basic Data Typing1270063
- Node: Glossary1273391
- Node: Copying1305229
- Node: GNU Free Documentation License1342772
- Node: Index1367892
++Node: Advanced Features Summary850421
++Node: Internationalization852265
++Node: I18N and L10N853745
++Node: Explaining gettext854432
++Ref: Explaining gettext-Footnote-1860324
++Ref: Explaining gettext-Footnote-2860509
++Node: Programmer i18n860674
++Ref: Programmer i18n-Footnote-1865623
++Node: Translator i18n865672
++Node: String Extraction866466
++Ref: String Extraction-Footnote-1867598
++Node: Printf Ordering867684
++Ref: Printf Ordering-Footnote-1870470
++Node: I18N Portability870534
++Ref: I18N Portability-Footnote-1872990
++Node: I18N Example873053
++Ref: I18N Example-Footnote-1875859
++Node: Gawk I18N875932
++Node: I18N Summary876577
++Node: Debugger877918
++Node: Debugging878921
++Node: Debugging Concepts879362
++Node: Debugging Terms881171
++Node: Awk Debugging883746
++Node: Sample Debugging Session884652
++Node: Debugger Invocation885186
++Node: Finding The Bug886572
++Node: List of Debugger Commands893050
++Node: Breakpoint Control894383
++Node: Debugger Execution Control898077
++Node: Viewing And Changing Data901439
++Node: Execution Stack904813
++Node: Debugger Info906450
++Node: Miscellaneous Debugger Commands910521
++Node: Readline Support915583
++Node: Limitations916479
++Node: Debugging Summary918588
++Node: Namespaces919867
++Node: Global Namespace920685
++Node: Qualified Names922039
++Node: Default Namespace923038
++Node: Changing The Namespace923779
++Node: Naming Rules925390
++Node: Internal Name Management927239
++Node: Namespace Example928281
++Node: Namespace And Features930843
++Node: Namespace Summary932278
++Node: Arbitrary Precision Arithmetic933755
++Node: Computer Arithmetic935242
++Ref: table-numeric-ranges939008
++Ref: table-floating-point-ranges939501
++Ref: Computer Arithmetic-Footnote-1940159
++Node: Math Definitions940216
++Ref: table-ieee-formats943532
++Ref: Math Definitions-Footnote-1944135
++Node: MPFR features944240
++Node: FP Math Caution945958
++Ref: FP Math Caution-Footnote-1947030
++Node: Inexactness of computations947399
++Node: Inexact representation948359
++Node: Comparing FP Values949719
++Node: Errors accumulate950960
++Node: Getting Accuracy952393
++Node: Try To Round955103
++Node: Setting precision956002
++Ref: table-predefined-precision-strings956699
++Node: Setting the rounding mode958529
++Ref: table-gawk-rounding-modes958903
++Ref: Setting the rounding mode-Footnote-1962834
++Node: Arbitrary Precision Integers963013
++Ref: Arbitrary Precision Integers-Footnote-1966188
++Node: Checking for MPFR966337
++Node: POSIX Floating Point Problems967811
++Ref: POSIX Floating Point Problems-Footnote-1972096
++Node: Floating point summary972134
++Node: Dynamic Extensions974324
++Node: Extension Intro975877
++Node: Plugin License977143
++Node: Extension Mechanism Outline977940
++Ref: figure-load-extension978379
++Ref: figure-register-new-function979944
++Ref: figure-call-new-function981036
++Node: Extension API Description983098
++Node: Extension API Functions Introduction984740
++Node: General Data Types990280
++Ref: General Data Types-Footnote-1998641
++Node: Memory Allocation Functions998940
++Ref: Memory Allocation Functions-Footnote-11003150
++Node: Constructor Functions1003249
++Node: Registration Functions1006835
++Node: Extension Functions1007520
++Node: Exit Callback Functions1012735
++Node: Extension Version String1013985
++Node: Input Parsers1014648
++Node: Output Wrappers1027369
++Node: Two-way processors1031881
++Node: Printing Messages1034146
++Ref: Printing Messages-Footnote-11035317
++Node: Updating ERRNO1035470
++Node: Requesting Values1036209
++Ref: table-value-types-returned1036946
++Node: Accessing Parameters1037882
++Node: Symbol Table Access1039117
++Node: Symbol table by name1039629
++Ref: Symbol table by name-Footnote-11042519
++Node: Symbol table by cookie1042647
++Ref: Symbol table by cookie-Footnote-11046832
++Node: Cached values1046896
++Ref: Cached values-Footnote-11050432
++Node: Array Manipulation1050585
++Ref: Array Manipulation-Footnote-11051676
++Node: Array Data Types1051713
++Ref: Array Data Types-Footnote-11054371
++Node: Array Functions1054463
++Node: Flattening Arrays1058961
++Node: Creating Arrays1065937
++Node: Redirection API1070704
++Node: Extension API Variables1073537
++Node: Extension Versioning1074248
++Ref: gawk-api-version1074677
++Node: Extension GMP/MPFR Versioning1076408
++Node: Extension API Informational Variables1078036
++Node: Extension API Boilerplate1079109
++Node: Changes from API V11083083
++Node: Finding Extensions1084655
++Node: Extension Example1085214
++Node: Internal File Description1086012
++Node: Internal File Ops1090092
++Ref: Internal File Ops-Footnote-11101442
++Node: Using Internal File Ops1101582
++Ref: Using Internal File Ops-Footnote-11103965
++Node: Extension Samples1104239
++Node: Extension Sample File Functions1105768
++Node: Extension Sample Fnmatch1113417
++Node: Extension Sample Fork1114904
++Node: Extension Sample Inplace1116122
++Node: Extension Sample Ord1119426
++Node: Extension Sample Readdir1120262
++Ref: table-readdir-file-types1121151
++Node: Extension Sample Revout1121956
++Node: Extension Sample Rev2way1122545
++Node: Extension Sample Read write array1123285
++Node: Extension Sample Readfile1125227
++Node: Extension Sample Time1126322
++Node: Extension Sample API Tests1127670
++Node: gawkextlib1128162
++Node: Extension summary1131080
++Node: Extension Exercises1134782
++Node: Language History1136024
++Node: V7/SVR3.11137680
++Node: SVR41139832
++Node: POSIX1141266
++Node: BTL1142646
++Node: POSIX/GNU1143375
++Node: Feature History1149153
++Node: Common Extensions1165199
++Node: Ranges and Locales1166482
++Ref: Ranges and Locales-Footnote-11171098
++Ref: Ranges and Locales-Footnote-21171125
++Ref: Ranges and Locales-Footnote-31171360
++Node: Contributors1171581
++Node: History summary1177526
++Node: Installation1178906
++Node: Gawk Distribution1179850
++Node: Getting1180334
++Node: Extracting1181297
++Node: Distribution contents1182935
++Node: Unix Installation1189415
++Node: Quick Installation1190097
++Node: Shell Startup Files1192511
++Node: Additional Configuration Options1193600
++Node: Configuration Philosophy1195765
++Node: Non-Unix Installation1198134
++Node: PC Installation1198594
++Node: PC Binary Installation1199432
++Node: PC Compiling1199867
++Node: PC Using1200984
++Node: Cygwin1204537
++Node: MSYS1205636
++Node: VMS Installation1206137
++Node: VMS Compilation1206928
++Ref: VMS Compilation-Footnote-11208157
++Node: VMS Dynamic Extensions1208215
++Node: VMS Installation Details1209900
++Node: VMS Running1212153
++Node: VMS GNV1216432
++Node: VMS Old Gawk1217167
++Node: Bugs1217638
++Node: Bug address1218301
++Node: Usenet1221283
++Node: Maintainers1222287
++Node: Other Versions1223548
++Node: Installation summary1230462
++Node: Notes1231664
++Node: Compatibility Mode1232458
++Node: Additions1233240
++Node: Accessing The Source1234165
++Node: Adding Code1235602
++Node: New Ports1241821
++Node: Derived Files1246309
++Ref: Derived Files-Footnote-11251955
++Ref: Derived Files-Footnote-21251990
++Ref: Derived Files-Footnote-31252588
++Node: Future Extensions1252702
++Node: Implementation Limitations1253360
++Node: Extension Design1254543
++Node: Old Extension Problems1255687
++Ref: Old Extension Problems-Footnote-11257205
++Node: Extension New Mechanism Goals1257262
++Ref: Extension New Mechanism Goals-Footnote-11260626
++Node: Extension Other Design Decisions1260815
++Node: Extension Future Growth1262928
++Node: Notes summary1263764
++Node: Basic Concepts1264939
++Node: Basic High Level1265620
++Ref: figure-general-flow1265902
++Ref: figure-process-flow1266587
++Ref: Basic High Level-Footnote-11269888
++Node: Basic Data Typing1270073
++Node: Glossary1273401
++Node: Copying1305239
++Node: GNU Free Documentation License1342782
++Node: Index1367902
  
  End Tag Table
diff --cc profile.c
index 3afc2d5,3041545..28c3ba9
--- a/profile.c
+++ b/profile.c
@@@ -240,14 -247,11 +251,14 @@@ pprint(INSTRUCTION *startp, INSTRUCTIO
                        source = pc->source_file;
                        rule = pc->in_rule;
  
 +                      assert(pc[3].ns_name != NULL);
 +                      pp_namespace(pc[3].ns_name);
 +
                        if (rule != Rule) {
                                /* Allow for pre-non-rule-block comment  */
-                               if (pc->nexti != (pc +1)->firsti
+                               if (pc->nexti != (pc+1)->firsti
                                    && pc->nexti->opcode == Op_comment
-                                   && pc->nexti->memory->comment_type == 
FULL_COMMENT)
+                                   && pc->nexti->memory->comment_type == 
BLOCK_COMMENT)
                                        print_comment(pc->nexti, -1);
                                ip1 = (pc + 1)->firsti;
                                ip2 = (pc + 1)->lasti;
@@@ -344,12 -348,9 +355,12 @@@
                        case Node_var:
                        case Node_var_new:
                        case Node_var_array:
 -                              if (m->vname != NULL)
 -                                      pp_push(pc->opcode, m->vname, 
DONT_FREE, pc->comment);
 -                              else
 +                              if (m->vname != NULL) {
 +                                      bool malloced = false;
 +                                      char *name = adjust_namespace(m->vname, 
& malloced);
 +
-                                       pp_push(pc->opcode, name, malloced ? 
CAN_FREE : DONT_FREE);
++                                      pp_push(pc->opcode, name, malloced ? 
CAN_FREE : DONT_FREE, pc->comment);
 +                              } else
                                        fatal(_("internal error: %s with null 
vname"),
                                                        nodetype2str(m->type));
                                break;
@@@ -757,9 -771,7 +783,10 @@@ cleanup
                                t1 = pp_pop();  /* indirect var */
                                pp_free(t1);
                        }
-                       pp_push(pc->opcode, str, CAN_FREE);
++
+                       pp_push(pc->opcode, str, CAN_FREE, pc->comment);
 +                      if (malloced)
 +                              efree((void *) fname);
                }
                        break;
  
@@@ -1753,18 -1945,11 +1963,16 @@@ pp_func(INSTRUCTION *pc, void *data ATT
        fprintf(prof_fp, "\n");
  
        /* print any function comment */
-       if (fp->opcode == Op_comment && fp->source_line == 0) {
-               print_comment(fp, -1);  /* -1 ==> don't indent */
-               fp = fp->nexti;
-       }
+       if (pc->comment != NULL)
+               print_comment(pc->comment, -1); /* -1 ==> don't indent */
  
        indent(pc->nexti->exec_count);
 -      fprintf(prof_fp, "%s %s(", op2str(Op_K_function), func->vname);
 +      
 +      bool malloced = false;
 +      char *name = adjust_namespace(func->vname, & malloced);
 +      fprintf(prof_fp, "%s %s(", op2str(Op_K_function), name);
 +      if (malloced)
 +              free(name);
        pcount = func->param_cnt;
        func_params = func->fparms;
        for (j = 0; j < pcount; j++) {
diff --cc test/Makefile.am
index 5c93523,98406a5..9a57b9d
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@@ -1317,12 -1305,11 +1319,12 @@@ GAWK_EXT_TESTS = 
        incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 include include2 \
        indirectbuiltin indirectcall indirectcall2 intarray isarrayunset \
        lint lintexp lintindex lintint lintlength lintold lintset lintwarn \
 -      mixed1 mktime manyfiles match1 match2 match3 mbstr1 mbstr2 muldimposix \
 +      manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \
        nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
 +      nsbad nsbad_cmd nsindirect1 nsindirect2 nsprof1 nsprof2 \
        patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge \
        procinfs profile0 profile1 profile2 profile3 profile4 profile5 profile6 
\
-       profile7 profile8 profile9 profile10 pty1 pty2 \
+       profile7 profile8 profile9 profile10 profile11 pty1 pty2 \
        rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline 
rsglstdin \
        rsstart1 rsstart2 rsstart3 rstest6 \
        shadow shadowbuiltin sortfor sortfor2 sortu sourcesplit 
split_after_fpat \
@@@ -1379,8 -1366,7 +1381,8 @@@ NEED_NONDEC = mpfrbigint2 nondec2 intar
  NEED_POSIX = printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix
  
  # List of tests that need --pretty-print
 -NEED_PRETTY = profile4 profile5 profile8 profile9 profile10 profile11
 +NEED_PRETTY = nsprof1 nsprof2 \
-       profile4 profile5 profile8 profile9 profile10
++      profile4 profile5 profile8 profile9 profile10 profile11
  
  # List of tests that need --re-interval
  NEED_RE_INTERVAL = gsubtst3 reint reint2
diff --cc test/Makefile.in
index 7154a29,54c6b98..f29b03b
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@@ -1575,12 -1563,11 +1577,12 @@@ GAWK_EXT_TESTS = 
        incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 include include2 \
        indirectbuiltin indirectcall indirectcall2 intarray isarrayunset \
        lint lintexp lintindex lintint lintlength lintold lintset lintwarn \
 -      mixed1 mktime manyfiles match1 match2 match3 mbstr1 mbstr2 muldimposix \
 +      manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \
        nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \
 +      nsbad nsbad_cmd nsindirect1 nsindirect2 nsprof1 nsprof2 \
        patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge \
        procinfs profile0 profile1 profile2 profile3 profile4 profile5 profile6 
\
-       profile7 profile8 profile9 profile10 pty1 pty2 \
+       profile7 profile8 profile9 profile10 profile11 pty1 pty2 \
        rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline 
rsglstdin \
        rsstart1 rsstart2 rsstart3 rstest6 \
        shadow shadowbuiltin sortfor sortfor2 sortu sourcesplit 
split_after_fpat \
@@@ -1636,9 -1623,7 +1638,8 @@@ NEED_NONDEC = mpfrbigint2 nondec2 intar
  NEED_POSIX = printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix
  
  # List of tests that need --pretty-print
 -NEED_PRETTY = profile4 profile5 profile8 profile9 profile10 profile11
 +NEED_PRETTY = nsprof1 nsprof2 \
-       profile4 profile5 profile8 profile9 profile10
- 
++      profile4 profile5 profile8 profile9 profile10 profile11
  
  # List of tests that need --re-interval
  NEED_RE_INTERVAL = gsubtst3 reint reint2

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

Summary of changes:
 ChangeLog          |  201 +++++
 NEWS               |    6 +-
 awk.h              |   15 +-
 awkgram.c          | 2345 +++++++++++++++++++++++++++++-----------------------
 awkgram.y          |  822 +++++++++++-------
 debug.c            |   56 +-
 doc/ChangeLog      |   10 +
 doc/gawk.info      |  500 ++++++-----
 doc/gawk.texi      |   13 +-
 doc/gawktexi.in    |   13 +-
 profile.c          |  312 +++++--
 test/ChangeLog     |   28 +
 test/Makefile.am   |    6 +-
 test/Makefile.in   |   12 +-
 test/Maketests     |    5 +
 test/profile0.ok   |    2 +-
 test/profile10.ok  |   12 +-
 test/profile11.awk |  321 +++++++
 test/profile11.ok  |  371 +++++++++
 test/profile5.ok   |  222 ++---
 20 files changed, 3490 insertions(+), 1782 deletions(-)
 create mode 100644 test/profile11.awk
 create mode 100644 test/profile11.ok


hooks/post-receive
-- 
gawk



reply via email to

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