summaryrefslogtreecommitdiff
path: root/numpy/f2py/lib/parser/pattern_tools.py
diff options
context:
space:
mode:
authorPearu Peterson <pearu.peterson@gmail.com>2006-10-23 11:42:09 +0000
committerPearu Peterson <pearu.peterson@gmail.com>2006-10-23 11:42:09 +0000
commit400ba83e59ef77b68c5a415daadcd1548f2e58f6 (patch)
tree61e9605a888e26ec058597589c5b2688ea846b87 /numpy/f2py/lib/parser/pattern_tools.py
parent0de69a4aa425c8f472e86f18795ba537893d292e (diff)
downloadnumpy-400ba83e59ef77b68c5a415daadcd1548f2e58f6.tar.gz
F2PY G3: Cont. implementing Fortran expression parser and unittests.
Diffstat (limited to 'numpy/f2py/lib/parser/pattern_tools.py')
-rw-r--r--numpy/f2py/lib/parser/pattern_tools.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/numpy/f2py/lib/parser/pattern_tools.py b/numpy/f2py/lib/parser/pattern_tools.py
index 4f6d8b990..0c08eab95 100644
--- a/numpy/f2py/lib/parser/pattern_tools.py
+++ b/numpy/f2py/lib/parser/pattern_tools.py
@@ -26,8 +26,8 @@ class Pattern:
p1.named(name) -> match of <p1> has name
p1.match(string) -> return string match with <p1>
p1.flags(<re.I,..>)
- p1.rsplit(..)
- p1.lsplit(..)
+ p1.rsplit(..) -> split a string from the rightmost p1 occurrence
+ p1.lsplit(..) -> split a string from the leftmost p1 occurrence
"""
_special_symbol_map = {'.': '[.]',
'*': '[*]',
@@ -253,6 +253,7 @@ 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)
+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
@@ -283,6 +284,9 @@ abs_binary_constant = abs(binary_constant)
abs_octal_constant = abs(octal_constant)
abs_hex_constant = abs(hex_constant)
+intrinsic_type_name = Pattern('<intrinsic-type-name>',r'(INTEGER|REAL|COMPLEX|LOGICAL|CHARACTER|DOUBLE\s*COMPLEX|DOUBLE\s*PRECISION|BYTE)',flags=re.I)
+abs_intrinsic_type_name = abs(intrinsic_type_name)
+
def _test():
assert name.match('a1_a')
assert abs(name).match('a1_a')