diff options
author | Pearu Peterson <pearu.peterson@gmail.com> | 2006-10-24 21:51:42 +0000 |
---|---|---|
committer | Pearu Peterson <pearu.peterson@gmail.com> | 2006-10-24 21:51:42 +0000 |
commit | 1e25ae2b885ed6cd5b087f013bd3c61d4c80a1e4 (patch) | |
tree | a8bfb666f36a9bab0c07c88b694cb32cbc50792c /numpy/f2py/lib/parser/pattern_tools.py | |
parent | ef8c2a7e22edf179beda65d13c3a35ffc3e90c2a (diff) | |
download | numpy-1e25ae2b885ed6cd5b087f013bd3c61d4c80a1e4.tar.gz |
F2PY G3: finished Fortran expression parser implementation, comes with complete unittests.
Diffstat (limited to 'numpy/f2py/lib/parser/pattern_tools.py')
-rw-r--r-- | numpy/f2py/lib/parser/pattern_tools.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/numpy/f2py/lib/parser/pattern_tools.py b/numpy/f2py/lib/parser/pattern_tools.py index 156a8f574..c95e7e1e3 100644 --- a/numpy/f2py/lib/parser/pattern_tools.py +++ b/numpy/f2py/lib/parser/pattern_tools.py @@ -82,7 +82,7 @@ class Pattern: if len(t) < 3: return rhs = t[-1].strip() pattern_match = t[-2].strip() - assert abs(self).match(pattern_match),`pattern_match` + assert abs(self).match(pattern_match),`self,string,t,pattern_match` lhs = (''.join(t[:-2])).strip() return lhs, pattern_match, rhs @@ -248,13 +248,13 @@ char_constant = char_literal_constant | named_constant power_op = Pattern('<power-op>','[*]{2}') mult_op = Pattern('<mult-op>','[*/]') -add_op = Pattern('<add-op>','[+-]') -concat_op = Pattern('<concat-op>','[/]{}') -rel_op = Pattern('<rel-op>','([.](EQ|NE|LT|LE|GT|GE)[.])|[=]{2}|/[=]|[<]|[<][=]|[>]|[=][>]',flags=re.I) +add_op = Pattern('<add-op>',r'[+-]') +concat_op = Pattern('<concat-op>',r'[/]{2}') +rel_op = Pattern('<rel-op>','[.]EQ[.]|[.]NE[.]|[.]LT[.]|[.]LE[.]|[.]GT[.]|[.]GE[.]|[=]{2}|/[=]|[<][=]|[<]|[>][=]|[>]',flags=re.I) not_op = Pattern('<not-op>','[.]NOT[.]',flags=re.I) and_op = Pattern('<and-op>','[.]AND[.]',flags=re.I) or_op = Pattern('<or-op>','[.]OR[.]',flags=re.I) -equiv_op = Pattern('<equiv-op>','[.](EQV|NEQV)[.]',flags=re.I) +equiv_op = Pattern('<equiv-op>','[.]EQV[.]|[.]NEQV[.]',flags=re.I) percent_op = Pattern('<percent-op>',r'%',flags=re.I) intrinsic_operator = power_op | mult_op | add_op | concat_op | rel_op | not_op | and_op | or_op | equiv_op extended_intrinsic_operator = intrinsic_operator @@ -263,6 +263,8 @@ defined_unary_op = Pattern('<defined-unary-op>','[.][A-Z]+[.]',flags=re.I) defined_binary_op = Pattern('<defined-binary-op>','[.][A-Z]+[.]',flags=re.I) defined_operator = defined_unary_op | defined_binary_op | extended_intrinsic_operator +non_defined_binary_op = intrinsic_operator | logical_literal_constant + label = Pattern('<label>','\d{1,5}') abs_label = abs(label) |