iAdd highlighting for Fortran 90 - enscript - GNU Enscript Err thinkerwim.openbsd.amsterdam 70 hgit clone git://thinkerwim.org/enscript.git URL:git://thinkerwim.org/enscript.git thinkerwim.org 70 1Log /git/enscript/log.gph thinkerwim.org 70 1Files /git/enscript/files.gph thinkerwim.org 70 1Refs /git/enscript/refs.gph thinkerwim.org 70 1README /git/enscript/file/README.gph thinkerwim.org 70 1LICENSE /git/enscript/file/COPYING.gph thinkerwim.org 70 i--- Err thinkerwim.openbsd.amsterdam 70 1commit 2b52dd33bff93e1201253a0b6b028da955ad5d0d /git/enscript/commit/2b52dd33bff93e1201253a0b6b028da955ad5d0d.gph thinkerwim.org 70 1parent 9510e4315705329e51b27fa2f3f688989b9fb37f /git/enscript/commit/9510e4315705329e51b27fa2f3f688989b9fb37f.gph thinkerwim.org 70 hAuthor: Tim Retout URL:mailto:diocles@gnu.org thinkerwim.org 70 iDate: Sun, 27 Dec 2009 23:30:02 +0000 Err thinkerwim.openbsd.amsterdam 70 i Err thinkerwim.openbsd.amsterdam 70 iAdd highlighting for Fortran 90 Err thinkerwim.openbsd.amsterdam 70 i Err thinkerwim.openbsd.amsterdam 70 iDiffstat: Err thinkerwim.openbsd.amsterdam 70 i M states/hl/ChangeLog | 6 ++++++ Err thinkerwim.openbsd.amsterdam 70 i M states/hl/enscript.st | 1 + Err thinkerwim.openbsd.amsterdam 70 i A states/hl/f90.st | 538 +++++++++++++++++++++++++++++++ Err thinkerwim.openbsd.amsterdam 70 i Err thinkerwim.openbsd.amsterdam 70 i3 files changed, 545 insertions(+), 0 deletions(-) Err thinkerwim.openbsd.amsterdam 70 i--- Err thinkerwim.openbsd.amsterdam 70 1diff --git a/states/hl/ChangeLog b/states/hl/ChangeLog /git/enscript/file/states/hl/ChangeLog.gph thinkerwim.org 70 i@@ -1,3 +1,9 @@ Err thinkerwim.openbsd.amsterdam 70 i+2009-12-27 Tim Retout Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ * f90.st: New syntax highlighting for Fortran 90 from David Err thinkerwim.openbsd.amsterdam 70 i+ Bowler. Err thinkerwim.openbsd.amsterdam 70 i+ * enscript.st (namerules): Use f90.st for .f90 files. Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i 2009-01-25 Tim Retout Err thinkerwim.openbsd.amsterdam 70 i Err thinkerwim.openbsd.amsterdam 70 i * javascript.st (Highlight): Add basic handling of regexes. Err thinkerwim.openbsd.amsterdam 70 1diff --git a/states/hl/enscript.st b/states/hl/enscript.st /git/enscript/file/states/hl/enscript.st.gph thinkerwim.org 70 i@@ -494,6 +494,7 @@ namerules Err thinkerwim.openbsd.amsterdam 70 i /\.java$/ java; Err thinkerwim.openbsd.amsterdam 70 i /\.([Pp][Aa][Ss]|[Pp][Pp]|[Pp])$/ pascal; Err thinkerwim.openbsd.amsterdam 70 i /\.[fF]$/ fortran; Err thinkerwim.openbsd.amsterdam 70 i+ /\.f90$/ f90; Err thinkerwim.openbsd.amsterdam 70 i /\.awk$/ awk; Err thinkerwim.openbsd.amsterdam 70 i /\.sh$/ sh; Err thinkerwim.openbsd.amsterdam 70 i /\.vba$/ vba; Err thinkerwim.openbsd.amsterdam 70 1diff --git a/states/hl/f90.st b/states/hl/f90.st /git/enscript/file/states/hl/f90.st.gph thinkerwim.org 70 i@@ -0,0 +1,538 @@ Err thinkerwim.openbsd.amsterdam 70 i+/** Err thinkerwim.openbsd.amsterdam 70 i+ * Name: f90 Err thinkerwim.openbsd.amsterdam 70 i+ * Description: Fortran90 programming language. Err thinkerwim.openbsd.amsterdam 70 i+ * Author: David Bowler Err thinkerwim.openbsd.amsterdam 70 i+ * Err thinkerwim.openbsd.amsterdam 70 i+ * Copyright (C) 2009 Free Software Foundation, Inc. Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+/** Err thinkerwim.openbsd.amsterdam 70 i+ * Deal with strings enclosed with '...' Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+state f90_string_single extends Highlight Err thinkerwim.openbsd.amsterdam 70 i+{ Err thinkerwim.openbsd.amsterdam 70 i+ /[\']/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ LANGUAGE_SPECIALS { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+} Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+/** Err thinkerwim.openbsd.amsterdam 70 i+ * Deal with strings enclosed with "..." Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+state f90_string_double extends Highlight Err thinkerwim.openbsd.amsterdam 70 i+{ Err thinkerwim.openbsd.amsterdam 70 i+ /[\"]/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ LANGUAGE_SPECIALS { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+} Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+/** Err thinkerwim.openbsd.amsterdam 70 i+ * Deal function/subroutine declarations and subroutine calls: end with ) at end of line or then comment Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+state f90_func extends Highlight Err thinkerwim.openbsd.amsterdam 70 i+{ Err thinkerwim.openbsd.amsterdam 70 i+ /\)[ \t]*$/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /(\)[ \t]*)(![a-zA-Z_0-9\,\.\(\)\*\%\: \t]*)/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($1); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($2); Err thinkerwim.openbsd.amsterdam 70 i+ call (eat_one_line); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ LANGUAGE_SPECIALS { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+} Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+/** Err thinkerwim.openbsd.amsterdam 70 i+ * Highlight variable declarations Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+state f90_new_var_list extends Highlight Err thinkerwim.openbsd.amsterdam 70 i+{ Err thinkerwim.openbsd.amsterdam 70 i+ /* Catch variable names followed by a comment: 1. Continuation marker present */ Err thinkerwim.openbsd.amsterdam 70 i+ /([ \t]*::|[ \t]+)([a-zA-Z_0-9\,\.\(\)\*\%\: \t]+[^\&][ \t]*)(\&[ \t]*)(![a-zA-Z_0-9\,\.\(\)\*\%\: \t]*)/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($1); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($2); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($3); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($4); Err thinkerwim.openbsd.amsterdam 70 i+ call (eat_one_line); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Catch variable names followed by a comment: 2. No continuation marker (so return)*/ Err thinkerwim.openbsd.amsterdam 70 i+ /([ \t]*::|[ \t]+)([a-zA-Z_0-9\,\.\(\)\*\%\: \t]+[^\&][ \t]*)(![a-zA-Z_0-9\,\.\(\)\*\%\: \t]*)/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($1); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($2); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($3); Err thinkerwim.openbsd.amsterdam 70 i+ call (eat_one_line); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Is this a specifier ? 1. real(var) ? */ Err thinkerwim.openbsd.amsterdam 70 i+ /(\([ \t]*)([a-zA-Z0-9_]+)([ \t]*\))/{ Err thinkerwim.openbsd.amsterdam 70 i+ language_print($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Is this a specifier ? 2. real(kind=var) */ Err thinkerwim.openbsd.amsterdam 70 i+ /(\([ \t]*)(len|kind)([a-zA-Z0-9_ =]+)(\))/{ Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($2); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($3); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($4); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Is this a specifier ? 3. real(kind=selected_real_kind(6,90)) */ Err thinkerwim.openbsd.amsterdam 70 i+ /(\([ \t]*)(len|kind)([ \t]*=[ \t]*)(selected_(int_kind|real_kind))([ \t]*\([ \t]*[0-9\,]+[ \t]*\)[ \t]*)(\))/{ Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($2); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($3); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($4); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($6); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($7); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Highlight modifiers Err thinkerwim.openbsd.amsterdam 70 i+ (build-re '(allocatable Allocatable ALLOCATABLE external External EXTERNAL Err thinkerwim.openbsd.amsterdam 70 i+ intent Intent INTENT optional Optional OPTIONAL parameter Parameter PARAMETER pointer Pointer POINTER Err thinkerwim.openbsd.amsterdam 70 i+ private Private PRIVATE public Public PUBLIC save SAVE Save target TARGET Target)) Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+ /(\,[ \t]*)(A(LLOCATABLE|llocatable)|E(XTERNAL|xternal)|I(NTENT|ntent)\ Err thinkerwim.openbsd.amsterdam 70 i+|O(PTIONAL|ptional)\ Err thinkerwim.openbsd.amsterdam 70 i+|P(ARAMETER|OINTER|RIVATE|UBLIC|arameter|ointer|rivate|ublic)\ Err thinkerwim.openbsd.amsterdam 70 i+|S(AVE|ave)|T(ARGET|arget)|allocatable|external|intent|optional\ Err thinkerwim.openbsd.amsterdam 70 i+|p(arameter|ointer|rivate|ublic)|save|target)/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($2); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /(\,[ \t]*)(D(IMENSION|imension)|dimension)([ \t]*\([ \:\,\-+*a-zA-Z_0-9]+[ \t]*\))/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($2); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($4); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Highlight variable names up to continuation marker */ Err thinkerwim.openbsd.amsterdam 70 i+ /([ \t]*::|[^\,\(][ \t]*)([a-zA-Z_0-9]+[a-zA-Z_0-9\,\.\(\)\*\%\:\+\- \t]+[\&][ \t]*)$/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($1); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($2); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Highlight variable names up to end of line (no continuation marker: return) */ Err thinkerwim.openbsd.amsterdam 70 i+ /([ \t]*::|[^\,\(][ \t]*)([a-zA-Z_0-9]+[a-zA-Z_0-9\,\.\(\)\*\%\:\+\- \t]*[^\&][ \t]*)$/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($1); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($2); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Highlight variable names up to equals sign (return after equals)*/ Err thinkerwim.openbsd.amsterdam 70 i+ /([ \t]*::|[^\,\(][ \t]*)([a-zA-Z_0-9]+[a-zA-Z_0-9\,\.\(\)\*\%\:\+\- \t]*[^\&])([ \t]*=)/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($1); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($2); Err thinkerwim.openbsd.amsterdam 70 i+ variable_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($3); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ LANGUAGE_SPECIALS { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+} Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+/** Err thinkerwim.openbsd.amsterdam 70 i+ * Highlight F90 io statements Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+state f90_io extends Highlight Err thinkerwim.openbsd.amsterdam 70 i+{ Err thinkerwim.openbsd.amsterdam 70 i+ /* Catch comments */ Err thinkerwim.openbsd.amsterdam 70 i+ /[!]/ { Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ call (eat_one_line); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* String constants. */ Err thinkerwim.openbsd.amsterdam 70 i+ /[\'][^\)]/ { Err thinkerwim.openbsd.amsterdam 70 i+ string_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_string_single); Err thinkerwim.openbsd.amsterdam 70 i+ string_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /[\"][^\)]/ { Err thinkerwim.openbsd.amsterdam 70 i+ string_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_string_double); Err thinkerwim.openbsd.amsterdam 70 i+ string_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ /* This terminates an io statement */ Err thinkerwim.openbsd.amsterdam 70 i+ /\)[^\'\"]/ { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ return; Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ /* IO Keywords. (build-re '(FMT UNIT REC END ERR FILE STATUS Err thinkerwim.openbsd.amsterdam 70 i+ ACCESS FORM RECL BLANK IOSTAT EXIST OPENED NUMBER NAME Err thinkerwim.openbsd.amsterdam 70 i+ SEQUENTIAL DIRECT FORMATTED UNFORMATTED NEXTREC)) */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b(ACCESS|BLANK|DIRECT|E(ND|RR|XIST)|F(ILE|MT|ORM(|ATTED))|IOSTAT\ Err thinkerwim.openbsd.amsterdam 70 i+ |N(AME|EXTREC|UMBER)|OPENED|REC(|L)|S(EQUENTIAL|TATUS)\ Err thinkerwim.openbsd.amsterdam 70 i+ |UN(FORMATTED|IT))\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ /* IO Keywords. (build-re '(fmt unit rec end err file Err thinkerwim.openbsd.amsterdam 70 i+ status access form recl blank iostat exist Err thinkerwim.openbsd.amsterdam 70 i+ opened number name sequential direct Err thinkerwim.openbsd.amsterdam 70 i+ formatted unformatted nextrec)) */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b((a|A)ccess|(b|B)lank|(d|D)irect|(e|E)(nd|rr|xist)|(f|F)(ile|mt|orm(|atted))|(i|I)ostat\ Err thinkerwim.openbsd.amsterdam 70 i+ |(n|N)(ame|extrec|umber)|(o|O)pened|(r|R)ec(|l)|(s|S)(equential|tatus)\ Err thinkerwim.openbsd.amsterdam 70 i+ |(u|U)n(formatted|it))\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ LANGUAGE_SPECIALS { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+} Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+state f90 extends HighlightEntry Err thinkerwim.openbsd.amsterdam 70 i+{ Err thinkerwim.openbsd.amsterdam 70 i+ BEGIN { Err thinkerwim.openbsd.amsterdam 70 i+ header (); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ END { Err thinkerwim.openbsd.amsterdam 70 i+ trailer (); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ /* String constants. */ Err thinkerwim.openbsd.amsterdam 70 i+ /[\']/ { Err thinkerwim.openbsd.amsterdam 70 i+ string_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_string_single); Err thinkerwim.openbsd.amsterdam 70 i+ string_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /[\"]/ { Err thinkerwim.openbsd.amsterdam 70 i+ string_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_string_double); Err thinkerwim.openbsd.amsterdam 70 i+ string_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Labels - whitespace followed by number at start of line */ Err thinkerwim.openbsd.amsterdam 70 i+ /^[ \t]*[0-9]+/{ Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Comments. We'll only have free-form, modern f90 statements - ! to end of line*/ Err thinkerwim.openbsd.amsterdam 70 i+ /[!]/ { Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ call (eat_one_line); Err thinkerwim.openbsd.amsterdam 70 i+ comment_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* builtins - maths, matrices etc */ Err thinkerwim.openbsd.amsterdam 70 i+/* Builtins. Err thinkerwim.openbsd.amsterdam 70 i+ (build-re '(abs achar acos adjustl adjustr aimag aint all allocated Err thinkerwim.openbsd.amsterdam 70 i+ anint any asin associated atan atan2 bit_size btest Err thinkerwim.openbsd.amsterdam 70 i+ ceiling char cmplx conjg cos cosh count cshift Err thinkerwim.openbsd.amsterdam 70 i+ date_and_time dble digits dim dot_product dprod eoshift Err thinkerwim.openbsd.amsterdam 70 i+ epsilon exp exponent floor fraction huge iachar iand Err thinkerwim.openbsd.amsterdam 70 i+ ibclr ibits ibset ichar ieor index int ior ishft Err thinkerwim.openbsd.amsterdam 70 i+ ishftc kind lbound len len_trim lge lgt lle llt log Err thinkerwim.openbsd.amsterdam 70 i+ logical log10 matmul max maxexponent maxloc maxval merge Err thinkerwim.openbsd.amsterdam 70 i+ min minexponent minloc minval mod modulo mvbits nearest Err thinkerwim.openbsd.amsterdam 70 i+ nint not pack precision present product radix Err thinkerwim.openbsd.amsterdam 70 i+ random_number random_seed range real repeat reshape Err thinkerwim.openbsd.amsterdam 70 i+ rrspacing scale scan selected_int_kind selected_real_kind Err thinkerwim.openbsd.amsterdam 70 i+ set_exponent shape sign sin sinh size spacing spread Err thinkerwim.openbsd.amsterdam 70 i+ sqrt sum system_clock tan tanh tiny transfer transpose Err thinkerwim.openbsd.amsterdam 70 i+ trim ubound unpack verify)) Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b((a|A)(bs|c(har|os)|djust(l|r)|i(mag|nt)|ll(|ocated)|n(int|y)|s(in|sociated)\ Err thinkerwim.openbsd.amsterdam 70 i+|tan(|2))\ Err thinkerwim.openbsd.amsterdam 70 i+|(b|B)(it_size|test)|(c|C)(eiling|har|mplx|o(njg|s(|h)|unt)|shift)\ Err thinkerwim.openbsd.amsterdam 70 i+|(d|D)(ate_and_time|ble|i(gits|m)|ot_product|prod)\ Err thinkerwim.openbsd.amsterdam 70 i+|(e|E)(oshift|psilon|xp(|onent))|(f|F)(loor|raction)|(h|H)uge\ Err thinkerwim.openbsd.amsterdam 70 i+|(i|I)(a(char|nd)|b(clr|its|set)|char|eor|n(dex|t)|or|shft(|c))|(k|K)ind\ Err thinkerwim.openbsd.amsterdam 70 i+|(l|L)(bound|en(|_trim)|g(e|t)|l(e|t)|og(|10|ical))\ Err thinkerwim.openbsd.amsterdam 70 i+|(m|M)(a(tmul|x(|exponent|loc|val))|erge|in(|exponent|loc|val)|od(|ulo)\ Err thinkerwim.openbsd.amsterdam 70 i+|vbits)\ Err thinkerwim.openbsd.amsterdam 70 i+|(n|N)(earest|int|ot)|(p|P)(ack|r(e(cision|sent)|oduct))\ Err thinkerwim.openbsd.amsterdam 70 i+|(r|R)(a(dix|n(dom_(number|seed)|ge))|e(al|peat|shape)|rspacing)\ Err thinkerwim.openbsd.amsterdam 70 i+|(s|S)(ca(le|n)|e(lected_(int_kind|real_kind)|t_exponent)|hape\ Err thinkerwim.openbsd.amsterdam 70 i+|i(gn|n(|h)|ze)|p(acing|read)|qrt|um|ystem_clock)\ Err thinkerwim.openbsd.amsterdam 70 i+|(t|T)(an(|h)|iny|r(ans(fer|pose)|im))|(u|U)(bound|npack)|(v|V)erify)\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ builtin_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ builtin_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+/* Builtins. Err thinkerwim.openbsd.amsterdam 70 i+ (build-re '(ABS ACHAR ACOS ADJUSTL ADJUSTR AIMAG AINT ALL ALLOCATED Err thinkerwim.openbsd.amsterdam 70 i+ ANINT ANY ASIN ASSOCIATED ATAN ATAN2 BIT_SIZE BTEST Err thinkerwim.openbsd.amsterdam 70 i+ CEILING CHAR CMPLX CONJG COS COSH COUNT CSHIFT Err thinkerwim.openbsd.amsterdam 70 i+ DATE_AND_TIME DBLE DIGITS DIM DOT_PRODUCT DPROD EOSHIFT Err thinkerwim.openbsd.amsterdam 70 i+ EPSILON EXP EXPONENT FLOOR FRACTION HUGE IACHAR IAND Err thinkerwim.openbsd.amsterdam 70 i+ IBCLR IBITS IBSET ICHAR IEOR INDEX INT IOR ISHFT Err thinkerwim.openbsd.amsterdam 70 i+ ISHFTC KIND LBOUND LEN LEN_TRIM LGE LGT LLE LLT LOG Err thinkerwim.openbsd.amsterdam 70 i+ LOGICAL LOG10 MATMUL MAX MAXEXPONENT MAXLOC MAXVAL MERGE Err thinkerwim.openbsd.amsterdam 70 i+ MIN MINEXPONENT MINLOC MINVAL MOD MODULO MVBITS NEAREST Err thinkerwim.openbsd.amsterdam 70 i+ NINT NOT PACK PRECISION PRESENT PRODUCT RADIX Err thinkerwim.openbsd.amsterdam 70 i+ RANDOM_NUMBER RANDOM_SEED RANGE REAL REPEAT RESHAPE Err thinkerwim.openbsd.amsterdam 70 i+ RRSPACING SCALE SCAN SELECTED_INT_KIND SELECTED_REAL_KIND Err thinkerwim.openbsd.amsterdam 70 i+ SET_EXPONENT SHAPE SIGN SIN SINH SIZE SPACING SPREAD Err thinkerwim.openbsd.amsterdam 70 i+ SQRT SUM SYSTEM_CLOCK TAN TANH TINY TRANSFER TRANSPOSE Err thinkerwim.openbsd.amsterdam 70 i+ TRIM UBOUND UNPACK VERIFY)) Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b(A(BS|C(HAR|OS)|DJUST(L|R)|I(MAG|NT)|LL(|OCATED)|N(INT|Y)|S(IN|SOCIATED)\ Err thinkerwim.openbsd.amsterdam 70 i+|TAN(|2))\ Err thinkerwim.openbsd.amsterdam 70 i+|B(IT_SIZE|TEST)|C(EILING|HAR|MPLX|O(NJG|S(|H)|UNT)|SHIFT)\ Err thinkerwim.openbsd.amsterdam 70 i+|D(ATE_AND_TIME|BLE|I(GITS|M)|OT_PRODUCT|PROD)\ Err thinkerwim.openbsd.amsterdam 70 i+|E(OSHIFT|PSILON|XP(|ONENT))|F(LOOR|RACTION)|HUGE\ Err thinkerwim.openbsd.amsterdam 70 i+|I(A(CHAR|ND)|B(CLR|ITS|SET)|CHAR|EOR|N(DEX|T)|OR|SHFT(|C))|KIND\ Err thinkerwim.openbsd.amsterdam 70 i+|L(BOUND|EN(|_TRIM)|G(E|T)|L(E|T)|OG(|10|ICAL))\ Err thinkerwim.openbsd.amsterdam 70 i+|M(A(TMUL|X(|EXPONENT|LOC|VAL))|ERGE|IN(|EXPONENT|LOC|VAL)|OD(|ULO)\ Err thinkerwim.openbsd.amsterdam 70 i+|VBITS)\ Err thinkerwim.openbsd.amsterdam 70 i+|N(EAREST|INT|OT)|P(ACK|R(E(CISION|SENT)|ODUCT))\ Err thinkerwim.openbsd.amsterdam 70 i+|R(A(DIX|N(DOM_(NUMBER|SEED)|GE))|E(AL|PEAT|SHAPE)|RSPACING)\ Err thinkerwim.openbsd.amsterdam 70 i+|S(CA(LE|N)|E(LECTED_(INT_KIND|REAL_KIND)|T_EXPONENT)|HAPE\ Err thinkerwim.openbsd.amsterdam 70 i+|I(GN|N(|H)|ZE)|P(ACING|READ)|QRT|UM|YSTEM_CLOCK)\ Err thinkerwim.openbsd.amsterdam 70 i+|T(AN(|H)|INY|R(ANS(FER|POSE)|IM))|U(BOUND|NPACK)|VERIFY)\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ builtin_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ builtin_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ LANGUAGE_SPECIALS { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Comparators. We have to roll by hand because of the Err thinkerwim.openbsd.amsterdam 70 i+ dots - "\b" doesn't delimit here. */ Err thinkerwim.openbsd.amsterdam 70 i+ /\.((a|A)nd|(e|E)qv?|(g|G)(e|t)|(l|L)(e|t)|(n|N)e(qv)?|(n|N)ot|(o|O)r|(t|T)rue|(f|F)alse)\./ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ /* Comparators. We have to roll by hand because of the Err thinkerwim.openbsd.amsterdam 70 i+ dots - "\b" doesn't delimit here. */ Err thinkerwim.openbsd.amsterdam 70 i+ /\.(AND|EQV?|G(E|T)|L(E|T)|NE(QV)?|NOT|OR|TRUE|FALSE)\./ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* function, subroutine declaration or subroutine call: 1. with arguments*/ Err thinkerwim.openbsd.amsterdam 70 i+ /(^[ \t]*((c|C)all|(f|F)unction|(s|S)ubroutine)[ \t]+)([a-zA-Z_0-9]+)([ \t]*\()/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($6); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($7); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_func); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* function, subroutine declaration or subroutine call: 1. without arguments*/ Err thinkerwim.openbsd.amsterdam 70 i+ /(^[ \t]*((c|C)all|(f|F)unction|(s|S)ubroutine)[ \t]+)([a-zA-Z_0-9]+[ \t]*)$/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($6); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($7); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* function, subroutine declaration or subroutine call*/ Err thinkerwim.openbsd.amsterdam 70 i+ /((CALL|FUNCTION|SUBROUTINE)[ \t]+)([a-zA-Z_0-9]+)([ \t]*\()/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($3); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($4); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_func); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* end function, subroutine declaration or subroutine call*/ Err thinkerwim.openbsd.amsterdam 70 i+ /(((e|E)nd)[ \t]*)(((c|C)all|(f|F)unction|(s|S)ubroutine)[ \t]+)([a-zA-Z_0-9]+)/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($4); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($9); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* end function, subroutine declaration or subroutine call*/ Err thinkerwim.openbsd.amsterdam 70 i+ /((END)[ \t]*)((CALL|FUNCTION|SUBROUTINE)[ \t]+)([a-zA-Z_0-9]+)/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($3); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($5); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Module, program, use declaration */ Err thinkerwim.openbsd.amsterdam 70 i+ /(((e|E)nd)?[ \t]*)(((m|M)odule|(p|P)rogram|(u|U)se)[ \t]+)([a-zA-Z_0-9]+)/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($4); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($9); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Module, program, use declaration */ Err thinkerwim.openbsd.amsterdam 70 i+ /((END)?[ \t]*)((MODULE|PROGRAM|USE)[ \t]+)([a-zA-Z_0-9]+)/ { Err thinkerwim.openbsd.amsterdam 70 i+ debug(concat("Strings: ",$0)); Err thinkerwim.openbsd.amsterdam 70 i+ debug(concat($1,"|")); Err thinkerwim.openbsd.amsterdam 70 i+ debug(concat($2,"|")); Err thinkerwim.openbsd.amsterdam 70 i+ debug(concat($3,"|")); Err thinkerwim.openbsd.amsterdam 70 i+ debug(concat($4,"|")); Err thinkerwim.openbsd.amsterdam 70 i+ debug(concat($5,"|")); Err thinkerwim.openbsd.amsterdam 70 i+ debug(concat($6,"|")); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($3); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($5); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* Function call */ Err thinkerwim.openbsd.amsterdam 70 i+ /* Unfortunately, as F90 uses round brackets for function calls and arrays, this breaks */ Err thinkerwim.openbsd.amsterdam 70 i+ /* /(=[ \t]*)([a-zA-Z_0-9]+)([ \t]*\()/{ Err thinkerwim.openbsd.amsterdam 70 i+ language_print($1); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($2); Err thinkerwim.openbsd.amsterdam 70 i+ function_name_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($3); Err thinkerwim.openbsd.amsterdam 70 i+ }*/ Err thinkerwim.openbsd.amsterdam 70 i+ /* Variable declaration */ Err thinkerwim.openbsd.amsterdam 70 i+ /^([ \t]*)((i|I)nteger|(r|R)eal|(c|C)omplex|(c|C)haracter|(l|L)ogical|([ \t]*(e|E)nd[ \t]*)?(t|T)ype)/ { Err thinkerwim.openbsd.amsterdam 70 i+ type_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($0); Err thinkerwim.openbsd.amsterdam 70 i+ type_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_new_var_list); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /^([ \t]*)(INTEGER|REAL|COMPLEX|CHARACTER|LOGICAL|([ \t]*END[ \t]*)?TYPE)/ { Err thinkerwim.openbsd.amsterdam 70 i+ type_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($0); Err thinkerwim.openbsd.amsterdam 70 i+ type_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_new_var_list); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* none */ Err thinkerwim.openbsd.amsterdam 70 i+ /\bnone\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ type_face(true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print($0); Err thinkerwim.openbsd.amsterdam 70 i+ type_face(false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* IO Statement (build-re '(open close read Err thinkerwim.openbsd.amsterdam 70 i+ write inquire backspace endfile rewind )) */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b((b|B)ackspace|(c|C)lose|(e|E)ndfile|(i|I)nquire|(o|O)pen|(r|R)e(ad|wind)|(w|W)rite)\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_io); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ /* IO Statement (build-re '(OPEN CLOSE READ Err thinkerwim.openbsd.amsterdam 70 i+ WRITE INQUIRE BACKSPACE ENDFILE REWIND )) */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b(BACKSPACE|CLOSE|ENDFILE|INQUIRE|OPEN|RE(AD|WIND)|WRITE)\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ call (f90_io); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ /* Keywords */ Err thinkerwim.openbsd.amsterdam 70 i+ /* (build-re '(allocate allocatable assign assignment block Err thinkerwim.openbsd.amsterdam 70 i+ case common contains Err thinkerwim.openbsd.amsterdam 70 i+ continue cycle data deallocate dimension do double else Err thinkerwim.openbsd.amsterdam 70 i+ elseif elsewhere end enddo endif entry equivalence Err thinkerwim.openbsd.amsterdam 70 i+ exit external forall format goto if implicit Err thinkerwim.openbsd.amsterdam 70 i+ include intent interface intrinsic module Err thinkerwim.openbsd.amsterdam 70 i+ namelist none nullify only operator optional parameter Err thinkerwim.openbsd.amsterdam 70 i+ pause pointer precision print private procedure program Err thinkerwim.openbsd.amsterdam 70 i+ public recursive result return save select Err thinkerwim.openbsd.amsterdam 70 i+ sequence stop subroutine target then use where Err thinkerwim.openbsd.amsterdam 70 i+ while)) Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b((a|A)(llocat(able|e)|ssign(|ment))|(b|B)lock\ Err thinkerwim.openbsd.amsterdam 70 i+|(c|C)(ase|o(mmon|nt(ains|inue))|ycle)|(d|D)(ata|eallocate|imension|o(|uble))\ Err thinkerwim.openbsd.amsterdam 70 i+|(e|E)(lse(|if|where)|n(d(|do|if)|try)|quivalence|x(it|ternal))\ Err thinkerwim.openbsd.amsterdam 70 i+|(f|F)or(all|mat)|(g|G)oto|(i|I)(f|mplicit|n(clude|t(e(nt|rface)|rinsic)))\ Err thinkerwim.openbsd.amsterdam 70 i+|(m|M)odule\ Err thinkerwim.openbsd.amsterdam 70 i+|(n|N)(amelist|ullify)|(o|O)(nly|p(erator|tional))\ Err thinkerwim.openbsd.amsterdam 70 i+|(p|P)(a(rameter|use)|ointer|r(ecision|i(nt|vate)|o(cedure|gram))|ublic)\ Err thinkerwim.openbsd.amsterdam 70 i+|(r|R)e(cursive|sult|turn)|(s|S)(ave|e(lect|quence)|top|ubroutine)\ Err thinkerwim.openbsd.amsterdam 70 i+|(t|T)(arget|hen)|(u|U)se|(w|W)h(ere|ile))\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ /* (build-re '(ALLOCATE ALLOCATABLE ASSIGN ASSIGNMENT BLOCK Err thinkerwim.openbsd.amsterdam 70 i+ CASE COMMON CONTAINS Err thinkerwim.openbsd.amsterdam 70 i+ CONTINUE CYCLE DATA DEALLOCATE DIMENSION DO DOUBLE ELSE Err thinkerwim.openbsd.amsterdam 70 i+ ELSEIF ELSEWHERE END ENDDO ENDIF ENTRY EQUIVALENCE Err thinkerwim.openbsd.amsterdam 70 i+ EXIT EXTERNAL FORALL FORMAT GOTO IF IMPLICIT Err thinkerwim.openbsd.amsterdam 70 i+ INCLUDE INTENT INTERFACE INTRINSIC MODULE Err thinkerwim.openbsd.amsterdam 70 i+ NAMELIST NULLIFY ONLY OPERATOR OPTIONAL PARAMETER Err thinkerwim.openbsd.amsterdam 70 i+ PAUSE POINTER PRECISION PRINT PRIVATE PROCEDURE PROGRAM Err thinkerwim.openbsd.amsterdam 70 i+ PUBLIC RECURSIVE RESULT RETURN SAVE SELECT Err thinkerwim.openbsd.amsterdam 70 i+ SEQUENCE STOP SUBROUTINE TARGET THEN USE WHERE Err thinkerwim.openbsd.amsterdam 70 i+ WHILE)) Err thinkerwim.openbsd.amsterdam 70 i+ */ Err thinkerwim.openbsd.amsterdam 70 i+ /\b(A(LLOCAT(ABLE|E)|SSIGN(|MENT))|BLOCK\ Err thinkerwim.openbsd.amsterdam 70 i+|C(ASE|O(MMON|NT(AINS|INUE))|YCLE)|D(ATA|EALLOCATE|IMENSION|O(|UBLE))\ Err thinkerwim.openbsd.amsterdam 70 i+|E(LSE(|IF|WHERE)|N(D(|DO|IF)|TRY)|QUIVALENCE|X(IT|TERNAL))\ Err thinkerwim.openbsd.amsterdam 70 i+|FOR(ALL|MAT)|GOTO|I(F|MPLICIT|N(CLUDE|T(E(NT|RFACE)|RINSIC)))\ Err thinkerwim.openbsd.amsterdam 70 i+|MODULE\ Err thinkerwim.openbsd.amsterdam 70 i+|N(AMELIST|ULLIFY)|O(NLY|P(ERATOR|TIONAL))\ Err thinkerwim.openbsd.amsterdam 70 i+|P(A(RAMETER|USE)|OINTER|R(ECISION|I(NT|VATE)|O(CEDURE|GRAM))|UBLIC)\ Err thinkerwim.openbsd.amsterdam 70 i+|RE(CURSIVE|SULT|TURN)|S(AVE|E(LECT|QUENCE)|TOP|UBROUTINE)\ Err thinkerwim.openbsd.amsterdam 70 i+|T(ARGET|HEN)|USE|WH(ERE|ILE))\b/ { Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (true); Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ keyword_face (false); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+ LANGUAGE_SPECIALS { Err thinkerwim.openbsd.amsterdam 70 i+ language_print ($0); Err thinkerwim.openbsd.amsterdam 70 i+ } Err thinkerwim.openbsd.amsterdam 70 i+} Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+ Err thinkerwim.openbsd.amsterdam 70 i+/* Err thinkerwim.openbsd.amsterdam 70 i+Local variables: Err thinkerwim.openbsd.amsterdam 70 i+mode: c Err thinkerwim.openbsd.amsterdam 70 i+End: Err thinkerwim.openbsd.amsterdam 70 i+*/ Err thinkerwim.openbsd.amsterdam 70 .