Merge lp:~gcrosswhite/leo-editor/fix-haskell-support into lp:leo-editor/old-trunk

Proposed by Gregory Crosswhite
Status: Merged
Merged at revision: not available
Proposed branch: lp:~gcrosswhite/leo-editor/fix-haskell-support
Merge into: lp:leo-editor/old-trunk
Diff against target: None lines
To merge this branch: bzr merge lp:~gcrosswhite/leo-editor/fix-haskell-support
Reviewer Review Type Date Requested Status
Ville M. Vainio Approve
Review via email: mp+7828@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Gregory Crosswhite (gcrosswhite) wrote :

At the moment, support for Fortran 90 in Leo is a touch problematic. Although Leo is smart enough to recognize "@language fortran90" and to use "!" for comments instead of "C", there is no corresponding color mode file so that syntax coloring is disabled.

To correct this problem, I have created "fortran90.xml" and "fortran90.py" in leo/modes (the latter being generated from the former using the jEdit2py script), which are essentially just tweaks of the existing "fortran" mode with modified comment characters.

While I was at it, I also modified leoApp.py to make Fortran 90 specifically be associated with .f90 files, and Fortran associated by default to .f files.

Revision history for this message
Ville M. Vainio (villemvainio) wrote :

Seems non-disruptive enough

review: Approve
2086. By Edward K. Ream

tracing/comment changes

2087. By Edward K. Ream

recommit after Ville's scriptFile location changes. Revised the comments in the disabled setting node.

2088. By Edward K. Ream

Added some docs about the new qt colorizer.

Fixed bug in c.tangleCommands.scanAllDirectives:
it now inits self.print_mode properly.

Added direct unit tests of scanAllDirectives.
Added unit test of @root output when @silent is in effect.

All unit tests pass.

2089. By Edward K. Ream

recommit after Terry's todo.py update

2090. By Edward K. Ream

Simplified several aspects of the recoloring logic.
    - Moved the restart logic into mainloop.
    - Added several new state methods that clarify what is going on.
    - Removed the "success" logic at the end of mainloop.
      This was misguided: the pattern matchers are responsible for setting/clearing state.
    - Removed the hack in clearState that cleared the restart dict.
      This was an extremely poor idea: it just creates more confusion.

Coloring appears to work for both Python and C.
I am a bit surprised that C works.
All unit tests pass.

More work, including possibly theoretical work, will probably be needed to handle delegates.

2091. By Edward K. Ream

Call configure_tags in jEditColorizer.__init__.
It's called only once per node.

Fixed some pylint complaints.

2092. By Edward K. Ream

fixed some more pylint warnings

2093. By Edward K. Ream

disable call dot configure_tags

2094. By Edward K. Ream

Commented out or removed unused code.
This is only the start of a cleaning process.

Eliminated the test against sys.platform in onTextChanged as shown below

   if w.changingText: ### and not sys.platform.startswith('linux'):

Clearly, the test against sys.platform is evil.
I don't remember why it might have been added.
If it ever gets added back, it must have an explanatory comment.

