[pyar] Curiosidades del lexer de CPython

Claudio Freire klaussfreire en gmail.com
Mie Jul 25 13:20:44 ART 2012


2012/7/25 Alejandro Santos <listas en alejolp.com>:
> Lo que es LL(1) (sin la E) es el parser de Python. Como bien dijieron,
> el error lo tira el Tokenizer, etapa previa al parser. En general el
> Tokenizer es un evaluador de expresiones regulares, pero en CPython el
> tokenizer está hecho a pulmón con cada regla regular hecha a mano.
>
> El mensaje de error tiraba una ayuda: "SyntaxError: invalid token". El
> problema es la letra "e".
>
> Mi pregunta apuntaba a ver si se daban cuenta que los único keywords
> que no se le puede poner un numero literal antes sin un espacio son
> los que empiezan con "e". El unico que hay hasta ahora definido en el
> lenguaje es el "else" del if inline.
>
> El Tokenizer intenta masticar la mayor cantidad de letras, y cuando
> lee: "1else" lo entiende como un número en punto flotante como
> notacion científica. Hasta el "1e" es una expresión incompleta, la
> regla dice que tiene que leer: a) un simbolo "+", ó b) un simbolo "-",
> ó c) un dígito [0-9].

Igual, estuve mirando, no me vengan con chicanas, que el tokenizer de
python también es un parser LL(1).

:-p



More information about the pyar mailing list