Coverage Report

Created: 2026-06-15 07:03

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/LexerParser/cmFortranParser.cxx
Line
Count
Source
1
/* A Bison parser, made by GNU Bison 3.8.2.  */
2
3
/* Bison implementation for Yacc-like parsers in C
4
5
   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6
   Inc.
7
8
   This program is free software: you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation, either version 3 of the License, or
11
   (at your option) any later version.
12
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
18
   You should have received a copy of the GNU General Public License
19
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
20
21
/* As a special exception, you may create a larger work that contains
22
   part or all of the Bison parser skeleton and distribute that work
23
   under terms of your choice, so long as that work isn't itself a
24
   parser generator using the skeleton or a modified version thereof
25
   as a parser skeleton.  Alternatively, if you modify or redistribute
26
   the parser skeleton itself, you may (at your option) remove this
27
   special exception, which will cause the skeleton and the resulting
28
   Bison output files to be licensed under the GNU General Public
29
   License without this special exception.
30
31
   This special exception was added by the Free Software Foundation in
32
   version 2.2 of Bison.  */
33
34
/* C LALR(1) parser skeleton written by Richard Stallman, by
35
   simplifying the original so-called "semantic" parser.  */
36
37
/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38
   especially those whose name start with YY_ or yy_.  They are
39
   private implementation details that can be changed or removed.  */
40
41
/* All symbols defined below should begin with yy or YY, to avoid
42
   infringing on user name space.  This should be done even for local
43
   variables, as they might otherwise be expanded by user macros.
44
   There are some unavoidable exceptions within include files to
45
   define necessary library symbols; they are noted "INFRINGES ON
46
   USER NAME SPACE" below.  */
47
48
/* Identify Bison output, and Bison version.  */
49
#define YYBISON 30802
50
51
/* Bison version string.  */
52
#define YYBISON_VERSION "3.8.2"
53
54
/* Skeleton name.  */
55
#define YYSKELETON_NAME "yacc.c"
56
57
/* Pure parsers.  */
58
#define YYPURE 1
59
60
/* Push parsers.  */
61
#define YYPUSH 0
62
63
/* Pull parsers.  */
64
#define YYPULL 1
65
66
67
/* Substitute the variable and function names.  */
68
#define yyparse         cmFortran_yyparse
69
0
#define yylex           cmFortran_yylex
70
0
#define yyerror         cmFortran_yyerror
71
#define yydebug         cmFortran_yydebug
72
0
#define yynerrs         cmFortran_yynerrs
73
74
/* First part of user prologue.  */
75
#line 1 "cmFortranParser.y"
76
77
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
78
   file LICENSE.rst or https://cmake.org/licensing for details.  */
79
/*-------------------------------------------------------------------------
80
  Portions of this source have been derived from makedepf90 version 2.8.8,
81
82
   Copyright (C) 2000--2006 Erik Edelmann <erik.edelmann@iki.fi>
83
84
  The code was originally distributed under the GPL but permission
85
  from the copyright holder has been obtained to distribute this
86
  derived work under the CMake license.
87
-------------------------------------------------------------------------*/
88
89
/*
90
91
This file must be translated to C and modified to build everywhere.
92
93
Run bison like this:
94
95
  bison --name-prefix=cmFortran_yy
96
        --defines=cmFortranParserTokens.h
97
         -ocmFortranParser.cxx
98
          cmFortranParser.y
99
100
*/
101
102
#include "cmConfigure.h" // IWYU pragma: keep
103
104
#include "cmsys/String.h"
105
#include <stdlib.h>
106
#include <string.h>
107
108
/*-------------------------------------------------------------------------*/
109
#define cmFortranParser_cxx
110
#include "cmFortranParser.h" /* Interface to parser object.  */
111
112
/* Forward declare the lexer entry point.  */
113
YY_DECL;
114
115
/* Helper function to forward error callback from parser.  */
116
static void cmFortran_yyerror(yyscan_t yyscanner, const char* message)
117
0
{
118
0
  cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
119
0
  cmFortranParser_Error(parser, message);
120
0
}
121
122
/* Disable some warnings in the generated code.  */
123
#ifdef _MSC_VER
124
# pragma warning (disable: 4102) /* Unused goto label.  */
125
# pragma warning (disable: 4065) /* Switch contains default but no case. */
126
# pragma warning (disable: 4701) /* Local variable may not be initialized.  */
127
# pragma warning (disable: 4702) /* Unreachable code.  */
128
# pragma warning (disable: 4127) /* Conditional expression is constant.  */
129
# pragma warning (disable: 4244) /* Conversion to smaller type, data loss. */
130
#endif
131
#if defined(__GNUC__) && __GNUC__ >= 8
132
# pragma GCC diagnostic ignored "-Wconversion"
133
# pragma GCC diagnostic ignored "-Wfree-nonheap-object"
134
#endif
135
#if defined(__GNUC__) && __GNUC__ >= 16
136
# pragma GCC diagnostic ignored "-Wunused-but-set-variable"
137
#endif
138
#if defined(__clang__) && defined(__has_warning)
139
# if __has_warning("-Wunused-but-set-variable")
140
#  pragma clang diagnostic ignored "-Wunused-but-set-variable"
141
# endif
142
#endif
143
144
#line 145 "cmFortranParser.cxx"
145
146
# ifndef YY_CAST
147
#  ifdef __cplusplus
148
0
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
149
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
150
#  else
151
#   define YY_CAST(Type, Val) ((Type) (Val))
152
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
153
#  endif
154
# endif
155
# ifndef YY_NULLPTR
156
#  if defined __cplusplus
157
#   if 201103L <= __cplusplus
158
0
#    define YY_NULLPTR nullptr
159
#   else
160
#    define YY_NULLPTR 0
161
#   endif
162
#  else
163
#   define YY_NULLPTR ((void*)0)
164
#  endif
165
# endif
166
167
#include "cmFortranParserTokens.h"
168
/* Symbol kind.  */
169
enum yysymbol_kind_t
170
{
171
  YYSYMBOL_YYEMPTY = -2,
172
  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
173
  YYSYMBOL_YYerror = 1,                    /* error  */
174
  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
175
  YYSYMBOL_EOSTMT = 3,                     /* EOSTMT  */
176
  YYSYMBOL_ASSIGNMENT_OP = 4,              /* ASSIGNMENT_OP  */
177
  YYSYMBOL_GARBAGE = 5,                    /* GARBAGE  */
178
  YYSYMBOL_CPP_LINE_DIRECTIVE = 6,         /* CPP_LINE_DIRECTIVE  */
179
  YYSYMBOL_CPP_INCLUDE = 7,                /* CPP_INCLUDE  */
180
  YYSYMBOL_F90PPR_INCLUDE = 8,             /* F90PPR_INCLUDE  */
181
  YYSYMBOL_COCO_INCLUDE = 9,               /* COCO_INCLUDE  */
182
  YYSYMBOL_F90PPR_DEFINE = 10,             /* F90PPR_DEFINE  */
183
  YYSYMBOL_CPP_DEFINE = 11,                /* CPP_DEFINE  */
184
  YYSYMBOL_F90PPR_UNDEF = 12,              /* F90PPR_UNDEF  */
185
  YYSYMBOL_CPP_UNDEF = 13,                 /* CPP_UNDEF  */
186
  YYSYMBOL_CPP_IFDEF = 14,                 /* CPP_IFDEF  */
187
  YYSYMBOL_CPP_IFNDEF = 15,                /* CPP_IFNDEF  */
188
  YYSYMBOL_CPP_IF = 16,                    /* CPP_IF  */
189
  YYSYMBOL_CPP_ELSE = 17,                  /* CPP_ELSE  */
190
  YYSYMBOL_CPP_ELIF = 18,                  /* CPP_ELIF  */
191
  YYSYMBOL_CPP_ENDIF = 19,                 /* CPP_ENDIF  */
192
  YYSYMBOL_F90PPR_IFDEF = 20,              /* F90PPR_IFDEF  */
193
  YYSYMBOL_F90PPR_IFNDEF = 21,             /* F90PPR_IFNDEF  */
194
  YYSYMBOL_F90PPR_IF = 22,                 /* F90PPR_IF  */
195
  YYSYMBOL_F90PPR_ELSE = 23,               /* F90PPR_ELSE  */
196
  YYSYMBOL_F90PPR_ELIF = 24,               /* F90PPR_ELIF  */
197
  YYSYMBOL_F90PPR_ENDIF = 25,              /* F90PPR_ENDIF  */
198
  YYSYMBOL_COMMA = 26,                     /* COMMA  */
199
  YYSYMBOL_COLON = 27,                     /* COLON  */
200
  YYSYMBOL_DCOLON = 28,                    /* DCOLON  */
201
  YYSYMBOL_LPAREN = 29,                    /* LPAREN  */
202
  YYSYMBOL_RPAREN = 30,                    /* RPAREN  */
203
  YYSYMBOL_UNTERMINATED_STRING = 31,       /* UNTERMINATED_STRING  */
204
  YYSYMBOL_STRING = 32,                    /* STRING  */
205
  YYSYMBOL_WORD = 33,                      /* WORD  */
206
  YYSYMBOL_CPP_INCLUDE_ANGLE = 34,         /* CPP_INCLUDE_ANGLE  */
207
  YYSYMBOL_END = 35,                       /* END  */
208
  YYSYMBOL_INCLUDE = 36,                   /* INCLUDE  */
209
  YYSYMBOL_INTERFACE = 37,                 /* INTERFACE  */
210
  YYSYMBOL_MODULE = 38,                    /* MODULE  */
211
  YYSYMBOL_SUBMODULE = 39,                 /* SUBMODULE  */
212
  YYSYMBOL_USE = 40,                       /* USE  */
213
  YYSYMBOL_YYACCEPT = 41,                  /* $accept  */
214
  YYSYMBOL_code = 42,                      /* code  */
215
  YYSYMBOL_stmt = 43,                      /* stmt  */
216
  YYSYMBOL_include = 44,                   /* include  */
217
  YYSYMBOL_define = 45,                    /* define  */
218
  YYSYMBOL_undef = 46,                     /* undef  */
219
  YYSYMBOL_ifdef = 47,                     /* ifdef  */
220
  YYSYMBOL_ifndef = 48,                    /* ifndef  */
221
  YYSYMBOL_if = 49,                        /* if  */
222
  YYSYMBOL_elif = 50,                      /* elif  */
223
  YYSYMBOL_else = 51,                      /* else  */
224
  YYSYMBOL_endif = 52,                     /* endif  */
225
  YYSYMBOL_other = 53,                     /* other  */
226
  YYSYMBOL_misc_code = 54                  /* misc_code  */
227
};
228
typedef enum yysymbol_kind_t yysymbol_kind_t;
229
230
231
232
233
#ifdef short
234
# undef short
235
#endif
236
237
/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
238
   <limits.h> and (if available) <stdint.h> are included
