1264790Sbapt%{ 2264790Sbaptextern void mksymbol(int t, int c, int id); 3264790Sbapt 4264790Sbapt#ifdef YYBISON 5264790Sbapt#define YYLEX_DECL() yylex(void) 6264790Sbapt#define YYERROR_DECL() yyerror(const char *s) 7264790Sbaptextern int YYLEX_DECL(); 8264790Sbaptextern void YYERROR_DECL(); 9264790Sbapt#endif 10264790Sbapt%} 11264790Sbapt 12264790Sbapt%token GLOBAL LOCAL 13264790Sbapt%token REAL INTEGER 14264790Sbapt%token NAME 15264790Sbapt 16264790Sbapt%start declaration 17264790Sbapt 18264790Sbapt%% 19264790Sbaptdeclaration: class type namelist 20264790Sbapt { $$ = $3; } 21264790Sbapt | type locnamelist 22264790Sbapt { $$ = $2; } 23264790Sbapt ; 24264790Sbapt 25264790Sbaptclass : GLOBAL { $$ = 1; } 26264790Sbapt | LOCAL { $$ = 2; } 27264790Sbapt ; 28264790Sbapt 29264790Sbapttype : REAL { $$ = 1; } 30264790Sbapt | INTEGER { $$ = 2; } 31264790Sbapt ; 32264790Sbapt 33264790Sbaptnamelist: namelist NAME 34264790Sbapt { mksymbol($0, $-1, $2); } 35264790Sbapt | NAME 36264790Sbapt { mksymbol($0, $-1, $1); } 37264790Sbapt ; 38264790Sbapt 39264790Sbaptlocnamelist: 40264790Sbapt { $$ = 2; } /* set up semantic stack for <class>: LOCAL */ 41264790Sbapt { $$ = $-1; } /* copy <type> to where <namelist> expects it */ 42264790Sbapt namelist 43264790Sbapt { $$ = $3; } 44264790Sbapt ; 45264790Sbapt%% 46264790Sbapt 47264790Sbaptextern int YYLEX_DECL(); 48264790Sbaptextern void YYERROR_DECL(); 49