Open sradanov opened 3 years ago
An idea of how to change re_fieldname_match:
Option 1 : let double precision
be a special case of type : re_fieldname_match = re.compile(r'(?P<type>\b(?:double precision|\w+)\b(?P<kind>\s*\(.*\))?)?\s*(?P<name>\b\w+\b)\s*(?P<shape>\(.*\))?\s*(?P<sattrs>\[.+\])?').match
Option 2 : accept only variable names without spaces but types are accepted with one space :
re_fieldname_match = re.compile(r'(?P<type>\b\w+ ?(?:\w+)?\b(?P<kind>\s*\(.*\))?)?\s*(?P<name>\b\w+\b)\s*(?P<shape>\(.*\))?\s*(?P<sattrs>\[.+\])?').match
An argument of a subroutine declared as DOUBLE PRECISION,DIMENSION(:,:),INTENT(IN):: MYVAR appears as
re_fieldname_match = re.compile( r'(?P<type>\b\w+\b(?P<kind>\s*\(.*\))?)?\s*(?P<name>\b\w+\b)\s*(?P<shape>\(.*\))?\s*(?P<sattrs>\[.+\])?').match
since everything seems to be fine until the scan_fieldarg method of the FortranDocFieldTransformer class whereprint(fieldname)
givesdouble precision myvar(,) [in]
but the method returnsprecision None double None
instead ofmyvar (,) double precision in