1 | Prism.languages.fortran = {
|
2 | 'quoted-number': {
|
3 | pattern: /[BOZ](['"])[A-F0-9]+\1/i,
|
4 | alias: 'number'
|
5 | },
|
6 | 'string': {
|
7 | pattern: /(?:\w+_)?(['"])(?:\1\1|&(?:\r\n?|\n)(?:\s*!.+(?:\r\n?|\n))?|(?!\1).)*(?:\1|&)/,
|
8 | inside: {
|
9 | 'comment': {
|
10 | pattern: /(&(?:\r\n?|\n)\s*)!.*/,
|
11 | lookbehind: true
|
12 | }
|
13 | }
|
14 | },
|
15 | 'comment': /!.*/,
|
16 | 'boolean': /\.(?:TRUE|FALSE)\.(?:_\w+)?/i,
|
17 | 'number': /(?:\b|[+-])(?:\d+(?:\.\d*)?|\.\d+)(?:[ED][+-]?\d+)?(?:_\w+)?/i,
|
18 | 'keyword': [
|
19 |
|
20 | /\b(?:INTEGER|REAL|DOUBLE ?PRECISION|COMPLEX|CHARACTER|LOGICAL)\b/i,
|
21 |
|
22 | /\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\b/i,
|
23 |
|
24 | /\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\b/i,
|
25 |
|
26 | /\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEWHERE|ELSEIF|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\b/i
|
27 | ],
|
28 | 'operator': [
|
29 | /\*\*|\/\/|=>|[=\/]=|[<>]=?|::|[+\-*=%]|\.(?:EQ|NE|LT|LE|GT|GE|NOT|AND|OR|EQV|NEQV)\.|\.[A-Z]+\./i,
|
30 | {
|
31 | // Use lookbehind to prevent confusion with (/ /)
|
32 | pattern: /(^|(?!\().)\/(?!\))/,
|
33 | lookbehind: true
|
34 | }
|
35 | ],
|
36 | 'punctuation': /\(\/|\/\)|[(),;:&]/
|
37 | }; |
\ | No newline at end of file |