Undo now works, and middle-button paste still works and sticks, on both Ubuntu and Xp.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'leo/core/leoApp.py'
--- leo/core/leoApp.py 2009-06-20 12:45:35 +0000
+++ leo/core/leoApp.py 2009-06-24 02:11:32 +0000
@@ -168,7 +168,7 @@
168 "elisp" : "el",168 "elisp" : "el",
169 "forth" : "forth",169 "forth" : "forth",
170 "fortran" : "f",170 "fortran" : "f",
171 "fortran90" : "f",171 "fortran90" : "f90",
172 "html" : "html",172 "html" : "html",
173 "ini" : "ini",173 "ini" : "ini",
174 "java" : "java",174 "java" : "java",
@@ -212,7 +212,8 @@
212 "css" : "css",212 "css" : "css",
213 "el" : "elisp",213 "el" : "elisp",
214 "forth" : "forth",214 "forth" : "forth",
215 "f" : "fortran90", # or fortran ?215 "f" : "fortran",
216 "f90" : "fortran90",
216 "h" : "c",217 "h" : "c",
217 "html" : "html",218 "html" : "html",
218 "ini" : "ini",219 "ini" : "ini",
@@ -255,7 +256,7 @@
255 'cfg' : 'none', # Leo 4.5.1256 'cfg' : 'none', # Leo 4.5.1
256 'cpp' : 'c',257 'cpp' : 'c',
257 'el' : 'lisp',258 'el' : 'lisp',
258 'f' : 'fortran',259 'f' : 'fortran90',
259 'ksh' : 'none', # Leo 4.5.1260 'ksh' : 'none', # Leo 4.5.1
260 'nw' : 'none', # noweb.261 'nw' : 'none', # noweb.
261 'otl' : 'none', # vimoutline.262 'otl' : 'none', # vimoutline.
262263
=== modified file 'leo/modes/catalog'
--- leo/modes/catalog 2008-02-28 08:12:24 +0000
+++ leo/modes/catalog 2009-06-24 02:11:32 +0000
@@ -119,6 +119,9 @@
119<MODE NAME="fortran" FILE="fortran.xml"119<MODE NAME="fortran" FILE="fortran.xml"
120 FILE_NAME_GLOB="*.{f,for,fort,f77,f90}" />120 FILE_NAME_GLOB="*.{f,for,fort,f77,f90}" />
121121
122<MODE NAME="fortran90" FILE="fortran90.xml"
123 FILE_NAME_GLOB="*.{f,for,fort,f90}" />
124
122<MODE NAME="foxpro" FILE="foxpro.xml"125<MODE NAME="foxpro" FILE="foxpro.xml"
123 FILE_NAME_GLOB="*.prg" />126 FILE_NAME_GLOB="*.prg" />
124127
125128
=== added file 'leo/modes/fortran90.py'
--- leo/modes/fortran90.py 1970-01-01 00:00:00 +0000
+++ leo/modes/fortran90.py 2009-06-24 02:11:32 +0000
@@ -0,0 +1,341 @@
1# Leo colorizer control file for fortran90 mode.
2# This file is in the public domain.
3
4# Properties for fortran90 mode.
5properties = {
6 "blockComment": "!",
7 "indentNextLine": "\\s*((if\\s*\\(.*\\)\\s*then|else\\s*|do\\s*)*)",
8 "wordBreakChars": ",+-=<>/?^&*",
9}
10
11# Attributes dict for fortran90_main ruleset.
12fortran90_main_attributes_dict = {
13 "default": "null",
14 "digit_re": "",
15 "escape": "",
16 "highlight_digits": "false",
17 "ignore_case": "true",
18 "no_word_sep": "",
19}
20
21# Dictionary of attributes dictionaries for fortran90 mode.
22attributesDictDict = {
23 "fortran90_main": fortran90_main_attributes_dict,
24}
25
26# Keywords dict for fortran90_main ruleset.
27fortran90_main_keywords_dict = {
28 ".false.": "keyword1",
29 ".true.": "keyword1",
30 "abs": "keyword1",
31 "acos": "keyword1",
32 "aimag": "keyword1",
33 "aint": "keyword1",
34 "allocatable": "keyword1",
35 "allocate": "keyword1",
36 "allocated": "keyword1",
37 "alog": "keyword1",
38 "alog10": "keyword1",
39 "amax0": "keyword1",
40 "amax1": "keyword1",
41 "amin0": "keyword1",
42 "amin1": "keyword1",
43 "amod": "keyword1",
44 "anint": "keyword1",
45 "asin": "keyword1",
46 "atan": "keyword1",
47 "atan2": "keyword1",
48 "backspace": "keyword1",
49 "cabs": "keyword1",
50 "call": "keyword1",
51 "case": "keyword1",
52 "ccos": "keyword1",
53 "ceiling": "keyword1",
54 "char": "keyword1",
55 "character": "keyword1",
56 "clog": "keyword1",
57 "close": "keyword1",
58 "cmplx": "keyword1",
59 "complex": "keyword1",
60 "conjg": "keyword1",
61 "contains": "keyword1",
62 "continue": "keyword1",
63 "cos": "keyword1",
64 "cosh": "keyword1",
65 "csin": "keyword1",
66 "csqrt": "keyword1",
67 "cycle": "keyword1",
68 "dabs": "keyword1",
69 "dacos": "keyword1",
70 "dasin": "keyword1",
71 "data": "keyword1",
72 "datan": "keyword1",
73 "datan2": "keyword1",
74 "dble": "keyword1",
75 "dcmplx": "keyword1",
76 "dcos": "keyword1",
77 "dcosh": "keyword1",
78 "ddim": "keyword1",
79 "deallocate": "keyword1",
80 "default": "keyword1",
81 "dexp": "keyword1",
82 "dfloat": "keyword1",
83 "dim": "keyword1",
84 "dimension": "keyword1",
85 "dint": "keyword1",
86 "dlog": "keyword1",
87 "dlog10": "keyword1",
88 "dmax1": "keyword1",
89 "dmin1": "keyword1",
90 "dmod": "keyword1",
91 "dnint": "keyword1",
92 "do": "keyword1",
93 "double": "keyword1",
94 "dprod": "keyword1",
95 "dreal": "keyword1",
96 "dsign": "keyword1",
97 "dsin": "keyword1",
98 "dsinh": "keyword1",
99 "dsqrt": "keyword1",
100 "dtan": "keyword1",
101 "dtanh": "keyword1",
102 "else": "keyword1",
103 "elseif": "keyword1",
104 "elsewhere": "keyword1",
105 "end": "keyword1",
106 "enddo": "keyword1",
107 "endfile": "keyword1",
108 "endif": "keyword1",
109 "exit": "keyword1",
110 "exp": "keyword1",
111 "explicit": "keyword1",
112 "float": "keyword1",
113 "floor": "keyword1",
114 "forall": "keyword1",
115 "format": "keyword1",
116 "function": "keyword1",
117 "goto": "keyword1",
118 "iabs": "keyword1",
119 "ichar": "keyword1",
120 "idim": "keyword1",
121 "idint": "keyword1",
122 "idnint": "keyword1",
123 "if": "keyword1",
124 "ifix": "keyword1",
125 "imag": "keyword1",
126 "implicit": "keyword1",
127 "include": "keyword1",
128 "index": "keyword1",
129 "inquire": "keyword1",
130 "int": "keyword1",
131 "integer": "keyword1",
132 "isign": "keyword1",
133 "kind": "keyword1",
134 "len": "keyword1",
135 "lge": "keyword1",
136 "lgt": "keyword1",
137 "lle": "keyword1",
138 "llt": "keyword1",
139 "log": "keyword1",
140 "log10": "keyword1",
141 "logical": "keyword1",
142 "max": "keyword1",
143 "max0": "keyword1",
144 "max1": "keyword1",
145 "min": "keyword1",
146 "min0": "keyword1",
147 "min1": "keyword1",
148 "mod": "keyword1",
149 "module": "keyword1",
150 "modulo": "keyword1",
151 "nint": "keyword1",
152 "none": "keyword1",
153 "open": "keyword1",
154 "parameter": "keyword1",
155 "pause": "keyword1",
156 "precision": "keyword1",
157 "print": "keyword1",
158 "program": "keyword1",
159 "read": "keyword1",
160 "real": "keyword1",
161 "return": "keyword1",
162 "rewind": "keyword1",
163 "select": "keyword1",
164 "sign": "keyword1",
165 "sin": "keyword1",
166 "sinh": "keyword1",
167 "sngl": "keyword1",
168 "sqrt": "keyword1",
169 "stop": "keyword1",
170 "subroutine": "keyword1",
171 "tan": "keyword1",
172 "tanh": "keyword1",
173 "then": "keyword1",
174 "transfer": "keyword1",
175 "use": "keyword1",
176 "where": "keyword1",
177 "while": "keyword1",
178 "write": "keyword1",
179 "zext": "keyword1",
180}
181
182# Dictionary of keywords dictionaries for fortran90 mode.
183keywordsDictDict = {
184 "fortran90_main": fortran90_main_keywords_dict,
185}
186
187# Rules for fortran90_main ruleset.
188
189def fortran90_rule0(colorer, s, i):
190 return colorer.match_terminate(s, i, kind="", at_char=132)
191
192def fortran90_rule1(colorer, s, i):
193 return colorer.match_eol_span(s, i, kind="comment1", seq="!",
194 at_line_start=False, at_whitespace_end=False, at_word_start=False,
195 delegate="", exclude_match=False)
196
197def fortran90_rule2(colorer, s, i):
198 return colorer.match_seq(s, i, kind="operator", seq="<=",
199 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
200
201def fortran90_rule3(colorer, s, i):
202 return colorer.match_seq(s, i, kind="operator", seq=">=",
203 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
204
205def fortran90_rule4(colorer, s, i):
206 return colorer.match_seq(s, i, kind="operator", seq=">",
207 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
208
209def fortran90_rule5(colorer, s, i):
210 return colorer.match_seq(s, i, kind="operator", seq="<",
211 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
212
213def fortran90_rule6(colorer, s, i):
214 return colorer.match_seq(s, i, kind="operator", seq="&",
215 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
216
217def fortran90_rule7(colorer, s, i):
218 return colorer.match_seq(s, i, kind="operator", seq="/=",
219 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
220
221def fortran90_rule8(colorer, s, i):
222 return colorer.match_seq(s, i, kind="operator", seq="==",
223 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
224
225def fortran90_rule9(colorer, s, i):
226 return colorer.match_seq(s, i, kind="operator", seq=".lt.",
227 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
228
229def fortran90_rule10(colorer, s, i):
230 return colorer.match_seq(s, i, kind="operator", seq=".gt.",
231 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
232
233def fortran90_rule11(colorer, s, i):
234 return colorer.match_seq(s, i, kind="operator", seq=".eq.",
235 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
236
237def fortran90_rule12(colorer, s, i):
238 return colorer.match_seq(s, i, kind="operator", seq=".ne.",
239 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
240
241def fortran90_rule13(colorer, s, i):
242 return colorer.match_seq(s, i, kind="operator", seq=".le.",
243 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
244
245def fortran90_rule14(colorer, s, i):
246 return colorer.match_seq(s, i, kind="operator", seq=".ge.",
247 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
248
249def fortran90_rule15(colorer, s, i):
250 return colorer.match_seq(s, i, kind="operator", seq=".AND.",
251 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
252
253def fortran90_rule16(colorer, s, i):
254 return colorer.match_seq(s, i, kind="operator", seq=".OR.",
255 at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="")
256
257def fortran90_rule17(colorer, s, i):
258 return colorer.match_keywords(s, i)
259
260# Rules dict for fortran90_main ruleset.
261rulesDict1 = {
262 "!": [fortran90_rule1,],
263 "&": [fortran90_rule6,],
264 ".": [fortran90_rule9,fortran90_rule10,fortran90_rule11,fortran90_rule12,fortran90_rule13,fortran90_rule14,fortran90_rule15,fortran90_rule16,fortran90_rule17,],
265 "/": [fortran90_rule7,],
266 "0": [fortran90_rule17,],
267 "1": [fortran90_rule17,],
268 "2": [fortran90_rule17,],
269 "3": [fortran90_rule17,],
270 "4": [fortran90_rule17,],
271 "5": [fortran90_rule17,],
272 "6": [fortran90_rule17,],
273 "7": [fortran90_rule17,],
274 "8": [fortran90_rule17,],
275 "9": [fortran90_rule17,],
276 "<": [fortran90_rule2,fortran90_rule5,],
277 "=": [fortran90_rule8,],
278 ">": [fortran90_rule3,fortran90_rule4,],
279 "@": [fortran90_rule17,],
280 "A": [fortran90_rule17,],
281 "B": [fortran90_rule17,],
282 "C": [fortran90_rule17,],
283 "D": [fortran90_rule17,],
284 "E": [fortran90_rule17,],
285 "F": [fortran90_rule17,],
286 "G": [fortran90_rule17,],
287 "H": [fortran90_rule17,],
288 "I": [fortran90_rule17,],
289 "J": [fortran90_rule17,],
290 "K": [fortran90_rule17,],
291 "L": [fortran90_rule17,],
292 "M": [fortran90_rule17,],
293 "N": [fortran90_rule17,],
294 "O": [fortran90_rule17,],
295 "P": [fortran90_rule17,],
296 "Q": [fortran90_rule17,],
297 "R": [fortran90_rule17,],
298 "S": [fortran90_rule17,],
299 "T": [fortran90_rule17,],
300 "U": [fortran90_rule17,],
301 "V": [fortran90_rule17,],
302 "W": [fortran90_rule17,],
303 "X": [fortran90_rule17,],
304 "Y": [fortran90_rule17,],
305 "Z": [fortran90_rule17,],
306 "a": [fortran90_rule17,],
307 "b": [fortran90_rule17,],
308 "c": [fortran90_rule17,],
309 "d": [fortran90_rule17,],
310 "e": [fortran90_rule17,],
311 "f": [fortran90_rule17,],
312 "g": [fortran90_rule17,],
313 "h": [fortran90_rule17,],
314 "i": [fortran90_rule17,],
315 "j": [fortran90_rule17,],
316 "k": [fortran90_rule17,],
317 "l": [fortran90_rule17,],
318 "m": [fortran90_rule17,],
319 "n": [fortran90_rule17,],
320 "o": [fortran90_rule17,],
321 "p": [fortran90_rule17,],
322 "q": [fortran90_rule17,],
323 "r": [fortran90_rule17,],
324 "s": [fortran90_rule17,],
325 "t": [fortran90_rule17,],
326 "u": [fortran90_rule17,],
327 "v": [fortran90_rule17,],
328 "w": [fortran90_rule17,],
329 "x": [fortran90_rule17,],
330 "y": [fortran90_rule17,],
331 "z": [fortran90_rule17,],
332}
333
334# x.rulesDictDict for fortran90 mode.
335rulesDictDict = {
336 "fortran90_main": rulesDict1,
337}
338
339# Import dict for fortran90 mode.
340importDict = {}
341
0342
=== added file 'leo/modes/fortran90.xml'
--- leo/modes/fortran90.xml 1970-01-01 00:00:00 +0000
+++ leo/modes/fortran90.xml 2009-06-24 02:11:32 +0000
@@ -0,0 +1,231 @@
1<?xml version="1.0"?>
2
3<!DOCTYPE MODE SYSTEM "xmode.dtd">
4<!-- FORTRAN90 edit mode
5 Version 1.0
6 June 23, 2009
7-->
8<!-- This is a mode for FORTRAN 90 source files. In general, this supports
9common features of the F90 specification. This may however contain some
10platform or vendor specific keywords (in paticular COMPAQ(Digital) FORTRAN).
11-->
12<!-- Suggested catalog file entry:
13
14<MODE NAME="FORTRAN90" FILE="FORTRAN90.xml"
15 FILE_NAME_GLOB="*.{f,for,fort,f90}" />
16 -->
17<MODE>
18 <PROPS>
19 <PROPERTY NAME="blockComment" VALUE="!" />
20 <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />
21 <PROPERTY NAME="indentNextLine"
22 VALUE="\s*((if\s*\(.*\)\s*then|else\s*|do\s*)*)" />
23 </PROPS>
24
25 <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="FALSE">
26<!-- In free form, column 132 is the last column parsed. -->
27 <TERMINATE AT_CHAR="132" />
28
29<!-- comment -->
30<EOL_SPAN TYPE="COMMENT1">!</EOL_SPAN>
31<!-- Highlighted Operators -->
32 <SEQ TYPE="OPERATOR">&lt;=</SEQ>
33 <SEQ TYPE="OPERATOR">&gt;=</SEQ>
34 <SEQ TYPE="OPERATOR">&gt;</SEQ>
35 <SEQ TYPE="OPERATOR">&lt;</SEQ>
36 <SEQ TYPE="OPERATOR">&amp;</SEQ>
37 <SEQ TYPE="OPERATOR">/=</SEQ>
38 <SEQ TYPE="OPERATOR">==</SEQ>
39 <SEQ TYPE="OPERATOR">.lt.</SEQ>
40 <SEQ TYPE="OPERATOR">.gt.</SEQ>
41 <SEQ TYPE="OPERATOR">.eq.</SEQ>
42 <SEQ TYPE="OPERATOR">.ne.</SEQ>
43 <SEQ TYPE="OPERATOR">.le.</SEQ>
44 <SEQ TYPE="OPERATOR">.ge.</SEQ>
45 <SEQ TYPE="OPERATOR">.AND.</SEQ>
46 <SEQ TYPE="OPERATOR">.OR.</SEQ>
47
48<KEYWORDS>
49<!-- unclassified keywords -->
50<KEYWORD1>INCLUDE</KEYWORD1>
51<!-- Program units and calling them -->
52<KEYWORD1>PROGRAM</KEYWORD1>
53<KEYWORD1>MODULE</KEYWORD1>
54<KEYWORD1>SUBROUTINE</KEYWORD1>
55<KEYWORD1>FUNCTION</KEYWORD1>
56<KEYWORD1>CONTAINS</KEYWORD1>
57<KEYWORD1>USE</KEYWORD1>
58<KEYWORD1>CALL</KEYWORD1>
59<KEYWORD1>RETURN</KEYWORD1>
60<!-- data types, declaration, and allocation keywords -->
61<KEYWORD1>IMPLICIT</KEYWORD1>
62<KEYWORD1>EXPLICIT</KEYWORD1>
63<KEYWORD1>NONE</KEYWORD1>
64<KEYWORD1>DATA</KEYWORD1>
65<KEYWORD1>PARAMETER</KEYWORD1>
66<KEYWORD1>ALLOCATE</KEYWORD1>
67<KEYWORD1>ALLOCATABLE</KEYWORD1>
68<KEYWORD1>ALLOCATED</KEYWORD1>
69<KEYWORD1>DEALLOCATE</KEYWORD1>
70<KEYWORD1>INTEGER</KEYWORD1>
71<KEYWORD1>REAL</KEYWORD1>
72<KEYWORD1>DOUBLE</KEYWORD1>
73<KEYWORD1>PRECISION</KEYWORD1>
74<KEYWORD1>COMPLEX</KEYWORD1>
75<KEYWORD1>LOGICAL</KEYWORD1>
76<KEYWORD1>CHARACTER</KEYWORD1>
77<KEYWORD1>DIMENSION</KEYWORD1>
78<KEYWORD1>KIND</KEYWORD1>
79<!-- FORTRAN Statements -->
80<KEYWORD1>CASE</KEYWORD1>
81<KEYWORD1>SELECT</KEYWORD1>
82<KEYWORD1>DEFAULT</KEYWORD1>
83<KEYWORD1>CONTINUE</KEYWORD1>
84<KEYWORD1>CYCLE</KEYWORD1>
85<KEYWORD1>DO</KEYWORD1>
86<KEYWORD1>WHILE</KEYWORD1>
87<KEYWORD1>ELSE</KEYWORD1>
88<KEYWORD1>IF</KEYWORD1>
89<KEYWORD1>ELSEIF</KEYWORD1>
90<KEYWORD1>THEN</KEYWORD1>
91<KEYWORD1>ELSEWHERE</KEYWORD1>
92<KEYWORD1>END</KEYWORD1>
93<KEYWORD1>ENDIF</KEYWORD1>
94<KEYWORD1>ENDDO</KEYWORD1>
95<KEYWORD1>FORALL</KEYWORD1>
96<KEYWORD1>WHERE</KEYWORD1>
97<KEYWORD1>EXIT</KEYWORD1>
98<KEYWORD1>GOTO</KEYWORD1>
99<KEYWORD1>PAUSE</KEYWORD1>
100<KEYWORD1>STOP</KEYWORD1>
101<!-- i/o keywords -->
102<KEYWORD1>BACKSPACE</KEYWORD1>
103<KEYWORD1>CLOSE</KEYWORD1>
104<KEYWORD1>ENDFILE</KEYWORD1>
105<KEYWORD1>INQUIRE</KEYWORD1>
106<KEYWORD1>OPEN</KEYWORD1>
107<KEYWORD1>PRINT</KEYWORD1>
108<KEYWORD1>READ</KEYWORD1>
109<KEYWORD1>REWIND</KEYWORD1>
110<KEYWORD1>WRITE</KEYWORD1>
111<KEYWORD1>FORMAT</KEYWORD1>
112<!-- Type conversion and utility functions -->
113<KEYWORD1>AIMAG</KEYWORD1>
114<KEYWORD1>AINT</KEYWORD1>
115<KEYWORD1>AMAX0</KEYWORD1>
116<KEYWORD1>AMIN0</KEYWORD1>
117<KEYWORD1>ANINT</KEYWORD1>
118<KEYWORD1>CEILING</KEYWORD1>
119<KEYWORD1>CMPLX</KEYWORD1>
120<KEYWORD1>CONJG</KEYWORD1>
121<KEYWORD1>DBLE</KEYWORD1>
122<KEYWORD1>DCMPLX</KEYWORD1>
123<KEYWORD1>DFLOAT</KEYWORD1>
124<KEYWORD1>DIM</KEYWORD1>
125<KEYWORD1>DPROD</KEYWORD1>
126<KEYWORD1>FLOAT</KEYWORD1>
127<KEYWORD1>FLOOR</KEYWORD1>
128<KEYWORD1>IFIX</KEYWORD1>
129<KEYWORD1>IMAG</KEYWORD1>
130<KEYWORD1>INT</KEYWORD1>
131<KEYWORD1>LOGICAL</KEYWORD1>
132<KEYWORD1>MODULO</KEYWORD1>
133<KEYWORD1>NINT</KEYWORD1>
134<KEYWORD1>REAL</KEYWORD1>
135<KEYWORD1>SIGN</KEYWORD1>
136<KEYWORD1>SNGL</KEYWORD1>
137<KEYWORD1>TRANSFER</KEYWORD1>
138<KEYWORD1>ZEXT</KEYWORD1>
139<!-- More Functions -->
140<KEYWORD1>ABS</KEYWORD1>
141<KEYWORD1>ACOS</KEYWORD1>
142<KEYWORD1>AIMAG</KEYWORD1>
143<KEYWORD1>AINT</KEYWORD1>
144<KEYWORD1>ALOG</KEYWORD1>
145<KEYWORD1>ALOG10</KEYWORD1>
146<KEYWORD1>AMAX0</KEYWORD1>
147<KEYWORD1>AMAX1</KEYWORD1>
148<KEYWORD1>AMIN0</KEYWORD1>
149<KEYWORD1>AMIN1</KEYWORD1>
150<KEYWORD1>AMOD</KEYWORD1>
151<KEYWORD1>ANINT</KEYWORD1>
152<KEYWORD1>ASIN</KEYWORD1>
153<KEYWORD1>ATAN</KEYWORD1>
154<KEYWORD1>ATAN2</KEYWORD1>
155<KEYWORD1>CABS</KEYWORD1>
156<KEYWORD1>CCOS</KEYWORD1>
157<KEYWORD1>CHAR</KEYWORD1>
158<KEYWORD1>CLOG</KEYWORD1>
159<KEYWORD1>CMPLX</KEYWORD1>
160<KEYWORD1>CONJG</KEYWORD1>
161<KEYWORD1>COS</KEYWORD1>
162<KEYWORD1>COSH</KEYWORD1>
163<KEYWORD1>CSIN</KEYWORD1>
164<KEYWORD1>CSQRT</KEYWORD1>
165<KEYWORD1>DABS</KEYWORD1>
166<KEYWORD1>DACOS</KEYWORD1>
167<KEYWORD1>DASIN</KEYWORD1>
168<KEYWORD1>DATAN</KEYWORD1>
169<KEYWORD1>DATAN2</KEYWORD1>
170<KEYWORD1>DBLE</KEYWORD1>
171<KEYWORD1>DCOS</KEYWORD1>
172<KEYWORD1>DCOSH</KEYWORD1>
173<KEYWORD1>DDIM</KEYWORD1>
174<KEYWORD1>DEXP</KEYWORD1>
175<KEYWORD1>DIM</KEYWORD1>
176<KEYWORD1>DINT</KEYWORD1>
177<KEYWORD1>DLOG</KEYWORD1>
178<KEYWORD1>DLOG10</KEYWORD1>
179<KEYWORD1>DMAX1</KEYWORD1>
180<KEYWORD1>DMIN1</KEYWORD1>
181<KEYWORD1>DMOD</KEYWORD1>
182<KEYWORD1>DNINT</KEYWORD1>
183<KEYWORD1>DPROD</KEYWORD1>
184<KEYWORD1>DREAL</KEYWORD1>
185<KEYWORD1>DSIGN</KEYWORD1>
186<KEYWORD1>DSIN</KEYWORD1>
187<KEYWORD1>DSINH</KEYWORD1>
188<KEYWORD1>DSQRT</KEYWORD1>
189<KEYWORD1>DTAN</KEYWORD1>
190<KEYWORD1>DTANH</KEYWORD1>
191<KEYWORD1>EXP</KEYWORD1>
192<KEYWORD1>FLOAT</KEYWORD1>
193<KEYWORD1>IABS</KEYWORD1>
194<KEYWORD1>ICHAR</KEYWORD1>
195<KEYWORD1>IDIM</KEYWORD1>
196<KEYWORD1>IDINT</KEYWORD1>
197<KEYWORD1>IDNINT</KEYWORD1>
198<KEYWORD1>IFIX</KEYWORD1>
199<KEYWORD1>INDEX</KEYWORD1>
200<KEYWORD1>INT</KEYWORD1>
201<KEYWORD1>ISIGN</KEYWORD1>
202<KEYWORD1>LEN</KEYWORD1>
203<KEYWORD1>LGE</KEYWORD1>
204<KEYWORD1>LGT</KEYWORD1>
205<KEYWORD1>LLE</KEYWORD1>
206<KEYWORD1>LLT</KEYWORD1>
207<KEYWORD1>LOG</KEYWORD1>
208<KEYWORD1>LOG10</KEYWORD1>
209<KEYWORD1>MAX</KEYWORD1>
210<KEYWORD1>MAX0</KEYWORD1>
211<KEYWORD1>MAX1</KEYWORD1>
212<KEYWORD1>MIN</KEYWORD1>
213<KEYWORD1>MIN0</KEYWORD1>
214<KEYWORD1>MIN1</KEYWORD1>
215<KEYWORD1>MOD</KEYWORD1>
216<KEYWORD1>NINT</KEYWORD1>
217<KEYWORD1>REAL</KEYWORD1>
218<KEYWORD1>SIGN</KEYWORD1>
219<KEYWORD1>SIN</KEYWORD1>
220<KEYWORD1>SINH</KEYWORD1>
221<KEYWORD1>SNGL</KEYWORD1>
222<KEYWORD1>SQRT</KEYWORD1>
223<KEYWORD1>TAN</KEYWORD1>
224<KEYWORD1>TANH</KEYWORD1>
225<!-- logical values -->
226<KEYWORD1>.false.</KEYWORD1>
227<KEYWORD1>.true.</KEYWORD1>
228
229</KEYWORDS>
230 </RULES>
231</MODE>

Subscribers

People subscribed via source and target branches

to status/vote changes: