📄 fortran.c
字号:
/* A Bison parser, made from ../../../../new_src/src/snavigator/parsers/fortran/fortran.y by GNU Bison version 1.28 */#define YYBISON 1 /* Identify Bison output. */#define tok_identifier 257#define tok_array_identifier 258#define tok_label 259#define tok_integer_const 260#define tok_real_const 261#define tok_dp_const 262#define tok_complex_const 263#define tok_dcomplex_const 264#define tok_logical_const 265#define tok_string 266#define tok_hollerith 267#define tok_edit_descriptor 268#define tok_letter 269#define tok_relop 270#define tok_AND 271#define tok_OR 272#define tok_EQV 273#define tok_NEQV 274#define tok_NOT 275#define tok_power 276#define tok_concat 277#define tok_ACCEPT 278#define tok_ASSIGN 279#define tok_BACKSPACE 280#define tok_BLOCK 281#define tok_BLOCKDATA 282#define tok_BYTE 283#define tok_CALL 284#define tok_CHARACTER 285#define tok_CLOSE 286#define tok_COMMON 287#define tok_COMPLEX 288#define tok_CONTINUE 289#define tok_DATA 290#define tok_DIMENSION 291#define tok_DO 292#define tok_DOUBLE 293#define tok_DOUBLECOMPLEX 294#define tok_DOUBLEPRECISION 295#define tok_DOWHILE 296#define tok_ELSE 297#define tok_ELSEIF 298#define tok_END 299#define tok_ENDDO 300#define tok_ENDFILE 301#define tok_ENDIF 302#define tok_ENDMAP 303#define tok_ENDSTRUCTURE 304#define tok_ENDUNION 305#define tok_ENTRY 306#define tok_EQUIVALENCE 307#define tok_EXTERNAL 308#define tok_FILE 309#define tok_FORMAT 310#define tok_FUNCTION 311#define tok_GO 312#define tok_GOTO 313#define tok_IF 314#define tok_IMPLICIT 315#define tok_INCLUDE 316#define tok_INQUIRE 317#define tok_INTEGER 318#define tok_INTRINSIC 319#define tok_LOGICAL 320#define tok_MAP 321#define tok_NAMELIST 322#define tok_NONE 323#define tok_OPEN 324#define tok_PARAMETER 325#define tok_PAUSE 326#define tok_POINTER 327#define tok_PRECISION 328#define tok_PRINT 329#define tok_PROGRAM 330#define tok_READ 331#define tok_REAL 332#define tok_RECORD 333#define tok_RETURN 334#define tok_REWIND 335#define tok_SAVE 336#define tok_STOP 337#define tok_STRUCTURE 338#define tok_SUBROUTINE 339#define tok_UNION 340#define tok_THEN 341#define tok_TO 342#define tok_TYPE 343#define tok_WHILE 344#define tok_WRITE 345#define tok_illegal 346#define EOS 127#define REDUCE 347#line 26 "../../../../new_src/src/snavigator/parsers/fortran/fortran.y"/* fortran.y Copyright (C) 1992 by Robert K. Moniot. This program is free software. Permission is granted to modify it and/or redistribute it. There is no warranty for this program. This grammar is ANSI standard-conforming, except for: -- complex constant and a few other ambiguities needing significant lookahead cannot be split across lines. Extensions supported: -- Case insensitive. -- Hollerith constants. -- Variable names may be longer than 6 characters. Also allows underscores and dollar signs in names. -- DO ... ENDDO and DO WHILE loop forms allowed. -- NAMELIST supported. -- TYPE and ACCEPT I/O statements allowed. -- Tabs are permitted in input, and (except in character data) expand into blanks up to the next column equal to 1 mod 8. -- Type declarations INTEGER*2, REAL*8, etc. are allowed. -- IMPLICIT NONE allowed.*/#include <stdio.h>#include <string.h>#include <ctype.h>#include "ftnchek.h"#include "symtab.h"#include <tcl.h>#include "sn.h" /* The following section is for use with bison-derived parser. Define alloca to be ckalloc for those cases not covered by the cases covered there. The ifdefs are those in the skeleton parser with includes removed */#ifdef AIXC /* IBM RS/6000 xlc compiler does it this way */#pragma alloca#endif#ifndef alloca#ifdef __GNUC__#else /* Not GNU C. */#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)#else /* Not sparc */#ifdef MSDOS#endif /* MSDOS */#endif /* Not sparc. */#endif /* Not GNU C. */#define alloca ckalloc#endif /* alloca now defined. */extern int highlight;void exit();#ifndef YYDEBUG /* If not declared otherwise... */int yydebug; /* declare yydebug to satisfy extern in ftnchek.c */#ifdef DEVELOPMENT#define YYDEBUG 1 /* For development it is handy */#else#define YYDEBUG 0#endif#endif#ifdef DEVELOPMENT#define DEBUG_PARSER#endifint current_datatype, /* set when parse type_name or type_stmt */ stmt_sequence_no, /* set when parsing, reset to 0 at end_stmt */ control_item_count; /* count of items in control_info_list */long current_typesize; /* for type*len declarations */extern unsigned prev_stmt_line_num; /* shared with advance */unsigned true_prev_stmt_line_num; /* shared with symtab.c */int current_struct_hash = -1;int current_common_hash = -1;int current_record_hash = -1;int current_module_hash = -1, /* hashtable index of current module name */ current_module_type, executable_stmt=FALSE, prev_stmt_class=0, /* flags for lexer */ complex_const_allowed=FALSE, /* for help in lookahead for these */ in_assignment_stmt=FALSE, inside_format=FALSE, /* when inside parens of FORMAT */ integer_context=FALSE; /* says integers-only are to follow */long exec_stmt_count=0; /* count of executable stmts in program */int cross_scope_type = PAF_SUBR_DEF;#ifdef DEBUG_PARSERPRIVATE voidprint_comlist(), print_exprlist();#endifPRIVATE void END_processing();PRIVATE Token * append_token();#if 0PRIVATE Token * append_dot_token();#endifPRIVATE int do_bounds_type();static Token *token_dup( Token *t ); /* Uses of Token fields for nonterminals: *//* 1. dim_bound_lists: dimensioning info for arrays: token.class = no. of dimensions, token.subclass = no. of elements 2. expressions token.value.integer = hash index (of identifier) token.class = type_byte = storage_class << 4 + datatype token.subclass = flags: CONST_EXPR, LVALUE_EXPR, etc.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -