1 |
/* F90 program symbol/call tree lister */ |
2 |
%{ |
3 |
int Lno; char *currentFile; |
4 |
%} |
5 |
|
6 |
%union { |
7 |
int LineNo; |
8 |
char *symbolName; |
9 |
} |
10 |
|
11 |
%token <LineNo> OTHER |
12 |
%token <symbolName> NAME |
13 |
%token <LineNo> SUBROUTINE |
14 |
%token <LineNo> EXTERNAL |
15 |
%token <LineNo> CALL |
16 |
%token <LineNo> NAMELIST |
17 |
%token <LineNo> FSLASH |
18 |
%token <LineNo> CPP_IFDEF |
19 |
%token <LineNo> CPP_IFNDEF |
20 |
%token <LineNo> CPP_DEFINE |
21 |
%token <LineNo> CPP_UNDEF |
22 |
%token <LineNo> CPP_ELIF |
23 |
%token <LineNo> CPP_IF |
24 |
%type <LineNo> call |
25 |
|
26 |
%% |
27 |
|
28 |
input: /* empty */ |
29 |
| input NAME {noteVariable($2,Lno,currentFile);} |
30 |
| input SUBROUTINE NAME {noteProcDef($3,Lno,currentFile); } |
31 |
| input call NAME {noteProcCall($3,Lno,currentFile);} |
32 |
| input EXTERNAL NAME {noteExtDef($3,Lno,currentFile); } |
33 |
| input NAMELIST FSLASH |
34 |
NAME FSLASH {noteInNameList($4,Lno,currentFile); } |
35 |
| input CPP_IFDEF {noteInIfdef(); } |
36 |
| input CPP_IFNDEF {noteInIfdef(); } |
37 |
| input CPP_DEFINE {noteInIfdef(); } |
38 |
| input CPP_UNDEF {noteInIfdef(); } |
39 |
| input CPP_ELIF {noteInIfdef(); } |
40 |
| input CPP_IF {noteInIfdef(); } |
41 |
| input FSLASH |
42 |
| input OTHER |
43 |
| input error { yyerrok; } |
44 |
; |
45 |
call: CALL { $$ = $1; } |
46 |
; |
47 |
%% |