Classes | Defines | Typedefs | Enumerations | Functions | Variables

parser.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <clan/macros.h>
#include <clan/vector.h>
#include <clan/matrix.h>
#include <clan/scop.h>
#include <clan/symbol.h>
#include <clan/statement.h>
#include <clan/options.h>
Include dependency graph for parser.c:

Classes

union  YYSTYPE
union  yyalloc

Defines

#define YYBISON   1
#define YYBISON_VERSION   "2.4.1"
#define YYSKELETON_NAME   "yacc.c"
#define YYPURE   0
#define YYPUSH   0
#define YYPULL   1
#define YYLSP_NEEDED   0
#define YYDEBUG   0
#define YYERROR_VERBOSE   0
#define YYTOKEN_TABLE   0
#define YYTOKENTYPE
#define IGNORE   258
#define IF   259
#define ELSE   260
#define FOR   261
#define PRAGMALOCALVARS   262
#define PRAGMALIVEOUT   263
#define MIN   264
#define MAX   265
#define CEILD   266
#define FLOORD   267
#define REAL   268
#define ID   269
#define INTEGER   270
#define syRPARENTHESIS   271
#define syLPARENTHESIS   272
#define syRBRACKET   273
#define syLBRACKET   274
#define syRBRACE   275
#define syLBRACE   276
#define sySEMICOLON   277
#define syCOMMA   278
#define syPOINT   279
#define syARROW   280
#define opEQUAL   281
#define opLEQ   282
#define opGEQ   283
#define opLOWER   284
#define opGREATER   285
#define opPLUS   286
#define opMINUS   287
#define opINCREMENTATION   288
#define opDECREMENTATION   289
#define opNOT   290
#define opMULTIPLY   291
#define opDIVIDE   292
#define opMOD   293
#define opAND   294
#define opOR   295
#define opCOMP   296
#define opASSIGNMENT   297
#define opPLUSEQUAL   298
#define opMINUSEQUAL   299
#define opMULTIPLYEQUAL   300
#define opDIVIDEEQUAL   301
#define opMODEQUAL   302
#define opANDEQUAL   303
#define opOREQUAL   304
#define opCOMPEQUAL   305
#define opLAND   306
#define opLOR   307
#define opQMARK   308
#define opCOLON   309
#define MAXPRIORITY   310
#define YYSTYPE_IS_TRIVIAL   1
#define yystype   YYSTYPE
#define YYSTYPE_IS_DECLARED   1
#define YYSIZE_T   unsigned int
#define YYSIZE_MAXIMUM   ((YYSIZE_T) -1)
#define YY_(msgid)   msgid
#define YYUSE(e)   ((void) (e))
#define YYID(n)   (n)
#define YYSTACK_ALLOC   YYMALLOC
#define YYSTACK_FREE   YYFREE
#define YYSTACK_ALLOC_MAXIMUM   YYSIZE_MAXIMUM
#define YYMALLOC   malloc
#define YYFREE   free
#define YYSTACK_GAP_MAXIMUM   (sizeof (union yyalloc) - 1)
#define YYSTACK_BYTES(N)
#define YYCOPY(To, From, Count)
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
#define YYFINAL   32
#define YYLAST   543
#define YYNTOKENS   56
#define YYNNTS   29
#define YYNRULES   116
#define YYNSTATES   220
#define YYUNDEFTOK   2
#define YYMAXUTOK   310
#define YYTRANSLATE(YYX)   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
#define YYPACT_NINF   -80
#define YYTABLE_NINF   -4
#define yyerrok   (yyerrstatus = 0)
#define yyclearin   (yychar = YYEMPTY)
#define YYEMPTY   (-2)
#define YYEOF   0
#define YYACCEPT   goto yyacceptlab
#define YYABORT   goto yyabortlab
#define YYERROR   goto yyerrorlab
#define YYFAIL   goto yyerrlab
#define YYRECOVERING()   (!!yyerrstatus)
#define YYBACKUP(Token, Value)
#define YYTERROR   1
#define YYERRCODE   256
#define YYRHSLOC(Rhs, K)   ((Rhs)[K])
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define YY_LOCATION_PRINT(File, Loc)   ((void) 0)
#define YYLEX   yylex ()
#define YYDPRINTF(Args)
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
#define YY_STACK_PRINT(Bottom, Top)
#define YY_REDUCE_PRINT(Rule)
#define YYINITDEPTH   200
#define YYMAXDEPTH   10000
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))

