On 10/11/2016 4:02 AM, Pierre-Alain Dorange wrote:

Using this function, the code is "compiled".
I do not think this function is often used and most python project
simply use the interpreter (which do a small translation into byte-code
to be faster and check syntax error before running interpretation

You seem to be confusing CPython with, for instance, simple BASIC interpreters that tokenized the code, translated keywords to function numbers, and did other 'small translations' before execution.

The CPython compiler lexes (tokenizes), ll(1) parses to a syntax tree, does some analysis and transformation of the tree, and translates it to the bytecode for an stack machine. All done using standard compiler theory.

One can even ask compile() to stop with the syntax tree and return that instead of a code object. One can then do one's own tree manipulation and even code generation.

So yes there is a way to check "syntax error" before executing code
(using compile function and exceptions) but it was not standard,
>  nor widely used...

In CPython, the built-in Python-visible compile function *is* the CPython compile function used to compile *all* python code. Leaving out interaction with the OS and initialization, one could loosely define CPython as exec(compile(open('x.py').read())).

--
Terry Jan Reedy

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

Reply via email to