state fortran_string extends Highlight
{
/[\']/ {
language_print ($0);
return;
}
}
state fortran_io extends Highlight
{
/\)/ {
language_print ($0);
return;
}
/\BbACCESS|BLANK|DIRECT|E(ND|RR|XIST)|F(ILE|MT|ORM(|ATTED))|IOSTAT\
|N(AME|EXTREC|UMBER)|OPENED|REC(|L)|S(EQUENTIAL|TATUS)\
|UN(FORMATTED|IT))\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/\b(access|blank|direct|e(nd|rr|xist)|f(ile|mt|orm(|atted))|iostat\
|n(ame|extrec|umber)|opened|rec(|l)|s(equential|tatus)\
|un(formatted|it))\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/[\']/ {
string_face (true);
language_print ($0);
call (fortran_string);
string_face (false);
}
}
state fortran_pp extends HighlightEntry
{
/(^[cC!\*]|!)/ {
comment_face (true);
language_print ($0);
call (eat_one_line);
comment_face (false);
}
/[\']/ {
string_face (true);
language_print ($0);
call (fortran_string);
string_face (false);
}
/^#/ {
reference_face (true);
language_print ($0);
call (eat_one_line);
reference_face (false);
}
/\.(and|eqv?|g(e|t)|l(e|t)|ne(qv)?|not|or)\./ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/\.(AND|EQV?|G(E|T)|L(E|T)|NE(QV)?|NOT|OR)\./ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/\b(backspace|close|endfile|inquire|open|re(ad|wind)|write)\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
call (fortran_io);
}
/\b(BACKSPACE|CLOSE|ENDFILE|INQUIRE|OPEN|RE(AD|WIND)|WRITE)\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
call (fortran_io);
}
/\b(block *data|c(all|haracter(\*[0-9]+)?|o(m(mon|plex(\*[0-9]+)?)|ntinue))\
|d(ata|imension|o(|uble *precision))\
|e(lse(|if)|n(d(|do|file|if)|try)|quivalence|xternal)|f(ormat|unction)\
|go *to|i(f|mplicit|n(clude|t(eger(\*[0-9]+)?|rinsic)))|logical(\*[0-9]+)?\
|p(a(rameter|use)|r(int|ogram))|re(al(\*[0-9]+)?|turn)\
|s(ave|top|ubroutine)|then|while)\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/\b(BLOCK *DATA|C(ALL|HARACTER(\*[0-9]+)?|O(M(MON|PLEX(\*[0-9]+)?)|NTINUE))\
|D(ATA|IMENSION|O(|UBLE *PRECISION))\
|E(LSE(|IF)|N(D(|DO|FILE|IF)|TRY)|QUIVALENCE|XTERNAL)|F(ORMAT|UNCTION)\
|GO *TO|I(F|MPLICIT|N(CLUDE|T(EGER(\*[0-9]+)?|RINSIC)))|LOGICAL(\*[0-9]+)?\
|P(A(RAMETER|USE)|R(INT|OGRAM))|RE(AL(\*[0-9]+)?|TURN)\
|S(AVE|TOP|UBROUTINE)|THEN|WHILE)\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
}