Typedefs

typedef union YYSTYPE YYSTYPE
typedef unsigned char yytype_uint8
typedef short int yytype_int8
typedef unsigned short int yytype_uint16
typedef short int yytype_int16

Enumerations

enum  yytokentype {
  IGNORE = 258, IF = 259, ELSE = 260, FOR = 261,
  PRAGMALOCALVARS = 262, PRAGMALIVEOUT = 263, MIN = 264, MAX = 265,
  CEILD = 266, FLOORD = 267, REAL = 268, ID = 269,
  INTEGER = 270, syRPARENTHESIS = 271, syLPARENTHESIS = 272, syRBRACKET = 273,
  syLBRACKET = 274, syRBRACE = 275, syLBRACE = 276, sySEMICOLON = 277,
  syCOMMA = 278, syPOINT = 279, syARROW = 280, opEQUAL = 281,
  opLEQ = 282, opGEQ = 283, opLOWER = 284, opGREATER = 285,
  opPLUS = 286, opMINUS = 287, opINCREMENTATION = 288, opDECREMENTATION = 289,
  opNOT = 290, opMULTIPLY = 291, opDIVIDE = 292, opMOD = 293,
  opAND = 294, opOR = 295, opCOMP = 296, opASSIGNMENT = 297,
  opPLUSEQUAL = 298, opMINUSEQUAL = 299, opMULTIPLYEQUAL = 300, opDIVIDEEQUAL = 301,
  opMODEQUAL = 302, opANDEQUAL = 303, opOREQUAL = 304, opCOMPEQUAL = 305,
  opLAND = 306, opLOR = 307, opQMARK = 308, opCOLON = 309,
  MAXPRIORITY = 310, IGNORE = 258, IF = 259, ELSE = 260,
  FOR = 261, PRAGMALOCALVARS = 262, PRAGMALIVEOUT = 263, MIN = 264,
  MAX = 265, CEILD = 266, FLOORD = 267, REAL = 268,
  ID = 269, INTEGER = 270, syRPARENTHESIS = 271, syLPARENTHESIS = 272,
  syRBRACKET = 273, syLBRACKET = 274, syRBRACE = 275, syLBRACE = 276,
  sySEMICOLON = 277, syCOMMA = 278, syPOINT = 279, syARROW = 280,
  opEQUAL = 281, opLEQ = 282, opGEQ = 283, opLOWER = 284,
  opGREATER = 285, opPLUS = 286, opMINUS = 287, opINCREMENTATION = 288,
  opDECREMENTATION = 289, opNOT = 290, opMULTIPLY = 291, opDIVIDE = 292,
  opMOD = 293, opAND = 294, opOR = 295, opCOMP = 296,
  opASSIGNMENT = 297, opPLUSEQUAL = 298, opMINUSEQUAL = 299, opMULTIPLYEQUAL = 300,
  opDIVIDEEQUAL = 301, opMODEQUAL = 302, opANDEQUAL = 303, opOREQUAL = 304,
  opCOMPEQUAL = 305, opLAND = 306, opLOR = 307, opQMARK = 308,
  opCOLON = 309, MAXPRIORITY = 310
}

Functions

int yylex (void)
void yyerror (char *)
void clan_parser_log (char *)
scoplib_scop_p clan_parse (FILE *, clan_options_p)
static void yydestruct (char *yymsg, int yytype, YYSTYPE *yyvaluep) const
int yyparse ()
void clan_parser_initialize_state (clan_options_p options)
void clan_parser_free_state ()

Variables

int clan_parse_error = 0
FILE * yyin = (FILE *) 0
char * scanner_latest_text
scoplib_scop_p parser_scop
scoplib_statement_p parser_statement
clan_symbol_p parser_symbol
int parser_recording
char * parser_record
int parser_depth = 0
int * parser_scheduling
clan_symbol_pparser_iterators
scoplib_matrix_p parser_domain
int parser_nb_cons = 0
int * parser_consperdim
int * parser_variables_localvars
int * parser_variables_liveout
clan_options_p parser_options = NULL
static const yytype_uint8 yytranslate []
static const yytype_uint8 yyr1 []
static const yytype_uint8 yyr2 []
static const yytype_uint8 yydefact []
static const yytype_int16 yydefgoto []
static const yytype_int16 yypact []
static const yytype_int16 yypgoto []
static const yytype_int16 yytable []
static const yytype_int16 yycheck []
static const yytype_uint8 yystos []
int yychar
YYSTYPE yylval
int yynerrs

