From d68dc546f8bb3c5054428c5bf23f016c924e1048 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed <fawzi.mohamed@fhi-berlin.mpg.de> Date: Sun, 9 Oct 2016 00:12:35 +0200 Subject: [PATCH] fixing infinite loop in frequences parsing --- parser/parser-gaussian/parser_gaussian.py | 26 ++++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/parser/parser-gaussian/parser_gaussian.py b/parser/parser-gaussian/parser_gaussian.py index ef2c1e1..ed9a932 100644 --- a/parser/parser-gaussian/parser_gaussian.py +++ b/parser/parser-gaussian/parser_gaussian.py @@ -301,20 +301,26 @@ mainFileDescription = SM( SM(r"\s+\w+=\s+(?P<hexadecapole_moment_xxyz>[-+0-9EeDd.]+)\s+\w+=\s+(?P<hexadecapole_moment_yyxz>[-+0-9EeDd.]+)\s+\w+=\s+(?P<hexadecapole_moment_zzxy>[-+0-9EeDd.]+)") ] ), - SM (name = 'Frequencies', + SM (name = 'Frequencies', sections = ['x_gaussian_section_frequencies'], - startReStr = r"\s*Frequencies --", + startReStr = r"\s*Frequencies --\s+(?:(?:[-]?[0-9]+\.\d*)\s*(?:[-]?[-0-9]+\.\d*)?\s*(?:[-]?[-0-9]+\.\d*)?)", endReStr = r"\s*- Thermochemistry -", forwardMatch = True, - repeats = True, - subFlags = SM.SubFlags.Unordered, + repeats = False, subMatchers = [ - SM(r"\s*Frequencies --\s+(?P<x_gaussian_frequency_values>([-]?[0-9]+\.\d*)\s*([-]?[-0-9]+\.\d*)?\s*([-]?[-0-9]+\.\d*)?)", repeats = True), - SM(r"\s*Red. masses --\s+(?P<x_gaussian_reduced_masses>(.+))", repeats = True), - SM(r"\s*[0-9]+\s*[0-9]+\s*(?P<x_gaussian_normal_modes>([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+))", repeats = True), - SM(r"\s*[0-9]+\s*([0-9]+)?\s*([0-9]+)?"), - ] - ), + SM (name = 'Frequencies', + startReStr = r"\s*Frequencies --\s+(?:(?:[-]?[0-9]+\.\d*)\s*(?:[-]?[-0-9]+\.\d*)?\s*(?:[-]?[-0-9]+\.\d*)?)", + forwardMatch = True, + repeats = True, + subFlags = SM.SubFlags.Unordered, + subMatchers = [ + SM(r"\s*Frequencies --\s+(?P<x_gaussian_frequency_values>([-]?[0-9]+\.\d*)\s*([-]?[-0-9]+\.\d*)?\s*([-]?[-0-9]+\.\d*)?)", repeats = True), + SM(r"\s*Red. masses --\s+(?P<x_gaussian_reduced_masses>(.+))", repeats = True), + SM(r"\s*[0-9]+\s*[0-9]+\s*(?P<x_gaussian_normal_modes>([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+)\s*([-0-9.]+))", repeats = True), + SM(r"\s*[0-9]+\s*([0-9]+)?\s*([0-9]+)?"), + ]) + ] + ), SM(name = 'Thermochemistry', sections = ['x_gaussian_section_thermochem'], startReStr = r"\s*Temperature", -- GitLab