1 <?xml version="1.0"?>
\r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
4 <!-- FORTRAN edit mode
\r
5 Version $Id: fortran.xml 10573 2007-09-14 02:04:59Z ezust $
\r
7 <!-- This is a mode for FORTRAN source files. In general, this supports
\r
8 common features of the F90 specification. This may however contain some
\r
9 platform or vendor specific keywords (in paticular COMPAQ(Digital) FORTRAN).
\r
11 <!-- Suggested catalog file entry:
\r
13 <MODE NAME="FORTRAN" FILE="FORTRAN.xml"
\r
14 FILE_NAME_GLOB="*.{f,for,fort,f77,f90}" />
\r
18 <!-- To get the line comment inserted correctly at line start:
\r
19 use the "toggle-line-comment"-action of TextTools plugin
\r
20 with the active option "Insert line comments at start of line" -->
\r
21 <PROPERTY NAME="lineComment" VALUE="C" />
\r
23 <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
\r
24 <PROPERTY NAME="indentNextLine" VALUE="\s*((if\s*\(.*\)\s*then|else\s*|do\s*)*)" />
\r
27 <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="FALSE">
\r
28 <!-- In fixed form, column 72 is the last column parsed, unless the
\r
29 \extend_source option is invoked -->
\r
30 <!-- TERMINATE AT_CHAR="72" / -->
\r
32 <!-- comment either !, C, or * can be used as a comment in the first column
\r
33 in either free or fixed form FORTRAN-->
\r
34 <EOL_SPAN TYPE="COMMENT1" AT_LINE_START="TRUE">C</EOL_SPAN>
\r
35 <EOL_SPAN TYPE="COMMENT1" AT_LINE_START="TRUE">!</EOL_SPAN>
\r
36 <EOL_SPAN TYPE="COMMENT1" AT_LINE_START="TRUE">*</EOL_SPAN>
\r
37 <EOL_SPAN TYPE="COMMENT1">!</EOL_SPAN>
\r
38 <EOL_SPAN TYPE="COMMENT2" AT_LINE_START="TRUE">D</EOL_SPAN>
\r
40 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE">
\r
44 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE">
\r
49 <!-- Highlighted Operators -->
\r
50 <SEQ TYPE="OPERATOR"><=</SEQ>
\r
51 <SEQ TYPE="OPERATOR">>=</SEQ>
\r
52 <SEQ TYPE="OPERATOR">></SEQ>
\r
53 <SEQ TYPE="OPERATOR"><</SEQ>
\r
54 <SEQ TYPE="OPERATOR">&</SEQ>
\r
55 <SEQ TYPE="OPERATOR">/=</SEQ>
\r
56 <SEQ TYPE="OPERATOR">==</SEQ>
\r
57 <SEQ TYPE="OPERATOR">.lt.</SEQ>
\r
58 <SEQ TYPE="OPERATOR">.gt.</SEQ>
\r
59 <SEQ TYPE="OPERATOR">.eq.</SEQ>
\r
60 <SEQ TYPE="OPERATOR">.ne.</SEQ>
\r
61 <SEQ TYPE="OPERATOR">.le.</SEQ>
\r
62 <SEQ TYPE="OPERATOR">.ge.</SEQ>
\r
63 <SEQ TYPE="OPERATOR">.AND.</SEQ>
\r
64 <SEQ TYPE="OPERATOR">.OR.</SEQ>
\r
67 <!-- unclassified keywords -->
\r
68 <KEYWORD1>INCLUDE</KEYWORD1>
\r
69 <!-- Program units and calling them -->
\r
70 <KEYWORD1>PROGRAM</KEYWORD1>
\r
71 <KEYWORD1>MODULE</KEYWORD1>
\r
72 <KEYWORD1>SUBROUTINE</KEYWORD1>
\r
73 <KEYWORD1>FUNCTION</KEYWORD1>
\r
74 <KEYWORD1>CONTAINS</KEYWORD1>
\r
75 <KEYWORD1>USE</KEYWORD1>
\r
76 <KEYWORD1>CALL</KEYWORD1>
\r
77 <KEYWORD1>RETURN</KEYWORD1>
\r
78 <!-- data types, declaration, and allocation keywords -->
\r
79 <KEYWORD1>IMPLICIT</KEYWORD1>
\r
80 <KEYWORD1>EXPLICIT</KEYWORD1>
\r
81 <KEYWORD1>NONE</KEYWORD1>
\r
82 <KEYWORD1>DATA</KEYWORD1>
\r
83 <KEYWORD1>PARAMETER</KEYWORD1>
\r
84 <KEYWORD1>ALLOCATE</KEYWORD1>
\r
85 <KEYWORD1>ALLOCATABLE</KEYWORD1>
\r
86 <KEYWORD1>ALLOCATED</KEYWORD1>
\r
87 <KEYWORD1>DEALLOCATE</KEYWORD1>
\r
88 <KEYWORD1>INTEGER</KEYWORD1>
\r
89 <KEYWORD1>REAL</KEYWORD1>
\r
90 <KEYWORD1>DOUBLE</KEYWORD1>
\r
91 <KEYWORD1>PRECISION</KEYWORD1>
\r
92 <KEYWORD1>COMPLEX</KEYWORD1>
\r
93 <KEYWORD1>LOGICAL</KEYWORD1>
\r
94 <KEYWORD1>CHARACTER</KEYWORD1>
\r
95 <KEYWORD1>DIMENSION</KEYWORD1>
\r
96 <KEYWORD1>KIND</KEYWORD1>
\r
97 <!-- FORTRAN Statements -->
\r
98 <KEYWORD1>CASE</KEYWORD1>
\r
99 <KEYWORD1>SELECT</KEYWORD1>
\r
100 <KEYWORD1>DEFAULT</KEYWORD1>
\r
101 <KEYWORD1>CONTINUE</KEYWORD1>
\r
102 <KEYWORD1>CYCLE</KEYWORD1>
\r
103 <KEYWORD1>DO</KEYWORD1>
\r
104 <KEYWORD1>WHILE</KEYWORD1>
\r
105 <KEYWORD1>ELSE</KEYWORD1>
\r
106 <KEYWORD1>IF</KEYWORD1>
\r
107 <KEYWORD1>ELSEIF</KEYWORD1>
\r
108 <KEYWORD1>THEN</KEYWORD1>
\r
109 <KEYWORD1>ELSEWHERE</KEYWORD1>
\r
110 <KEYWORD1>END</KEYWORD1>
\r
111 <KEYWORD1>ENDIF</KEYWORD1>
\r
112 <KEYWORD1>ENDDO</KEYWORD1>
\r
113 <KEYWORD1>FORALL</KEYWORD1>
\r
114 <KEYWORD1>WHERE</KEYWORD1>
\r
115 <KEYWORD1>EXIT</KEYWORD1>
\r
116 <KEYWORD1>GOTO</KEYWORD1>
\r
117 <KEYWORD1>PAUSE</KEYWORD1>
\r
118 <KEYWORD1>STOP</KEYWORD1>
\r
119 <!-- i/o keywords -->
\r
120 <KEYWORD1>BACKSPACE</KEYWORD1>
\r
121 <KEYWORD1>CLOSE</KEYWORD1>
\r
122 <KEYWORD1>ENDFILE</KEYWORD1>
\r
123 <KEYWORD1>INQUIRE</KEYWORD1>
\r
124 <KEYWORD1>OPEN</KEYWORD1>
\r
125 <KEYWORD1>PRINT</KEYWORD1>
\r
126 <KEYWORD1>READ</KEYWORD1>
\r
127 <KEYWORD1>REWIND</KEYWORD1>
\r
128 <KEYWORD1>WRITE</KEYWORD1>
\r
129 <KEYWORD1>FORMAT</KEYWORD1>
\r
130 <!-- Type conversion and utility functions -->
\r
131 <KEYWORD1>AIMAG</KEYWORD1>
\r
132 <KEYWORD1>AINT</KEYWORD1>
\r
133 <KEYWORD1>AMAX0</KEYWORD1>
\r
134 <KEYWORD1>AMIN0</KEYWORD1>
\r
135 <KEYWORD1>ANINT</KEYWORD1>
\r
136 <KEYWORD1>CEILING</KEYWORD1>
\r
137 <KEYWORD1>CMPLX</KEYWORD1>
\r
138 <KEYWORD1>CONJG</KEYWORD1>
\r
139 <KEYWORD1>DBLE</KEYWORD1>
\r
140 <KEYWORD1>DCMPLX</KEYWORD1>
\r
141 <KEYWORD1>DFLOAT</KEYWORD1>
\r
142 <KEYWORD1>DIM</KEYWORD1>
\r
143 <KEYWORD1>DPROD</KEYWORD1>
\r
144 <KEYWORD1>FLOAT</KEYWORD1>
\r
145 <KEYWORD1>FLOOR</KEYWORD1>
\r
146 <KEYWORD1>IFIX</KEYWORD1>
\r
147 <KEYWORD1>IMAG</KEYWORD1>
\r
148 <KEYWORD1>INT</KEYWORD1>
\r
149 <KEYWORD1>LOGICAL</KEYWORD1>
\r
150 <KEYWORD1>MODULO</KEYWORD1>
\r
151 <KEYWORD1>NINT</KEYWORD1>
\r
152 <KEYWORD1>REAL</KEYWORD1>
\r
153 <KEYWORD1>SIGN</KEYWORD1>
\r
154 <KEYWORD1>SNGL</KEYWORD1>
\r
155 <KEYWORD1>TRANSFER</KEYWORD1>
\r
156 <KEYWORD1>ZEXT</KEYWORD1>
\r
157 <!-- More Functions -->
\r
158 <KEYWORD1>ABS</KEYWORD1>
\r
159 <KEYWORD1>ACOS</KEYWORD1>
\r
160 <KEYWORD1>AIMAG</KEYWORD1>
\r
161 <KEYWORD1>AINT</KEYWORD1>
\r
162 <KEYWORD1>ALOG</KEYWORD1>
\r
163 <KEYWORD1>ALOG10</KEYWORD1>
\r
164 <KEYWORD1>AMAX0</KEYWORD1>
\r
165 <KEYWORD1>AMAX1</KEYWORD1>
\r
166 <KEYWORD1>AMIN0</KEYWORD1>
\r
167 <KEYWORD1>AMIN1</KEYWORD1>
\r
168 <KEYWORD1>AMOD</KEYWORD1>
\r
169 <KEYWORD1>ANINT</KEYWORD1>
\r
170 <KEYWORD1>ASIN</KEYWORD1>
\r
171 <KEYWORD1>ATAN</KEYWORD1>
\r
172 <KEYWORD1>ATAN2</KEYWORD1>
\r
173 <KEYWORD1>CABS</KEYWORD1>
\r
174 <KEYWORD1>CCOS</KEYWORD1>
\r
175 <KEYWORD1>CHAR</KEYWORD1>
\r
176 <KEYWORD1>CLOG</KEYWORD1>
\r
177 <KEYWORD1>CMPLX</KEYWORD1>
\r
178 <KEYWORD1>CONJG</KEYWORD1>
\r
179 <KEYWORD1>COS</KEYWORD1>
\r
180 <KEYWORD1>COSH</KEYWORD1>
\r
181 <KEYWORD1>CSIN</KEYWORD1>
\r
182 <KEYWORD1>CSQRT</KEYWORD1>
\r
183 <KEYWORD1>DABS</KEYWORD1>
\r
184 <KEYWORD1>DACOS</KEYWORD1>
\r
185 <KEYWORD1>DASIN</KEYWORD1>
\r
186 <KEYWORD1>DATAN</KEYWORD1>
\r
187 <KEYWORD1>DATAN2</KEYWORD1>
\r
188 <KEYWORD1>DBLE</KEYWORD1>
\r
189 <KEYWORD1>DCOS</KEYWORD1>
\r
190 <KEYWORD1>DCOSH</KEYWORD1>
\r
191 <KEYWORD1>DDIM</KEYWORD1>
\r
192 <KEYWORD1>DEXP</KEYWORD1>
\r
193 <KEYWORD1>DIM</KEYWORD1>
\r
194 <KEYWORD1>DINT</KEYWORD1>
\r
195 <KEYWORD1>DLOG</KEYWORD1>
\r
196 <KEYWORD1>DLOG10</KEYWORD1>
\r
197 <KEYWORD1>DMAX1</KEYWORD1>
\r
198 <KEYWORD1>DMIN1</KEYWORD1>
\r
199 <KEYWORD1>DMOD</KEYWORD1>
\r
200 <KEYWORD1>DNINT</KEYWORD1>
\r
201 <KEYWORD1>DPROD</KEYWORD1>
\r
202 <KEYWORD1>DREAL</KEYWORD1>
\r
203 <KEYWORD1>DSIGN</KEYWORD1>
\r
204 <KEYWORD1>DSIN</KEYWORD1>
\r
205 <KEYWORD1>DSINH</KEYWORD1>
\r
206 <KEYWORD1>DSQRT</KEYWORD1>
\r
207 <KEYWORD1>DTAN</KEYWORD1>
\r
208 <KEYWORD1>DTANH</KEYWORD1>
\r
209 <KEYWORD1>EXP</KEYWORD1>
\r
210 <KEYWORD1>FLOAT</KEYWORD1>
\r
211 <KEYWORD1>IABS</KEYWORD1>
\r
212 <KEYWORD1>ICHAR</KEYWORD1>
\r
213 <KEYWORD1>IDIM</KEYWORD1>
\r
214 <KEYWORD1>IDINT</KEYWORD1>
\r
215 <KEYWORD1>IDNINT</KEYWORD1>
\r
216 <KEYWORD1>IFIX</KEYWORD1>
\r
217 <KEYWORD1>INDEX</KEYWORD1>
\r
218 <KEYWORD1>INT</KEYWORD1>
\r
219 <KEYWORD1>ISIGN</KEYWORD1>
\r
220 <KEYWORD1>LEN</KEYWORD1>
\r
221 <KEYWORD1>LGE</KEYWORD1>
\r
222 <KEYWORD1>LGT</KEYWORD1>
\r
223 <KEYWORD1>LLE</KEYWORD1>
\r
224 <KEYWORD1>LLT</KEYWORD1>
\r
225 <KEYWORD1>LOG</KEYWORD1>
\r
226 <KEYWORD1>LOG10</KEYWORD1>
\r
227 <KEYWORD1>MAX</KEYWORD1>
\r
228 <KEYWORD1>MAX0</KEYWORD1>
\r
229 <KEYWORD1>MAX1</KEYWORD1>
\r
230 <KEYWORD1>MIN</KEYWORD1>
\r
231 <KEYWORD1>MIN0</KEYWORD1>
\r
232 <KEYWORD1>MIN1</KEYWORD1>
\r
233 <KEYWORD1>MOD</KEYWORD1>
\r
234 <KEYWORD1>NINT</KEYWORD1>
\r
235 <KEYWORD1>REAL</KEYWORD1>
\r
236 <KEYWORD1>SIGN</KEYWORD1>
\r
237 <KEYWORD1>SIN</KEYWORD1>
\r
238 <KEYWORD1>SINH</KEYWORD1>
\r
239 <KEYWORD1>SNGL</KEYWORD1>
\r
240 <KEYWORD1>SQRT</KEYWORD1>
\r
241 <KEYWORD1>TAN</KEYWORD1>
\r
242 <KEYWORD1>TANH</KEYWORD1>
\r
243 <!-- logical values -->
\r
244 <KEYWORD1>.false.</KEYWORD1>
\r
245 <KEYWORD1>.true.</KEYWORD1>
\r