[pyar] PPPP: Parser de Python en Python Puro

Alejandro Santos listas en alejolp.com
Mie Feb 19 17:36:04 ART 2014


2014-02-19 21:10 GMT+01:00 Angel Java Lopez <ajlopez2000 en gmail.com>:
> Ah, que bueno!
>
> Bien ahi la grammar
>
> No se por que
>>>> grammarparse.splitInAlternatives(list("(A|B)|C"))
>     [['(', 'A', '|', 'B', ')'], ['C']]
>
> no puede ser
>
> [[['A'], ['B']], ['C']]
>
> o directamente
>
> [['A'], ['B'], ['C']]
>
> (si es que entendi bien)
>

Si, eso mismo. Es un metodo helper, y es cierto que hay varias formas
de hacerlo, pero esta fue la mas fácil que en su momento encontré,
despues recursivamente lo vuelvo a llamar en buildTree.

Seguramente el Parser de Grammar/Grammar se pueda mejorar (fijate que
hay un monton de codigo comentado). Esta creo que es la version numero
3 del parser de Grammar.

Este codigo comentado fue un intento de convertir la gramatica de EBNF
en BNF clasico, para poder usar literalmente los algoritmos del Libro
del Dragón[1].

[1] http://www.flickr.com/photos/alejolp/6752649715/

>
> Yo defino la gramatica directamente en codigo (JavaScript) con alguna
> especie de fluent interface
>

Uno de mis objetivos era usar literalmente el Grammar/Grammar de
CPython, así cuando eventualmente le agregan cosas nuevas al lenguaje
copio y pego el archivo y ya tengo la gramática actualizada.

> http://github.com/ajlopez/SimpleGrammar
> ej
> https://github.com/ajlopez/RuScript/blob/master/lib/parsers.js#L187
>

Excelente! Lo voy a mirar


-- 
Alejandro Santos


More information about the pyar mailing list