diff options
author | Brad King <brad.king@kitware.com> | 2022-08-10 13:17:23 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-08-10 13:17:33 (GMT) |
commit | 20e544eb24fb13e8cfde9f8ab4efa0afbb6d7fda (patch) | |
tree | 34c468bf69dc872de415ada157e30993f4113ab9 | |
parent | 3907c081469242a56efc330c2701a7dd05f956ec (diff) | |
parent | 219a9b1e14084d16284c909ea055b3329750c909 (diff) | |
download | CMake-20e544eb24fb13e8cfde9f8ab4efa0afbb6d7fda.zip CMake-20e544eb24fb13e8cfde9f8ab4efa0afbb6d7fda.tar.gz CMake-20e544eb24fb13e8cfde9f8ab4efa0afbb6d7fda.tar.bz2 |
Merge topic 'fortran-module-dep'
219a9b1e14 Fortran: Fix suprious dependencies with submodules
a7211d6a2f Fortran: Teach lexer to handle CRLF newlines
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7529
-rw-r--r-- | Source/LexerParser/cmFortranLexer.cxx | 377 | ||||
-rw-r--r-- | Source/LexerParser/cmFortranLexer.in.l | 16 | ||||
-rw-r--r-- | Source/LexerParser/cmFortranParser.cxx | 324 | ||||
-rw-r--r-- | Source/LexerParser/cmFortranParser.y | 18 | ||||
-rw-r--r-- | Tests/FortranModules/Submodules/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/FortranModules/Submodules/main.f90 | 7 | ||||
-rw-r--r-- | Tests/FortranModules/Submodules/obfuscated_parent.f90 | 33 | ||||
-rw-r--r-- | Tests/FortranModules/test_module_main.f90 | 2 |
8 files changed, 392 insertions, 386 deletions
diff --git a/Source/LexerParser/cmFortranLexer.cxx b/Source/LexerParser/cmFortranLexer.cxx index c3d0000..5703de1 100644 --- a/Source/LexerParser/cmFortranLexer.cxx +++ b/Source/LexerParser/cmFortranLexer.cxx @@ -557,31 +557,32 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[210] = +static const flex_int16_t yy_accept[216] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 49, 51, 50, 53, 1, 49, 33, 2, 47, 48, 35, 37, 50, 39, 49, 46, 46, 46, 46, - 46, 46, 49, 46, 51, 49, 50, 49, 46, 9, - 8, 9, 4, 3, 49, 0, 10, 0, 0, 0, - 0, 0, 33, 33, 34, 36, 39, 49, 46, 46, - 46, 46, 46, 46, 0, 52, 46, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 49, 0, 11, - 46, 0, 0, 5, 0, 0, 0, 0, 29, 0, - 33, 33, 33, 33, 0, 0, 40, 46, 46, 46, - - 46, 45, 12, 12, 0, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 46, 46, 46, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 30, 31, 0, 0, 0, 0, 0, 46, 46, - 46, 46, 0, 24, 25, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 32, 27, 0, 0, 0, - 46, 46, 43, 46, 0, 26, 21, 0, 0, 0, - 19, 0, 0, 18, 28, 0, 0, 41, 46, 46, - 17, 22, 0, 7, 38, 7, 15, 0, 46, 46, - - 14, 16, 42, 44, 0, 0, 0, 13, 0 + 46, 46, 49, 46, 51, 49, 50, 51, 49, 46, + 9, 8, 9, 9, 4, 3, 49, 0, 10, 0, + 0, 0, 0, 0, 33, 33, 34, 36, 39, 49, + 46, 46, 46, 46, 46, 46, 0, 52, 0, 46, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, + 0, 49, 0, 11, 46, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 29, 0, 33, 33, 33, 33, + + 0, 0, 40, 46, 46, 46, 46, 45, 12, 12, + 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 46, 46, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 31, 0, + 0, 0, 0, 0, 46, 46, 46, 46, 0, 24, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 32, 27, 0, 0, 0, 46, 46, 43, 46, + 0, 26, 21, 0, 0, 0, 19, 0, 0, 18, + 28, 0, 0, 41, 46, 46, 17, 22, 0, 7, + + 38, 7, 15, 0, 46, 46, 14, 16, 42, 44, + 0, 0, 0, 13, 0 } ; static const YY_CHAR yy_ec[256] = @@ -618,189 +619,197 @@ static const YY_CHAR yy_ec[256] = static const YY_CHAR yy_meta[50] = { 0, - 1, 2, 2, 3, 4, 3, 3, 1, 1, 3, - 3, 3, 3, 1, 3, 5, 3, 3, 1, 3, + 1, 2, 2, 2, 3, 4, 4, 1, 1, 4, + 4, 4, 4, 1, 4, 5, 4, 4, 1, 4, 6, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7 } ; -static const flex_int16_t yy_base[219] = +static const flex_int16_t yy_base[225] = { 0, - 0, 48, 0, 49, 464, 56, 52, 57, 62, 68, - 466, 0, 468, 468, 462, 468, 74, 81, 468, 468, - 468, 468, 447, 468, 442, 440, 0, 19, 41, 427, - 47, 41, 90, 119, 97, 158, 455, 207, 247, 468, - 454, 101, 468, 468, 0, 455, 468, 105, 430, 423, - 62, 67, 119, 151, 468, 468, 468, 121, 0, 90, - 93, 110, 431, 112, 142, 468, 0, 160, 295, 0, - 162, 411, 123, 102, 408, 405, 446, 344, 447, 468, - 0, 444, 170, 174, 420, 421, 132, 404, 95, 404, - 180, 186, 192, 228, 297, 397, 0, 168, 144, 52, - - 411, 0, 204, 217, 397, 179, 390, 170, 389, 378, - 364, 390, 389, 230, 468, 363, 355, 337, 337, 334, - 335, 335, 330, 334, 187, 339, 267, 339, 327, 327, - 327, 324, 325, 325, 318, 319, 318, 354, 352, 323, - 327, 468, 468, 310, 307, 305, 297, 297, 275, 275, - 277, 279, 287, 468, 468, 286, 283, 273, 196, 307, - 200, 238, 234, 210, 468, 468, 468, 174, 171, 162, - 279, 182, 0, 269, 150, 468, 468, 137, 109, 323, - 468, 239, 0, 468, 468, 72, 71, 0, 283, 283, - 468, 468, 51, 468, 468, 468, 468, 37, 283, 288, - - 330, 468, 0, 0, 331, 0, 52, 468, 468, 384, - 391, 397, 400, 407, 414, 421, 428, 435 + 0, 48, 0, 49, 55, 58, 64, 66, 75, 83, + 491, 0, 492, 492, 487, 492, 86, 92, 492, 492, + 492, 492, 472, 492, 467, 465, 0, 56, 59, 452, + 66, 16, 105, 131, 109, 170, 480, 481, 219, 259, + 492, 478, 479, 116, 492, 492, 0, 478, 492, 111, + 453, 446, 34, 78, 155, 174, 492, 492, 492, 121, + 0, 29, 105, 101, 454, 101, 131, 492, 474, 0, + 180, 307, 0, 146, 433, 117, 94, 430, 427, 468, + 467, 356, 468, 492, 0, 465, 464, 187, 191, 465, + 439, 440, 149, 423, 126, 423, 200, 240, 311, 322, + + 206, 416, 0, 152, 180, 176, 430, 0, 216, 224, + 417, 186, 418, 127, 418, 411, 415, 451, 450, 247, + 492, 423, 416, 398, 393, 373, 364, 364, 359, 353, + 198, 358, 178, 358, 346, 346, 346, 343, 344, 344, + 338, 340, 339, 376, 374, 343, 346, 492, 492, 329, + 325, 324, 313, 315, 211, 211, 291, 293, 313, 492, + 492, 314, 304, 304, 261, 328, 212, 249, 243, 203, + 492, 492, 492, 173, 158, 150, 293, 172, 0, 273, + 144, 492, 492, 137, 125, 335, 492, 339, 0, 492, + 492, 112, 63, 0, 304, 300, 492, 492, 58, 492, + + 492, 492, 492, 30, 311, 312, 361, 492, 0, 0, + 366, 0, 44, 492, 492, 396, 403, 409, 412, 419, + 426, 433, 440, 447 } ; -static const flex_int16_t yy_def[219] = +static const flex_int16_t yy_def[225] = { 0, - 209, 1, 1, 1, 1, 1, 210, 210, 210, 210, - 209, 211, 209, 209, 212, 209, 211, 209, 209, 209, - 209, 209, 209, 209, 209, 211, 213, 213, 213, 213, - 213, 213, 211, 213, 209, 211, 209, 214, 209, 209, - 209, 209, 209, 209, 211, 212, 209, 209, 209, 209, - 209, 209, 209, 215, 209, 209, 209, 211, 213, 213, - 213, 213, 213, 213, 209, 209, 34, 209, 209, 69, - 211, 209, 209, 209, 209, 209, 209, 214, 214, 209, - 39, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 215, 215, 215, 215, 209, 209, 213, 213, 213, 213, - - 213, 213, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 213, 213, 213, 213, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 213, 213, - 213, 213, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 213, 213, 213, 213, 209, 209, 209, 209, 209, 209, - 209, 216, 217, 209, 209, 209, 209, 213, 213, 213, - 209, 209, 209, 209, 209, 209, 209, 209, 213, 213, - - 209, 209, 213, 213, 209, 218, 218, 209, 0, 209, - 209, 209, 209, 209, 209, 209, 209, 209 + 215, 1, 1, 1, 1, 1, 216, 216, 216, 216, + 215, 217, 215, 215, 218, 215, 217, 215, 215, 215, + 215, 215, 215, 215, 215, 217, 219, 219, 219, 219, + 219, 219, 217, 219, 215, 217, 215, 215, 220, 215, + 215, 215, 215, 215, 215, 215, 217, 218, 215, 215, + 215, 215, 215, 215, 215, 221, 215, 215, 215, 217, + 219, 219, 219, 219, 219, 219, 215, 215, 215, 34, + 215, 215, 72, 217, 215, 215, 215, 215, 215, 215, + 215, 220, 220, 215, 40, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 221, 221, 221, 221, + + 215, 215, 219, 219, 219, 219, 219, 219, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 219, 219, 219, 219, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 219, 219, 219, 219, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 219, 219, 219, 219, + 215, 215, 215, 215, 215, 215, 215, 222, 223, 215, + 215, 215, 215, 219, 219, 219, 215, 215, 215, 215, + + 215, 215, 215, 215, 219, 219, 215, 215, 219, 219, + 215, 224, 224, 215, 0, 215, 215, 215, 215, 215, + 215, 215, 215, 215 } ; -static const flex_int16_t yy_nxt[518] = +static const flex_int16_t yy_nxt[542] = { 0, 12, 13, 14, 13, 13, 15, 16, 12, 17, 18, 19, 20, 21, 12, 22, 12, 23, 24, 12, 25, 12, 26, 27, 27, 27, 27, 28, 27, 27, 29, 27, 30, 27, 27, 27, 31, 27, 32, 33, 34, 27, 27, 28, 27, 29, 27, 27, 31, 32, 35, - 35, 60, 35, 35, 41, 36, 36, 35, 37, 41, - 35, 42, 43, 36, 41, 60, 42, 43, 44, 38, - 41, 42, 208, 61, 44, 48, 64, 42, 48, 202, - 39, 39, 53, 53, 63, 53, 54, 61, 64, 127, - 55, 65, 66, 201, 65, 63, 39, 39, 68, 49, - - 127, 68, 83, 84, 69, 83, 48, 87, 88, 48, - 89, 50, 198, 90, 197, 97, 51, 98, 52, 45, - 53, 53, 95, 53, 54, 95, 45, 45, 55, 99, - 49, 97, 45, 98, 67, 100, 121, 45, 102, 45, - 45, 122, 50, 65, 66, 108, 65, 51, 109, 52, - 193, 100, 92, 53, 102, 92, 93, 45, 67, 70, - 94, 68, 70, 104, 68, 96, 104, 69, 106, 107, - 126, 83, 84, 71, 83, 114, 118, 71, 114, 119, - 192, 92, 53, 115, 92, 93, 126, 92, 53, 94, - 92, 93, 191, 92, 53, 94, 92, 93, 125, 72, - - 73, 94, 74, 75, 189, 104, 76, 78, 104, 80, - 187, 133, 186, 125, 78, 78, 134, 185, 104, 103, - 78, 104, 78, 130, 149, 78, 131, 78, 78, 92, - 53, 114, 92, 93, 114, 149, 184, 94, 183, 115, - 195, 195, 182, 181, 179, 78, 78, 79, 79, 80, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 81, 79, 79, 79, 79, 79, 79, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 79, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 70, 151, 95, 70, - - 171, 95, 172, 173, 174, 188, 190, 199, 180, 203, - 103, 180, 151, 200, 204, 178, 171, 190, 172, 173, - 174, 188, 103, 199, 180, 203, 177, 180, 200, 176, - 204, 205, 205, 175, 205, 205, 72, 73, 103, 74, - 75, 96, 170, 76, 78, 169, 80, 168, 206, 206, - 167, 78, 78, 166, 165, 164, 163, 78, 162, 78, - 161, 160, 78, 159, 78, 78, 158, 157, 156, 155, - 154, 153, 152, 150, 148, 147, 146, 145, 144, 143, - 142, 141, 78, 78, 40, 40, 40, 40, 40, 40, - 40, 45, 140, 139, 138, 45, 45, 46, 46, 46, - - 46, 46, 46, 46, 59, 137, 59, 79, 79, 79, - 79, 79, 79, 79, 91, 91, 91, 91, 91, 91, - 91, 194, 194, 194, 136, 194, 194, 194, 196, 135, - 196, 132, 196, 196, 196, 207, 207, 207, 207, 207, - 129, 207, 128, 124, 123, 120, 117, 116, 113, 80, - 112, 111, 110, 105, 101, 86, 85, 47, 82, 77, - 62, 58, 57, 56, 47, 209, 37, 11, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209 + 35, 66, 35, 35, 103, 36, 36, 37, 38, 35, + 37, 38, 35, 66, 214, 36, 42, 43, 42, 43, + 103, 39, 208, 44, 45, 44, 45, 42, 43, 93, + 94, 46, 40, 40, 44, 42, 43, 50, 62, 46, + 50, 63, 44, 55, 55, 55, 55, 56, 40, 40, + + 207, 57, 62, 65, 204, 63, 67, 68, 69, 67, + 71, 51, 50, 71, 65, 50, 72, 88, 89, 90, + 88, 95, 101, 52, 96, 101, 106, 108, 53, 104, + 54, 47, 67, 68, 69, 67, 51, 114, 47, 47, + 115, 105, 106, 108, 47, 104, 70, 110, 52, 47, + 110, 47, 47, 53, 203, 54, 55, 55, 55, 55, + 56, 74, 112, 113, 57, 102, 199, 127, 139, 47, + 70, 73, 128, 140, 73, 98, 55, 98, 98, 99, + 198, 71, 131, 100, 71, 74, 197, 72, 88, 89, + 90, 88, 120, 124, 195, 120, 125, 131, 193, 192, + + 121, 98, 55, 98, 98, 99, 132, 101, 157, 100, + 101, 75, 76, 133, 77, 78, 191, 110, 79, 82, + 110, 84, 132, 157, 133, 110, 82, 82, 110, 190, + 136, 109, 82, 137, 82, 155, 177, 82, 178, 82, + 82, 98, 55, 98, 98, 99, 155, 189, 120, 100, + 102, 120, 177, 188, 178, 187, 121, 82, 82, 83, + 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 85, 83, 83, 83, 83, 83, + 83, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 83, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 73, 185, + 196, 73, 98, 55, 98, 98, 99, 179, 180, 194, + 100, 196, 109, 98, 55, 98, 98, 99, 205, 186, + 206, 100, 186, 179, 180, 194, 186, 209, 210, 186, + 201, 201, 201, 109, 205, 206, 184, 183, 75, 76, + 109, 77, 78, 209, 210, 79, 82, 182, 84, 181, + 176, 175, 211, 82, 82, 211, 174, 211, 173, 82, + 211, 82, 172, 171, 82, 170, 82, 82, 169, 212, + 168, 167, 166, 165, 212, 164, 163, 162, 161, 160, + 159, 158, 156, 154, 82, 82, 41, 41, 41, 41, + + 41, 41, 41, 47, 153, 152, 151, 47, 47, 48, + 48, 48, 48, 48, 48, 48, 61, 150, 61, 83, + 83, 83, 83, 83, 83, 83, 97, 97, 97, 97, + 97, 97, 97, 200, 200, 149, 200, 200, 200, 200, + 202, 148, 147, 202, 202, 202, 202, 213, 213, 213, + 213, 213, 146, 213, 145, 144, 143, 142, 141, 138, + 135, 134, 130, 129, 126, 123, 122, 89, 86, 119, + 84, 80, 118, 117, 116, 111, 68, 107, 92, 91, + 49, 87, 86, 81, 80, 64, 60, 59, 58, 49, + 215, 11, 215, 215, 215, 215, 215, 215, 215, 215, + + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215 } ; -static const flex_int16_t yy_chk[518] = +static const flex_int16_t yy_chk[542] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 4, 28, 2, 4, 7, 2, 4, 6, 6, 8, - 6, 7, 7, 6, 9, 28, 8, 8, 9, 6, - 10, 9, 207, 29, 10, 17, 32, 10, 17, 198, - 6, 6, 18, 18, 31, 18, 18, 29, 32, 100, - 18, 33, 33, 193, 33, 31, 6, 6, 35, 17, - - 100, 35, 42, 42, 35, 42, 48, 51, 51, 48, - 52, 17, 187, 52, 186, 60, 17, 61, 17, 34, - 53, 53, 58, 53, 53, 58, 34, 34, 53, 61, - 48, 60, 34, 61, 34, 62, 89, 34, 64, 34, - 34, 89, 48, 65, 65, 74, 65, 48, 74, 48, - 179, 62, 54, 54, 64, 54, 54, 34, 34, 36, - 54, 68, 36, 71, 68, 58, 71, 68, 73, 73, - 99, 83, 83, 36, 83, 84, 87, 71, 84, 87, - 178, 91, 91, 84, 91, 91, 99, 92, 92, 91, - 92, 92, 175, 93, 93, 92, 93, 93, 98, 36, - - 36, 93, 36, 36, 172, 103, 36, 38, 103, 38, - 170, 108, 169, 98, 38, 38, 108, 168, 104, 103, - 38, 104, 38, 106, 125, 38, 106, 38, 38, 94, - 94, 114, 94, 94, 114, 125, 164, 94, 163, 114, - 182, 182, 162, 161, 159, 38, 38, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 69, 127, 95, 69, - - 149, 95, 150, 151, 152, 171, 174, 189, 160, 199, - 69, 160, 127, 190, 200, 158, 149, 174, 150, 151, - 152, 171, 160, 189, 180, 199, 157, 180, 190, 156, - 200, 201, 205, 153, 201, 205, 69, 69, 180, 69, - 69, 95, 148, 69, 78, 147, 78, 146, 201, 205, - 145, 78, 78, 144, 141, 140, 139, 78, 138, 78, - 137, 136, 78, 135, 78, 78, 134, 133, 132, 131, - 130, 129, 128, 126, 124, 123, 122, 121, 120, 119, - 118, 117, 78, 78, 210, 210, 210, 210, 210, 210, - 210, 211, 116, 113, 112, 211, 211, 212, 212, 212, - - 212, 212, 212, 212, 213, 111, 213, 214, 214, 214, - 214, 214, 214, 214, 215, 215, 215, 215, 215, 215, - 215, 216, 216, 216, 110, 216, 216, 216, 217, 109, - 217, 107, 217, 217, 217, 218, 218, 218, 218, 218, - 105, 218, 101, 96, 90, 88, 86, 85, 82, 79, - 77, 76, 75, 72, 63, 50, 49, 46, 41, 37, - 30, 26, 25, 23, 15, 11, 5, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209 + 4, 32, 2, 4, 62, 2, 4, 5, 5, 6, + 6, 6, 6, 32, 213, 6, 7, 7, 8, 8, + 62, 6, 204, 7, 7, 8, 8, 9, 9, 53, + 53, 9, 6, 6, 9, 10, 10, 17, 28, 10, + 17, 29, 10, 18, 18, 18, 18, 18, 6, 6, + + 199, 18, 28, 31, 193, 29, 33, 33, 33, 33, + 35, 17, 50, 35, 31, 50, 35, 44, 44, 44, + 44, 54, 60, 17, 54, 60, 64, 66, 17, 63, + 17, 34, 67, 67, 67, 67, 50, 77, 34, 34, + 77, 63, 64, 66, 34, 63, 34, 74, 50, 34, + 74, 34, 34, 50, 192, 50, 55, 55, 55, 55, + 55, 74, 76, 76, 55, 60, 185, 95, 114, 34, + 34, 36, 95, 114, 36, 56, 56, 56, 56, 56, + 184, 71, 104, 56, 71, 36, 181, 71, 88, 88, + 88, 88, 89, 93, 178, 89, 93, 104, 176, 175, + + 89, 97, 97, 97, 97, 97, 105, 101, 133, 97, + 101, 36, 36, 106, 36, 36, 174, 109, 36, 39, + 109, 39, 105, 133, 106, 110, 39, 39, 110, 170, + 112, 109, 39, 112, 39, 131, 155, 39, 156, 39, + 39, 98, 98, 98, 98, 98, 131, 169, 120, 98, + 101, 120, 155, 168, 156, 167, 120, 39, 39, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + + 40, 40, 40, 40, 40, 40, 40, 40, 72, 165, + 180, 72, 99, 99, 99, 99, 99, 157, 158, 177, + 99, 180, 72, 100, 100, 100, 100, 100, 195, 166, + 196, 100, 166, 157, 158, 177, 186, 205, 206, 186, + 188, 188, 188, 166, 195, 196, 164, 163, 72, 72, + 186, 72, 72, 205, 206, 72, 82, 162, 82, 159, + 154, 153, 207, 82, 82, 207, 152, 211, 151, 82, + 211, 82, 150, 147, 82, 146, 82, 82, 145, 207, + 144, 143, 142, 141, 211, 140, 139, 138, 137, 136, + 135, 134, 132, 130, 82, 82, 216, 216, 216, 216, + + 216, 216, 216, 217, 129, 128, 127, 217, 217, 218, + 218, 218, 218, 218, 218, 218, 219, 126, 219, 220, + 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, + 221, 221, 221, 222, 222, 125, 222, 222, 222, 222, + 223, 124, 123, 223, 223, 223, 223, 224, 224, 224, + 224, 224, 122, 224, 119, 118, 117, 116, 115, 113, + 111, 107, 102, 96, 94, 92, 91, 90, 87, 86, + 83, 81, 80, 79, 78, 75, 69, 65, 52, 51, + 48, 43, 42, 38, 37, 30, 26, 25, 23, 15, + 11, 215, 215, 215, 215, 215, 215, 215, 215, 215, + + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215 } ; /* The intent behind this definition is that it'll catch @@ -1139,13 +1148,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 210 ) + if ( yy_current_state >= 216 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 468 ); + while ( yy_base[yy_current_state] != 492 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1733,7 +1742,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 210 ) + if ( yy_current_state >= 216 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1762,11 +1771,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 210 ) + if ( yy_current_state >= 216 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 209); + yy_is_jam = (yy_current_state == 215); (void)yyg; return yy_is_jam ? 0 : yy_current_state; diff --git a/Source/LexerParser/cmFortranLexer.in.l b/Source/LexerParser/cmFortranLexer.in.l index 05769a1..fac3181 100644 --- a/Source/LexerParser/cmFortranLexer.in.l +++ b/Source/LexerParser/cmFortranLexer.in.l @@ -75,10 +75,10 @@ Modify cmFortranLexer.cxx: return STRING; } -<str_dq,str_sq>&[ \t]*\n | -<str_dq,str_sq>&[ \t]*\n[ \t]*& /* Ignore (continued strings, free fmt) */ +<str_dq,str_sq>&[ \t]*\r?\n | +<str_dq,str_sq>&[ \t]*\r?\n[ \t]*& /* Ignore (continued strings, free fmt) */ -<fixed_fmt,str_dq,str_sq>\n[ ]{5}[^ \t\n] { +<fixed_fmt,str_dq,str_sq>\r?\n[ ]{5}[^ \t\r\n] { if (cmFortranParser_GetOldStartcond(yyextra) == fixed_fmt) ; /* Ignore (cont. strings, fixed fmt) */ else @@ -132,15 +132,15 @@ $[ \t]*else { return F90PPR_ELSE; } $[ \t]*endif { return F90PPR_ENDIF; } /* Line continuations, possible involving comments. */ -&([ \t\n]*|!.*)* -&([ \t\n]*|!.*)*& +&([ \t\r\n]*|!.*)* +&([ \t\r\n]*|!.*)*& , { return COMMA; } :: { return DCOLON; } : { return COLON; } -<fixed_fmt>\n[ ]{5}[^ ] { return GARBAGE; } +<fixed_fmt>\r?\n[ ]{5}[^ ] { return GARBAGE; } =|=> { return ASSIGNMENT_OP; } @@ -159,13 +159,13 @@ $[ \t]*endif { return F90PPR_ENDIF; } \( { return LPAREN; } \) { return RPAREN; } -[^ \t\n\r:;,!'"a-zA-Z=&()]+ { return GARBAGE; } +[^ \t\r\n:;,!'"a-zA-Z=&()]+ { return GARBAGE; } ;|\n { return EOSTMT; } [ \t\r,] /* Ignore */ -\\[ \t]*\n /* Ignore line-endings preceded by \ */ +\\[ \t]*\r?\n /* Ignore line-endings preceded by \ */ . { return *yytext; } diff --git a/Source/LexerParser/cmFortranParser.cxx b/Source/LexerParser/cmFortranParser.cxx index b177296..5e5cc0b 100644 --- a/Source/LexerParser/cmFortranParser.cxx +++ b/Source/LexerParser/cmFortranParser.cxx @@ -548,7 +548,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 594 +#define YYLAST 432 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 41 @@ -557,7 +557,7 @@ union yyalloc /* YYNRULES -- Number of rules. */ #define YYNRULES 64 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 127 +#define YYNSTATES 121 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 295 @@ -608,15 +608,15 @@ static const yytype_int8 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +static const yytype_uint8 yyrline[] = { - 0, 106, 106, 106, 109, 113, 118, 127, 133, 140, - 145, 149, 154, 166, 171, 176, 181, 186, 191, 196, - 201, 206, 210, 214, 218, 222, 223, 228, 228, 228, - 229, 229, 230, 230, 231, 231, 232, 232, 233, 233, - 234, 234, 235, 235, 236, 236, 237, 237, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256 + 0, 106, 106, 106, 109, 113, 118, 123, 129, 136, + 141, 145, 150, 162, 167, 172, 177, 182, 187, 192, + 197, 202, 206, 210, 214, 218, 219, 224, 224, 224, + 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, + 230, 230, 231, 231, 232, 232, 233, 233, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252 }; #endif @@ -666,19 +666,19 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -39, 21, -39, 1, -39, -20, -39, -39, -39, -39, + -39, 21, -39, 5, -39, -23, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -24, -18, 20, -8, - -3, 40, -39, 15, 16, 17, 19, 34, -39, -39, - -39, -39, -39, -39, 59, -39, -39, -39, -39, -39, - 36, 37, 38, -39, -39, -39, -39, -39, -39, 77, - 115, 130, 168, 183, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -25, -19, 20, -8, + -15, -22, -39, -6, 14, 15, 16, 17, -39, -39, + -39, -39, -39, -39, 59, 49, 51, -39, 63, 64, + 35, 36, 37, -39, -39, -39, -39, -39, -39, 74, + 112, 127, 165, 180, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, 221, 236, 274, 289, -21, 26, -39, - 327, 342, 380, 395, 433, 448, -39, -39, -39, -39, - -39, -39, -39, -39, -39, 39, 41, 42, 486, -39, - -39, -39, -39, -39, -39, 18, -39, -39, -39, 43, - 501, 539, -39, -39, -39, 554, -39 + -39, -39, -39, -39, -39, -39, -39, -20, 43, -39, + 218, 233, 271, 286, 324, 339, -39, -39, -39, -39, + -39, 39, 40, 41, 377, -39, -39, -39, -39, -39, + -39, 46, 78, -39, -39, 50, -39, 392, 79, -39, + -39 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -690,15 +690,15 @@ static const yytype_int8 yydefact[] = 30, 33, 32, 34, 36, 38, 42, 40, 44, 35, 37, 39, 43, 41, 45, 46, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 46, 46, - 46, 46, 26, 46, 0, 46, 46, 4, 46, 46, + 46, 46, 26, 46, 0, 0, 0, 4, 0, 0, 0, 0, 0, 46, 46, 46, 46, 46, 46, 0, 0, 0, 0, 0, 15, 57, 56, 64, 62, 58, 59, 60, 61, 63, 55, 48, 49, 50, 51, 52, - 53, 54, 47, 0, 0, 0, 0, 0, 0, 46, + 53, 54, 47, 10, 13, 9, 6, 0, 0, 46, 0, 0, 0, 0, 0, 0, 21, 22, 23, 24, - 14, 10, 13, 9, 6, 0, 0, 0, 0, 5, - 16, 17, 18, 19, 20, 0, 46, 46, 11, 0, - 0, 0, 46, 7, 12, 0, 8 + 14, 0, 0, 0, 0, 5, 16, 17, 18, 19, + 20, 0, 0, 46, 11, 0, 7, 0, 0, 12, + 8 }; /* YYPGOTO[NTERM-NUM]. */ @@ -720,81 +720,70 @@ static const yytype_int8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int8 yytable[] = { - 59, 60, 61, 62, 42, 63, 105, 83, 84, 106, - 85, 86, 43, 45, 46, 90, 91, 92, 93, 94, - 95, 2, 3, 47, 4, 49, 50, 5, 6, 7, + 59, 60, 61, 62, 51, 63, 52, 101, 42, 43, + 102, 53, 45, 46, 50, 90, 91, 92, 93, 94, + 95, 2, 3, 47, 4, 49, 54, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 54, 119, 55, - 56, 108, 57, 48, 107, 25, 26, 27, 28, 29, - 30, 31, 64, 65, 66, 67, 51, 58, 52, 87, - 88, 89, 115, 53, 116, 117, 122, 0, 120, 121, - 96, 65, 66, 67, 125, 68, 69, 70, 71, 72, + 18, 19, 20, 21, 22, 23, 24, 55, 56, 57, + 58, 104, 83, 48, 84, 25, 26, 27, 28, 29, + 30, 31, 64, 65, 66, 67, 85, 86, 87, 88, + 89, 103, 111, 112, 113, 117, 115, 96, 65, 66, + 67, 116, 120, 118, 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, - 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, - 75, 0, 76, 77, 78, 79, 80, 81, 97, 65, + 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, + 77, 78, 79, 80, 81, 97, 65, 66, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 98, 65, 66, 67, 0, 0, 0, 0, 68, 69, + 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, + 79, 80, 81, 68, 69, 70, 71, 72, 73, 74, + 75, 0, 76, 77, 78, 79, 80, 81, 99, 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 98, 65, 66, 67, 0, 0, 0, + 0, 0, 0, 100, 65, 66, 67, 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, - 81, 99, 65, 66, 67, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 100, 65, 66, 67, + 81, 105, 65, 66, 67, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 65, 66, 67, 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, - 78, 79, 80, 81, 101, 65, 66, 67, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 78, 79, 80, 81, 107, 65, 66, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 65, 66, 67, 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 68, 69, 70, 71, 72, 73, 74, 75, - 0, 76, 77, 78, 79, 80, 81, 103, 65, 66, + 0, 76, 77, 78, 79, 80, 81, 109, 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 104, 65, 66, 67, 0, 0, 0, 0, + 0, 0, 110, 65, 66, 67, 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, - 109, 65, 66, 67, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 110, 65, 66, 67, 0, + 114, 65, 66, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 65, 66, 67, 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, - 79, 80, 81, 111, 65, 66, 67, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 112, 65, - 66, 67, 0, 0, 0, 0, 68, 69, 70, 71, - 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, - 81, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 76, 77, 78, 79, 80, 81, 113, 65, 66, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 114, 65, 66, 67, 0, 0, 0, 0, 68, - 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, - 78, 79, 80, 81, 68, 69, 70, 71, 72, 73, - 74, 75, 0, 76, 77, 78, 79, 80, 81, 118, - 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 123, 65, 66, 67, 0, 0, - 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, - 0, 76, 77, 78, 79, 80, 81, 68, 69, 70, - 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, - 80, 81, 124, 65, 66, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 126, 65, 66, - 67, 0, 0, 0, 0, 68, 69, 70, 71, 72, - 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, - 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, - 77, 78, 79, 80, 81 + 79, 80, 81 }; static const yytype_int8 yycheck[] = { - 38, 39, 40, 41, 3, 43, 27, 45, 46, 30, - 48, 49, 32, 37, 32, 53, 54, 55, 56, 57, - 58, 0, 1, 3, 3, 33, 29, 6, 7, 8, + 38, 39, 40, 41, 26, 43, 28, 27, 3, 32, + 30, 33, 37, 32, 29, 53, 54, 55, 56, 57, + 58, 0, 1, 3, 3, 33, 32, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 32, 30, 33, - 33, 89, 33, 33, 28, 34, 35, 36, 37, 38, - 39, 40, 3, 4, 5, 6, 26, 33, 28, 33, - 33, 33, 33, 33, 33, 33, 33, -1, 116, 117, - 3, 4, 5, 6, 122, 26, 27, 28, 29, 30, + 19, 20, 21, 22, 23, 24, 25, 33, 33, 33, + 33, 89, 3, 33, 3, 34, 35, 36, 37, 38, + 39, 40, 3, 4, 5, 6, 3, 3, 33, 33, + 33, 28, 33, 33, 33, 113, 30, 3, 4, 5, + 6, 3, 3, 33, -1, 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, 40, - -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + 36, 37, 38, 39, 40, 3, 4, 5, 6, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, -1, -1, -1, -1, 26, 27, + 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, + 38, 39, 40, 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, 40, 3, 4, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, -1, -1, -1, @@ -822,28 +811,7 @@ static const yytype_int8 yycheck[] = -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, 40, 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, - 38, 39, 40, 3, 4, 5, 6, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, -1, -1, -1, -1, 26, 27, 28, 29, - 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, - 40, 26, 27, 28, 29, 30, 31, 32, 33, -1, - 35, 36, 37, 38, 39, 40, 3, 4, 5, 6, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, -1, -1, -1, -1, 26, - 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, - 37, 38, 39, 40, 26, 27, 28, 29, 30, 31, - 32, 33, -1, 35, 36, 37, 38, 39, 40, 3, - 4, 5, 6, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3, 4, 5, 6, -1, -1, - -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, - -1, 35, 36, 37, 38, 39, 40, 26, 27, 28, - 29, 30, 31, 32, 33, -1, 35, 36, 37, 38, - 39, 40, 3, 4, 5, 6, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, -1, -1, -1, -1, 26, 27, 28, 29, 30, - 31, 32, 33, -1, 35, 36, 37, 38, 39, 40, - 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, - 36, 37, 38, 39, 40 + 38, 39, 40 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -858,11 +826,11 @@ static const yytype_int8 yystos[] = 29, 26, 28, 33, 32, 33, 33, 33, 33, 53, 53, 53, 53, 53, 3, 4, 5, 6, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, - 39, 40, 54, 53, 53, 53, 53, 33, 33, 33, + 39, 40, 54, 3, 3, 3, 3, 33, 33, 33, 53, 53, 53, 53, 53, 53, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 27, 30, 28, 53, 3, - 3, 3, 3, 3, 3, 33, 33, 33, 3, 30, - 53, 53, 33, 3, 3, 53, 3 + 3, 27, 30, 28, 53, 3, 3, 3, 3, 3, + 3, 33, 33, 33, 3, 30, 3, 53, 33, 3, + 3 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -880,8 +848,8 @@ static const yytype_int8 yyr1[] = /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { - 0, 2, 0, 2, 2, 4, 4, 7, 9, 4, - 4, 5, 7, 4, 4, 3, 4, 4, 4, 4, + 0, 2, 0, 2, 2, 4, 3, 6, 8, 3, + 3, 5, 7, 3, 4, 3, 4, 4, 4, 4, 4, 3, 3, 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, @@ -1361,19 +1329,19 @@ yydestruct (const char *yymsg, case YYSYMBOL_STRING: /* STRING */ #line 100 "cmFortranParser.y" { free(((*yyvaluep).string)); } -#line 1365 "cmFortranParser.cxx" +#line 1333 "cmFortranParser.cxx" break; case YYSYMBOL_WORD: /* WORD */ #line 100 "cmFortranParser.y" { free(((*yyvaluep).string)); } -#line 1371 "cmFortranParser.cxx" +#line 1339 "cmFortranParser.cxx" break; case YYSYMBOL_CPP_INCLUDE_ANGLE: /* CPP_INCLUDE_ANGLE */ #line 100 "cmFortranParser.y" { free(((*yyvaluep).string)); } -#line 1377 "cmFortranParser.cxx" +#line 1345 "cmFortranParser.cxx" break; default: @@ -1655,7 +1623,7 @@ yyreduce: cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); } -#line 1659 "cmFortranParser.cxx" +#line 1627 "cmFortranParser.cxx" break; case 5: /* stmt: USE WORD other EOSTMT */ @@ -1665,77 +1633,73 @@ yyreduce: cmFortranParser_RuleUse(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1669 "cmFortranParser.cxx" +#line 1637 "cmFortranParser.cxx" break; - case 6: /* stmt: MODULE WORD other EOSTMT */ + case 6: /* stmt: MODULE WORD EOSTMT */ #line 118 "cmFortranParser.y" - { + { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - if (cmsysString_strcasecmp((yyvsp[-2].string), "function") != 0 && - cmsysString_strcasecmp((yyvsp[-2].string), "procedure") != 0 && - cmsysString_strcasecmp((yyvsp[-2].string), "subroutine") != 0) { - cmFortranParser_RuleModule(parser, (yyvsp[-2].string)); - } - free((yyvsp[-2].string)); + cmFortranParser_RuleModule(parser, (yyvsp[-1].string)); + free((yyvsp[-1].string)); } -#line 1683 "cmFortranParser.cxx" +#line 1647 "cmFortranParser.cxx" break; - case 7: /* stmt: SUBMODULE LPAREN WORD RPAREN WORD other EOSTMT */ -#line 127 "cmFortranParser.y" - { + case 7: /* stmt: SUBMODULE LPAREN WORD RPAREN WORD EOSTMT */ +#line 123 "cmFortranParser.y" + { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - cmFortranParser_RuleSubmodule(parser, (yyvsp[-4].string), (yyvsp[-2].string)); - free((yyvsp[-4].string)); - free((yyvsp[-2].string)); + cmFortranParser_RuleSubmodule(parser, (yyvsp[-3].string), (yyvsp[-1].string)); + free((yyvsp[-3].string)); + free((yyvsp[-1].string)); } -#line 1694 "cmFortranParser.cxx" +#line 1658 "cmFortranParser.cxx" break; - case 8: /* stmt: SUBMODULE LPAREN WORD COLON WORD RPAREN WORD other EOSTMT */ -#line 133 "cmFortranParser.y" - { + case 8: /* stmt: SUBMODULE LPAREN WORD COLON WORD RPAREN WORD EOSTMT */ +#line 129 "cmFortranParser.y" + { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - cmFortranParser_RuleSubmoduleNested(parser, (yyvsp[-6].string), (yyvsp[-4].string), (yyvsp[-2].string)); - free((yyvsp[-6].string)); - free((yyvsp[-4].string)); - free((yyvsp[-2].string)); + cmFortranParser_RuleSubmoduleNested(parser, (yyvsp[-5].string), (yyvsp[-3].string), (yyvsp[-1].string)); + free((yyvsp[-5].string)); + free((yyvsp[-3].string)); + free((yyvsp[-1].string)); } -#line 1706 "cmFortranParser.cxx" +#line 1670 "cmFortranParser.cxx" break; - case 9: /* stmt: INTERFACE WORD other EOSTMT */ -#line 140 "cmFortranParser.y" - { + case 9: /* stmt: INTERFACE WORD EOSTMT */ +#line 136 "cmFortranParser.y" + { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); - free((yyvsp[-2].string)); + free((yyvsp[-1].string)); } -#line 1716 "cmFortranParser.cxx" +#line 1680 "cmFortranParser.cxx" break; - case 10: /* stmt: END INTERFACE other EOSTMT */ -#line 145 "cmFortranParser.y" - { + case 10: /* stmt: END INTERFACE EOSTMT */ +#line 141 "cmFortranParser.y" + { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, false); } -#line 1725 "cmFortranParser.cxx" +#line 1689 "cmFortranParser.cxx" break; case 11: /* stmt: USE DCOLON WORD other EOSTMT */ -#line 149 "cmFortranParser.y" +#line 145 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleUse(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1735 "cmFortranParser.cxx" +#line 1699 "cmFortranParser.cxx" break; case 12: /* stmt: USE COMMA WORD DCOLON WORD other EOSTMT */ -#line 154 "cmFortranParser.y" +#line 150 "cmFortranParser.y" { if (cmsysString_strcasecmp((yyvsp[-4].string), "non_intrinsic") == 0) { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); @@ -1748,139 +1712,139 @@ yyreduce: free((yyvsp[-4].string)); free((yyvsp[-2].string)); } -#line 1752 "cmFortranParser.cxx" +#line 1716 "cmFortranParser.cxx" break; - case 13: /* stmt: INCLUDE STRING other EOSTMT */ -#line 166 "cmFortranParser.y" - { + case 13: /* stmt: INCLUDE STRING EOSTMT */ +#line 162 "cmFortranParser.y" + { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); - free((yyvsp[-2].string)); + cmFortranParser_RuleInclude(parser, (yyvsp[-1].string)); + free((yyvsp[-1].string)); } -#line 1762 "cmFortranParser.cxx" +#line 1726 "cmFortranParser.cxx" break; case 14: /* stmt: CPP_LINE_DIRECTIVE STRING other EOSTMT */ -#line 171 "cmFortranParser.y" +#line 167 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleLineDirective(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1772 "cmFortranParser.cxx" +#line 1736 "cmFortranParser.cxx" break; case 15: /* stmt: CPP_INCLUDE_ANGLE other EOSTMT */ -#line 176 "cmFortranParser.y" +#line 172 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1782 "cmFortranParser.cxx" +#line 1746 "cmFortranParser.cxx" break; case 16: /* stmt: include STRING other EOSTMT */ -#line 181 "cmFortranParser.y" +#line 177 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1792 "cmFortranParser.cxx" +#line 1756 "cmFortranParser.cxx" break; case 17: /* stmt: define WORD other EOSTMT */ -#line 186 "cmFortranParser.y" +#line 182 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleDefine(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1802 "cmFortranParser.cxx" +#line 1766 "cmFortranParser.cxx" break; case 18: /* stmt: undef WORD other EOSTMT */ -#line 191 "cmFortranParser.y" +#line 187 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleUndef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1812 "cmFortranParser.cxx" +#line 1776 "cmFortranParser.cxx" break; case 19: /* stmt: ifdef WORD other EOSTMT */ -#line 196 "cmFortranParser.y" +#line 192 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIfdef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1822 "cmFortranParser.cxx" +#line 1786 "cmFortranParser.cxx" break; case 20: /* stmt: ifndef WORD other EOSTMT */ -#line 201 "cmFortranParser.y" +#line 197 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIfndef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1832 "cmFortranParser.cxx" +#line 1796 "cmFortranParser.cxx" break; case 21: /* stmt: if other EOSTMT */ -#line 206 "cmFortranParser.y" +#line 202 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIf(parser); } -#line 1841 "cmFortranParser.cxx" +#line 1805 "cmFortranParser.cxx" break; case 22: /* stmt: elif other EOSTMT */ -#line 210 "cmFortranParser.y" +#line 206 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleElif(parser); } -#line 1850 "cmFortranParser.cxx" +#line 1814 "cmFortranParser.cxx" break; case 23: /* stmt: else other EOSTMT */ -#line 214 "cmFortranParser.y" +#line 210 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleElse(parser); } -#line 1859 "cmFortranParser.cxx" +#line 1823 "cmFortranParser.cxx" break; case 24: /* stmt: endif other EOSTMT */ -#line 218 "cmFortranParser.y" +#line 214 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleEndif(parser); } -#line 1868 "cmFortranParser.cxx" +#line 1832 "cmFortranParser.cxx" break; case 48: /* misc_code: WORD */ -#line 240 "cmFortranParser.y" +#line 236 "cmFortranParser.y" { free ((yyvsp[0].string)); } -#line 1874 "cmFortranParser.cxx" +#line 1838 "cmFortranParser.cxx" break; case 55: /* misc_code: STRING */ -#line 247 "cmFortranParser.y" +#line 243 "cmFortranParser.y" { free ((yyvsp[0].string)); } -#line 1880 "cmFortranParser.cxx" +#line 1844 "cmFortranParser.cxx" break; -#line 1884 "cmFortranParser.cxx" +#line 1848 "cmFortranParser.cxx" default: break; } @@ -2104,6 +2068,6 @@ yyreturnlab: return yyresult; } -#line 259 "cmFortranParser.y" +#line 255 "cmFortranParser.y" /* End of grammar */ diff --git a/Source/LexerParser/cmFortranParser.y b/Source/LexerParser/cmFortranParser.y index 07ca630..a5c8976 100644 --- a/Source/LexerParser/cmFortranParser.y +++ b/Source/LexerParser/cmFortranParser.y @@ -115,34 +115,30 @@ stmt: cmFortranParser_RuleUse(parser, $2); free($2); } -| MODULE WORD other EOSTMT { +| MODULE WORD EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - if (cmsysString_strcasecmp($2, "function") != 0 && - cmsysString_strcasecmp($2, "procedure") != 0 && - cmsysString_strcasecmp($2, "subroutine") != 0) { - cmFortranParser_RuleModule(parser, $2); - } + cmFortranParser_RuleModule(parser, $2); free($2); } -| SUBMODULE LPAREN WORD RPAREN WORD other EOSTMT { +| SUBMODULE LPAREN WORD RPAREN WORD EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleSubmodule(parser, $3, $5); free($3); free($5); } -| SUBMODULE LPAREN WORD COLON WORD RPAREN WORD other EOSTMT { +| SUBMODULE LPAREN WORD COLON WORD RPAREN WORD EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleSubmoduleNested(parser, $3, $5, $7); free($3); free($5); free($7); } -| INTERFACE WORD other EOSTMT { +| INTERFACE WORD EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); free($2); } -| END INTERFACE other EOSTMT { +| END INTERFACE EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, false); } @@ -163,7 +159,7 @@ stmt: free($3); free($5); } -| INCLUDE STRING other EOSTMT { +| INCLUDE STRING EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, $2); free($2); diff --git a/Tests/FortranModules/Submodules/CMakeLists.txt b/Tests/FortranModules/Submodules/CMakeLists.txt index ab8e0f9..783af7e 100644 --- a/Tests/FortranModules/Submodules/CMakeLists.txt +++ b/Tests/FortranModules/Submodules/CMakeLists.txt @@ -16,6 +16,7 @@ add_executable(submod main.f90 parent.f90 + obfuscated_parent.f90 child.f90 grandchild.f90 greatgrandchild.f90 diff --git a/Tests/FortranModules/Submodules/main.f90 b/Tests/FortranModules/Submodules/main.f90 index 3cd2989..67ffba8 100644 --- a/Tests/FortranModules/Submodules/main.f90 +++ b/Tests/FortranModules/Submodules/main.f90 @@ -1,7 +1,10 @@ program main use parent, only : child_function,grandchild_subroutine use parent, only : sibling_function,GreatGrandChild_subroutine + ! Using a module without postfix + use obfuscated_parent implicit none - if (child_function()) call grandchild_subroutine - if (sibling_function()) call GreatGrandChild_subroutine + if (child_function()) call grandchild_subroutine + if (sibling_function()) call GreatGrandChild_subroutine + if (child_function_obf()) call grandchild_subroutine_obf end program diff --git a/Tests/FortranModules/Submodules/obfuscated_parent.f90 b/Tests/FortranModules/Submodules/obfuscated_parent.f90 new file mode 100644 index 0000000..f3e68be --- /dev/null +++ b/Tests/FortranModules/Submodules/obfuscated_parent.f90 @@ -0,0 +1,33 @@ +! This module has two procedures from the "parent" module +! but it has different combinations 'module <word>' phrases +! in breaked lines for test of modules dependencies detection + +! Module declaration on breaked line with reminder +module & + obfuscated_parent; implicit none + + interface + + ! Boolean module function + module logical & + function child_function_obf() result(child_stuff) + end function + + ! Module subroutine + module subroutine & + grandchild_subroutine_obf() + end subroutine + + end interface + + contains + + module logical function child_function_obf() result(child_stuff) + child_stuff=.true. + end function + + module subroutine grandchild_subroutine_obf() + print *,"Test passed." + end subroutine + +end module obfuscated_parent diff --git a/Tests/FortranModules/test_module_main.f90 b/Tests/FortranModules/test_module_main.f90 index 6ac97fa..958d0a2 100644 --- a/Tests/FortranModules/test_module_main.f90 +++ b/Tests/FortranModules/test_module_main.f90 @@ -1,4 +1,4 @@ PROGRAM MAINF90 - USE TEST_MODULE + USE TEST_MODULE, only : TEST_MODULE_FUNCTION PRINT *,'Sum is',TEST_MODULE_FUNCTION(1., 2.) END PROGRAM MAINF90 |