239
   so that the code can choose integer types of a good width.  */
240
241
#ifndef __PTRDIFF_MAX__
242
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
243
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
244
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
245
#  define YY_STDINT_H
246
# endif
247
#endif
248
249
/* Narrow types that promote to a signed type and that can represent a
250
   signed or unsigned integer of at least N bits.  In tables they can
251
   save space and decrease cache pressure.  Promoting to a signed type
252
   helps avoid bugs in integer arithmetic.  */
253
254
#ifdef __INT_LEAST8_MAX__
255
typedef __INT_LEAST8_TYPE__ yytype_int8;
256
#elif defined YY_STDINT_H
257
typedef int_least8_t yytype_int8;
258
#else
259
typedef signed char yytype_int8;
260
#endif
261
262
#ifdef __INT_LEAST16_MAX__
263
typedef __INT_LEAST16_TYPE__ yytype_int16;
264
#elif defined YY_STDINT_H
265
typedef int_least16_t yytype_int16;
266
#else
267
typedef short yytype_int16;
268
#endif
269
270
/* Work around bug in HP-UX 11.23, which defines these macros
271
   incorrectly for preprocessor constants.  This workaround can likely
272
   be removed in 2023, as HPE has promised support for HP-UX 11.23
273
   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
274
   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
275
#ifdef __hpux
276
# undef UINT_LEAST8_MAX
277
# undef UINT_LEAST16_MAX
278
# define UINT_LEAST8_MAX 255
279
# define UINT_LEAST16_MAX 65535
280
#endif
281
282
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
283
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
284
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
285
       && UINT_LEAST8_MAX <= INT_MAX)
286
typedef uint_least8_t yytype_uint8;
287
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
288
typedef unsigned char yytype_uint8;
289
#else
290
typedef short yytype_uint8;
291
#endif
292
293
#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
294
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
295
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
296
       && UINT_LEAST16_MAX <= INT_MAX)
297
typedef uint_least16_t yytype_uint16;
298
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
299
typedef unsigned short yytype_uint16;
300
#else
301
typedef int yytype_uint16;
302
#endif
303
304
#ifndef YYPTRDIFF_T
305
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
306
0
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
307
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
308
# elif defined PTRDIFF_MAX
309
#  ifndef ptrdiff_t
310
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
311
#  endif
312
#  define YYPTRDIFF_T ptrdiff_t
313
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
314
# else
315
#  define YYPTRDIFF_T long
316
#  define YYPTRDIFF_MAXIMUM LONG_MAX
317
# endif
318
#endif
319
320
#ifndef YYSIZE_T
321
# ifdef __SIZE_TYPE__
322
#  define YYSIZE_T __SIZE_TYPE__
323
# elif defined size_t
324
#  define YYSIZE_T size_t
325
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
326
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
327
#  define YYSIZE_T size_t
328
# else
329
#  define YYSIZE_T unsigned
330
# endif
331
#endif
332
333
#define YYSIZE_MAXIMUM                                  \
334
0
  YY_CAST (YYPTRDIFF_T,                                 \
335
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
336
            ? YYPTRDIFF_MAXIMUM                         \
337
            : YY_CAST (YYSIZE_T, -1)))
338
339
#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
340
341
342
/* Stored state numbers (used for stacks). */
343
typedef yytype_int8 yy_state_t;
344
345
/* State numbers in computations.  */
346
typedef int yy_state_fast_t;
347
348
#ifndef YY_
349
# if defined YYENABLE_NLS && YYENABLE_NLS
350
#  if ENABLE_NLS
351
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
352
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
353
#  endif
354
# endif
355
# ifndef YY_
356
0
#  define YY_(Msgid) Msgid
357
# endif
358
#endif
359
360
361
#ifndef YY_ATTRIBUTE_PURE
362
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
363
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
364
# else
365
#  define YY_ATTRIBUTE_PURE
366
# endif
367
#endif
368
369
#ifndef YY_ATTRIBUTE_UNUSED
370
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
371
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
372
# else
373
#  define YY_ATTRIBUTE_UNUSED
374
# endif
375
#endif
376
377
/* Suppress unused-variable warnings by "using" E.  */
378
#if ! defined lint || defined __GNUC__
379
0
# define YY_USE(E) ((void) (E))
380
#else
381
# define YY_USE(E) /* empty */
382
#endif
383
384
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
385
#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
386
# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
387
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
388
    _Pragma ("GCC diagnostic push")                                     \
389
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
390
# else
391
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
392
    _Pragma ("GCC diagnostic push")                                     \
393
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
394
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
395
# endif
396
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
397
    _Pragma ("GCC diagnostic pop")
398
#else
399
0
# define YY_INITIAL_VALUE(Value) Value
400
#endif
401
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
402
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
403
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
404
#endif
405
#ifndef YY_INITIAL_VALUE
406
# define YY_INITIAL_VALUE(Value) /* Nothing. */
407
#endif
408
409
#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
410
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
411
    _Pragma ("GCC diagnostic push")                            \
412
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
413
# define YY_IGNORE_USELESS_CAST_END            \
414
    _Pragma ("GCC diagnostic pop")
415
#endif
416
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
417
# define YY_IGNORE_USELESS_CAST_BEGIN
418
# define YY_IGNORE_USELESS_CAST_END
419
#endif
420
421
422
0
#define YY_ASSERT(E) ((void) (0 && (E)))
423
424
#if 1
425
426
/* The parser invokes alloca or malloc; define the necessary symbols.  */
427
428
# ifdef YYSTACK_USE_ALLOCA
429
#  if YYSTACK_USE_ALLOCA
430
#   ifdef __GNUC__
431
#    define YYSTACK_ALLOC __builtin_alloca
432
#   elif defined __BUILTIN_VA_ARG_INCR
433
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
434
#   elif defined _AIX
435
#    define YYSTACK_ALLOC __alloca
436
#   elif defined _MSC_VER
437
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
438
#    define alloca _alloca
439
#   else
440
#    define YYSTACK_ALLOC alloca
441
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
442
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
443
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
444
#     ifndef EXIT_SUCCESS
445
#      define EXIT_SUCCESS 0
446
#     endif
447
#    endif
448
#   endif
449
#  endif
450
# endif
451
452
# ifdef YYSTACK_ALLOC
453
   /* Pacify GCC's 'empty if-body' warning.  */
454
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
455
#  ifndef YYSTACK_ALLOC_MAXIMUM
456
    /* The OS might guarantee only one guard page at the bottom of the stack,
457
       and a page size can be as small as 4096 bytes.  So we cannot safely
458
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
459
       to allow for a few compiler-allocated temporary stack slots.  */
460
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
461
#  endif
462
# else
463
#  define YYSTACK_ALLOC YYMALLOC
464
0
#  define YYSTACK_FREE YYFREE
465
#  ifndef YYSTACK_ALLOC_MAXIMUM
466
0
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
467
#  endif
468
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
469
       && ! ((defined YYMALLOC || defined malloc) \
470
             && (defined YYFREE || defined free)))
471
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
472
#   ifndef EXIT_SUCCESS
473
#    define EXIT_SUCCESS 0
474
#   endif
475
#  endif
476
#  ifndef YYMALLOC
477
#   define YYMALLOC malloc
478
#   if ! defined malloc && ! defined EXIT_SUCCESS
479
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
480
#   endif
481
#  endif
482
#  ifndef YYFREE
483
0
#   define YYFREE free
484
#   if ! defined free && ! defined EXIT_SUCCESS
485
void free (void *); /* INFRINGES ON USER NAME SPACE */
486
#   endif
487
#  endif
488
# endif
489
#endif /* 1 */
490
491
#if (! defined yyoverflow \
492
     && (! defined __cplusplus \
493
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
494
495
/* A type that is properly aligned for any stack member.  */
496
union yyalloc
497
{
498
  yy_state_t yyss_alloc;
499
  YYSTYPE yyvs_alloc;
500
};
501
502
/* The size of the maximum gap between one aligned stack and the next.  */
503
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
504
505
/* The size of an array large to enough to hold all stacks, each with
506
   N elements.  */
507
# define YYSTACK_BYTES(N) \
508
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
509
      + YYSTACK_GAP_MAXIMUM)
510
511
# define YYCOPY_NEEDED 1
512
513
/* Relocate STACK from its old location to the new one.  The
514
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
515
   elements in the stack, and YYPTR gives the new location of the
516
   stack.  Advance YYPTR to a properly aligned location for the next
517
   stack.  */
518
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
519
    do                                                                  \
520
      {                                                                 \
521
        YYPTRDIFF_T yynewbytes;                                         \
522
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
523
        Stack = &yyptr->Stack_alloc;                                    \
524
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
525
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
526
      }                                                                 \
527
    while (0)
528
529
#endif
530
531
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
532
/* Copy COUNT objects from SRC to DST.  The source and destination do
533
   not overlap.  */
534
# ifndef YYCOPY
535
#  if defined __GNUC__ && 1 < __GNUC__
536
#   define YYCOPY(Dst, Src, Count) \
537
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
538
#  else
539
#   define YYCOPY(Dst, Src, Count)              \
540
      do                                        \
541
        {                                       \
542
          YYPTRDIFF_T yyi;                      \
543
          for (yyi = 0; yyi < (Count); yyi++)   \
544
            (Dst)[yyi] = (Src)[yyi];            \
545
        }                                       \
546
      while (0)
