From b5ac8b8aa778c7ad612a20deb04a2efafa386d9d Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 5 Sep 2016 16:46:42 -0400 Subject: Fortran: Add support for submodule syntax in dependency scanning Fortran 2008 [1] adds support for a new syntax related to modules: submodule ( ParentModule ) SubModule submodule ( ParentModule : SubModule ) NestedSubModule Both of these mean that the current source file requires the module `ParentModule` to be available if it is not provided in the current file. Teach our Fortran dependency scanner to parse this syntax to extract this relationship. For now simply tolerate the nested submodule case and extract only the dependency it expresses on the main module. Further work will be needed to extract dependencies among nested submodules. [1] http://fortranwiki.org/fortran/show/Fortran+2008 Closes: #16234 --- Source/cmFortranLexer.cxx | 535 ++++++++++++++++++++------------------- Source/cmFortranLexer.h | 2 +- Source/cmFortranLexer.in.l | 7 +- Source/cmFortranParser.cxx | 550 +++++++++++++++++++++++------------------ Source/cmFortranParser.y | 20 +- Source/cmFortranParserTokens.h | 50 ++-- 6 files changed, 643 insertions(+), 521 deletions(-) diff --git a/Source/cmFortranLexer.cxx b/Source/cmFortranLexer.cxx index 7bcd993..60d5591 100644 --- a/Source/cmFortranLexer.cxx +++ b/Source/cmFortranLexer.cxx @@ -347,8 +347,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 50 -#define YY_END_OF_BUFFER 51 +#define YY_NUM_RULES 54 +#define YY_END_OF_BUFFER 55 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -356,30 +356,31 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[199] = +static yyconst flex_int16_t yy_accept[210] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 45, 47, 46, 49, 1, 45, 33, 2, 35, - 45, 46, 38, 45, 44, 44, 44, 44, 44, 45, - 44, 47, 45, 46, 45, 44, 9, 8, 9, 4, - 3, 45, 0, 10, 0, 0, 0, 0, 0, 33, - 33, 34, 36, 38, 45, 44, 44, 44, 44, 44, - 0, 48, 44, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 45, 0, 11, 44, 0, 0, 5, - 0, 0, 0, 29, 0, 0, 33, 33, 33, 33, - 0, 0, 39, 44, 44, 44, 43, 12, 12, 0, - - 0, 0, 23, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, - 44, 44, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 30, 31, 0, 0, 0, 0, - 0, 0, 44, 44, 44, 0, 24, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 32, 27, 0, - 0, 20, 0, 44, 44, 42, 0, 26, 21, 0, - 0, 0, 19, 0, 0, 18, 28, 0, 0, 40, - 44, 17, 22, 0, 7, 37, 7, 15, 0, 44, - 14, 16, 41, 0, 0, 0, 13, 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, 29, 0, 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, + 30, 31, 0, 0, 0, 0, 0, 0, 46, 46, + 46, 46, 0, 24, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 27, 0, 0, 20, 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 yyconst YY_CHAR yy_ec[256] = @@ -387,17 +388,17 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 6, 7, 8, 9, 1, 10, 11, 1, - 1, 12, 1, 13, 1, 1, 1, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 15, 16, 17, - 18, 19, 20, 1, 21, 22, 23, 24, 25, 26, - 22, 22, 27, 22, 22, 28, 29, 30, 31, 22, - 22, 32, 33, 34, 35, 22, 22, 22, 22, 22, - 1, 36, 1, 1, 37, 1, 21, 22, 38, 39, - - 40, 41, 22, 22, 42, 22, 22, 43, 29, 44, - 31, 22, 22, 32, 45, 34, 46, 22, 22, 22, - 22, 22, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 6, 7, 8, 9, 1, 10, 11, 12, + 13, 14, 1, 15, 1, 1, 1, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 17, 18, 19, + 20, 21, 22, 1, 23, 24, 25, 26, 27, 28, + 29, 29, 30, 29, 29, 31, 32, 33, 34, 29, + 29, 35, 36, 37, 38, 29, 29, 29, 29, 29, + 1, 39, 1, 1, 40, 1, 23, 24, 41, 42, + + 43, 44, 29, 29, 45, 29, 29, 46, 32, 47, + 34, 29, 29, 35, 48, 37, 49, 29, 29, 29, + 29, 29, 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, @@ -414,211 +415,217 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst YY_CHAR yy_meta[47] = +static yyconst YY_CHAR yy_meta[50] = { 0, 1, 2, 2, 3, 4, 3, 3, 1, 1, 3, - 3, 1, 3, 5, 1, 3, 1, 3, 6, 1, - 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 + 3, 3, 3, 1, 3, 5, 3, 3, 1, 3, + 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 yyconst flex_uint16_t yy_base[208] = +static yyconst flex_uint16_t yy_base[219] = { 0, - 0, 45, 0, 46, 392, 53, 49, 59, 61, 71, - 392, 0, 572, 572, 364, 572, 91, 77, 572, 572, - 342, 572, 317, 232, 0, 19, 42, 218, 40, 92, - 137, 96, 174, 240, 220, 257, 572, 238, 97, 572, - 572, 0, 205, 572, 302, 50, 77, 83, 59, 137, - 156, 572, 0, 572, 123, 0, 84, 130, 90, 92, - 167, 572, 0, 176, 347, 0, 190, 94, 175, 200, - 121, 92, 201, 393, 193, 572, 0, 162, 222, 175, - 171, 209, 176, 281, 184, 207, 307, 313, 328, 348, - 338, 111, 0, 205, 213, 125, 0, 354, 185, 280, - - 336, 300, 340, 309, 278, 321, 139, 130, 245, 572, - 335, 347, 351, 356, 360, 375, 375, 379, 383, 300, - 80, 381, 384, 390, 392, 393, 397, 399, 397, 402, - 403, 106, 105, 284, 572, 572, 407, 408, 411, 320, - 413, 413, 420, 419, 421, 420, 572, 572, 421, 426, - 428, 420, 467, 432, 101, 83, 438, 572, 572, 439, - 446, 572, 436, 449, 63, 0, 450, 572, 572, 450, - 453, 481, 572, 64, 0, 572, 572, 454, 460, 0, - 464, 572, 572, 463, 572, 572, 572, 572, 468, 471, - 495, 572, 0, 496, 0, 38, 572, 572, 513, 520, - - 526, 529, 536, 543, 550, 557, 564 + 0, 48, 0, 49, 513, 56, 52, 57, 62, 68, + 515, 0, 583, 583, 509, 583, 97, 74, 583, 583, + 583, 583, 491, 583, 423, 421, 0, 19, 40, 392, + 36, 47, 86, 146, 88, 186, 413, 235, 275, 583, + 407, 98, 583, 583, 0, 386, 583, 323, 65, 73, + 81, 74, 127, 146, 583, 583, 583, 108, 0, 89, + 120, 92, 362, 116, 161, 583, 0, 167, 371, 0, + 168, 131, 146, 171, 81, 89, 352, 420, 353, 583, + 0, 349, 178, 196, 175, 197, 188, 208, 196, 197, + 256, 262, 324, 330, 337, 143, 0, 151, 220, 56, + + 305, 0, 336, 139, 225, 315, 305, 322, 318, 163, + 320, 268, 266, 369, 583, 340, 347, 350, 350, 351, + 357, 350, 357, 363, 140, 235, 359, 218, 362, 375, + 379, 380, 381, 385, 384, 404, 405, 243, 235, 213, + 583, 583, 405, 407, 410, 171, 410, 409, 419, 418, + 423, 426, 311, 583, 583, 428, 429, 431, 173, 462, + 435, 166, 145, 438, 583, 583, 441, 444, 583, 433, + 448, 89, 0, 438, 450, 583, 583, 452, 457, 487, + 583, 114, 0, 583, 583, 457, 462, 0, 465, 463, + 583, 583, 468, 583, 583, 583, 583, 470, 471, 474, + + 500, 583, 0, 0, 505, 0, 65, 583, 583, 524, + 531, 537, 540, 547, 554, 561, 568, 575 } ; -static yyconst flex_int16_t yy_def[208] = +static yyconst flex_int16_t yy_def[219] = { 0, - 198, 1, 1, 1, 1, 1, 199, 199, 199, 199, - 198, 200, 198, 198, 201, 198, 200, 198, 198, 198, - 200, 198, 198, 200, 202, 202, 202, 202, 202, 200, - 202, 198, 198, 198, 203, 198, 198, 198, 198, 198, - 198, 200, 201, 198, 198, 198, 198, 198, 198, 198, - 204, 198, 200, 198, 200, 202, 202, 202, 202, 202, - 198, 198, 31, 198, 198, 65, 200, 198, 198, 198, - 198, 198, 198, 203, 203, 198, 36, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 204, 204, 204, 204, - 198, 198, 202, 202, 202, 202, 202, 198, 198, 198, - - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 202, - 202, 202, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 202, 202, 202, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 202, 202, 202, 198, 198, 198, 198, - 198, 198, 198, 205, 206, 198, 198, 198, 198, 202, - 202, 198, 198, 198, 198, 198, 198, 198, 198, 202, - 198, 198, 202, 198, 207, 207, 198, 0, 198, 198, - - 198, 198, 198, 198, 198, 198, 198 + 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, 209, 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 } ; -static yyconst flex_uint16_t yy_nxt[619] = +static yyconst flex_uint16_t yy_nxt[633] = { 0, 12, 13, 14, 13, 13, 15, 16, 12, 17, 18, - 19, 12, 20, 12, 21, 22, 12, 23, 12, 24, - 25, 25, 25, 25, 26, 25, 27, 25, 28, 25, - 25, 25, 25, 25, 29, 30, 31, 25, 25, 26, - 25, 27, 25, 25, 25, 29, 32, 32, 57, 32, - 32, 38, 33, 33, 32, 34, 197, 32, 39, 40, - 33, 38, 57, 38, 35, 186, 186, 41, 39, 40, - 39, 58, 60, 38, 81, 36, 36, 41, 50, 50, - 39, 50, 51, 181, 60, 58, 52, 175, 86, 81, - 36, 36, 45, 61, 62, 45, 61, 64, 79, 80, - - 64, 79, 86, 65, 82, 174, 83, 93, 84, 156, - 155, 144, 85, 96, 46, 47, 97, 48, 100, 82, - 83, 106, 93, 84, 91, 49, 85, 91, 96, 46, - 47, 97, 48, 100, 133, 106, 49, 42, 50, 50, - 119, 50, 51, 132, 42, 42, 52, 105, 42, 92, - 63, 42, 94, 42, 119, 42, 42, 88, 50, 122, - 88, 89, 105, 95, 92, 90, 108, 94, 61, 62, - 122, 61, 42, 63, 42, 66, 109, 64, 66, 109, - 64, 42, 42, 65, 110, 42, 99, 67, 42, 99, - 42, 99, 42, 42, 99, 76, 111, 68, 69, 114, - - 70, 71, 101, 67, 102, 107, 117, 44, 72, 42, - 42, 111, 68, 69, 114, 70, 71, 101, 102, 72, - 74, 117, 76, 79, 80, 103, 79, 74, 74, 104, - 118, 74, 120, 74, 74, 112, 74, 121, 74, 74, - 103, 113, 78, 104, 73, 118, 109, 120, 59, 109, - 112, 55, 121, 113, 110, 74, 74, 75, 75, 76, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 77, 75, 75, 75, 75, 75, 75, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 75, 77, 77, 77, 77, 77, 77, 77, - - 77, 77, 77, 45, 115, 123, 45, 130, 88, 50, - 116, 88, 89, 157, 88, 50, 90, 88, 89, 115, - 123, 130, 90, 126, 116, 46, 47, 157, 48, 88, - 50, 129, 88, 89, 143, 54, 49, 90, 126, 91, - 46, 47, 91, 48, 131, 143, 129, 49, 66, 88, - 50, 66, 88, 89, 161, 99, 53, 90, 99, 131, - 98, 134, 124, 127, 92, 161, 44, 98, 125, 128, - 68, 69, 135, 70, 71, 136, 134, 124, 127, 92, - 125, 72, 137, 128, 138, 68, 69, 135, 70, 71, - 136, 198, 72, 74, 34, 76, 198, 137, 139, 138, - - 74, 74, 140, 141, 74, 142, 74, 74, 145, 74, - 146, 74, 74, 139, 198, 147, 148, 140, 141, 149, - 142, 150, 151, 145, 152, 146, 153, 154, 74, 74, - 147, 148, 158, 159, 149, 160, 150, 151, 162, 152, - 163, 153, 154, 164, 165, 166, 168, 158, 159, 167, - 160, 169, 170, 162, 171, 163, 198, 173, 164, 165, - 166, 168, 176, 167, 177, 171, 169, 170, 172, 178, - 179, 172, 173, 180, 182, 183, 184, 176, 188, 177, - 98, 179, 172, 189, 178, 172, 190, 191, 180, 182, - 183, 184, 192, 188, 98, 193, 194, 194, 189, 194, - - 194, 190, 191, 198, 198, 198, 198, 192, 198, 198, - 193, 195, 195, 37, 37, 37, 37, 37, 37, 37, - 42, 198, 198, 198, 42, 42, 43, 43, 43, 43, - 43, 43, 43, 56, 198, 56, 75, 75, 75, 75, - 75, 75, 75, 87, 87, 87, 87, 87, 87, 87, - 185, 185, 185, 198, 185, 185, 185, 187, 198, 187, - 198, 187, 187, 187, 196, 196, 196, 196, 196, 198, - 196, 11, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198 + 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, 61, 63, 44, 53, 53, 42, 53, 54, + 39, 39, 64, 55, 63, 208, 61, 65, 66, 68, + 65, 85, 68, 127, 64, 69, 39, 39, 48, 83, + + 84, 48, 83, 86, 127, 87, 90, 85, 88, 95, + 110, 189, 95, 89, 97, 195, 195, 100, 86, 87, + 90, 111, 49, 50, 88, 110, 51, 89, 53, 53, + 97, 53, 54, 100, 52, 111, 55, 96, 49, 50, + 104, 51, 102, 104, 98, 52, 45, 92, 53, 183, + 92, 93, 96, 45, 45, 94, 99, 105, 102, 45, + 98, 67, 65, 66, 45, 65, 45, 45, 68, 104, + 182, 68, 104, 105, 69, 124, 106, 149, 107, 83, + 84, 125, 83, 71, 45, 67, 45, 70, 149, 124, + 70, 106, 107, 45, 45, 136, 125, 114, 108, 45, + + 114, 71, 116, 109, 45, 115, 45, 45, 168, 136, + 179, 72, 73, 119, 108, 74, 75, 109, 116, 168, + 122, 179, 123, 76, 45, 45, 117, 72, 73, 119, + 74, 75, 118, 120, 76, 78, 122, 80, 123, 163, + 121, 117, 78, 78, 118, 164, 126, 162, 78, 120, + 78, 152, 129, 78, 121, 78, 78, 92, 53, 164, + 92, 93, 126, 92, 53, 94, 92, 93, 129, 150, + 139, 94, 138, 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, 48, 92, 53, 48, 92, 93, + 132, 92, 53, 94, 92, 93, 128, 104, 95, 94, + 104, 95, 135, 175, 130, 137, 132, 133, 49, 50, + 131, 103, 51, 113, 134, 80, 112, 175, 135, 130, + 52, 137, 131, 133, 49, 50, 96, 51, 134, 140, + 114, 52, 70, 114, 141, 70, 142, 144, 115, 143, + 146, 96, 145, 147, 140, 101, 103, 148, 47, 151, + 141, 153, 142, 144, 143, 146, 72, 73, 145, 147, + + 74, 75, 154, 148, 151, 155, 153, 157, 76, 156, + 158, 82, 72, 73, 159, 74, 75, 77, 154, 76, + 78, 155, 80, 157, 156, 62, 158, 78, 78, 159, + 160, 161, 165, 78, 166, 78, 167, 169, 78, 170, + 78, 78, 58, 57, 171, 172, 160, 161, 165, 173, + 166, 174, 167, 169, 170, 176, 177, 178, 78, 78, + 171, 172, 181, 180, 184, 173, 180, 174, 185, 186, + 187, 176, 177, 178, 188, 190, 191, 103, 181, 192, + 184, 187, 193, 197, 185, 186, 190, 198, 180, 199, + 188, 180, 191, 200, 201, 192, 202, 203, 193, 197, + + 204, 205, 103, 198, 205, 199, 205, 56, 200, 205, + 201, 47, 202, 203, 209, 37, 204, 209, 206, 209, + 209, 209, 209, 206, 40, 40, 40, 40, 40, 40, + 40, 45, 209, 209, 209, 45, 45, 46, 46, 46, + 46, 46, 46, 46, 59, 209, 59, 79, 79, 79, + 79, 79, 79, 79, 91, 91, 91, 91, 91, 91, + 91, 194, 194, 194, 209, 194, 194, 194, 196, 209, + 196, 209, 196, 196, 196, 207, 207, 207, 207, 207, + 209, 207, 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 } ; -static yyconst flex_int16_t yy_chk[619] = +static yyconst flex_int16_t yy_chk[633] = { 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, 2, 4, 26, 2, - 4, 7, 2, 4, 6, 6, 196, 6, 7, 7, - 6, 8, 26, 9, 6, 174, 174, 9, 8, 8, - 9, 27, 29, 10, 46, 6, 6, 10, 18, 18, - 10, 18, 18, 165, 29, 27, 18, 156, 49, 46, - 6, 6, 17, 30, 30, 17, 30, 32, 39, 39, - - 32, 39, 49, 32, 47, 155, 47, 57, 48, 133, - 132, 121, 48, 59, 17, 17, 60, 17, 68, 47, - 47, 72, 57, 48, 55, 17, 48, 55, 59, 17, - 17, 60, 17, 68, 108, 72, 17, 31, 50, 50, - 92, 50, 50, 107, 31, 31, 50, 71, 31, 55, - 31, 31, 58, 31, 92, 31, 31, 51, 51, 96, - 51, 51, 71, 58, 55, 51, 78, 58, 61, 61, - 96, 61, 31, 31, 33, 33, 80, 64, 33, 80, - 64, 33, 33, 64, 80, 33, 99, 33, 33, 99, - 33, 67, 33, 33, 67, 75, 81, 33, 33, 83, - - 33, 33, 69, 67, 69, 73, 85, 43, 33, 33, - 33, 81, 33, 33, 83, 33, 33, 69, 69, 33, - 35, 85, 35, 79, 79, 70, 79, 35, 35, 70, - 86, 35, 94, 35, 35, 82, 35, 95, 35, 35, - 70, 82, 38, 70, 34, 86, 109, 94, 28, 109, - 82, 24, 95, 82, 109, 35, 35, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - 36, 36, 36, 45, 84, 100, 45, 105, 87, 87, - 84, 87, 87, 134, 88, 88, 87, 88, 88, 84, - 100, 105, 88, 102, 84, 45, 45, 134, 45, 89, - 89, 104, 89, 89, 120, 23, 45, 89, 102, 91, - 45, 45, 91, 45, 106, 120, 104, 45, 65, 90, - 90, 65, 90, 90, 140, 98, 21, 90, 98, 106, - 65, 111, 101, 103, 91, 140, 15, 98, 101, 103, - 65, 65, 112, 65, 65, 113, 111, 101, 103, 91, - 101, 65, 114, 103, 115, 65, 65, 112, 65, 65, - 113, 11, 65, 74, 5, 74, 0, 114, 116, 115, - - 74, 74, 117, 118, 74, 119, 74, 74, 122, 74, - 123, 74, 74, 116, 0, 124, 125, 117, 118, 126, - 119, 127, 128, 122, 129, 123, 130, 131, 74, 74, - 124, 125, 137, 138, 126, 139, 127, 128, 141, 129, - 142, 130, 131, 143, 144, 145, 149, 137, 138, 146, - 139, 150, 151, 141, 152, 142, 0, 154, 143, 144, - 145, 149, 157, 146, 160, 152, 150, 151, 153, 161, - 163, 153, 154, 164, 167, 170, 171, 157, 178, 160, - 153, 163, 172, 179, 161, 172, 181, 184, 164, 167, - 170, 171, 189, 178, 172, 190, 191, 194, 179, 191, - - 194, 181, 184, 0, 0, 0, 0, 189, 0, 0, - 190, 191, 194, 199, 199, 199, 199, 199, 199, 199, - 200, 0, 0, 0, 200, 200, 201, 201, 201, 201, - 201, 201, 201, 202, 0, 202, 203, 203, 203, 203, - 203, 203, 203, 204, 204, 204, 204, 204, 204, 204, - 205, 205, 205, 0, 205, 205, 205, 206, 0, 206, - 0, 206, 206, 206, 207, 207, 207, 207, 207, 0, - 207, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - - 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198 + 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, 29, 31, 10, 18, 18, 10, 18, 18, + 6, 6, 32, 18, 31, 207, 29, 33, 33, 35, + 33, 49, 35, 100, 32, 35, 6, 6, 17, 42, + + 42, 17, 42, 50, 100, 50, 52, 49, 51, 58, + 75, 172, 58, 51, 60, 182, 182, 62, 50, 50, + 52, 76, 17, 17, 51, 75, 17, 51, 53, 53, + 60, 53, 53, 62, 17, 76, 53, 58, 17, 17, + 104, 17, 64, 104, 61, 17, 34, 54, 54, 163, + 54, 54, 58, 34, 34, 54, 61, 72, 64, 34, + 61, 34, 65, 65, 34, 65, 34, 34, 68, 71, + 162, 68, 71, 72, 68, 96, 73, 125, 73, 83, + 83, 98, 83, 71, 34, 34, 36, 36, 125, 96, + 36, 73, 73, 36, 36, 110, 98, 84, 74, 36, + + 84, 36, 85, 74, 36, 84, 36, 36, 146, 110, + 159, 36, 36, 87, 74, 36, 36, 74, 85, 146, + 89, 159, 90, 36, 36, 36, 86, 36, 36, 87, + 36, 36, 86, 88, 36, 38, 89, 38, 90, 139, + 88, 86, 38, 38, 86, 140, 99, 138, 38, 88, + 38, 128, 105, 38, 88, 38, 38, 91, 91, 140, + 91, 91, 99, 92, 92, 91, 92, 92, 105, 126, + 113, 92, 112, 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, 48, 93, 93, 48, 93, 93, + 107, 94, 94, 93, 94, 94, 101, 103, 95, 94, + 103, 95, 109, 153, 106, 111, 107, 108, 48, 48, + 106, 103, 48, 82, 108, 79, 77, 153, 109, 106, + 48, 111, 106, 108, 48, 48, 95, 48, 108, 116, + 114, 48, 69, 114, 117, 69, 118, 120, 114, 119, + 122, 95, 121, 123, 116, 63, 69, 124, 46, 127, + 117, 129, 118, 120, 119, 122, 69, 69, 121, 123, + + 69, 69, 130, 124, 127, 131, 129, 133, 69, 132, + 134, 41, 69, 69, 135, 69, 69, 37, 130, 69, + 78, 131, 78, 133, 132, 30, 134, 78, 78, 135, + 136, 137, 143, 78, 144, 78, 145, 147, 78, 148, + 78, 78, 26, 25, 149, 150, 136, 137, 143, 151, + 144, 152, 145, 147, 148, 156, 157, 158, 78, 78, + 149, 150, 161, 160, 164, 151, 160, 152, 167, 168, + 170, 156, 157, 158, 171, 174, 175, 160, 161, 178, + 164, 170, 179, 186, 167, 168, 174, 187, 180, 189, + 171, 180, 175, 190, 193, 178, 198, 199, 179, 186, + + 200, 201, 180, 187, 201, 189, 205, 23, 190, 205, + 193, 15, 198, 199, 11, 5, 200, 0, 201, 0, + 0, 0, 0, 205, 210, 210, 210, 210, 210, 210, + 210, 211, 0, 0, 0, 211, 211, 212, 212, 212, + 212, 212, 212, 212, 213, 0, 213, 214, 214, 214, + 214, 214, 214, 214, 215, 215, 215, 215, 215, 215, + 215, 216, 216, 216, 0, 216, 216, 216, 217, 0, + 217, 0, 217, 217, 217, 218, 218, 218, 218, 218, + 0, 218, 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 } ; /* The intent behind this definition is that it'll catch @@ -685,7 +692,7 @@ Modify cmFortranLexer.cxx: /*--------------------------------------------------------------------------*/ -#line 689 "cmFortranLexer.cxx" +#line 696 "cmFortranLexer.cxx" #define INITIAL 0 #define free_fmt 1 @@ -956,7 +963,7 @@ YY_DECL #line 65 "cmFortranLexer.in.l" -#line 960 "cmFortranLexer.cxx" +#line 967 "cmFortranLexer.cxx" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -984,13 +991,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 >= 199 ) + if ( yy_current_state >= 210 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 572 ); + while ( yy_base[yy_current_state] != 583 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1201,71 +1208,87 @@ YY_RULE_SETUP #line 148 "cmFortranLexer.in.l" { return DCOLON; } case 37: -/* rule 37 can match eol */ YY_RULE_SETUP -#line 150 "cmFortranLexer.in.l" -{ return GARBAGE; } +#line 149 "cmFortranLexer.in.l" +{ return COLON; } case 38: +/* rule 38 can match eol */ YY_RULE_SETUP -#line 152 "cmFortranLexer.in.l" -{ return ASSIGNMENT_OP; } +#line 151 "cmFortranLexer.in.l" +{ return GARBAGE; } case 39: YY_RULE_SETUP -#line 154 "cmFortranLexer.in.l" -{ return END; } +#line 153 "cmFortranLexer.in.l" +{ return ASSIGNMENT_OP; } case 40: YY_RULE_SETUP #line 155 "cmFortranLexer.in.l" -{ return INCLUDE; } +{ return END; } case 41: YY_RULE_SETUP #line 156 "cmFortranLexer.in.l" -{ return INTERFACE; } +{ return INCLUDE; } case 42: YY_RULE_SETUP #line 157 "cmFortranLexer.in.l" -{ return MODULE; } +{ return INTERFACE; } case 43: YY_RULE_SETUP #line 158 "cmFortranLexer.in.l" -{ return USE; } +{ return MODULE; } case 44: YY_RULE_SETUP +#line 159 "cmFortranLexer.in.l" +{ return SUBMODULE; } +case 45: +YY_RULE_SETUP #line 160 "cmFortranLexer.in.l" +{ return USE; } +case 46: +YY_RULE_SETUP +#line 162 "cmFortranLexer.in.l" { yylvalp->string = strdup(yytext); return WORD; } -case 45: +case 47: +YY_RULE_SETUP +#line 167 "cmFortranLexer.in.l" +{ return LPAREN; } +case 48: +YY_RULE_SETUP +#line 168 "cmFortranLexer.in.l" +{ return RPAREN; } +case 49: YY_RULE_SETUP -#line 165 "cmFortranLexer.in.l" +#line 170 "cmFortranLexer.in.l" { return GARBAGE; } -case 46: -/* rule 46 can match eol */ +case 50: +/* rule 50 can match eol */ YY_RULE_SETUP -#line 167 "cmFortranLexer.in.l" +#line 172 "cmFortranLexer.in.l" { return EOSTMT; } -case 47: +case 51: YY_RULE_SETUP -#line 170 "cmFortranLexer.in.l" +#line 175 "cmFortranLexer.in.l" /* Ignore */ YY_BREAK -case 48: -/* rule 48 can match eol */ +case 52: +/* rule 52 can match eol */ YY_RULE_SETUP -#line 171 "cmFortranLexer.in.l" +#line 176 "cmFortranLexer.in.l" /* Ignore line-endings preceded by \ */ YY_BREAK -case 49: +case 53: YY_RULE_SETUP -#line 173 "cmFortranLexer.in.l" +#line 178 "cmFortranLexer.in.l" { return *yytext; } case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(free_fmt): case YY_STATE_EOF(fixed_fmt): case YY_STATE_EOF(str_sq): case YY_STATE_EOF(str_dq): -#line 175 "cmFortranLexer.in.l" +#line 180 "cmFortranLexer.in.l" { if(!cmFortranParser_FilePop(yyextra) ) { @@ -1273,12 +1296,12 @@ case YY_STATE_EOF(str_dq): } } YY_BREAK -case 50: +case 54: YY_RULE_SETUP -#line 182 "cmFortranLexer.in.l" +#line 187 "cmFortranLexer.in.l" ECHO; YY_BREAK -#line 1320 "cmFortranLexer.cxx" +#line 1347 "cmFortranLexer.cxx" case YY_END_OF_BUFFER: { @@ -1572,7 +1595,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 >= 199 ) + if ( yy_current_state >= 210 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; @@ -1601,11 +1624,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 >= 199 ) + if ( yy_current_state >= 210 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; - yy_is_jam = (yy_current_state == 198); + yy_is_jam = (yy_current_state == 209); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2447,7 +2470,7 @@ void cmFortran_yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 182 "cmFortranLexer.in.l" +#line 187 "cmFortranLexer.in.l" diff --git a/Source/cmFortranLexer.h b/Source/cmFortranLexer.h index cb175ec..851f37f 100644 --- a/Source/cmFortranLexer.h +++ b/Source/cmFortranLexer.h @@ -337,7 +337,7 @@ extern int cmFortran_yylex (yyscan_t yyscanner); #undef YY_DECL #endif -#line 182 "cmFortranLexer.in.l" +#line 187 "cmFortranLexer.in.l" #line 344 "cmFortranLexer.h" diff --git a/Source/cmFortranLexer.in.l b/Source/cmFortranLexer.in.l index 6870f7c..ea3c132 100644 --- a/Source/cmFortranLexer.in.l +++ b/Source/cmFortranLexer.in.l @@ -146,6 +146,7 @@ $[ \t]*endif { return F90PPR_ENDIF; } , { return COMMA; } :: { return DCOLON; } +: { return COLON; } \n[ ]{5}[^ ] { return GARBAGE; } @@ -155,6 +156,7 @@ $[ \t]*endif { return F90PPR_ENDIF; } [Ii][Nn][Cc][Ll][Uu][Dd][Ee] { return INCLUDE; } [Ii][Nn][Tt][Ee][Rr][Ff][Aa][Cc][Ee] { return INTERFACE; } [Mm][Oo][Dd][Uu][Ll][Ee] { return MODULE; } +[Ss][Uu][bb][Mm][Oo][Dd][Uu][Ll][Ee] { return SUBMODULE; } [Uu][Ss][Ee] { return USE; } [a-zA-Z_][a-zA-Z_0-9]* { @@ -162,7 +164,10 @@ $[ \t]*endif { return F90PPR_ENDIF; } return WORD; } -[^ \t\n\r;,!'"a-zA-Z=&]+ { return GARBAGE; } +\( { return LPAREN; } +\) { return RPAREN; } + +[^ \t\n\r:;,!'"a-zA-Z=&()]+ { return GARBAGE; } ;|\n { return EOSTMT; } diff --git a/Source/cmFortranParser.cxx b/Source/cmFortranParser.cxx index b44afd2..2b3e22d 100644 --- a/Source/cmFortranParser.cxx +++ b/Source/cmFortranParser.cxx @@ -192,16 +192,20 @@ extern int cmFortran_yydebug; F90PPR_ELIF = 279, F90PPR_ENDIF = 280, COMMA = 281, - DCOLON = 282, - UNTERMINATED_STRING = 283, - STRING = 284, - WORD = 285, - CPP_INCLUDE_ANGLE = 286, - END = 287, - INCLUDE = 288, - INTERFACE = 289, - MODULE = 290, - USE = 291 + COLON = 282, + DCOLON = 283, + LPAREN = 284, + RPAREN = 285, + UNTERMINATED_STRING = 286, + STRING = 287, + WORD = 288, + CPP_INCLUDE_ANGLE = 289, + END = 290, + INCLUDE = 291, + INTERFACE = 292, + MODULE = 293, + SUBMODULE = 294, + USE = 295 }; #endif /* Tokens. */ @@ -229,16 +233,20 @@ extern int cmFortran_yydebug; #define F90PPR_ELIF 279 #define F90PPR_ENDIF 280 #define COMMA 281 -#define DCOLON 282 -#define UNTERMINATED_STRING 283 -#define STRING 284 -#define WORD 285 -#define CPP_INCLUDE_ANGLE 286 -#define END 287 -#define INCLUDE 288 -#define INTERFACE 289 -#define MODULE 290 -#define USE 291 +#define COLON 282 +#define DCOLON 283 +#define LPAREN 284 +#define RPAREN 285 +#define UNTERMINATED_STRING 286 +#define STRING 287 +#define WORD 288 +#define CPP_INCLUDE_ANGLE 289 +#define END 290 +#define INCLUDE 291 +#define INTERFACE 292 +#define MODULE 293 +#define SUBMODULE 294 +#define USE 295 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -249,7 +257,7 @@ union YYSTYPE char* string; -#line 253 "cmFortranParser.cxx" /* yacc.c:355 */ +#line 261 "cmFortranParser.cxx" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -265,7 +273,7 @@ int cmFortran_yyparse (yyscan_t yyscanner); /* Copy the second part of user declarations. */ -#line 269 "cmFortranParser.cxx" /* yacc.c:358 */ +#line 277 "cmFortranParser.cxx" /* yacc.c:358 */ #ifdef short # undef short @@ -507,21 +515,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 469 +#define YYLAST 593 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 37 +#define YYNTOKENS 41 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 14 /* YYNRULES -- Number of rules. */ -#define YYNRULES 57 +#define YYNRULES 63 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 109 +#define YYNSTATES 126 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 291 +#define YYMAXUTOK 295 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -559,19 +567,20 @@ static const yytype_uint8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36 + 35, 36, 37, 38, 39, 40 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { - 0, 102, 102, 102, 105, 109, 114, 123, 128, 132, - 137, 145, 150, 155, 160, 165, 170, 175, 180, 185, - 189, 193, 197, 201, 202, 207, 207, 207, 208, 208, - 209, 209, 210, 210, 211, 211, 212, 212, 213, 213, - 214, 214, 215, 215, 216, 216, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230 + 0, 103, 103, 103, 106, 110, 115, 124, 130, 137, + 142, 146, 151, 159, 164, 169, 174, 179, 184, 189, + 194, 199, 203, 207, 211, 215, 216, 221, 221, 221, + 222, 222, 223, 223, 224, 224, 225, 225, 226, 226, + 227, 227, 228, 228, 229, 229, 230, 230, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248 }; #endif @@ -585,10 +594,11 @@ static const char *const yytname[] = "F90PPR_DEFINE", "CPP_DEFINE", "F90PPR_UNDEF", "CPP_UNDEF", "CPP_IFDEF", "CPP_IFNDEF", "CPP_IF", "CPP_ELSE", "CPP_ELIF", "CPP_ENDIF", "F90PPR_IFDEF", "F90PPR_IFNDEF", "F90PPR_IF", "F90PPR_ELSE", - "F90PPR_ELIF", "F90PPR_ENDIF", "COMMA", "DCOLON", "UNTERMINATED_STRING", - "STRING", "WORD", "CPP_INCLUDE_ANGLE", "END", "INCLUDE", "INTERFACE", - "MODULE", "USE", "$accept", "code", "stmt", "include", "define", "undef", - "ifdef", "ifndef", "if", "elif", "else", "endif", "other", "misc_code", YY_NULLPTR + "F90PPR_ELIF", "F90PPR_ENDIF", "COMMA", "COLON", "DCOLON", "LPAREN", + "RPAREN", "UNTERMINATED_STRING", "STRING", "WORD", "CPP_INCLUDE_ANGLE", + "END", "INCLUDE", "INTERFACE", "MODULE", "SUBMODULE", "USE", "$accept", + "code", "stmt", "include", "define", "undef", "ifdef", "ifndef", "if", + "elif", "else", "endif", "other", "misc_code", YY_NULLPTR }; #endif @@ -600,14 +610,15 @@ static const yytype_uint16 yytoknum[] = 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291 + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295 }; # endif -#define YYPACT_NINF -38 +#define YYPACT_NINF -39 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-38))) + (!!((Yystate) == (-39))) #define YYTABLE_NINF -1 @@ -618,17 +629,19 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -38, 39, -38, 3, -38, -20, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -22, -16, 1, -8, - -6, -38, -4, -7, -3, -2, -1, -38, -38, -38, - -38, -38, -38, 62, -38, -38, -38, -38, -38, 0, - 2, -38, -38, -38, -38, -38, -38, 73, 107, 118, - 152, 163, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, 197, 208, 242, 253, - 6, -38, 287, 298, 332, 343, 377, 388, -38, -38, - -38, -38, -38, -38, -38, -38, -38, 4, 422, -38, - -38, -38, -38, -38, -38, -38, -38, 433, -38 + -39, 21, -39, 1, -39, -20, -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, 39, -39, 15, 16, 18, 19, 33, -39, -39, + -39, -39, -39, -39, 59, -39, -39, -39, -39, -39, + 35, 36, 37, -39, -39, -39, -39, -39, -39, 76, + 114, 129, 167, 182, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, 220, 235, 273, 288, -21, 26, -39, 326, + 341, 379, 394, 432, 447, -39, -39, -39, -39, -39, + -39, -39, -39, -39, 38, 40, 41, 485, -39, -39, + -39, -39, -39, -39, 45, -39, -39, -39, 43, 500, + 538, -39, -39, -39, 553, -39 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -636,31 +649,33 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 0, 23, 0, 25, 26, 27, 29, - 28, 31, 30, 32, 34, 36, 40, 38, 42, 33, - 35, 37, 41, 39, 43, 44, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 44, 44, 44, - 44, 24, 44, 0, 44, 44, 4, 44, 44, 0, - 0, 44, 44, 44, 44, 44, 44, 0, 0, 0, - 0, 0, 13, 54, 53, 56, 55, 57, 52, 46, - 47, 48, 49, 50, 51, 45, 0, 0, 0, 0, - 0, 44, 0, 0, 0, 0, 0, 0, 19, 20, - 21, 22, 12, 8, 11, 7, 6, 0, 0, 5, - 14, 15, 16, 17, 18, 44, 9, 0, 10 + 2, 0, 1, 0, 25, 0, 27, 28, 29, 31, + 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, + 0, 0, 0, 46, 46, 46, 46, 46, 46, 0, + 0, 0, 0, 0, 15, 57, 56, 62, 58, 59, + 60, 61, 63, 55, 48, 49, 50, 51, 52, 53, + 54, 47, 0, 0, 0, 0, 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 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -37, -38 + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -38, -39 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 1, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 43, 75 + -1, 1, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 44, 81 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -668,143 +683,173 @@ static const yytype_int8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { - 57, 58, 59, 60, 46, 61, 41, 76, 77, 42, - 78, 79, 44, 45, 82, 83, 84, 85, 86, 87, - 49, 50, 48, 53, 51, 52, 0, 54, 55, 56, - 80, 47, 81, 97, 105, 0, 0, 0, 0, 2, - 3, 0, 4, 0, 98, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 62, 63, 64, 107, 0, - 25, 26, 27, 28, 29, 30, 88, 63, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, - 67, 68, 69, 0, 70, 71, 72, 73, 74, 65, - 66, 67, 68, 69, 0, 70, 71, 72, 73, 74, - 89, 63, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 63, 64, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 65, 66, 67, 68, 69, 0, 70, - 71, 72, 73, 74, 65, 66, 67, 68, 69, 0, - 70, 71, 72, 73, 74, 91, 63, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 92, 63, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, - 67, 68, 69, 0, 70, 71, 72, 73, 74, 65, - 66, 67, 68, 69, 0, 70, 71, 72, 73, 74, - 93, 63, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 94, 63, 64, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 65, 66, 67, 68, 69, 0, 70, - 71, 72, 73, 74, 65, 66, 67, 68, 69, 0, - 70, 71, 72, 73, 74, 95, 63, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 63, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, - 67, 68, 69, 0, 70, 71, 72, 73, 74, 65, - 66, 67, 68, 69, 0, 70, 71, 72, 73, 74, - 99, 63, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 100, 63, 64, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 65, 66, 67, 68, 69, 0, 70, - 71, 72, 73, 74, 65, 66, 67, 68, 69, 0, - 70, 71, 72, 73, 74, 101, 63, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 102, 63, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, - 67, 68, 69, 0, 70, 71, 72, 73, 74, 65, - 66, 67, 68, 69, 0, 70, 71, 72, 73, 74, - 103, 63, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 104, 63, 64, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 65, 66, 67, 68, 69, 0, 70, - 71, 72, 73, 74, 65, 66, 67, 68, 69, 0, - 70, 71, 72, 73, 74, 106, 63, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 63, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, - 67, 68, 69, 0, 70, 71, 72, 73, 74, 65, - 66, 67, 68, 69, 0, 70, 71, 72, 73, 74 + 59, 60, 61, 62, 42, 63, 104, 82, 83, 105, + 84, 85, 43, 45, 46, 89, 90, 91, 92, 93, + 94, 2, 3, 47, 4, 49, 50, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 54, 0, 55, + 107, 56, 57, 48, 106, 25, 26, 27, 28, 29, + 30, 31, 64, 65, 66, 51, 58, 52, 86, 87, + 88, 114, 53, 115, 116, 118, 121, 119, 120, 95, + 65, 66, 0, 124, 0, 67, 68, 69, 70, 71, + 72, 73, 74, 0, 75, 76, 77, 78, 79, 80, + 0, 0, 67, 68, 69, 70, 71, 72, 73, 74, + 0, 75, 76, 77, 78, 79, 80, 96, 65, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 97, 65, 66, 0, 0, 0, 0, 0, + 67, 68, 69, 70, 71, 72, 73, 74, 0, 75, + 76, 77, 78, 79, 80, 67, 68, 69, 70, 71, + 72, 73, 74, 0, 75, 76, 77, 78, 79, 80, + 98, 65, 66, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 65, 66, 0, 0, + 0, 0, 0, 67, 68, 69, 70, 71, 72, 73, + 74, 0, 75, 76, 77, 78, 79, 80, 67, 68, + 69, 70, 71, 72, 73, 74, 0, 75, 76, 77, + 78, 79, 80, 100, 65, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 65, + 66, 0, 0, 0, 0, 0, 67, 68, 69, 70, + 71, 72, 73, 74, 0, 75, 76, 77, 78, 79, + 80, 67, 68, 69, 70, 71, 72, 73, 74, 0, + 75, 76, 77, 78, 79, 80, 102, 65, 66, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 103, 65, 66, 0, 0, 0, 0, 0, 67, + 68, 69, 70, 71, 72, 73, 74, 0, 75, 76, + 77, 78, 79, 80, 67, 68, 69, 70, 71, 72, + 73, 74, 0, 75, 76, 77, 78, 79, 80, 108, + 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 65, 66, 0, 0, 0, + 0, 0, 67, 68, 69, 70, 71, 72, 73, 74, + 0, 75, 76, 77, 78, 79, 80, 67, 68, 69, + 70, 71, 72, 73, 74, 0, 75, 76, 77, 78, + 79, 80, 110, 65, 66, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 65, 66, + 0, 0, 0, 0, 0, 67, 68, 69, 70, 71, + 72, 73, 74, 0, 75, 76, 77, 78, 79, 80, + 67, 68, 69, 70, 71, 72, 73, 74, 0, 75, + 76, 77, 78, 79, 80, 112, 65, 66, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 113, 65, 66, 0, 0, 0, 0, 0, 67, 68, + 69, 70, 71, 72, 73, 74, 0, 75, 76, 77, + 78, 79, 80, 67, 68, 69, 70, 71, 72, 73, + 74, 0, 75, 76, 77, 78, 79, 80, 117, 65, + 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 122, 65, 66, 0, 0, 0, 0, + 0, 67, 68, 69, 70, 71, 72, 73, 74, 0, + 75, 76, 77, 78, 79, 80, 67, 68, 69, 70, + 71, 72, 73, 74, 0, 75, 76, 77, 78, 79, + 80, 123, 65, 66, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 125, 65, 66, 0, + 0, 0, 0, 0, 67, 68, 69, 70, 71, 72, + 73, 74, 0, 75, 76, 77, 78, 79, 80, 67, + 68, 69, 70, 71, 72, 73, 74, 0, 75, 76, + 77, 78, 79, 80 }; static const yytype_int8 yycheck[] = { - 37, 38, 39, 40, 3, 42, 3, 44, 45, 29, - 47, 48, 34, 29, 51, 52, 53, 54, 55, 56, - 26, 27, 30, 30, 30, 29, -1, 30, 30, 30, - 30, 30, 30, 27, 30, -1, -1, -1, -1, 0, - 1, -1, 3, -1, 81, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 3, 4, 5, 105, -1, - 31, 32, 33, 34, 35, 36, 3, 4, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, - 28, 29, 30, -1, 32, 33, 34, 35, 36, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, - 3, 4, 5, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 26, 27, 28, 29, 30, -1, 32, - 33, 34, 35, 36, 26, 27, 28, 29, 30, -1, - 32, 33, 34, 35, 36, 3, 4, 5, -1, -1, - -1, -1, -1, -1, -1, -1, 3, 4, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, - 28, 29, 30, -1, 32, 33, 34, 35, 36, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, - 3, 4, 5, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 26, 27, 28, 29, 30, -1, 32, - 33, 34, 35, 36, 26, 27, 28, 29, 30, -1, - 32, 33, 34, 35, 36, 3, 4, 5, -1, -1, - -1, -1, -1, -1, -1, -1, 3, 4, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, - 28, 29, 30, -1, 32, 33, 34, 35, 36, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, - 3, 4, 5, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 26, 27, 28, 29, 30, -1, 32, - 33, 34, 35, 36, 26, 27, 28, 29, 30, -1, - 32, 33, 34, 35, 36, 3, 4, 5, -1, -1, - -1, -1, -1, -1, -1, -1, 3, 4, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, - 28, 29, 30, -1, 32, 33, 34, 35, 36, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, + 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, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 32, -1, 33, + 88, 33, 33, 33, 28, 34, 35, 36, 37, 38, + 39, 40, 3, 4, 5, 26, 33, 28, 33, 33, + 33, 33, 33, 33, 33, 30, 33, 115, 116, 3, + 4, 5, -1, 121, -1, 26, 27, 28, 29, 30, + 31, 32, 33, -1, 35, 36, 37, 38, 39, 40, + -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, + -1, 35, 36, 37, 38, 39, 40, 3, 4, 5, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, 5, -1, -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, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 26, 27, 28, 29, 30, -1, 32, - 33, 34, 35, 36, 26, 27, 28, 29, 30, -1, - 32, 33, 34, 35, 36, 3, 4, 5, -1, -1, + -1, -1, -1, -1, -1, 3, 4, 5, -1, -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, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, + 5, -1, -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, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3, 4, 5, -1, -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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, + -1, -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, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3, 4, 5, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3, 4, 5, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, - 28, 29, 30, -1, 32, 33, 34, 35, 36, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36 + -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 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 38, 0, 1, 3, 6, 7, 8, 9, 10, + 0, 42, 0, 1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 31, 32, 33, 34, 35, - 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 3, 29, 49, 34, 29, 3, 30, 30, 26, - 27, 30, 29, 30, 30, 30, 30, 49, 49, 49, - 49, 49, 3, 4, 5, 26, 27, 28, 29, 30, - 32, 33, 34, 35, 36, 50, 49, 49, 49, 49, - 30, 30, 49, 49, 49, 49, 49, 49, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 27, 49, 3, - 3, 3, 3, 3, 3, 30, 3, 49, 3 + 21, 22, 23, 24, 25, 34, 35, 36, 37, 38, + 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 3, 32, 53, 37, 32, 3, 33, 33, + 29, 26, 28, 33, 32, 33, 33, 33, 33, 53, + 53, 53, 53, 53, 3, 4, 5, 26, 27, 28, + 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, + 40, 54, 53, 53, 53, 53, 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 37, 38, 38, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 40, 40, 40, 41, 41, - 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, - 47, 47, 48, 48, 49, 49, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50 + 0, 41, 42, 42, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, + 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, + 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 0, 2, 2, 4, 4, 4, 4, 5, - 7, 4, 4, 3, 4, 4, 4, 4, 4, 3, - 3, 3, 3, 1, 2, 1, 1, 1, 1, 1, + 0, 2, 0, 2, 2, 4, 4, 7, 9, 4, + 4, 5, 7, 4, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1 }; @@ -1487,26 +1532,26 @@ yyreduce: switch (yyn) { case 4: -#line 105 "cmFortranParser.y" /* yacc.c:1646 */ +#line 106 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); } -#line 1496 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1541 "cmFortranParser.cxx" /* yacc.c:1646 */ break; case 5: -#line 109 "cmFortranParser.y" /* yacc.c:1646 */ +#line 110 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleUse(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1506 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1551 "cmFortranParser.cxx" /* yacc.c:1646 */ break; case 6: -#line 114 "cmFortranParser.y" /* yacc.c:1646 */ +#line 115 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); if (cmsysString_strcasecmp((yyvsp[-2].string), "function") != 0 && @@ -1516,40 +1561,63 @@ yyreduce: } free((yyvsp[-2].string)); } -#line 1520 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1565 "cmFortranParser.cxx" /* yacc.c:1646 */ break; case 7: -#line 123 "cmFortranParser.y" /* yacc.c:1646 */ +#line 124 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - cmFortranParser_SetInInterface(parser, true); + cmFortranParser_RuleUse(parser, (yyvsp[-4].string)); + free((yyvsp[-4].string)); free((yyvsp[-2].string)); } -#line 1530 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1576 "cmFortranParser.cxx" /* yacc.c:1646 */ break; case 8: -#line 128 "cmFortranParser.y" /* yacc.c:1646 */ +#line 130 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - cmFortranParser_SetInInterface(parser, false); + cmFortranParser_RuleUse(parser, (yyvsp[-6].string)); + free((yyvsp[-6].string)); + free((yyvsp[-4].string)); + free((yyvsp[-2].string)); } -#line 1539 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1588 "cmFortranParser.cxx" /* yacc.c:1646 */ break; case 9: -#line 132 "cmFortranParser.y" /* yacc.c:1646 */ +#line 137 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); - cmFortranParser_RuleUse(parser, (yyvsp[-2].string)); + cmFortranParser_SetInInterface(parser, true); free((yyvsp[-2].string)); } -#line 1549 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1598 "cmFortranParser.cxx" /* yacc.c:1646 */ break; case 10: -#line 137 "cmFortranParser.y" /* yacc.c:1646 */ +#line 142 "cmFortranParser.y" /* yacc.c:1646 */ + { + cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); + cmFortranParser_SetInInterface(parser, false); + } +#line 1607 "cmFortranParser.cxx" /* yacc.c:1646 */ + break; + + case 11: +#line 146 "cmFortranParser.y" /* yacc.c:1646 */ + { + cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); + cmFortranParser_RuleUse(parser, (yyvsp[-2].string)); + free((yyvsp[-2].string)); + } +#line 1617 "cmFortranParser.cxx" /* yacc.c:1646 */ + break; + + case 12: +#line 151 "cmFortranParser.y" /* yacc.c:1646 */ { if (cmsysString_strcasecmp((yyvsp[-4].string), "non_intrinsic") == 0) { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); @@ -1558,139 +1626,139 @@ yyreduce: free((yyvsp[-4].string)); free((yyvsp[-2].string)); } -#line 1562 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1630 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 11: -#line 145 "cmFortranParser.y" /* yacc.c:1646 */ + case 13: +#line 159 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1572 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1640 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 12: -#line 150 "cmFortranParser.y" /* yacc.c:1646 */ + case 14: +#line 164 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleLineDirective(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1582 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1650 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 13: -#line 155 "cmFortranParser.y" /* yacc.c:1646 */ + case 15: +#line 169 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1592 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1660 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 14: -#line 160 "cmFortranParser.y" /* yacc.c:1646 */ + case 16: +#line 174 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1602 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1670 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 15: -#line 165 "cmFortranParser.y" /* yacc.c:1646 */ + case 17: +#line 179 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleDefine(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1612 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1680 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 16: -#line 170 "cmFortranParser.y" /* yacc.c:1646 */ + case 18: +#line 184 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleUndef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1622 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1690 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 17: -#line 175 "cmFortranParser.y" /* yacc.c:1646 */ + case 19: +#line 189 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIfdef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1632 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1700 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 18: -#line 180 "cmFortranParser.y" /* yacc.c:1646 */ + case 20: +#line 194 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIfndef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1642 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1710 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 19: -#line 185 "cmFortranParser.y" /* yacc.c:1646 */ + case 21: +#line 199 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIf(parser); } -#line 1651 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1719 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 20: -#line 189 "cmFortranParser.y" /* yacc.c:1646 */ + case 22: +#line 203 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleElif(parser); } -#line 1660 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1728 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 21: -#line 193 "cmFortranParser.y" /* yacc.c:1646 */ + case 23: +#line 207 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleElse(parser); } -#line 1669 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1737 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 22: -#line 197 "cmFortranParser.y" /* yacc.c:1646 */ + case 24: +#line 211 "cmFortranParser.y" /* yacc.c:1646 */ { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleEndif(parser); } -#line 1678 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1746 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 46: -#line 219 "cmFortranParser.y" /* yacc.c:1646 */ + case 48: +#line 233 "cmFortranParser.y" /* yacc.c:1646 */ { free ((yyvsp[0].string)); } -#line 1684 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1752 "cmFortranParser.cxx" /* yacc.c:1646 */ break; - case 52: -#line 225 "cmFortranParser.y" /* yacc.c:1646 */ + case 55: +#line 240 "cmFortranParser.y" /* yacc.c:1646 */ { free ((yyvsp[0].string)); } -#line 1690 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1758 "cmFortranParser.cxx" /* yacc.c:1646 */ break; -#line 1694 "cmFortranParser.cxx" /* yacc.c:1646 */ +#line 1762 "cmFortranParser.cxx" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1920,6 +1988,6 @@ yyreturn: #endif return yyresult; } -#line 233 "cmFortranParser.y" /* yacc.c:1906 */ +#line 251 "cmFortranParser.y" /* yacc.c:1906 */ /* End of grammar */ diff --git a/Source/cmFortranParser.y b/Source/cmFortranParser.y index 7cf7619..d3327e9 100644 --- a/Source/cmFortranParser.y +++ b/Source/cmFortranParser.y @@ -85,7 +85,7 @@ static void cmFortran_yyerror(yyscan_t yyscanner, const char* message) %token CPP_IFDEF CPP_IFNDEF CPP_IF CPP_ELSE CPP_ELIF CPP_ENDIF %token F90PPR_IFDEF F90PPR_IFNDEF F90PPR_IF %token F90PPR_ELSE F90PPR_ELIF F90PPR_ENDIF -%token COMMA DCOLON +%token COMMA COLON DCOLON LPAREN RPAREN %token UNTERMINATED_STRING %token STRING WORD %token CPP_INCLUDE_ANGLE @@ -93,6 +93,7 @@ static void cmFortran_yyerror(yyscan_t yyscanner, const char* message) %token INCLUDE %token INTERFACE %token MODULE +%token SUBMODULE %token USE /*-------------------------------------------------------------------------*/ @@ -120,6 +121,19 @@ stmt: } free($2); } +| SUBMODULE LPAREN WORD RPAREN WORD other EOSTMT { + cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); + cmFortranParser_RuleUse(parser, $3); + free($3); + free($5); + } +| SUBMODULE LPAREN WORD COLON WORD RPAREN WORD other EOSTMT { + cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); + cmFortranParser_RuleUse(parser, $3); + free($3); + free($5); + free($7); + } | INTERFACE WORD other EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); @@ -221,11 +235,15 @@ misc_code: | INCLUDE | INTERFACE | MODULE +| SUBMODULE | USE | STRING { free ($1); } | GARBAGE | ASSIGNMENT_OP +| COLON | DCOLON +| LPAREN +| RPAREN | COMMA | UNTERMINATED_STRING ; diff --git a/Source/cmFortranParserTokens.h b/Source/cmFortranParserTokens.h index e988df4..18b9e0a 100644 --- a/Source/cmFortranParserTokens.h +++ b/Source/cmFortranParserTokens.h @@ -69,16 +69,20 @@ extern int cmFortran_yydebug; F90PPR_ELIF = 279, F90PPR_ENDIF = 280, COMMA = 281, - DCOLON = 282, - UNTERMINATED_STRING = 283, - STRING = 284, - WORD = 285, - CPP_INCLUDE_ANGLE = 286, - END = 287, - INCLUDE = 288, - INTERFACE = 289, - MODULE = 290, - USE = 291 + COLON = 282, + DCOLON = 283, + LPAREN = 284, + RPAREN = 285, + UNTERMINATED_STRING = 286, + STRING = 287, + WORD = 288, + CPP_INCLUDE_ANGLE = 289, + END = 290, + INCLUDE = 291, + INTERFACE = 292, + MODULE = 293, + SUBMODULE = 294, + USE = 295 }; #endif /* Tokens. */ @@ -106,16 +110,20 @@ extern int cmFortran_yydebug; #define F90PPR_ELIF 279 #define F90PPR_ENDIF 280 #define COMMA 281 -#define DCOLON 282 -#define UNTERMINATED_STRING 283 -#define STRING 284 -#define WORD 285 -#define CPP_INCLUDE_ANGLE 286 -#define END 287 -#define INCLUDE 288 -#define INTERFACE 289 -#define MODULE 290 -#define USE 291 +#define COLON 282 +#define DCOLON 283 +#define LPAREN 284 +#define RPAREN 285 +#define UNTERMINATED_STRING 286 +#define STRING 287 +#define WORD 288 +#define CPP_INCLUDE_ANGLE 289 +#define END 290 +#define INCLUDE 291 +#define INTERFACE 292 +#define MODULE 293 +#define SUBMODULE 294 +#define USE 295 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -126,7 +134,7 @@ union YYSTYPE char* string; -#line 130 "cmFortranParserTokens.h" /* yacc.c:1909 */ +#line 138 "cmFortranParserTokens.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; -- cgit v0.12