"beza1e1" <[EMAIL PROTECTED]> wrote: > I have such a statement as string: "distance = x**2 + y**2" > x and y are undefined, so it is no executable Python code, but it is > parseable. Now i'd like traverse through the AST and change Name('x') > for the value i have elsewhere. And finally let Python resolve the > computation.
you can use the parser class for this purpose: http://www.effbot.org/librarybook/parser.htm instead of manipulating the parse tree, you can use the AST to identify the variables, create a dictionary with the current values, and use exec or eval to evaluate it. or you can use a regular expression to dig out all variable names. or you can compile the expression and analyze the code object to find the variable names, and use the dictionary/exec approach: >>> expr = compile("distance = x**2 + y**2", "", "exec") >>> expr.co_varnames ('distance',) >>> list(set(expr.co_names) - set(expr.co_varnames)) ['y', 'x'] >>> context = {"x": 10, "y": 20} >>> exec expr in context >>> context["distance"] 500 (the regular expression approach is probably the only one that's guaranteed to work on all python implementations) </F> -- http://mail.python.org/mailman/listinfo/python-list