From 558697792cd062b93e8d7b7904fb9897e5f70750 Mon Sep 17 00:00:00 2001 From: Chris Hansen Date: Mon, 5 May 2014 16:23:17 -0400 Subject: Added import keyword to FORTRAN code highlighting --- src/fortrancode.l | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/fortrancode.l b/src/fortrancode.l index 2fbde73..06f712a 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -716,6 +716,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I %x DocBlock %x Use %x UseOnly +%x Import %x TypeDecl %x Declaration %x DeclContLine @@ -791,19 +792,32 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I yy_push_state(YY_START); BEGIN(UseOnly); } -{BS},{BS} { codifyLines(yytext); } -{BS}&{BS}"\n" { codifyLines(yytext); YY_FTN_RESET} +{BS},{BS} { codifyLines(yytext); } +{BS}&{BS}"\n" { codifyLines(yytext); YY_FTN_RESET} {ID} { g_insideBody=TRUE; generateLink(*g_code, yytext); g_insideBody=FALSE; useEntry->onlyNames.append(yytext); } -"\n" { +"\n" { unput(*yytext); yy_pop_state();YY_FTN_RESET } - +"import"{BS_} { + startFontClass("keywordflow"); + codifyLines(yytext); + endFontClass(); + yy_push_state(YY_START); + BEGIN(Import); + } +{ID} { + QCString tmp = yytext; + tmp = tmp.lower(); + g_insideBody=TRUE; + generateLink(*g_code, yytext); + g_insideBody=FALSE; + } /*-------- fortran module -----------------------------------------*/ ("block"{BS}"data"|"program"|"module"|"type"|"interface")/{BS_}|({COMMA}{ACCESS_SPEC})|\n { // startScope(); -- cgit v0.12 From d8221cb7a73efc8f20068636c3d2fec84ce8cb8b Mon Sep 17 00:00:00 2001 From: Chris Hansen Date: Mon, 5 May 2014 16:27:35 -0400 Subject: Fixed keyword type --- src/fortrancode.l | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/fortrancode.l b/src/fortrancode.l index 06f712a..b2991f5 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -805,15 +805,13 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I yy_pop_state();YY_FTN_RESET } "import"{BS_} { - startFontClass("keywordflow"); + startFontClass("keywordtype"); codifyLines(yytext); endFontClass(); yy_push_state(YY_START); BEGIN(Import); } {ID} { - QCString tmp = yytext; - tmp = tmp.lower(); g_insideBody=TRUE; generateLink(*g_code, yytext); g_insideBody=FALSE; -- cgit v0.12 From dbd1985de07ccd19caf57ffa36c88811048689a4 Mon Sep 17 00:00:00 2001 From: Chris Hansen Date: Mon, 5 May 2014 16:56:20 -0400 Subject: Added class/procedure vardefs to FORTRAN code highlighting --- src/fortrancode.l | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/fortrancode.l b/src/fortrancode.l index 2fbde73..3e49c65 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -688,7 +688,8 @@ NUM_TYPE (complex|integer|logical|real) LOG_OPER (\.and\.|\.eq\.|\.eqv\.|\.ge\.|\.gt\.|\.le\.|\.lt\.|\.ne\.|\.neqv\.|\.or\.|\.not\.) KIND {ARGS} CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS})) -TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|{CHAR}) +TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|{CHAR}|PROCEDURE) +TYPE_PREFIX ((TYPE|CLASS|PROCEDURE){BS}"(") INTENT_SPEC intent{BS}"("{BS}(in|out|in{BS}out){BS}")" ATTR_SPEC (IMPLICIT|ALLOCATABLE|DIMENSION{ARGS}|EXTERNAL|{INTENT_SPEC}|INTRINSIC|OPTIONAL|PARAMETER|POINTER|PROTECTED|PRIVATE|PUBLIC|SAVE|TARGET|RECURSIVE|PURE|IMPURE|ELEMENTAL) @@ -877,7 +878,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I endFontClass(); } /*-------- variable declaration ----------------------------------*/ -"type"{BS}"(" { +^{BS}{TYPE_PREFIX}/{ID} { yy_push_state(YY_START); BEGIN(TypeDecl); startFontClass("keywordtype"); -- cgit v0.12 From 4cbfaa8372beff4bd7070dd840924af8d96b0772 Mon Sep 17 00:00:00 2001 From: Chris Hansen Date: Mon, 5 May 2014 17:44:35 -0400 Subject: Add FORTRAN 2003 keywords and commands --- src/fortrancode.l | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/fortrancode.l b/src/fortrancode.l index 2fbde73..b349f9c 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -691,12 +691,12 @@ CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS})) TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|{CHAR}) INTENT_SPEC intent{BS}"("{BS}(in|out|in{BS}out){BS}")" -ATTR_SPEC (IMPLICIT|ALLOCATABLE|DIMENSION{ARGS}|EXTERNAL|{INTENT_SPEC}|INTRINSIC|OPTIONAL|PARAMETER|POINTER|PROTECTED|PRIVATE|PUBLIC|SAVE|TARGET|RECURSIVE|PURE|IMPURE|ELEMENTAL) +ATTR_SPEC (IMPLICIT|ALLOCATABLE|DIMENSION{ARGS}|EXTERNAL|{INTENT_SPEC}|INTRINSIC|OPTIONAL|PARAMETER|POINTER|PROTECTED|PRIVATE|PUBLIC|SAVE|TARGET|RECURSIVE|PURE|IMPURE|ELEMENTAL|VALUE|NOPASS|DEFERRED) ACCESS_SPEC (PROTECTED|PRIVATE|PUBLIC) /* Assume that attribute statements are almost the same as attributes. */ ATTR_STMT {ATTR_SPEC}|DIMENSION FLOW (DO|SELECT|CASE|SELECTCASE|WHERE|IF|THEN|ELSE|WHILE|FORALL|ELSEWHERE|ELSEIF|RETURN|CONTINUE|EXIT) -COMMANDS (FORMAT|CONTAINS|MODULE{BS_}PROCEDURE|WRITE|READ|ALLOCATE|ALLOCATED|ASSOCIATED|DEALLOCATE|SIZE|INQUIRE|OPEN|CLOSE|DATA|COMMON) +COMMANDS (FORMAT|CONTAINS|MODULE{BS_}PROCEDURE|WRITE|READ|ALLOCATE|ALLOCATED|ASSOCIATED|PRESENT|DEALLOCATE|NULLIFY|SIZE|INQUIRE|OPEN|CLOSE|FLUSH|DATA|COMMON) IGNORE (CALL) PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|IMPURE|PURE|ELEMENTAL)? @@ -760,6 +760,11 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I codifyLines(yytext); endFontClass(); } +^{BS}"namelist"/[//] { // Namelist specification + startFontClass("keywordtype"); + codifyLines(yytext); + endFontClass(); + } /*-------- use statement -------------------------------------------*/ "use"{BS_} { startFontClass("keywordtype"); @@ -805,7 +810,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I } /*-------- fortran module -----------------------------------------*/ -("block"{BS}"data"|"program"|"module"|"type"|"interface")/{BS_}|({COMMA}{ACCESS_SPEC})|\n { // +("block"{BS}"data"|"program"|"module"|"type"|"interface")/{BS_}|({COMMA}({ACCESS_SPEC}|ABSTRACT|EXTENDS))|\n { // startScope(); startFontClass("keyword"); codifyLines(yytext); @@ -823,6 +828,11 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I generateLink(*g_code,yytext); yy_pop_state(); } +({ACCESS_SPEC}|ABSTRACT|EXTENDS)/[,:( ] { //| variable deklaration + startFontClass("keyword"); + g_code->codify(yytext); + endFontClass(); + } \n { // interface may be without name yy_pop_state(); YY_FTN_REJECT; -- cgit v0.12