Am 05.03.16 um 22:16 schrieb Terry Reedy:
Not now. A console is a REPL + text display to read from and print to.
The actual IDLE REPL is PyShell.ModifiedInterpreter, which subclasses
stdlib code.InteractiveInterpreter.  Most of the additions are for
interacting with the subprocess that runs user code.  You should start
instead with the base class.

The Shell text display is a subclass of a subclass of a class that
contains a subclass of Toplevel with the complete IDLE Menu and a Text
widget wrapper.  Again, this is too much baggage for an application
console.

The idlelib ColorDelegator syntax highlighter can be reused with a Text
instance.  See turtledemo.__main__ for an example.  I don't know if (or
how) IDLE's autocompletion modules could be reused in their current
state.  I believe Shell's history 'list' consists of the statements in
the Text instance prefixed by the '>>> ' prompt.

Thanks! I'll try to browse my way through the source code, these details help a lot. I still haven't understood the difference between exec() and eval(). I understand that for statements you want to exec them, for expressions you eval it and print the result. When the user has entered code, how does the REPL know if it should be eval'ed or exec'ed? I assume that you don't try to parse the Python code manually to find this out? Or you try to eval(), and if it doesn't compile, you exec()?

        Christian

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to