547
#  endif
548
# endif
549
#endif /* !YYCOPY_NEEDED */
550
551
/* YYFINAL -- State number of the termination state.  */
552
0
#define YYFINAL  2
553
/* YYLAST -- Last index in YYTABLE.  */
554
0
#define YYLAST   433
555
556
/* YYNTOKENS -- Number of terminals.  */
557
0
#define YYNTOKENS  41
558
/* YYNNTS -- Number of nonterminals.  */
559
#define YYNNTS  14
560
/* YYNRULES -- Number of rules.  */
561
#define YYNRULES  65
562
/* YYNSTATES -- Number of states.  */
563
#define YYNSTATES  123
564
565
/* YYMAXUTOK -- Last valid token kind.  */
566
0
#define YYMAXUTOK   295
567
568
569
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
570
   as returned by yylex, with out-of-bounds checking.  */
571
#define YYTRANSLATE(YYX)                                \
572
0
  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
573
0
   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
574
0
   : YYSYMBOL_YYUNDEF)
575
576
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
577
   as returned by yylex.  */
578
static const yytype_int8 yytranslate[] =
579
{
580
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
581
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
582
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
583
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
584
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
585
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
586
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
587
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
588
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
589
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
590
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
591
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
592
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
593
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
594
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
595
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
596
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
597
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
598
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
599
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
600
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
601
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
602
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
603
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
604
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
605
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
606
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
607
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
608
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
609
      35,    36,    37,    38,    39,    40
610
};
611
612
#if YYDEBUG
613
/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
614
static const yytype_int16 yyrline[] =
615
{
616
       0,   109,   109,   109,   112,   116,   121,   126,   132,   139,
617
     144,   149,   153,   158,   170,   175,   180,   185,   190,   195,
618
     200,   205,   210,   214,   218,   222,   226,   227,   232,   232,
619
     232,   233,   233,   234,   234,   235,   235,   236,   236,   237,
620
     237,   238,   238,   239,   239,   240,   240,   241,   241,   244,
621
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
622
     255,   256,   257,   258,   259,   260
623
};
624
#endif
625
626
/** Accessing symbol of state STATE.  */
627
0
#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
628
629
#if 1
630
/* The user-facing name of the symbol whose (internal) number is
631
   YYSYMBOL.  No bounds checking.  */
632
static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
633
634
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
635
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
636
static const char *const yytname[] =
637
{
638
  "\"end of file\"", "error", "\"invalid token\"", "EOSTMT",
639
  "ASSIGNMENT_OP", "GARBAGE", "CPP_LINE_DIRECTIVE", "CPP_INCLUDE",
640
  "F90PPR_INCLUDE", "COCO_INCLUDE", "F90PPR_DEFINE", "CPP_DEFINE",
641
  "F90PPR_UNDEF", "CPP_UNDEF", "CPP_IFDEF", "CPP_IFNDEF", "CPP_IF",
642
  "CPP_ELSE", "CPP_ELIF", "CPP_ENDIF", "F90PPR_IFDEF", "F90PPR_IFNDEF",
643
  "F90PPR_IF", "F90PPR_ELSE", "F90PPR_ELIF", "F90PPR_ENDIF", "COMMA",
644
  "COLON", "DCOLON", "LPAREN", "RPAREN", "UNTERMINATED_STRING", "STRING",
645
  "WORD", "CPP_INCLUDE_ANGLE", "END", "INCLUDE", "INTERFACE", "MODULE",
646
  "SUBMODULE", "USE", "$accept", "code", "stmt", "include", "define",
647
  "undef", "ifdef", "ifndef", "if", "elif", "else", "endif", "other",
648
  "misc_code", YY_NULLPTR
649
};
650
651
static const char *
652
yysymbol_name (yysymbol_kind_t yysymbol)
653
0
{
654
0
  return yytname[yysymbol];
655
0
}
656
#endif
657
658
0
#define YYPACT_NINF (-39)
659
660
#define yypact_value_is_default(Yyn) \
661
0
  ((Yyn) == YYPACT_NINF)
662
663
#define YYTABLE_NINF (-1)
664
665
#define yytable_value_is_error(Yyn) \
666
0
  0
667
668
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
669
   STATE-NUM.  */
670
static const yytype_int16 yypact[] =
671
{
672
     -39,    21,   -39,     5,   -39,   -23,   -39,   -39,   -39,   -39,
673
     -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,
674
     -39,   -39,   -39,   -39,   -39,   -39,   -25,   -19,    20,    -8,
675
     -15,   -22,   -39,    -6,    14,    15,    16,    17,   -39,   -39,
676
     -39,   -39,   -39,   -39,    59,    51,    48,   -39,    63,    64,
677
      35,    36,    37,   -39,   -39,   -39,   -39,   -39,   -39,    75,
678
     113,   128,   166,   181,   -39,   -39,   -39,   -39,   -39,   -39,
679
     -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,
680
     -39,   -39,   -39,   -39,    68,   -39,   -39,   -39,   -20,    44,
681
     -39,   219,   234,   272,   287,   325,   340,   -39,   -39,   -39,
682
     -39,   -39,   -39,    40,    41,    42,   378,   -39,   -39,   -39,
683
     -39,   -39,   -39,    46,    79,   -39,   -39,    50,   -39,   393,
684
      90,   -39,   -39
685
};
686
687
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
688
   Performed when YYTABLE does not specify something else to do.  Zero
689
   means the default is an error.  */
690
static const yytype_int8 yydefact[] =
691
{
692
       2,     0,     1,     0,    26,     0,    28,    29,    30,    32,
693
      31,    34,    33,    35,    37,    39,    43,    41,    45,    36,
694
      38,    40,    44,    42,    46,    47,     0,     0,     0,     0,
695
       0,     0,     3,     0,     0,     0,     0,     0,    47,    47,
696
      47,    47,    27,    47,     0,     0,     0,     4,     0,     0,
697
       0,     0,     0,    47,    47,    47,    47,    47,    47,     0,
698
       0,     0,     0,     0,    16,    58,    57,    65,    63,    59,
699
      60,    61,    62,    64,    56,    49,    50,    51,    52,    53,
700
      54,    55,    48,    11,     0,    14,     9,     6,     0,     0,
701
      47,     0,     0,     0,     0,     0,     0,    22,    23,    24,
702
      25,    15,    10,     0,     0,     0,     0,     5,    17,    18,
703
      19,    20,    21,     0,     0,    47,    12,     0,     7,     0,
704
       0,    13,     8
705
};
706
707
/* YYPGOTO[NTERM-NUM].  */
708
static const yytype_int8 yypgoto[] =
709
{
710
     -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,   -39,
711
     -39,   -39,   -38,   -39
712
};
713
714
/* YYDEFGOTO[NTERM-NUM].  */
715
static const yytype_int8 yydefgoto[] =
716
{
717
       0,     1,    32,    33,    34,    35,    36,    37,    38,    39,
718
      40,    41,    44,    82
719
};
720
721
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
722
   positive, shift that token.  If negative, reduce the rule whose
723
   number is the opposite.  If YYTABLE_NINF, syntax error.  */
