2012-05-25 17 views
6

leggevo this page nella documentazione, e ho notato che si diceQuale generatore di parser utilizza CPython?

Questa è la grammatica completa di Python, come si legge dal generatore di parser e utilizzato per analizzare i file sorgenti Python

Tuttavia, ho difficoltà a trovare il generatore di parser che usa CPython. Quindi quale generatore di parser usa CPython? Ci sono altri generatori di parser che prenderebbero la grammatica su quella pagina senza alcuna modifica?

risposta

3

Python è open-source, in modo da poter ispezionare il codice sorgente ...

Nella directory sorgente Python è una directory "Parser" contenente "Python.asdl" con la nota

 
-- ASDL's four builtin types are identifier, int, string, object 

C'è anche un file "asdl.py" nella stessa directory ...

 
"""An implementation of the Zephyr Abstract Syntax Definition Language. 

See http://asdl.sourceforge.net/ and 
http://www.cs.princeton.edu/research/techreps/TR-554-97 

Only supports top level module decl, not view. I'm guessing that view 
is intended to support the browser and I'm not interested in the 
browser. 

Changes for Python: Add support for module versions 
""" 

Così sembra che si tratta di un generatore di parser personalizzato. I generatori di parser LALR (1) non sono così difficili da scrivere.