Browse Source

Merge topic 'fortran-module-dep'

219a9b1e14 Fortran: Fix suprious dependencies with submodules
a7211d6a2f Fortran: Teach lexer to handle CRLF newlines

Acked-by: Kitware Robot <[email protected]>
Merge-request: !7529
Brad King 3 years ago
parent
commit
20e544eb24

+ 193 - 184
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;

+ 8 - 8
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; }
 

+ 144 - 180
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 */

+ 7 - 11
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);

+ 1 - 0
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

+ 5 - 2
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

+ 33 - 0
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

+ 1 - 1
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