Define Documentation

#define CEILD   266
#define ELSE   260
#define FLOORD   267
#define FOR   261
#define ID   269
#define IF   259
#define IGNORE   258
#define INTEGER   270
#define MAX   265
#define MAXPRIORITY   310
#define MIN   264
#define opAND   294
#define opANDEQUAL   303
#define opASSIGNMENT   297
#define opCOLON   309
#define opCOMP   296
#define opCOMPEQUAL   305
#define opDECREMENTATION   289
#define opDIVIDE   292
#define opDIVIDEEQUAL   301
#define opEQUAL   281
#define opGEQ   283
#define opGREATER   285
#define opINCREMENTATION   288
#define opLAND   306
#define opLEQ   282
#define opLOR   307
#define opLOWER   284
#define opMINUS   287
#define opMINUSEQUAL   299
#define opMOD   293
#define opMODEQUAL   302
#define opMULTIPLY   291
#define opMULTIPLYEQUAL   300
#define opNOT   290
#define opOR   295
#define opOREQUAL   304
#define opPLUS   286
#define opPLUSEQUAL   298
#define opQMARK   308
#define PRAGMALIVEOUT   263
#define PRAGMALOCALVARS   262
#define REAL   268
#define syARROW   280
#define syCOMMA   278
#define syLBRACE   276
#define syLBRACKET   274
#define syLPARENTHESIS   272
#define syPOINT   279
#define syRBRACE   275
#define syRBRACKET   273
#define syRPARENTHESIS   271
#define sySEMICOLON   277
#define YY_ (   msgid  )     msgid

Referenced by yyparse().

#define YY_LOCATION_PRINT (   File,
  Loc 
)    ((void) 0)
#define YY_REDUCE_PRINT (   Rule  ) 

Referenced by yyparse().

#define YY_STACK_PRINT (   Bottom,
  Top 
)

Referenced by yyparse().

#define YY_SYMBOL_PRINT (   Title,
  Type,
  Value,
  Location 
)

Referenced by yydestruct(), and yyparse().

#define YYABORT   goto yyabortlab
#define YYACCEPT   goto yyacceptlab
#define YYBACKUP (   Token,
  Value 
)
Value:
do                                                              \
  if (yychar == YYEMPTY && yylen == 1)                          \
    {                                                           \
      yychar = (Token);                                         \
      yylval = (Value);                                         \
      yytoken = YYTRANSLATE (yychar);                           \
      YYPOPSTACK (1);                                           \
      goto yybackup;                                            \
    }                                                           \
  else                                                          \
    {                                                           \
      yyerror (YY_("syntax error: cannot back up")); \
      YYERROR;                                                  \
    }                                                           \
while (YYID (0))
#define YYBISON   1
#define YYBISON_VERSION   "2.4.1"
#define yyclearin   (yychar = YYEMPTY)
#define YYCOPY (   To,
  From,
  Count 
)
Value:
do                                      \
        {                                       \
          YYSIZE_T yyi;                         \
          for (yyi = 0; yyi < (Count); yyi++)   \
            (To)[yyi] = (From)[yyi];            \
        }                                       \
      while (YYID (0))
#define YYDEBUG   0
#define YYDPRINTF (   Args  ) 

Referenced by yyparse().

#define YYEMPTY   (-2)

Referenced by yyparse().

#define YYEOF   0

Referenced by yyparse().

#define YYERRCODE   256
#define yyerrok   (yyerrstatus = 0)
#define YYERROR   goto yyerrorlab
#define YYERROR_VERBOSE   0
#define YYFAIL   goto yyerrlab
#define YYFINAL   32

Referenced by yyparse().

#define YYFREE   free
#define YYID (   n  )     (n)

Referenced by yyparse().

#define YYINITDEPTH   200
#define YYLAST   543

Referenced by yyparse().

