[IronPython] SourceCodeKind.Statements versus SourceCodeKind.InteractiveCode
Jeff Slutter
jslutter at reactorzero.com
Sun Dec 7 00:33:09 CET 2008
I'm working on getting an interactive script console into my
application. Information on how to do this is a bit hard to find but I
came across an app.py by Jim Hugunin showing how to do it with Silverlight.
I based my C# app around that and have something working pretty well.
I'm always using SourceCodeKind.InteractiveCode when compiling the
source snippets and it works great. But there is a situation where it
doesn't do what I expect.
If I pass in the following string:
a = 10 + 3;
print(a);
(note: two statements, separated with a newline)
It will give me an error saying that the 'print' is an unexpected token.
If I pass in the following string:
a = 10 + 3; print(a);
It works as expected (printing out 13).
It works fine if there are multiple lines for a statement like:
if( a > 10 ):
print(a);
If I use SourceCodeKind.Statements then all of the above works just
fine, but I don't get the nice things like the automatic print of the
returned value of the statement or the "_" variable.
Is there a reason why InteractiveCode does things different like that? I
want to give a consistent interface to my users and I think they would
expect that they can give two statements at once (especially if they can
do it on the same line).
I can work around this to get what I want by building up my buffer one
line at a time and testing to see if it is a "complete" statement and
executing that, then continuing to feed in the next line, etc. But, if I
don't have to, I don't want to do that.
Any ideas?
Thanks
Jeff
More information about the Ironpython-users
mailing list