2012-05-25 23 views
6

Ben belgelerinde this page okuma ve buna Python kaynak dosyaları ayrıştırmak için ayrıştırıcı jeneratör tarafından okunur ve kullanıldıkçaCPython hangi ayrıştırıcı üretecini kullanıyor?

Bu tam Python dilbilgisi, diyor fark edildi

Bununla birlikte, ayrıştırıcı üreticisi CPython'un kullandığı şeyi bulmakta zorluk çekiyorum. Peki, ayrıştırıcı jeneratörü hangi CPython kullanıyor? Herhangi bir değişiklik yapmadan o sayfada gramer alabilecek başka ayrıştırıcı jeneratörler var mı?

cevap

3

Python açık kaynak, yani kaynak kodunu inceleyebilirsiniz ... Python kaynak dizininde

not

 
-- ASDL's four builtin types are identifier, int, string, object 
ile "Python.asdl" içeren bir "Ayrıştırıcı" dizinidir

 
"""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 
""" 

Yani bir özel ayrıştırıcı jeneratör olduğu görülüyor ... Ayrıca aynı dizinde bir "asdl.py" dosyasını var. LALR (1) ayrıştırıcı jeneratörler yazmak çok zor değil.