#define YYLEX   yylex ()
#define YYLLOC_DEFAULT (   Current,
  Rhs,
  N 
)
Value:
do                                                                      \
      if (YYID (N))                                                    \
        {                                                               \
          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
        }                                                               \
      else                                                              \
        {                                                               \
          (Current).first_line   = (Current).last_line   =              \
            YYRHSLOC (Rhs, 0).last_line;                                \
          (Current).first_column = (Current).last_column =              \
            YYRHSLOC (Rhs, 0).last_column;                              \
        }                                                               \
    while (YYID (0))
#define YYLSP_NEEDED   0
#define YYMALLOC   malloc
#define YYMAXDEPTH   10000

Referenced by yyparse().

#define YYMAXUTOK   310
#define YYNNTS   29
#define YYNRULES   116
#define YYNSTATES   220
#define YYNTOKENS   56
#define YYPACT_NINF   -80

Referenced by yyparse().

#define YYPOPSTACK (   N  )     (yyvsp -= (N), yyssp -= (N))

Referenced by yyparse().

#define YYPULL   1
#define YYPURE   0
#define YYPUSH   0
#define YYRECOVERING (  )     (!!yyerrstatus)
#define YYRHSLOC (   Rhs,
  K 
)    ((Rhs)[K])
#define YYSIZE_MAXIMUM   ((YYSIZE_T) -1)
#define YYSIZE_T   unsigned int

Referenced by yyparse().

#define YYSKELETON_NAME   "yacc.c"
#define YYSTACK_ALLOC   YYMALLOC

Referenced by yyparse().

#define YYSTACK_ALLOC_MAXIMUM   YYSIZE_MAXIMUM

Referenced by yyparse().

#define YYSTACK_BYTES (   N  ) 
Value:
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
      + YYSTACK_GAP_MAXIMUM)

Referenced by yyparse().

#define YYSTACK_FREE   YYFREE

Referenced by yyparse().

#define YYSTACK_GAP_MAXIMUM   (sizeof (union yyalloc) - 1)
#define YYSTACK_RELOCATE (   Stack_alloc,
  Stack 
)
Value:
do                                                                      \
      {                                                                 \
        YYSIZE_T yynewbytes;                                            \
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
        Stack = &yyptr->Stack_alloc;                                    \
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / sizeof (*yyptr);                          \
      }                                                                 \
    while (YYID (0))

Referenced by yyparse().

#define yystype   YYSTYPE
#define YYSTYPE_IS_DECLARED   1
#define YYSTYPE_IS_TRIVIAL   1
#define YYTABLE_NINF   -4

Referenced by yyparse().

#define YYTERROR   1

Referenced by yyparse().

#define YYTOKEN_TABLE   0
#define YYTOKENTYPE
#define YYTRANSLATE (   YYX  )     ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)

Referenced by yyparse().

#define YYUNDEFTOK   2
#define YYUSE (   e  )     ((void) (e))

Referenced by yydestruct().


Typedef Documentation

typedef union YYSTYPE YYSTYPE
typedef short int yytype_int16
typedef short int yytype_int8
typedef unsigned short int yytype_uint16
typedef unsigned char yytype_uint8

Enumeration Type Documentation

