2009-11-14 42 views
7

¿Alguien sabe dónde existe un archivo de especificación FLEX o LEX para Python? Por ejemplo, esta es una especificación lex para el lenguaje de programación ANSI C: http://www.quut.com/c/ANSI-C-grammar-l-1998.htmlAnálisis léxico del lenguaje de programación Python

Para su información, estoy tratando de escribir código resaltado en una aplicación Cocoa. Regex no lo hará porque también quiero que el análisis gramatical doble el código y reconozca los bloques.

Respuesta

6

Lex se suele utilizar para la creación de tokens, no para el análisis completo. Los proyectos que usan flex/lex para tokenizar normalmente usan yacc/bison para el análisis real.

Es posible que desee echar un vistazo a ANTLR, una alternativa más "moderna" a lexx & yacc.

El proyecto ANTLR tiene a Github repo containing many ANTLR 4 grammars incluyendo al menos one for Python 3.

+0

¿Esto escaneará y analizará? Impresionante, he oído hablar de esto, pero no estaba seguro de lo maduro que era. Además de escupir C-Code, ¿sabes lo bien que juega con Objective-C? Cualquier opción para producir diagramas (como diagramas de ferrocarril o diagramas de máquina de estados finitos)? – pokstad

+0

Sí, ANTLR realiza el escaneo y el análisis. Ha pasado un tiempo desde la última vez que lo usé, pero recuerdo que me gustaba el hecho de que las sintaxis de escaneo y análisis eran extremadamente similares. Al parecer, incluso tiene soporte explícito para Objective-C en estos días (además de C, C++, Java, C# y Python). Nunca lo he usado, pero es posible que desee probar ANTLRWorks (http://antlr.org/works/index.html) para obtener diagramas. –

+0

¡Lo intentaré, gracias! – pokstad

3

grammar.txt es la gramática oficial, completa de Python - no directamente compatible con lex, pero debería ser capaz de darle un masaje en una forma adecuada.

+0

Lo he visto pero noté que es muy diferente de la sintaxis de Lex que he visto. No soy partidario de flex/lex, solo busco algo que funcione con un analizador gramatical. ¿Tiene alguna recomendación para un analizador léxico que use ese archivo de gramática? – pokstad

0

¿Ha considerado utilizar uno de los marcadores de código existentes, como Pygments?

+0

Eso resolvería el primer problema, pero no ayudaría mucho con las otras transformaciones. –

+0

El resaltado de código no es suficiente porque necesito producir resultados para un analizador gramatical compatible. – pokstad

Cuestiones relacionadas