summaryrefslogtreecommitdiff
path: root/numpy/f2py/lib/parser/pattern_tools.py
diff options
context:
space:
mode:
authorPearu Peterson <pearu.peterson@gmail.com>2006-10-24 21:51:42 +0000
committerPearu Peterson <pearu.peterson@gmail.com>2006-10-24 21:51:42 +0000
commit1e25ae2b885ed6cd5b087f013bd3c61d4c80a1e4 (patch)
treea8bfb666f36a9bab0c07c88b694cb32cbc50792c /numpy/f2py/lib/parser/pattern_tools.py
parentef8c2a7e22edf179beda65d13c3a35ffc3e90c2a (diff)
downloadnumpy-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.py12
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)