| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | 
							- %{
 
- /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
 
-    file Copyright.txt or https://cmake.org/licensing for details.  */
 
- /*-------------------------------------------------------------------------
 
-   Portions of this source have been derived from makedepf90 version 2.8.8,
 
-    Copyright (C) 2000--2006 Erik Edelmann <[email protected]>
 
-   The code was originally distributed under the GPL but permission
 
-   from the copyright holder has been obtained to distribute this
 
-   derived work under the CMake license.
 
- -------------------------------------------------------------------------*/
 
- /*
 
- This file must be translated to C++ and modified to build everywhere.
 
- Run flex >= 2.6 like this:
 
-   flex -i --nounistd -DFLEXINT_H --noline --header-file=cmFortranLexer.h -ocmFortranLexer.cxx cmFortranLexer.in.l
 
- Modify cmFortranLexer.cxx:
 
-   - remove trailing whitespace:              sed -i 's/\s*$//' cmFortranLexer.h cmFortranLexer.cxx
 
-   - remove blank lines at end of file:       sed -i '${/^$/d;}' cmFortranLexer.h cmFortranLexer.cxx
 
-   - #include "cmStandardLexer.h" at the top: sed -i '1i#include "cmStandardLexer.h"' cmFortranLexer.cxx
 
- */
 
- /* IWYU pragma: no_forward_declare yyguts_t */
 
- #ifndef __clang_analyzer__ /* Suppress clang scan-build warnings */
 
- #undef YY_NO_UNPUT
 
- #define cmFortranLexer_cxx
 
- #include "cmFortranParser.h" /* Interface to parser object.  */
 
- /* Replace the lexer input function.  */
 
- #undef YY_INPUT
 
- #define YY_INPUT(buf, result, max_size) \
 
-   do { result = cmFortranParser_Input(yyextra, buf, max_size); } while (0)
 
- /* Include the set of tokens from the parser.  */
 
- #include "cmFortranParserTokens.h"
 
- /*--------------------------------------------------------------------------*/
 
- %}
 
- %option prefix="cmFortran_yy"
 
- %option reentrant
 
- %option noyywrap
 
- %pointer
 
- %s free_fmt fixed_fmt
 
- %x str_sq str_dq
 
- %%
 
- \"              {
 
-   cmFortranParser_StringStart(yyextra);
 
-   cmFortranParser_SetOldStartcond(yyextra, YY_START);
 
-   BEGIN(str_dq);
 
- }
 
- '               {
 
-   cmFortranParser_StringStart(yyextra);
 
-   cmFortranParser_SetOldStartcond(yyextra, YY_START);
 
-   BEGIN(str_sq);
 
- }
 
- <str_dq>\" |
 
- <str_sq>'  {
 
-   BEGIN(cmFortranParser_GetOldStartcond(yyextra) );
 
-   yylvalp->string = strdup(cmFortranParser_StringEnd(yyextra));
 
-   return STRING;
 
- }
 
- <str_dq,str_sq>&[ \t]*\n |
 
- <str_dq,str_sq>&[ \t]*\n[ \t]*&  /* Ignore (continued strings, free fmt) */
 
- <fixed_fmt,str_dq,str_sq>\n[ ]{5}[^ \t\n] {
 
-   if (cmFortranParser_GetOldStartcond(yyextra) == fixed_fmt)
 
-     ; /* Ignore (cont. strings, fixed fmt) */
 
-   else
 
-     {
 
-     unput(yytext[strlen(yytext)-1]);
 
-     }
 
- }
 
- <str_dq,str_sq>\n {
 
-   unput ('\n');
 
-   BEGIN(INITIAL);
 
-   return UNTERMINATED_STRING;
 
- }
 
- <str_sq,str_dq>. {
 
-   cmFortranParser_StringAppend(yyextra, yytext[0]);
 
- }
 
- !.*\n                   { return EOSTMT; } /* Treat comments like */
 
- <fixed_fmt>^[cC*dD].*\n { return EOSTMT; } /* empty lines */
 
