fortls failes on variable declarations like 'REAL * 8' where there is a space between the * and the kind specifier Adding a [ ]* to the \*[0-9:] alternative in `[ ]*([*]?\([ ]*[a-z0-9_*:]|\*[0-9:]*)` yields: `KIND_SPEC_REGEX = re.compile(r'[ ]*([*]?\([ ]*[a-z0-9_*:]|\*[ ]*[0-9:]*)', re.I)` which matches '* 8'. However this match is longer than 2 so in addition in parse_fortran.py line 326 in routine read_var_def one has to replace kind_str = kind_match.group(1).strip() with kind_str = kind_match.group(1).replace(' ','') which then finally yield '*8' which can be processed by the rest of the routine