Enumerator:
IGNORE 
IF 
ELSE 
FOR 
PRAGMALOCALVARS 
PRAGMALIVEOUT 
MIN 
MAX 
CEILD 
FLOORD 
REAL 
ID 
INTEGER 
syRPARENTHESIS 
syLPARENTHESIS 
syRBRACKET 
syLBRACKET 
syRBRACE 
syLBRACE 
sySEMICOLON 
syCOMMA 
syPOINT 
syARROW 
opEQUAL 
opLEQ 
opGEQ 
opLOWER 
opGREATER 
opPLUS 
opMINUS 
opINCREMENTATION 
opDECREMENTATION 
opNOT 
opMULTIPLY 
opDIVIDE 
opMOD 
opAND 
opOR 
opCOMP 
opASSIGNMENT 
opPLUSEQUAL 
opMINUSEQUAL 
opMULTIPLYEQUAL 
opDIVIDEEQUAL 
opMODEQUAL 
opANDEQUAL 
opOREQUAL 
opCOMPEQUAL 
opLAND 
opLOR 
opQMARK 
opCOLON 
MAXPRIORITY 
IGNORE 
IF 
ELSE 
FOR 
PRAGMALOCALVARS 
PRAGMALIVEOUT 
MIN 
MAX 
CEILD 
FLOORD 
REAL 
ID 
INTEGER 
syRPARENTHESIS 
syLPARENTHESIS 
syRBRACKET 
syLBRACKET 
syRBRACE 
syLBRACE 
sySEMICOLON 
syCOMMA 
syPOINT 
syARROW 
opEQUAL 
opLEQ 
opGEQ 
opLOWER 
opGREATER 
opPLUS 
opMINUS 
opINCREMENTATION 
opDECREMENTATION 
opNOT 
opMULTIPLY 
opDIVIDE 
opMOD 
opAND 
opOR 
opCOMP 
opASSIGNMENT 
opPLUSEQUAL 
opMINUSEQUAL 
opMULTIPLYEQUAL 
opDIVIDEEQUAL 
opMODEQUAL 
opANDEQUAL 
opOREQUAL 
opCOMPEQUAL 
opLAND 
opLOR 
opQMARK 
opCOLON 
MAXPRIORITY 

Function Documentation

scoplib_scop_p clan_parse ( FILE *  input,
clan_options_p  options 
)

clan_parse function: this function parses a file to extract a SCoP and returns, if successful, a pointer to the scoplib_scop_t structure.

Parameters:
input The file to parse (already open).
options Options for file parsing.
  • 01/05/2008: First version.

References clan_parse_error, clan_parser_free_state(), clan_parser_initialize_state(), clan_scop_compact(), clan_scop_fill_options(), parser_scop, parser_variables_liveout, parser_variables_localvars, yyin, and yyparse().

Referenced by clan_scop_extract().

void clan_parser_free_state (  ) 

clan_parser_free_state function: this function frees the memory allocated for the "parser state", except for parser_scop, obviously.

  • 02/05/2008: First version.

References clan_symbol_free(), parser_consperdim, parser_domain, parser_scheduling, parser_variables_liveout, and parser_variables_localvars.

Referenced by clan_parse().

void clan_parser_initialize_state ( clan_options_p  options  ) 

clan_parser_initialize_state function: this function achieves the initialization of the "parser state": a collection of variables that vary during the parsing and thanks to we can extract all SCoP informations.

  • 02/05/2008: First version.

References CLAN_MAX_DEPTH, CLAN_MAX_LOCAL_VARIABLES, CLAN_MAX_PARAMETERS, parser_consperdim, parser_depth, parser_domain, parser_nb_cons, parser_record, parser_scheduling, parser_scop, parser_variables_liveout, parser_variables_localvars, scanner_latest_text, symbol_nb_arrays, symbol_nb_functions, symbol_nb_iterators, and symbol_nb_parameters.

Referenced by clan_parse().

void clan_parser_log ( char *   ) 
static void yydestruct ( char *  yymsg,
int  yytype,
YYSTYPE yyvaluep 
) const [static]

References YY_SYMBOL_PRINT, and YYUSE.

Referenced by yyparse().

void yyerror ( char *  s  ) 

References clan_parse_error.

Referenced by yyparse().

int yylex ( void   ) 
int yyparse (  ) 

Variable Documentation

Set to 1 during parsing if encountered an error

Referenced by clan_parse(), and yyerror().

Constraint nb for each dimension

Referenced by clan_parser_free_state(), clan_parser_initialize_state(), and yyparse().

int parser_depth = 0

Current loop depth

Referenced by clan_parser_initialize_state(), and yyparse().

scoplib_matrix_p parser_domain

Current iteration domain

Referenced by clan_parser_free_state(), clan_parser_initialize_state(), and yyparse().

Current iterator list

int parser_nb_cons = 0

Current number of constraints

Referenced by clan_parser_initialize_state(), and yyparse().

What we record (statement body)

Referenced by clan_parser_initialize_state(), and yyparse().

Boolean: do we record or not?

Referenced by yyparse().

Current statement scheduling

Referenced by clan_parser_free_state(), clan_parser_initialize_state(), and yyparse().

scoplib_scop_p parser_scop

SCoP in construction

Referenced by clan_parse(), clan_parser_initialize_state(), and yyparse().

scoplib_statement_p parser_statement

