#!/usr/bin/env python """ Defines FortranReader classes for reading Fortran codes from files and strings. FortranReader handles comments and line continuations of both fix and free format Fortran codes. ----- Permission to use, modify, and distribute this software is given under the terms of the NumPy License. See http://scipy.org. NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. Author: Pearu Peterson Created: May 2006 ----- """ __all__ = ['FortranFileReader', 'FortranStringReader', 'FortranReaderError', 'Line', 'SyntaxErrorLine', 'Comment', 'MultiLine','SyntaxErrorMultiLine', ] import re import os import sys import tempfile import traceback from cStringIO import StringIO from numpy.distutils.misc_util import yellow_text, red_text, blue_text from sourceinfo import get_source_info from splitline import String, string_replace_map, splitquote _spacedigits=' 0123456789' _cf2py_re = re.compile(r'(?P\s*)!f2py(?P.*)',re.I) _is_fix_cont = lambda line: line and len(line)>5 and line[5]!=' ' and line[:5]==5*' ' _is_f90_cont = lambda line: line and '&' in line and line.rstrip()[-1]=='&' _f90label_re = re.compile(r'\s*(?P