724
static const yytype_int8 yytable[] =
725
{
726
      59,    60,    61,    62,    51,    63,    52,   103,    42,    43,
727
     104,    53,    45,    46,    50,    91,    92,    93,    94,    95,
728
      96,     2,     3,    47,     4,    49,    54,     5,     6,     7,
729
       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
730
      18,    19,    20,    21,    22,    23,    24,    55,    56,    57,
731
      58,    85,   106,    48,    83,    25,    26,    27,    28,    29,
732
      30,    31,    64,    65,    66,    67,    86,    87,    88,    89,
733
      90,   102,   105,   113,   114,   115,   117,   119,    97,    65,
734
      66,    67,   118,   120,    84,    68,    69,    70,    71,    72,
735
      73,    74,    75,   122,    76,    77,    78,    79,    80,    81,
736
       0,    68,    69,    70,    71,    72,    73,    74,    75,     0,
737
      76,    77,    78,    79,    80,    81,    98,    65,    66,    67,
738
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
739
       0,    99,    65,    66,    67,     0,     0,     0,     0,    68,
740
      69,    70,    71,    72,    73,    74,    75,     0,    76,    77,
741
      78,    79,    80,    81,    68,    69,    70,    71,    72,    73,
742
      74,    75,     0,    76,    77,    78,    79,    80,    81,   100,
743
      65,    66,    67,     0,     0,     0,     0,     0,     0,     0,
744
       0,     0,     0,     0,   101,    65,    66,    67,     0,     0,
745
       0,     0,    68,    69,    70,    71,    72,    73,    74,    75,
746
       0,    76,    77,    78,    79,    80,    81,    68,    69,    70,
747
      71,    72,    73,    74,    75,     0,    76,    77,    78,    79,
748
      80,    81,   107,    65,    66,    67,     0,     0,     0,     0,
749
       0,     0,     0,     0,     0,     0,     0,   108,    65,    66,
750
      67,     0,     0,     0,     0,    68,    69,    70,    71,    72,
751
      73,    74,    75,     0,    76,    77,    78,    79,    80,    81,
752
      68,    69,    70,    71,    72,    73,    74,    75,     0,    76,
753
      77,    78,    79,    80,    81,   109,    65,    66,    67,     0,
754
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
755
     110,    65,    66,    67,     0,     0,     0,     0,    68,    69,
756
      70,    71,    72,    73,    74,    75,     0,    76,    77,    78,
757
      79,    80,    81,    68,    69,    70,    71,    72,    73,    74,
758
      75,     0,    76,    77,    78,    79,    80,    81,   111,    65,
759
      66,    67,     0,     0,     0,     0,     0,     0,     0,     0,
760
       0,     0,     0,   112,    65,    66,    67,     0,     0,     0,
761
       0,    68,    69,    70,    71,    72,    73,    74,    75,     0,
762
      76,    77,    78,    79,    80,    81,    68,    69,    70,    71,
763
      72,    73,    74,    75,     0,    76,    77,    78,    79,    80,
764
      81,   116,    65,    66,    67,     0,     0,     0,     0,     0,
765
       0,     0,     0,     0,     0,     0,   121,    65,    66,    67,
766
       0,     0,     0,     0,    68,    69,    70,    71,    72,    73,
767
      74,    75,     0,    76,    77,    78,    79,    80,    81,    68,
768
      69,    70,    71,    72,    73,    74,    75,     0,    76,    77,
769
      78,    79,    80,    81
770
};
771
772
static const yytype_int8 yycheck[] =
773
{
774
      38,    39,    40,    41,    26,    43,    28,    27,     3,    32,
775
      30,    33,    37,    32,    29,    53,    54,    55,    56,    57,
776
      58,     0,     1,     3,     3,    33,    32,     6,     7,     8,
777
       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
778
      19,    20,    21,    22,    23,    24,    25,    33,    33,    33,
779
      33,     3,    90,    33,     3,    34,    35,    36,    37,    38,
780
      39,    40,     3,     4,     5,     6,     3,     3,    33,    33,
781
      33,     3,    28,    33,    33,    33,    30,   115,     3,     4,
782
       5,     6,     3,    33,    33,    26,    27,    28,    29,    30,
783
      31,    32,    33,     3,    35,    36,    37,    38,    39,    40,
784
      -1,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
785
      35,    36,    37,    38,    39,    40,     3,     4,     5,     6,
786
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
787
      -1,     3,     4,     5,     6,    -1,    -1,    -1,    -1,    26,
788
      27,    28,    29,    30,    31,    32,    33,    -1,    35,    36,
789
      37,    38,    39,    40,    26,    27,    28,    29,    30,    31,
790
      32,    33,    -1,    35,    36,    37,    38,    39,    40,     3,
791
       4,     5,     6,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
792
      -1,    -1,    -1,    -1,     3,     4,     5,     6,    -1,    -1,
793
      -1,    -1,    26,    27,    28,    29,    30,    31,    32,    33,
794
      -1,    35,    36,    37,    38,    39,    40,    26,    27,    28,
795
      29,    30,    31,    32,    33,    -1,    35,    36,    37,    38,
796
      39,    40,     3,     4,     5,     6,    -1,    -1,    -1,    -1,
797
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
798
       6,    -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,
799
      31,    32,    33,    -1,    35,    36,    37,    38,    39,    40,
800
      26,    27,    28,    29,    30,    31,    32,    33,    -1,    35,
801
      36,    37,    38,    39,    40,     3,     4,     5,     6,    -1,
802
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
803
       3,     4,     5,     6,    -1,    -1,    -1,    -1,    26,    27,
804
      28,    29,    30,    31,    32,    33,    -1,    35,    36,    37,
805
      38,    39,    40,    26,    27,    28,    29,    30,    31,    32,
806
      33,    -1,    35,    36,    37,    38,    39,    40,     3,     4,
807
       5,     6,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
808
      -1,    -1,    -1,     3,     4,     5,     6,    -1,    -1,    -1,
809
      -1,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
810
      35,    36,    37,    38,    39,    40,    26,    27,    28,    29,
811
      30,    31,    32,    33,    -1,    35,    36,    37,    38,    39,
812
      40,     3,     4,     5,     6,    -1,    -1,    -1,    -1,    -1,
813
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
814
      -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,    31,
815
      32,    33,    -1,    35,    36,    37,    38,    39,    40,    26,
816
      27,    28,    29,    30,    31,    32,    33,    -1,    35,    36,
817
      37,    38,    39,    40
818
};
819
820
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
821
   state STATE-NUM.  */
822
static const yytype_int8 yystos[] =
823
{
824
       0,    42,     0,     1,     3,     6,     7,     8,     9,    10,
825
      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
826
      21,    22,    23,    24,    25,    34,    35,    36,    37,    38,
827
      39,    40,    43,    44,    45,    46,    47,    48,    49,    50,
828
      51,    52,     3,    32,    53,    37,    32,     3,    33,    33,
829
      29,    26,    28,    33,    32,    33,    33,    33,    33,    53,
830
      53,    53,    53,    53,     3,     4,     5,     6,    26,    27,
831
      28,    29,    30,    31,    32,    33,    35,    36,    37,    38,
832
      39,    40,    54,     3,    33,     3,     3,     3,    33,    33,
833
      33,    53,    53,    53,    53,    53,    53,     3,     3,     3,
834
       3,     3,     3,    27,    30,    28,    53,     3,     3,     3,
835
       3,     3,     3,    33,    33,    33,     3,    30,     3,    53,
836
      33,     3,     3
837
};
838
839
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
840
static const yytype_int8 yyr1[] =
841
{
842
       0,    41,    42,    42,    43,    43,    43,    43,    43,    43,
843
      43,    43,    43,    43,    43,    43,    43,    43,    43,    43,
844
      43,    43,    43,    43,    43,    43,    43,    43,    44,    44,
845
      44,    45,    45,    46,    46,    47,    47,    48,    48,    49,
846
      49,    50,    50,    51,    51,    52,    52,    53,    53,    54,
847
      54,    54,    54,    54,    54,    54,    54,    54,    54,    54,
848
      54,    54,    54,    54,    54,    54
849
};
850
851
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
852
static const yytype_int8 yyr2[] =
853
{
854
       0,     2,     0,     2,     2,     4,     3,     6,     8,     3,
855
       4,     3,     5,     7,     3,     4,     3,     4,     4,     4,
856
       4,     4,     3,     3,     3,     3,     1,     2,     1,     1,
857
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
858
       1,     1,     1,     1,     1,     1,     1,     0,     2,     1,
859
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
860
       1,     1,     1,     1,     1,     1
861
};
862
863
864
enum { YYENOMEM = -2 };
865
866
#define yyerrok         (yyerrstatus = 0)
867
#define yyclearin       (yychar = YYEMPTY)
868
869
0
#define YYACCEPT        goto yyacceptlab
870
0
#define YYABORT         goto yyabortlab
871
0
#define YYERROR         goto yyerrorlab
872
0
#define YYNOMEM         goto yyexhaustedlab
873
874
875
#define YYRECOVERING()  (!!yyerrstatus)
876
877
#define YYBACKUP(Token, Value)                                    \
878
  do                                                              \
879
    if (yychar == YYEMPTY)                                        \
880
      {                                                           \
881
        yychar = (Token);                                         \
882
        yylval = (Value);                                         \
883
        YYPOPSTACK (yylen);                                       \
884
        yystate = *yyssp;                                         \
885
        goto yybackup;                                            \
886
      }                                                           \
887
    else                                                          \
888
      {                                                           \
889
        yyerror (yyscanner, YY_("syntax error: cannot back up")); \
890
        YYERROR;                                                  \
891
      }                                                           \
892
  while (0)
893
894
/* Backward compatibility with an undocumented macro.
895
   Use YYerror or YYUNDEF. */
896
#define YYERRCODE YYUNDEF
897
898
899
/* Enable debugging if requested.  */
900
#if YYDEBUG
901
902
# ifndef YYFPRINTF
903
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
904
#  define YYFPRINTF fprintf
905
# endif
906
907
# define YYDPRINTF(Args)                        \
908
do {                                            \
909
  if (yydebug)                                  \
910
    YYFPRINTF Args;                             \
911
} while (0)
912
913
914
915
916
# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
917
do {                                                                      \
918
  if (yydebug)                                                            \
919
    {                                                                     \
920
      YYFPRINTF (stderr, "%s ", Title);                                   \
921
      yy_symbol_print (stderr,                                            \
922
                  Kind, Value, yyscanner); \
923
      YYFPRINTF (stderr, "\n");                                           \
924
    }                                                                     \
925
} while (0)
926
927
928
/*-----------------------------------.
929
| Print this symbol's value on YYO.  |
930
`-----------------------------------*/
931
932
static void
933
yy_symbol_value_print (FILE *yyo,
934
                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, yyscan_t yyscanner)
935
{
936
  FILE *yyoutput = yyo;
937
  YY_USE (yyoutput);
938
  YY_USE (yyscanner);
939
  if (!yyvaluep)
940
    return;
941
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
942
  YY_USE (yykind);
943
  YY_IGNORE_MAYBE_UNINITIALIZED_END
944
}
945
946
947
/*---------------------------.
948
| Print this symbol on YYO.  |
949
`---------------------------*/
950
951
static void
952
yy_symbol_print (FILE *yyo,
953
                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, yyscan_t yyscanner)
954
{
955
  YYFPRINTF (yyo, "%s %s (",
956
             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
957
958
  yy_symbol_value_print (yyo, yykind, yyvaluep, yyscanner);
959
  YYFPRINTF (yyo, ")");
960
}
961
962
/*------------------------------------------------------------------.
963
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
964
| TOP (included).                                                   |
965
`------------------------------------------------------------------*/
966
967
static void
968
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
969
{
970
  YYFPRINTF (stderr, "Stack now");
971
  for (; yybottom <= yytop; yybottom++)
972
    {
973
      int yybot = *yybottom;
974
      YYFPRINTF (stderr, " %d", yybot);
975
    }
976
  YYFPRINTF (stderr, "\n");
977
}
978
979
# define YY_STACK_PRINT(Bottom, Top)                            \
980
do {                                                            \
981
  if (yydebug)                                                  \
982
    yy_stack_print ((Bottom), (Top));                           \
983
} while (0)
984
985
986
/*------------------------------------------------.
987
| Report that the YYRULE is going to be reduced.  |
988
`------------------------------------------------*/
989
990
static void
991
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
992
                 int yyrule, yyscan_t yyscanner)
993
{
994
  int yylno = yyrline[yyrule];
995
  int yynrhs = yyr2[yyrule];
996
  int yyi;
997
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
998
             yyrule - 1, yylno);
999
  /* The symbols being reduced.  */
1000
  for (yyi = 0; yyi < yynrhs; yyi++)
1001
    {
1002
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1003
      yy_symbol_print (stderr,
1004
                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
1005
                       &yyvsp[(yyi + 1) - (yynrhs)], yyscanner);
1006
      YYFPRINTF (stderr, "\n");
1007
    }
1008
}
1009
1010
# define YY_REDUCE_PRINT(Rule)          \
1011
do {                                    \
1012
  if (yydebug)                          \
1013
    yy_reduce_print (yyssp, yyvsp, Rule, yyscanner); \
1014
} while (0)
1015
1016
/* Nonzero means print parse trace.  It is left uninitialized so that
1017
   multiple parsers can coexist.  */
