MCPcopy Create free account
hub / github.com/numpy/numpy / expr2name

Function expr2name

numpy/f2py/crackfortran.py:3142–3176  ·  view source on GitHub ↗
(a, block, args=[])

Source from the content-addressed store, hash-verified

3140
3141
3142def expr2name(a, block, args=[]):
3143 orig_a = a
3144 a_is_expr = not analyzeargs_re_1.match(a)
3145 if a_is_expr: # `a` is an expression
3146 implicitrules, attrrules = buildimplicitrules(block)
3147 at = determineexprtype(a, block['vars'], implicitrules)
3148 na = 'e_'
3149 for c in a:
3150 c = c.lower()
3151 if c not in string.ascii_lowercase + string.digits:
3152 c = '_'
3153 na = na + c
3154 if na[-1] == '_':
3155 na = na + 'e'
3156 else:
3157 na = na + '_e'
3158 a = na
3159 while a in block['vars'] or a in block['args']:
3160 a = a + 'r'
3161 if a in args:
3162 k = 1
3163 while a + str(k) in args:
3164 k = k + 1
3165 a = a + str(k)
3166 if a_is_expr:
3167 block['vars'][a] = at
3168 else:
3169 if a not in block['vars']:
3170 if orig_a in block['vars']:
3171 block['vars'][a] = block['vars'][orig_a]
3172 else:
3173 block['vars'][a] = {}
3174 if 'externals' in block and orig_a in block['externals'] + block['interfaced']:
3175 block['vars'][a] = setattrspec(block['vars'][a], 'external')
3176 return a
3177
3178
3179def analyzeargs(block):

Callers 2

analyzeargsFunction · 0.85
crack2fortrangenFunction · 0.85

Calls 4

buildimplicitrulesFunction · 0.85
determineexprtypeFunction · 0.85
setattrspecFunction · 0.85
lowerMethod · 0.80

Tested by

no test coverage detected