- ^[ \t]*#([ \t]*line)?[ \t]*[0-9]+[ \t]* { return CPP_LINE_DIRECTIVE; }
 
- ^[ \t]*#[ \t]*include[ \t]*<[^>]+> {
 
-   yytext[yyleng-1] = 0;
 
-   yylvalp->string = strdup(strchr(yytext, '<')+1);
 
-   return CPP_INCLUDE_ANGLE;
 
- }
 
- ^[ \t]*#[ \t]*include  { return CPP_INCLUDE; }
 
- \$[ \t]*include { return F90PPR_INCLUDE; }
 
- \?\?[ \t]*include { return COCO_INCLUDE; }
 
- ^[ \t]*#[ \t]*define   { return CPP_DEFINE; }
 
- \$[ \t]*DEFINE   { return F90PPR_DEFINE; }
 
- ^[ \t]*#[ \t]*undef    { return CPP_UNDEF; }
 
- \$[ \t]*UNDEF   { return F90PPR_UNDEF; }
 
- ^[ \t]*#[ \t]*ifdef    { return CPP_IFDEF; }
 
- ^[ \t]*#[ \t]*ifndef   { return CPP_IFNDEF; }
 
- ^[ \t]*#[ \t]*if       { return CPP_IF; }
 
- ^[ \t]*#[ \t]*elif     { return CPP_ELIF; }
 
- ^[ \t]*#[ \t]*else     { return CPP_ELSE; }
 
- ^[ \t]*#[ \t]*endif    { return CPP_ENDIF; }
 
- $[ \t]*ifdef    { return F90PPR_IFDEF; }
 
- $[ \t]*ifndef   { return F90PPR_IFNDEF; }
 
- $[ \t]*if       { return F90PPR_IF; }
 
- $[ \t]*elif     { return F90PPR_ELIF; }
 
- $[ \t]*else     { return F90PPR_ELSE; }
 
- $[ \t]*endif    { return F90PPR_ENDIF; }
 
-  /* Line continuations, possible involving comments.  */
 
- &([ \t\n]*|!.*)*
 
- &([ \t\n]*|!.*)*&
 
- , { return COMMA; }
 
- :: { return DCOLON; }
 
- : { return COLON; }
 
- <fixed_fmt>\n[ ]{5}[^ ]  { return GARBAGE; }
 
- =|=>                     { return ASSIGNMENT_OP; }
 
- [Ee][Nn][Dd] { return END; }
 
- [Ii][Nn][Cc][Ll][Uu][Dd][Ee] { return INCLUDE; }
 
- [Ii][Nn][Tt][Ee][Rr][Ff][Aa][Cc][Ee] { return INTERFACE; }
 
- [Mm][Oo][Dd][Uu][Ll][Ee] { return MODULE; }
 
- [Ss][Uu][Bb][Mm][Oo][Dd][Uu][Ll][Ee] { return SUBMODULE; }
 
- [Uu][Ss][Ee] { return USE; }
 
- [a-zA-Z_][a-zA-Z_0-9]* {
 
-   yylvalp->string = strdup(yytext);
 
-   return WORD;
 
- }
 
- \( { return LPAREN; }
 
- \) { return RPAREN; }
 
- [^ \t\n\r:;,!'"a-zA-Z=&()]+ { return GARBAGE; }
 
- ;|\n { return EOSTMT; }
 
- [ \t\r,]         /* Ignore */
 
- \\[ \t]*\n       /* Ignore line-endings preceded by \ */
 
- . { return *yytext; }
 
- <<EOF>> {
 
-   if(!cmFortranParser_FilePop(yyextra) )
 
-     {
 
-     return YY_NULL;
 
-     }
 
- }
 
- %%
 
- /*--------------------------------------------------------------------------*/
 
- YY_BUFFER_STATE cmFortranLexer_GetCurrentBuffer(yyscan_t yyscanner)
 
- {
 
-   /* Hack into the internal flex-generated scanner to get the buffer.  */
 
-   struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-   return YY_CURRENT_BUFFER;
 
- }
 
- #endif /* __clang_analyzer__ */
 
 
  |