1018
int yydebug;
1019
#else /* !YYDEBUG */
1020
0
# define YYDPRINTF(Args) ((void) 0)
1021
# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
1022
# define YY_STACK_PRINT(Bottom, Top)
1023
# define YY_REDUCE_PRINT(Rule)
1024
#endif /* !YYDEBUG */
1025
1026
1027
/* YYINITDEPTH -- initial size of the parser's stacks.  */
1028
#ifndef YYINITDEPTH
1029
0
# define YYINITDEPTH 200
1030
#endif
1031
1032
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1033
   if the built-in stack extension method is used).
1034
1035
   Do not make this value too large; the results are undefined if
1036
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1037
   evaluated with infinite-precision integer arithmetic.  */
1038
1039
#ifndef YYMAXDEPTH
1040
# define YYMAXDEPTH 10000
1041
#endif
1042
1043
1044
/* Context of a parse error.  */
1045
typedef struct
1046
{
1047
  yy_state_t *yyssp;
1048
  yysymbol_kind_t yytoken;
1049
} yypcontext_t;
1050
1051
/* Put in YYARG at most YYARGN of the expected tokens given the
1052
   current YYCTX, and return the number of tokens stored in YYARG.  If
1053
   YYARG is null, return the number of expected tokens (guaranteed to
1054
   be less than YYNTOKENS).  Return YYENOMEM on memory exhaustion.
1055
   Return 0 if there are more than YYARGN expected tokens, yet fill
1056
   YYARG up to YYARGN. */
1057
static int
1058
yypcontext_expected_tokens (const yypcontext_t *yyctx,
1059
                            yysymbol_kind_t yyarg[], int yyargn)
1060
0
{
1061
  /* Actual size of YYARG. */
1062
0
  int yycount = 0;
1063
0
  int yyn = yypact[+*yyctx->yyssp];
1064
0
  if (!yypact_value_is_default (yyn))
1065
0
    {
1066
      /* Start YYX at -YYN if negative to avoid negative indexes in
1067
         YYCHECK.  In other words, skip the first -YYN actions for
1068
         this state because they are default actions.  */
1069
0
      int yyxbegin = yyn < 0 ? -yyn : 0;
1070
      /* Stay within bounds of both yycheck and yytname.  */
1071
0
      int yychecklim = YYLAST - yyn + 1;
1072
0
      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1073
0
      int yyx;
1074
0
      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1075
0
        if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
1076
0
            && !yytable_value_is_error (yytable[yyx + yyn]))
1077
0
          {
1078
0
            if (!yyarg)
1079
0
              ++yycount;
1080
0
            else if (yycount == yyargn)
1081
0
              return 0;
1082
0
            else
1083
0
              yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
1084
0
          }
1085
0
    }
1086
0
  if (yyarg && yycount == 0 && 0 < yyargn)
1087
0
    yyarg[0] = YYSYMBOL_YYEMPTY;
1088
0
  return yycount;
1089
0
}
1090
1091
1092
1093
1094
#ifndef yystrlen
1095
# if defined __GLIBC__ && defined _STRING_H
1096
0
#  define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
1097
# else
1098
/* Return the length of YYSTR.  */
1099
static YYPTRDIFF_T
1100
yystrlen (const char *yystr)
1101
{
1102
  YYPTRDIFF_T yylen;
1103
  for (yylen = 0; yystr[yylen]; yylen++)
1104
    continue;
1105
  return yylen;
1106
}
1107
# endif
1108
#endif
1109
1110
#ifndef yystpcpy
1111
# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1112
0
#  define yystpcpy stpcpy
1113
# else
1114
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1115
   YYDEST.  */
1116
static char *
1117
yystpcpy (char *yydest, const char *yysrc)
1118
{
1119
  char *yyd = yydest;
1120
  const char *yys = yysrc;
1121
1122
  while ((*yyd++ = *yys++) != '\0')
1123
    continue;
1124
1125
  return yyd - 1;
1126
}
1127
# endif
1128
#endif
1129
1130
#ifndef yytnamerr
1131
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1132
   quotes and backslashes, so that it's suitable for yyerror.  The
1133
   heuristic is that double-quoting is unnecessary unless the string
1134
   contains an apostrophe, a comma, or backslash (other than
1135
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1136
   null, do not copy; instead, return the length of what the result
1137
   would have been.  */
1138
static YYPTRDIFF_T
1139
yytnamerr (char *yyres, const char *yystr)
1140
0
{
1141
0
  if (*yystr == '"')
1142
0
    {
1143
0
      YYPTRDIFF_T yyn = 0;
1144
0
      char const *yyp = yystr;
1145
0
      for (;;)
1146
0
        switch (*++yyp)
1147
0
          {
1148
0
          case '\'':
1149
0
          case ',':
1150
0
            goto do_not_strip_quotes;
1151
1152
0
          case '\\':
1153
0
            if (*++yyp != '\\')
1154
0
              goto do_not_strip_quotes;
1155
0
            else
1156
0
              goto append;
1157
1158
0
          append:
1159
0
          default:
1160
0
            if (yyres)
1161
0
              yyres[yyn] = *yyp;
1162
0
            yyn++;
1163
0
            break;
1164
1165
0
          case '"':
1166
0
            if (yyres)
1167
0
              yyres[yyn] = '\0';
1168
0
            return yyn;
1169
0
          }
1170
0
    do_not_strip_quotes: ;
1171
0
    }
1172
1173
0
  if (yyres)
1174
0
    return yystpcpy (yyres, yystr) - yyres;
1175
0
  else
1176
0
    return yystrlen (yystr);
1177
0
}
1178
#endif
1179
1180
1181
static int
1182
yy_syntax_error_arguments (const yypcontext_t *yyctx,
1183
                           yysymbol_kind_t yyarg[], int yyargn)
1184
0
{
1185
  /* Actual size of YYARG. */
1186
0
  int yycount = 0;
1187
  /* There are many possibilities here to consider:
1188
     - If this state is a consistent state with a default action, then
1189
       the only way this function was invoked is if the default action
1190
       is an error action.  In that case, don't check for expected
1191
       tokens because there are none.
1192
     - The only way there can be no lookahead present (in yychar) is if
1193
       this state is a consistent state with a default action.  Thus,
1194
       detecting the absence of a lookahead is sufficient to determine
1195
       that there is no unexpected or expected token to report.  In that
1196
       case, just report a simple "syntax error".
1197
     - Don't assume there isn't a lookahead just because this state is a
1198
       consistent state with a default action.  There might have been a
1199
       previous inconsistent state, consistent state with a non-default
1200
       action, or user semantic action that manipulated yychar.
1201
     - Of course, the expected token list depends on states to have
1202
       correct lookahead information, and it depends on the parser not
1203
       to perform extra reductions after fetching a lookahead from the
1204
       scanner and before detecting a syntax error.  Thus, state merging
1205
       (from LALR or IELR) and default reductions corrupt the expected
1206
       token list.  However, the list is correct for canonical LR with
1207
       one exception: it will still contain any token that will not be
1208
       accepted due to an error action in a later state.
1209
  */
1210
0
  if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
1211
0
    {
1212
0
      int yyn;
1213
0
      if (yyarg)
1214
0
        yyarg[yycount] = yyctx->yytoken;
1215
0
      ++yycount;
1216
0
      yyn = yypcontext_expected_tokens (yyctx,
1217
0
                                        yyarg ? yyarg + 1 : yyarg, yyargn - 1);
1218
0
      if (yyn == YYENOMEM)
1219
0
        return YYENOMEM;
1220
0
      else
1221
0
        yycount += yyn;
1222
0
    }
1223
0
  return yycount;
1224
0
}
1225
1226
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1227
   about the unexpected token YYTOKEN for the state stack whose top is
1228
   YYSSP.
1229
1230
   Return 0 if *YYMSG was successfully written.  Return -1 if *YYMSG is
1231
   not large enough to hold the message.  In that case, also set
1232
   *YYMSG_ALLOC to the required number of bytes.  Return YYENOMEM if the
1233
   required number of bytes is too large to store.  */
1234
static int
1235
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
1236
                const yypcontext_t *yyctx)
