@@ -16,39 +16,38 @@ class FortranRegularExpressions:
16
16
CONTAINS : Pattern = compile (r"[ ]*(CONTAINS)[ ]*$" , I )
17
17
IMPLICIT : Pattern = compile (r"[ ]*IMPLICIT[ ]+([a-z]*)" , I )
18
18
SUB_MOD : Pattern = compile (r"[ ]*\b(PURE|IMPURE|ELEMENTAL|RECURSIVE)\b" , I )
19
- SUB : Pattern = compile (r"[ ]*SUBROUTINE[ ]+([a-z0-9_] +)" , I )
19
+ SUB : Pattern = compile (r"[ ]*SUBROUTINE[ ]+(\w +)" , I )
20
20
END_SUB : Pattern = compile (r"SUBROUTINE" , I )
21
- FUN : Pattern = compile (r"[ ]*FUNCTION[ ]+([a-z0-9_] +)" , I )
22
- RESULT : Pattern = compile (r"RESULT[ ]*\(([a-z0-9_] *)\)" , I )
21
+ FUN : Pattern = compile (r"[ ]*FUNCTION[ ]+(\w +)" , I )
22
+ RESULT : Pattern = compile (r"RESULT[ ]*\((\w *)\)" , I )
23
23
END_FUN : Pattern = compile (r"FUNCTION" , I )
24
- MOD : Pattern = compile (r"[ ]*MODULE[ ]+([a-z0-9_] +)" , I )
24
+ MOD : Pattern = compile (r"[ ]*MODULE[ ]+(\w +)" , I )
25
25
END_MOD : Pattern = compile (r"MODULE" , I )
26
26
SUBMOD : Pattern = compile (r"[ ]*SUBMODULE[ ]*\(" , I )
27
27
END_SMOD : Pattern = compile (r"SUBMODULE" , I )
28
28
END_PRO : Pattern = compile (r"(MODULE)?[ ]*PROCEDURE" , I )
29
- BLOCK : Pattern = compile (r"[ ]*([a-z_][a-z0-9_] *[ ]*:[ ]*)?BLOCK(?![a-z0-9_] )" , I )
29
+ BLOCK : Pattern = compile (r"[ ]*([a-z_]\w *[ ]*:[ ]*)?BLOCK(?!\w )" , I )
30
30
END_BLOCK : Pattern = compile (r"BLOCK" , I )
31
- DO : Pattern = compile (r"[ ]*(?:[a-z_][a-z0-9_] *[ ]*:[ ]*)?DO([ ]+[0-9]*|$)" , I )
31
+ DO : Pattern = compile (r"[ ]*(?:[a-z_]\w *[ ]*:[ ]*)?DO([ ]+[0-9]*|$)" , I )
32
32
END_DO : Pattern = compile (r"DO" , I )
33
33
WHERE : Pattern = compile (r"[ ]*WHERE[ ]*\(" , I )
34
34
END_WHERE : Pattern = compile (r"WHERE" , I )
35
- IF : Pattern = compile (r"[ ]*(?:[a-z_][a-z0-9_] *[ ]*:[ ]*)?IF[ ]*\(" , I )
35
+ IF : Pattern = compile (r"[ ]*(?:[a-z_]\w *[ ]*:[ ]*)?IF[ ]*\(" , I )
36
36
THEN : Pattern = compile (r"\)[ ]*THEN$" , I )
37
37
END_IF : Pattern = compile (r"IF" , I )
38
38
ASSOCIATE : Pattern = compile (r"[ ]*ASSOCIATE[ ]*\(" , I )
39
39
END_ASSOCIATE : Pattern = compile (r"ASSOCIATE" , I )
40
40
END_FIXED : Pattern = compile (r"[ ]*([0-9]*)[ ]*CONTINUE" , I )
41
41
SELECT : Pattern = compile (
42
- r"[ ]*(?:[a-z_][a-z0-9_]*[ ]*:[ ]*)?SELECT[ ]*"
43
- r"(CASE|TYPE)[ ]*\(([a-z0-9_=> ]*)" ,
42
+ r"[ ]*(?:[a-z_]\w*[ ]*:[ ]*)?SELECT[ ]*" r"(CASE|TYPE)[ ]*\(([\w=> ]*)" ,
44
43
I ,
45
44
)
46
- SELECT_TYPE : Pattern = compile (r"[ ]*(TYPE|CLASS)[ ]+IS[ ]*\(([a-z0-9_ ]*)" , I )
45
+ SELECT_TYPE : Pattern = compile (r"[ ]*(TYPE|CLASS)[ ]+IS[ ]*\(([\w ]*)" , I )
47
46
SELECT_DEFAULT : Pattern = compile (r"[ ]*CLASS[ ]+DEFAULT" , I )
48
47
END_SELECT : Pattern = compile (r"SELECT" , I )
49
- PROG : Pattern = compile (r"[ ]*PROGRAM[ ]+([a-z0-9_] +)" , I )
48
+ PROG : Pattern = compile (r"[ ]*PROGRAM[ ]+(\w +)" , I )
50
49
END_PROG : Pattern = compile (r"PROGRAM" , I )
51
- INT : Pattern = compile (r"[ ]*(ABSTRACT)?[ ]*INTERFACE[ ]*([a-z0-9_] *)" , I )
50
+ INT : Pattern = compile (r"[ ]*(ABSTRACT)?[ ]*INTERFACE[ ]*(\w *)" , I )
52
51
END_INT : Pattern = compile (r"INTERFACE" , I )
53
52
END_WORD : Pattern = compile (
54
53
r"[ ]*END[ ]*(DO|WHERE|IF|BLOCK|ASSOCIATE|SELECT"
@@ -57,7 +56,7 @@ class FortranRegularExpressions:
57
56
I ,
58
57
)
59
58
TYPE_DEF : Pattern = compile (r"[ ]*(TYPE)[, :]+" , I )
60
- EXTENDS : Pattern = compile (r"EXTENDS[ ]*\(([a-z0-9_] *)\)" , I )
59
+ EXTENDS : Pattern = compile (r"EXTENDS[ ]*\((\w *)\)" , I )
61
60
GENERIC_PRO : Pattern = compile (
62
61
r"[ ]*(GENERIC)[, ]*(PRIVATE|PUBLIC)?[ ]*::[ ]*[a-z]" , I
63
62
)
@@ -71,7 +70,7 @@ class FortranRegularExpressions:
71
70
r"|EXTERNAL|CLASS|TYPE)" , # external :: variable is handled by this
72
71
I ,
73
72
)
74
- KIND_SPEC : Pattern = compile (r"[ ]*([*]?\([ ]*[a-z0-9_ *:]|\*[ ]*[0-9:]*)" , I )
73
+ KIND_SPEC : Pattern = compile (r"[ ]*([*]?\([ ]*[\w *:]|\*[ ]*[0-9:]*)" , I )
75
74
KEYWORD_LIST : Pattern = compile (
76
75
r"[ ]*,[ ]*(PUBLIC|PRIVATE|ALLOCATABLE|"
77
76
r"POINTER|TARGET|DIMENSION[ ]*\(|"
@@ -82,22 +81,22 @@ class FortranRegularExpressions:
82
81
)
83
82
PARAMETER_VAL : Pattern = compile (r"\w*[\s\&]*=[\s\&]*([\w\.\*\-\+\\\'\"]*)" , I )
84
83
TATTR_LIST : Pattern = compile (
85
- r"[ ]*,[ ]*(PUBLIC|PRIVATE|ABSTRACT|EXTENDS\([a-z0-9_] *\))" , I
84
+ r"[ ]*,[ ]*(PUBLIC|PRIVATE|ABSTRACT|EXTENDS\(\w *\))" , I
86
85
)
87
86
VIS : Pattern = compile (r"[ ]*\b(PUBLIC|PRIVATE)\b" , I )
88
- WORD : Pattern = compile (r"[a-z_][a-z0-9_] *" , I )
87
+ WORD : Pattern = compile (r"[a-z_]\w *" , I )
89
88
NUMBER : Pattern = compile (
90
89
r"[\+\-]?(\b\d+\.?\d*|\.\d+)(_\w+|d[\+\-]?\d+|e[\+\-]?\d+(_\w+)?)?(?!\w)" ,
91
90
I ,
92
91
)
93
92
LOGICAL : Pattern = compile (r".true.|.false." , I )
94
- SUB_PAREN : Pattern = compile (r"\([a-z0-9_ , ]*\)" , I )
95
- # KIND_SPEC_MATCH: Pattern = compile(r"\([a-z0-9_ , =*]*\)", I)
93
+ SUB_PAREN : Pattern = compile (r"\([\w , ]*\)" , I )
94
+ # KIND_SPEC_MATCH: Pattern = compile(r"\([\w , =*]*\)", I)
96
95
97
96
SQ_STRING : Pattern = compile (r"\'[^\']*\'" , I )
98
97
DQ_STRING : Pattern = compile (r"\"[^\"]*\"" , I )
99
98
LINE_LABEL : Pattern = compile (r"[ ]*([0-9]+)[ ]+" , I )
100
- NON_DEF : Pattern = compile (r"[ ]*(CALL[ ]+[a-z_]|[a-z_][a-z0-9_ %]*[ ]*=)" , I )
99
+ NON_DEF : Pattern = compile (r"[ ]*(CALL[ ]+[a-z_]|[a-z_][\w %]*[ ]*=)" , I )
101
100
# Fixed format matching rules
102
101
FIXED_COMMENT : Pattern = compile (r"([!cd*])" , I )
103
102
FIXED_CONT : Pattern = compile (r"( {5}[\S])" )
@@ -110,14 +109,14 @@ class FortranRegularExpressions:
110
109
FREE_OPENMP : Pattern = compile (r"[ ]*!\$OMP" , I )
111
110
FREE_FORMAT_TEST : Pattern = compile (r"[ ]{1,4}[a-z]" , I )
112
111
# Preprocessor matching rules
113
- DEFINED : Pattern = compile (r"defined[ ]*\(?[ ]*([a-z_][a-z0-9_] *)[ ]*\)?" , I )
112
+ DEFINED : Pattern = compile (r"defined[ ]*\(?[ ]*([a-z_]\w *)[ ]*\)?" , I )
114
113
PP_REGEX : Pattern = compile (r"#(if |ifdef|ifndef|else|elif|endif)" )
115
114
PP_DEF : Pattern = compile (r"#(define|undef)[ ]*([\w]+)(\((\w+(,[ ]*)?)+\))?" , I )
116
- PP_DEF_TEST : Pattern = compile (r"(![ ]*)?defined[ ]*\([ ]*([a-z0-9_] *)[ ]*\)$" , I )
117
- PP_INCLUDE : Pattern = compile (r"#include[ ]*([\"a-z0-9_ \.]*)" , I )
115
+ PP_DEF_TEST : Pattern = compile (r"(![ ]*)?defined[ ]*\([ ]*(\w *)[ ]*\)$" , I )
116
+ PP_INCLUDE : Pattern = compile (r"#include[ ]*([\"\w \.]*)" , I )
118
117
PP_ANY : Pattern = compile (r"(^#:?\w+)" )
119
118
# Context matching rules
120
- CALL : Pattern = compile (r"[ ]*CALL[ ]+[a-z0-9_ %]*$" , I )
119
+ CALL : Pattern = compile (r"[ ]*CALL[ ]+[\w %]*$" , I )
121
120
INT_STMNT : Pattern = compile (r"^[ ]*[a-z]*$" , I )
122
121
TYPE_STMNT : Pattern = compile (r"[ ]*(TYPE|CLASS)[ ]*(IS)?[ ]*$" , I )
123
122
PROCEDURE_STMNT : Pattern = compile (r"[ ]*(PROCEDURE)[ ]*$" , I )
0 commit comments