Statement in construction

Referenced by yyparse().

Top of the symbol table

List of variables in pragma live-out

Referenced by clan_parse(), clan_parser_free_state(), clan_parser_initialize_state(), and yyparse().

List of variables in pragma local-vars

Referenced by clan_parse(), clan_parser_free_state(), clan_parser_initialize_state(), and yyparse().

Latest text read by Lex

Latest text read

Referenced by clan_parser_initialize_state(), and yyparse().

int yychar
const yytype_int16 yycheck[] [static]
const yytype_uint8 yydefact[] [static]
Initial value:
{
      18,     6,     0,     0,   104,   104,    18,     0,    18,     4,
       0,     0,     0,   111,   112,   113,   114,   116,   107,   115,
       0,     0,     0,     0,   100,   103,    20,    89,   110,    94,
      21,    18,     1,     7,     5,     0,     0,    61,    62,     0,
      19,     0,   113,   114,    36,     0,     0,     0,    30,     0,
      37,    11,     0,     0,     0,    93,    92,   109,     0,     0,
       0,     0,     0,   104,     0,    90,     8,     0,     0,    67,
       0,    53,    54,    55,    56,    57,    58,    59,    60,     0,
       0,     0,     0,     0,     0,   107,     0,     0,    38,    45,
       0,     0,     0,     0,     0,     0,     0,    16,     0,     0,
       0,   108,    99,    96,    95,    97,    98,   101,   102,     0,
       0,     0,     0,    68,    66,     0,     0,     0,     0,    84,
      82,     0,    65,     0,     0,    41,    39,    42,    33,    51,
       0,     0,    50,   111,    48,    26,   112,    49,    28,    46,
      47,    31,    32,    18,    52,    40,     0,    91,     0,   105,
       0,     0,    83,    86,    63,    78,    76,    74,    77,    75,
      69,    70,    71,    72,    73,    79,    80,    81,     0,     0,
      64,     0,     0,    43,    44,     0,     0,    18,    17,     9,
      12,   106,    87,     0,    85,     0,     0,     0,     0,    18,
       0,     0,    34,    35,     0,     0,    10,     0,    88,     0,
       0,    13,    27,    29,     0,     0,     0,     0,     0,    23,
      14,    22,     0,     0,    18,     0,    25,    15,     0,    24
}
const yytype_int16 yydefgoto[] [static]
Initial value:
{
      -1,     7,     8,   178,     9,   100,   190,   204,   214,   143,
      10,   207,   134,   137,   138,    48,    49,    79,    39,    40,
     169,   118,   119,    25,    26,    65,    50,    28,    29
}
FILE * yyin = (FILE *) 0

File to be read by Lex

Referenced by clan_parse(), yy_init_globals(), yyget_in(), and yyset_in().