1237
0
{
1238
0
  enum { YYARGS_MAX = 5 };
1239
  /* Internationalized format string. */
1240
0
  const char *yyformat = YY_NULLPTR;
1241
  /* Arguments of yyformat: reported tokens (one for the "unexpected",
1242
     one per "expected"). */
1243
0
  yysymbol_kind_t yyarg[YYARGS_MAX];
1244
  /* Cumulated lengths of YYARG.  */
1245
0
  YYPTRDIFF_T yysize = 0;
1246
1247
  /* Actual size of YYARG. */
1248
0
  int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
1249
0
  if (yycount == YYENOMEM)
1250
0
    return YYENOMEM;
1251
1252
0
  switch (yycount)
1253
0
    {
1254
0
#define YYCASE_(N, S)                       \
1255
0
      case N:                               \
1256
0
        yyformat = S;                       \
1257
0
        break
1258
0
    default: /* Avoid compiler warnings. */
1259
0
      YYCASE_(0, YY_("syntax error"));
1260
0
      YYCASE_(1, YY_("syntax error, unexpected %s"));
1261
0
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1262
0
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1263
0
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1264
0
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1265
0
#undef YYCASE_
1266
0
    }
1267
1268
  /* Compute error message size.  Don't count the "%s"s, but reserve
1269
     room for the terminator.  */
1270
0
  yysize = yystrlen (yyformat) - 2 * yycount + 1;
1271
0
  {
1272
0
    int yyi;
1273
0
    for (yyi = 0; yyi < yycount; ++yyi)
1274
0
      {
1275
0
        YYPTRDIFF_T yysize1
1276
0
          = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
1277
0
        if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
1278
0
          yysize = yysize1;
1279
0
        else
1280
0
          return YYENOMEM;
1281
0
      }
1282
0
  }
1283
1284
0
  if (*yymsg_alloc < yysize)
1285
0
    {
1286
0
      *yymsg_alloc = 2 * yysize;
1287
0
      if (! (yysize <= *yymsg_alloc
1288
0
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1289
0
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1290
0
      return -1;
1291
0
    }
1292
1293
  /* Avoid sprintf, as that infringes on the user's name space.
1294
     Don't have undefined behavior even if the translation
1295
     produced a string with the wrong number of "%s"s.  */
1296
0
  {
1297
0
    char *yyp = *yymsg;
1298
0
    int yyi = 0;
1299
0
    while ((*yyp = *yyformat) != '\0')
1300
0
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1301
0
        {
1302
0
          yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
1303
0
          yyformat += 2;
1304
0
        }
1305
0
      else
1306
0
        {
1307
0
          ++yyp;
1308
0
          ++yyformat;
1309
0
        }
1310
0
  }
1311
0
  return 0;
1312
0
}
1313
1314
1315
/*-----------------------------------------------.
1316
| Release the memory associated to this symbol.  |
1317
`-----------------------------------------------*/
1318
1319
static void
1320
yydestruct (const char *yymsg,
1321
            yysymbol_kind_t yykind, YYSTYPE *yyvaluep, yyscan_t yyscanner)
1322
0
{
1323
0
  YY_USE (yyvaluep);
1324
0
  YY_USE (yyscanner);
1325
0
  if (!yymsg)
1326
0
    yymsg = "Deleting";
1327
0
  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
1328
1329
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1330
0
  switch (yykind)
1331
0
    {
1332
0
    case YYSYMBOL_STRING: /* STRING  */
1333
0
#line 103 "cmFortranParser.y"
1334
0
            { free(((*yyvaluep).string)); }
1335
0
#line 1336 "cmFortranParser.cxx"
1336
0
        break;
1337
1338
0
    case YYSYMBOL_WORD: /* WORD  */
1339
0
#line 103 "cmFortranParser.y"
1340
0
            { free(((*yyvaluep).string)); }
1341
0
#line 1342 "cmFortranParser.cxx"
1342
0
        break;
1343
1344
0
    case YYSYMBOL_CPP_INCLUDE_ANGLE: /* CPP_INCLUDE_ANGLE  */
1345
0
#line 103 "cmFortranParser.y"
1346
0
            { free(((*yyvaluep).string)); }
1347
0
#line 1348 "cmFortranParser.cxx"
1348
0
        break;
1349
1350
0
      default:
1351
0
        break;
1352
0
    }
1353
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
1354
0
}
1355
1356
1357
1358
1359
1360
1361
/*----------.
1362
| yyparse.  |
1363
`----------*/
1364
1365
int
1366
yyparse (yyscan_t yyscanner)
1367
0
{
1368
/* Lookahead token kind.  */
1369
0
int yychar;
1370
1371
1372
/* The semantic value of the lookahead symbol.  */
1373
/* Default value used for initialization, for pacifying older GCCs
1374
   or non-GCC compilers.  */
1375
0
YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
1376
0
YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
1377
1378
    /* Number of syntax errors so far.  */
1379
0
    int yynerrs = 0;
1380
1381
0
    yy_state_fast_t yystate = 0;
1382
    /* Number of tokens to shift before error messages enabled.  */
1383
0
    int yyerrstatus = 0;
1384
1385
    /* Refer to the stacks through separate pointers, to allow yyoverflow
1386
       to reallocate them elsewhere.  */
1387
1388
    /* Their size.  */
1389
0
    YYPTRDIFF_T yystacksize = YYINITDEPTH;
1390
1391
    /* The state stack: array, bottom, top.  */
1392
0
    yy_state_t yyssa[YYINITDEPTH];
1393
0
    yy_state_t *yyss = yyssa;
1394
0
    yy_state_t *yyssp = yyss;
1395
1396
    /* The semantic value stack: array, bottom, top.  */
1397
0
    YYSTYPE yyvsa[YYINITDEPTH];
1398
0
    YYSTYPE *yyvs = yyvsa;
1399
0
    YYSTYPE *yyvsp = yyvs;
1400
1401
0
  int yyn;
1402
  /* The return value of yyparse.  */
1403
0
  int yyresult;
1404
  /* Lookahead symbol kind.  */
1405
0
  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1406
  /* The variables used to return semantic value and location from the
1407
     action routines.  */
1408
0
  YYSTYPE yyval;
1409
1410
  /* Buffer for error messages, and its allocated size.  */
1411
0
  char yymsgbuf[128];
1412
0
  char *yymsg = yymsgbuf;
1413
0
  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
1414
1415
0
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1416
1417
  /* The number of symbols on the RHS of the reduced rule.
1418
     Keep to zero when no symbol should be popped.  */
1419
0
  int yylen = 0;
1420
1421
0
  YYDPRINTF ((stderr, "Starting parse\n"));
1422
1423
0
  yychar = YYEMPTY; /* Cause a token to be read.  */
1424
1425
0
  goto yysetstate;
1426
1427
1428
/*------------------------------------------------------------.
1429
| yynewstate -- push a new state, which is found in yystate.  |
1430
`------------------------------------------------------------*/
1431
0
yynewstate:
1432
  /* In all cases, when you get here, the value and location stacks
1433
     have just been pushed.  So pushing a state here evens the stacks.  */
1434
0
  yyssp++;
1435
1436
1437
/*--------------------------------------------------------------------.
1438
| yysetstate -- set current state (the top of the stack) to yystate.  |
1439
`--------------------------------------------------------------------*/
1440
0
yysetstate:
1441
0
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1442
0
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1443
0
  YY_IGNORE_USELESS_CAST_BEGIN
1444
0
  *yyssp = YY_CAST (yy_state_t, yystate);
1445
0
  YY_IGNORE_USELESS_CAST_END
1446
0
  YY_STACK_PRINT (yyss, yyssp);
1447
1448
0
  if (yyss + yystacksize - 1 <= yyssp)
1449
0
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
1450
0
    YYNOMEM;
1451
#else
1452
    {
1453
      /* Get the current used size of the three stacks, in elements.  */
1454
      YYPTRDIFF_T yysize = yyssp - yyss + 1;
1455
1456
# if defined yyoverflow
1457
      {
1458
        /* Give user a chance to reallocate the stack.  Use copies of
1459
           these so that the &'s don't force the real ones into
1460
           memory.  */
1461
        yy_state_t *yyss1 = yyss;
1462
        YYSTYPE *yyvs1 = yyvs;
1463
1464
        /* Each stack pointer address is followed by the size of the
1465
           data in use in that stack, in bytes.  This used to be a
1466
           conditional around just the two extra args, but that might
1467
           be undefined if yyoverflow is a macro.  */
1468
        yyoverflow (YY_("memory exhausted"),
1469
                    &yyss1, yysize * YYSIZEOF (*yyssp),
1470
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
1471
                    &yystacksize);
1472
        yyss = yyss1;
1473
        yyvs = yyvs1;
1474
      }
1475
# else /* defined YYSTACK_RELOCATE */
1476
      /* Extend the stack our own way.  */
1477
      if (YYMAXDEPTH <= yystacksize)
1478
        YYNOMEM;
1479
      yystacksize *= 2;
1480
      if (YYMAXDEPTH < yystacksize)
1481
        yystacksize = YYMAXDEPTH;
1482
1483
      {
1484
        yy_state_t *yyss1 = yyss;
1485
        union yyalloc *yyptr =
1486
          YY_CAST (union yyalloc *,
1487
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1488
        if (! yyptr)
1489
          YYNOMEM;
1490
        YYSTACK_RELOCATE (yyss_alloc, yyss);
1491
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1492
#  undef YYSTACK_RELOCATE
1493
        if (yyss1 != yyssa)
1494
          YYSTACK_FREE (yyss1);
1495
      }
1496
# endif
1497
1498
      yyssp = yyss + yysize - 1;
1499
      yyvsp = yyvs + yysize - 1;
1500
1501
      YY_IGNORE_USELESS_CAST_BEGIN
1502
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1503
                  YY_CAST (long, yystacksize)));
1504
      YY_IGNORE_USELESS_CAST_END
1505
1506
      if (yyss + yystacksize - 1 <= yyssp)
1507
        YYABORT;
1508
    }
1509
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1510
1511
1512
0
  if (yystate == YYFINAL)
1513
0
    YYACCEPT;
1514
1515
0
  goto yybackup;
1516
1517
1518
/*-----------.
1519
| yybackup.  |
1520
`-----------*/
1521
0
yybackup:
1522
  /* Do appropriate processing given the current state.  Read a
1523
     lookahead token if we need one and don't already have one.  */
1524
1525
  /* First try to decide what to do without reference to lookahead token.  */
1526
0
  yyn = yypact[yystate];
1527
0
  if (yypact_value_is_default (yyn))
1528
0
    goto yydefault;
1529
1530
  /* Not known => get a lookahead token if don't already have one.  */
1531
1532
  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
1533
0
  if (yychar == YYEMPTY)
1534
0
    {
1535
0
      YYDPRINTF ((stderr, "Reading a token\n"));
1536
0
      yychar = yylex (&yylval, yyscanner);
1537
0
    }
1538
1539
0
  if (yychar <= YYEOF)
1540
0
    {
1541
0
      yychar = YYEOF;
1542
0
      yytoken = YYSYMBOL_YYEOF;
1543
0
      YYDPRINTF ((stderr, "Now at end of input.\n"));
1544
0
    }
1545
0
  else if (yychar == YYerror)
1546
0
    {
1547
      /* The scanner already issued an error message, process directly
1548
         to error recovery.  But do not keep the error token as
1549
         lookahead, it is too special and may lead us to an endless
1550
         loop in error recovery. */
1551
0
      yychar = YYUNDEF;
1552
0
      yytoken = YYSYMBOL_YYerror;
1553
0
      goto yyerrlab1;
1554
0
    }
1555
0
  else
1556
0
    {
1557
0
      yytoken = YYTRANSLATE (yychar);
1558
0
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1559
0
    }
1560
1561
  /* If the proper action on seeing token YYTOKEN is to reduce or to
1562
     detect an error, take that action.  */
1563
0
  yyn += yytoken;
1564
0
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1565
0
    goto yydefault;
1566
0
  yyn = yytable[yyn];
1567
0
  if (yyn <= 0)
1568
0
    {
1569
0
      if (yytable_value_is_error (yyn))
1570
0
        goto yyerrlab;
1571
0
      yyn = -yyn;
1572
0
      goto yyreduce;
1573
0
    }
1574
1575
  /* Count tokens shifted since error; after three, turn off error
1576
     status.  */
1577
0
  if (yyerrstatus)
1578
0
    yyerrstatus--;
1579
1580
  /* Shift the lookahead token.  */
1581
0
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1582
0
  yystate = yyn;
1583
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1584
0
  *++yyvsp = yylval;
1585
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
1586
1587
  /* Discard the shifted token.  */
1588
0
  yychar = YYEMPTY;
1589
0
  goto yynewstate;
1590
1591
1592
/*-----------------------------------------------------------.
1593
| yydefault -- do the default action for the current state.  |
1594
`-----------------------------------------------------------*/
1595
0
yydefault:
1596
0
  yyn = yydefact[yystate];
1597
0
  if (yyn == 0)
1598
0
    goto yyerrlab;
1599
0
  goto yyreduce;
1600
1601
1602
/*-----------------------------.
1603
| yyreduce -- do a reduction.  |
1604
`-----------------------------*/
1605
0
yyreduce:
1606
  /* yyn is the number of a rule to reduce with.  */
1607
0
  yylen = yyr2[yyn];
1608
1609
  /* If YYLEN is nonzero, implement the default value of the action:
1610
     '$$ = $1'.
1611
1612
     Otherwise, the following line sets YYVAL to garbage.
1613
     This behavior is undocumented and Bison
1614
     users should not rely upon it.  Assigning to YYVAL
1615
     unconditionally makes the parser a bit smaller, and it avoids a
1616
     GCC warning that YYVAL may be used uninitialized.  */
1617
0
  yyval = yyvsp[1-yylen];
1618
1619
1620
0
  YY_REDUCE_PRINT (yyn);
1621
0
  switch (yyn)
1622
0
    {
1623
0
  case 4: /* stmt: INTERFACE EOSTMT  */
1624
0
#line 112 "cmFortranParser.y"
1625
0
                   {
1626
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1627
0
    cmFortranParser_SetInInterface(parser, true);
1628
0
  }
1629
0
#line 1630 "cmFortranParser.cxx"
1630
0
    break;
1631
1632
0
  case 5: /* stmt: USE WORD other EOSTMT  */
1633
0
#line 116 "cmFortranParser.y"
1634
0
                        {
1635
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1636
0
    cmFortranParser_RuleUse(parser, (yyvsp[-2].string));
1637
0
    free((yyvsp[-2].string));
1638
0
  }
1639
0
#line 1640 "cmFortranParser.cxx"
1640
0
    break;
1641
1642
0
  case 6: /* stmt: MODULE WORD EOSTMT  */
1643
0
#line 121 "cmFortranParser.y"
1644
0
                     {
1645
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1646
0
    cmFortranParser_RuleModule(parser, (yyvsp[-1].string));
1647
0
    free((yyvsp[-1].string));
1648
0
  }
1649
0
#line 1650 "cmFortranParser.cxx"
1650
0
    break;
1651
1652
0
  case 7: /* stmt: SUBMODULE LPAREN WORD RPAREN WORD EOSTMT  */
1653
0
#line 126 "cmFortranParser.y"
1654
0
                                           {
1655
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1656
0
    cmFortranParser_RuleSubmodule(parser, (yyvsp[-3].string), (yyvsp[-1].string));
1657
0
    free((yyvsp[-3].string));
1658
0
    free((yyvsp[-1].string));
1659
0
  }
1660
0
#line 1661 "cmFortranParser.cxx"
1661
0
    break;
1662
1663
0
  case 8: /* stmt: SUBMODULE LPAREN WORD COLON WORD RPAREN WORD EOSTMT  */
1664
0
#line 132 "cmFortranParser.y"
1665
0
                                                      {
1666
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1667
0
    cmFortranParser_RuleSubmoduleNested(parser, (yyvsp[-5].string), (yyvsp[-3].string), (yyvsp[-1].string));
1668
0
    free((yyvsp[-5].string));
1669
0
    free((yyvsp[-3].string));
1670
0
    free((yyvsp[-1].string));
1671
0
  }
1672
0
#line 1673 "cmFortranParser.cxx"
1673
0
    break;
1674
1675
0
  case 9: /* stmt: INTERFACE WORD EOSTMT  */
1676
0
#line 139 "cmFortranParser.y"
1677
0
                        {
1678
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1679
0
    cmFortranParser_SetInInterface(parser, true);
1680
0
    free((yyvsp[-1].string));
1681
0
  }
1682
0
#line 1683 "cmFortranParser.cxx"
1683
0
    break;
1684
1685
0
  case 10: /* stmt: END INTERFACE WORD EOSTMT  */
1686
0
#line 144 "cmFortranParser.y"
1687
0
                            {
1688
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1689
0
    cmFortranParser_SetInInterface(parser, false);
1690
0
    free((yyvsp[-1].string));
1691
0
  }
1692
0
#line 1693 "cmFortranParser.cxx"
1693
0
    break;
1694
1695
0
  case 11: /* stmt: END INTERFACE EOSTMT  */
1696
0
#line 149 "cmFortranParser.y"
1697
0
                       {
1698
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1699
0
    cmFortranParser_SetInInterface(parser, false);
1700
0
  }
1701
0
#line 1702 "cmFortranParser.cxx"
1702
0
    break;
1703
1704
0
  case 12: /* stmt: USE DCOLON WORD other EOSTMT  */
1705
0
#line 153 "cmFortranParser.y"
1706
0
                               {
1707
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1708
0
    cmFortranParser_RuleUse(parser, (yyvsp[-2].string));
1709
0
    free((yyvsp[-2].string));
1710
0
  }
1711
0
#line 1712 "cmFortranParser.cxx"
1712
0
    break;
1713
1714
0
  case 13: /* stmt: USE COMMA WORD DCOLON WORD other EOSTMT  */
1715
0
#line 158 "cmFortranParser.y"
1716
0
                                          {
1717
0
    if (cmsysString_strcasecmp((yyvsp[-4].string), "non_intrinsic") == 0) {
1718
0
      cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1719
0
      cmFortranParser_RuleUse(parser, (yyvsp[-2].string));
1720
0
    }
1721
0
    if (cmsysString_strcasecmp((yyvsp[-4].string), "intrinsic") == 0) {
1722
0
      cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1723
0
      cmFortranParser_RuleUseIntrinsic(parser, (yyvsp[-2].string));
1724
0
    }
1725
0
    free((yyvsp[-4].string));
1726
0
    free((yyvsp[-2].string));
1727
0
  }
1728
0
#line 1729 "cmFortranParser.cxx"
1729
0
    break;
1730
1731
0
  case 14: /* stmt: INCLUDE STRING EOSTMT  */
1732
0
#line 170 "cmFortranParser.y"
1733
0
                        {
1734
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1735
0
    cmFortranParser_RuleInclude(parser, (yyvsp[-1].string));
1736
0
    free((yyvsp[-1].string));
1737
0
  }
1738
0
#line 1739 "cmFortranParser.cxx"
1739
0
    break;
1740
1741
0
  case 15: /* stmt: CPP_LINE_DIRECTIVE STRING other EOSTMT  */
1742
0
#line 175 "cmFortranParser.y"
1743
0
                                         {
1744
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1745
0
    cmFortranParser_RuleLineDirective(parser, (yyvsp[-2].string));
1746
0
    free((yyvsp[-2].string));
1747
0
  }
1748
0
#line 1749 "cmFortranParser.cxx"
1749
0
    break;
1750
1751
0
  case 16: /* stmt: CPP_INCLUDE_ANGLE other EOSTMT  */
1752
0
#line 180 "cmFortranParser.y"
1753
0
                                 {
1754
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1755
0
    cmFortranParser_RuleInclude(parser, (yyvsp[-2].string));
1756
0
    free((yyvsp[-2].string));
1757
0
  }
1758
0
#line 1759 "cmFortranParser.cxx"
1759
0
    break;
1760
1761
0
  case 17: /* stmt: include STRING other EOSTMT  */
1762
0
#line 185 "cmFortranParser.y"
1763
0
                              {
1764
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1765
0
    cmFortranParser_RuleInclude(parser, (yyvsp[-2].string));
1766
0
    free((yyvsp[-2].string));
1767
0
  }
1768
0
#line 1769 "cmFortranParser.cxx"
1769
0
    break;
1770
1771
0
  case 18: /* stmt: define WORD other EOSTMT  */
1772
0
#line 190 "cmFortranParser.y"
1773
0
                           {
1774
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1775
0
    cmFortranParser_RuleDefine(parser, (yyvsp[-2].string));
1776
0
    free((yyvsp[-2].string));
1777
0
  }
1778
0
#line 1779 "cmFortranParser.cxx"
1779
0
    break;
1780
1781
0
  case 19: /* stmt: undef WORD other EOSTMT  */
1782
0
#line 195 "cmFortranParser.y"
1783
0
                          {
1784
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1785
0
    cmFortranParser_RuleUndef(parser, (yyvsp[-2].string));
1786
0
    free((yyvsp[-2].string));
1787
0
  }
1788
0
#line 1789 "cmFortranParser.cxx"
1789
0
    break;
1790
1791
0
  case 20: /* stmt: ifdef WORD other EOSTMT  */
1792
0
#line 200 "cmFortranParser.y"
1793
0
                          {
1794
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1795
0
    cmFortranParser_RuleIfdef(parser, (yyvsp[-2].string));
1796
0
    free((yyvsp[-2].string));
1797
0
  }
1798
0
#line 1799 "cmFortranParser.cxx"
1799
0
    break;
1800
1801
0
  case 21: /* stmt: ifndef WORD other EOSTMT  */
1802
0
#line 205 "cmFortranParser.y"
1803
0
                           {
1804
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1805
0
    cmFortranParser_RuleIfndef(parser, (yyvsp[-2].string));
1806
0
    free((yyvsp[-2].string));
1807
0
  }
1808
0
#line 1809 "cmFortranParser.cxx"
1809
0
    break;
1810
1811
0
  case 22: /* stmt: if other EOSTMT  */
1812
0
#line 210 "cmFortranParser.y"
1813
0
                  {
1814
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1815
0
    cmFortranParser_RuleIf(parser);
1816
0
  }
1817
0
#line 1818 "cmFortranParser.cxx"
1818
0
    break;
1819
1820
0
  case 23: /* stmt: elif other EOSTMT  */
1821
0
#line 214 "cmFortranParser.y"
1822
0
                    {
1823
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1824
0
    cmFortranParser_RuleElif(parser);
1825
0
  }
1826
0
#line 1827 "cmFortranParser.cxx"
1827
0
    break;
1828
1829
0
  case 24: /* stmt: else other EOSTMT  */
1830
0
#line 218 "cmFortranParser.y"
1831
0
                    {
1832
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1833
0
    cmFortranParser_RuleElse(parser);
1834
0
  }
1835
0
#line 1836 "cmFortranParser.cxx"
1836
0
    break;
1837
1838
0
  case 25: /* stmt: endif other EOSTMT  */
1839
0
#line 222 "cmFortranParser.y"
1840
0
                     {
1841
0
    cmFortranParser* parser = cmFortran_yyget_extra(yyscanner);
1842
0
    cmFortranParser_RuleEndif(parser);
1843
0
  }
1844
0
#line 1845 "cmFortranParser.cxx"
1845
0
    break;
1846
1847
0
  case 49: /* misc_code: WORD  */
1848
0
#line 244 "cmFortranParser.y"
1849
0
                      { free ((yyvsp[0].string)); }
1850
0
#line 1851 "cmFortranParser.cxx"
1851
0
    break;
1852
1853
0
  case 56: /* misc_code: STRING  */
1854
0
#line 251 "cmFortranParser.y"
1855
0
                      { free ((yyvsp[0].string)); }
1856
0
#line 1857 "cmFortranParser.cxx"
1857
0
    break;
1858
1859
1860
0
#line 1861 "cmFortranParser.cxx"
1861
1862
0
      default: break;
1863
0
    }
1864
  /* User semantic actions sometimes alter yychar, and that requires
1865
     that yytoken be updated with the new translation.  We take the
1866
     approach of translating immediately before every use of yytoken.
1867
     One alternative is translating here after every semantic action,
1868
     but that translation would be missed if the semantic action invokes
1869
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1870
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
1871
     incorrect destructor might then be invoked immediately.  In the
1872
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
1873
     to an incorrect destructor call or verbose syntax error message
1874
     before the lookahead is translated.  */
1875
0
  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1876
1877
0
  YYPOPSTACK (yylen);
1878
0
  yylen = 0;
1879
1880
0
  *++yyvsp = yyval;
1881
1882
  /* Now 'shift' the result of the reduction.  Determine what state
1883
     that goes to, based on the state we popped back to and the rule
1884
     number reduced by.  */
1885
0
  {
1886
0
    const int yylhs = yyr1[yyn] - YYNTOKENS;
1887
0
    const int yyi = yypgoto[yylhs] + *yyssp;
1888
0
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1889
0
               ? yytable[yyi]
1890
0
               : yydefgoto[yylhs]);
1891
0
  }
1892
1893
0
  goto yynewstate;
1894
1895
1896
/*--------------------------------------.
1897
| yyerrlab -- here on detecting error.  |
1898
`--------------------------------------*/
1899
0
yyerrlab:
1900
  /* Make sure we have latest lookahead translation.  See comments at
1901
     user semantic actions for why this is necessary.  */
1902
0
  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1903
  /* If not already recovering from an error, report this error.  */
1904
0
  if (!yyerrstatus)
1905
0
    {
1906
0
      ++yynerrs;
1907
0
      {
1908
0
        yypcontext_t yyctx
1909
0
          = {yyssp, yytoken};
1910
0
        char const *yymsgp = YY_("syntax error");
1911
0
        int yysyntax_error_status;
1912
0
        yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
1913
0
        if (yysyntax_error_status == 0)
1914
0
          yymsgp = yymsg;
1915
0
        else if (yysyntax_error_status == -1)
1916
0
          {
1917
0
            if (yymsg != yymsgbuf)
1918
0
              YYSTACK_FREE (yymsg);
1919
0
            yymsg = YY_CAST (char *,
1920
0
                             YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
1921
0
            if (yymsg)
1922
0
              {
1923
0
                yysyntax_error_status
1924
0
                  = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
1925
0
                yymsgp = yymsg;
1926
0
              }
1927
0
            else
1928
0
              {
1929
0
                yymsg = yymsgbuf;
1930
0
                yymsg_alloc = sizeof yymsgbuf;
1931
0
                yysyntax_error_status = YYENOMEM;
1932
0
              }
1933
0
          }
1934
0
        yyerror (yyscanner, yymsgp);
1935
0
        if (yysyntax_error_status == YYENOMEM)
1936
0
          YYNOMEM;
1937
0
      }
1938
0
    }
1939
1940
0
  if (yyerrstatus == 3)
1941
0
    {
1942
      /* If just tried and failed to reuse lookahead token after an
1943
         error, discard it.  */
1944
1945
0
      if (yychar <= YYEOF)
1946
0
        {
1947
          /* Return failure if at end of input.  */
1948
0
          if (yychar == YYEOF)
1949
0
            YYABORT;
1950
0
        }
1951
0
      else
1952
0
        {
1953
0
          yydestruct ("Error: discarding",
1954
0
                      yytoken, &yylval, yyscanner);
1955
0
          yychar = YYEMPTY;
1956
0
        }
1957
0
    }
1958
1959
  /* Else will try to reuse lookahead token after shifting the error
1960
     token.  */
1961
0
  goto yyerrlab1;
1962
1963
1964
/*---------------------------------------------------.
1965
| yyerrorlab -- error raised explicitly by YYERROR.  |
1966
`---------------------------------------------------*/
1967
0
yyerrorlab:
1968
  /* Pacify compilers when the user code never invokes YYERROR and the
1969
     label yyerrorlab therefore never appears in user code.  */
1970
0
  if (0)
1971
0
    YYERROR;
1972
0
  ++yynerrs;
1973
1974
  /* Do not reclaim the symbols of the rule whose action triggered
1975
     this YYERROR.  */
1976
0
  YYPOPSTACK (yylen);
1977
0
  yylen = 0;
1978
0
  YY_STACK_PRINT (yyss, yyssp);
1979
0
  yystate = *yyssp;
1980
0
  goto yyerrlab1;
1981
1982
1983
/*-------------------------------------------------------------.
1984
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
1985
`-------------------------------------------------------------*/
1986
0
yyerrlab1:
1987
0
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
1988
1989
  /* Pop stack until we find a state that shifts the error token.  */
1990
0
  for (;;)
1991
0
    {
1992
0
      yyn = yypact[yystate];
1993
0
      if (!yypact_value_is_default (yyn))
1994
0
        {
1995
0
          yyn += YYSYMBOL_YYerror;
1996
0
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1997
0
            {
1998
0
              yyn = yytable[yyn];
1999
0
              if (0 < yyn)
2000
0
                break;
2001
0
            }
2002
0
        }
2003
2004
      /* Pop the current state because it cannot handle the error token.  */
2005
0
      if (yyssp == yyss)
2006
0
        YYABORT;
2007
2008
2009
0
      yydestruct ("Error: popping",
2010
0
                  YY_ACCESSING_SYMBOL (yystate), yyvsp, yyscanner);
2011
0
      YYPOPSTACK (1);
2012
0
      yystate = *yyssp;
2013
0
      YY_STACK_PRINT (yyss, yyssp);
2014
0
    }
2015
2016
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2017
0
  *++yyvsp = yylval;
2018
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
2019
2020
2021
  /* Shift the error token.  */
2022
0
  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
2023
2024
0
  yystate = yyn;
2025
0
  goto yynewstate;
2026
2027
2028
/*-------------------------------------.
2029
| yyacceptlab -- YYACCEPT comes here.  |
2030
`-------------------------------------*/
2031
0
yyacceptlab:
2032
0
  yyresult = 0;
2033
0
  goto yyreturnlab;
2034
2035
2036
/*-----------------------------------.
2037
| yyabortlab -- YYABORT comes here.  |
2038
`-----------------------------------*/
2039
0
yyabortlab:
2040
0
  yyresult = 1;
2041
0
  goto yyreturnlab;
2042
2043
2044
/*-----------------------------------------------------------.
2045
| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
2046
`-----------------------------------------------------------*/
2047
0
yyexhaustedlab:
2048
0
  yyerror (yyscanner, YY_("memory exhausted"));
2049
0
  yyresult = 2;
2050
0
  goto yyreturnlab;
2051
2052
2053
/*----------------------------------------------------------.
2054
| yyreturnlab -- parsing is finished, clean up and return.  |
2055
`----------------------------------------------------------*/
2056
0
yyreturnlab:
2057
0
  if (yychar != YYEMPTY)
2058
0
    {
2059
      /* Make sure we have latest lookahead translation.  See comments at
2060
         user semantic actions for why this is necessary.  */
2061
0
      yytoken = YYTRANSLATE (yychar);
2062
0
      yydestruct ("Cleanup: discarding lookahead",
2063
0
                  yytoken, &yylval, yyscanner);
2064
0
    }
2065
  /* Do not reclaim the symbols of the rule whose action triggered
2066
     this YYABORT or YYACCEPT.  */
2067
0
  YYPOPSTACK (yylen);
2068
0
  YY_STACK_PRINT (yyss, yyssp);
2069
0
  while (yyssp != yyss)
2070
0
    {
2071
0
      yydestruct ("Cleanup: popping",
2072
0
                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yyscanner);
2073
0
      YYPOPSTACK (1);
2074
0
    }
2075
0
#ifndef yyoverflow
2076
0
  if (yyss != yyssa)
2077
0
    YYSTACK_FREE (yyss);
2078
0
#endif
2079
0
  if (yymsg != yymsgbuf)
2080
0
    YYSTACK_FREE (yymsg);
2081
0
  return yyresult;
2082
0
}
2083
2084
#line 263 "cmFortranParser.y"
2085
2086
/* End of grammar */