diff options
Diffstat (limited to 'Source/cmFortranParser.y')
-rw-r--r-- | Source/cmFortranParser.y | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/Source/cmFortranParser.y b/Source/cmFortranParser.y index 7cf7619..d3327e9 100644 --- a/Source/cmFortranParser.y +++ b/Source/cmFortranParser.y @@ -85,7 +85,7 @@ static void cmFortran_yyerror(yyscan_t yyscanner, const char* message) %token CPP_IFDEF CPP_IFNDEF CPP_IF CPP_ELSE CPP_ELIF CPP_ENDIF %token F90PPR_IFDEF F90PPR_IFNDEF F90PPR_IF %token F90PPR_ELSE F90PPR_ELIF F90PPR_ENDIF -%token COMMA DCOLON +%token COMMA COLON DCOLON LPAREN RPAREN %token <number> UNTERMINATED_STRING %token <string> STRING WORD %token <string> CPP_INCLUDE_ANGLE @@ -93,6 +93,7 @@ static void cmFortran_yyerror(yyscan_t yyscanner, const char* message) %token INCLUDE %token INTERFACE %token MODULE +%token SUBMODULE %token USE /*-------------------------------------------------------------------------*/ @@ -120,6 +121,19 @@ stmt: } free($2); } +| SUBMODULE LPAREN WORD RPAREN WORD other EOSTMT { + cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); + cmFortranParser_RuleUse(parser, $3); + free($3); + free($5); + } +| SUBMODULE LPAREN WORD COLON WORD RPAREN WORD other EOSTMT { + cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); + cmFortranParser_RuleUse(parser, $3); + free($3); + free($5); + free($7); + } | INTERFACE WORD other EOSTMT { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); @@ -221,11 +235,15 @@ misc_code: | INCLUDE | INTERFACE | MODULE +| SUBMODULE | USE | STRING { free ($1); } | GARBAGE | ASSIGNMENT_OP +| COLON | DCOLON +| LPAREN +| RPAREN | COMMA | UNTERMINATED_STRING ; |