int yynerrs
const yytype_int16 yypact[] [static]
Initial value:
{
     136,   -80,     3,    11,   290,   290,   375,    13,   280,   -80,
     238,   329,   464,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
     147,   353,   353,    16,   -80,   167,    55,    31,   -80,   -80,
      55,   101,   -80,   -80,   -80,    69,   238,   -80,   -80,   353,
     -80,   471,    72,    77,     1,   361,   137,   455,   -80,    -7,
      49,   -80,    79,    41,    -8,   -80,   -80,   -80,    41,    41,
      41,    41,   290,   290,   387,    82,   -80,    85,    98,   -80,
     250,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   250,
     105,   387,   387,   440,   109,    79,   505,    -3,    99,   114,
     387,   395,   406,   395,   406,   387,   387,   -80,   329,   126,
     115,   -80,   -80,    34,    34,   -80,   -80,   -80,   167,    57,
     421,    21,   387,   -80,   -80,   281,   321,   250,   184,   -80,
     -80,   204,   -80,    87,   102,   -80,   -80,   -80,   -80,   -80,
     464,   159,    67,   170,   -80,    67,   174,   -80,    67,   -80,
     -80,   -80,   -80,   185,   -80,   -80,   406,   -80,    14,   -80,
      45,   141,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   250,   250,
     -80,   432,   432,   -80,   -80,   395,   406,   375,   -80,   -80,
     -80,   -80,   -80,   470,   -80,   166,   178,   173,   177,   522,
     175,   250,   -80,   -80,   395,   406,   -80,   329,   -80,   190,
     200,   168,   -80,   -80,   196,   456,   464,   210,   -21,   -80,
     -80,   -80,   464,   213,   185,   198,   -80,   -80,   223,   -80
}
const yytype_int16 yypgoto[] [static]
Initial value:
{
     -80,   -80,    -2,    25,    -5,   -80,   -80,   -80,   -80,   -80,
     -80,   -80,   -73,   -79,    -9,   -17,   -38,   -80,   205,   215,
     -80,   -74,    29,    70,     6,   -80,    -4,   -80,   -54
}
const yytype_uint8 yyr1[] [static]
Initial value:
{
       0,    56,    57,    57,    58,    58,    58,    58,    58,    59,
      59,    61,    62,    63,    64,    60,    65,    60,    66,    60,
      60,    60,    67,    67,    67,    67,    68,    68,    69,    69,
      70,    70,    70,    70,    70,    70,    71,    71,    71,    71,
      71,    71,    71,    71,    71,    71,    72,    72,    72,    72,
      72,    72,    72,    73,    73,    73,    73,    73,    73,    73,
      73,    74,    74,    75,    75,    75,    75,    75,    75,    76,
      76,    76,    76,    76,    76,    76,    76,    76,    76,    76,
      76,    76,    77,    77,    77,    77,    77,    77,    77,    78,
      78,    78,    78,    78,    79,    79,    79,    79,    79,    79,
      80,    80,    80,    80,    80,    81,    81,    82,    82,    82,
      82,    83,    83,    83,    83,    84,    84
}
const yytype_uint8 yyr2[] [static]
Initial value:
{
       0,     2,     1,     0,     1,     2,     1,     2,     3,     1,
       3,     0,     0,     0,     0,    15,     0,     6,     0,     2,
       2,     2,     2,     2,     5,     3,     1,     6,     1,     6,
       1,     3,     3,     3,     6,     6,     1,     1,     2,     3,
       3,     3,     3,     4,     4,     2,     3,     3,     3,     3,
       3,     3,     3,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     4,     4,     3,     3,     2,     3,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     2,     1,     3,     2,     3,     5,     1,
       2,     4,     2,     2,     1,     3,     3,     3,     3,     3,
       1,     3,     3,     1,     0,     3,     4,     1,     3,     2,
       1,     1,     1,     1,     1,     1,     1
}
const yytype_uint8 yystos[] [static]
Initial value:
{
       0,     3,     4,     6,     7,     8,    20,    57,    58,    60,
      66,    16,    16,     9,    10,    11,    12,    13,    14,    15,
      16,    31,    32,    39,    78,    79,    80,    82,    83,    84,
      80,    58,     0,     3,    60,    16,    20,    33,    34,    74,
      75,    78,    11,    12,    15,    16,    32,    70,    71,    72,
      82,    82,    14,    16,    79,    78,    78,    14,    31,    32,
      36,    37,    23,    16,    18,    81,    21,    75,    78,    22,
      42,    43,    44,    45,    46,    47,    48,    49,    50,    73,
      74,    16,    16,    36,    37,    14,    70,    72,    15,    82,
      26,    27,    28,    29,    30,    31,    32,    17,    51,    36,
      61,    17,    17,    79,    79,    79,    79,    78,    79,    80,
      16,    70,    18,    21,    22,    16,    32,    35,    77,    78,
      84,    77,    22,    70,    70,    15,    82,    15,    17,    17,
      36,    36,    70,     9,    68,    70,    10,    69,    70,    68,
      69,    70,    70,    65,    72,    15,    42,    17,    70,    19,
      70,    77,    84,    77,    22,    26,    27,    28,    29,    30,
      31,    32,    36,    37,    38,    39,    40,    41,    53,    76,
      22,    23,    23,    82,    15,    16,    16,    20,    59,    60,
      69,    19,    17,    77,    77,    71,    71,    68,    69,    58,
      62,    54,    17,    17,    23,    23,    21,    22,    77,    68,
      69,    72,    17,    17,    63,    22,    33,    67,    82,    82,
      17,    33,    42,    43,    64,    82,    15,    59,    31,    15
}
const yytype_int16 yytable[] [static]
const yytype_uint8 yytranslate[] [static]