[Cascavel-pm] Perl6 bootstrap

Flavio S. Glock fglock em gmail.com
Quarta Março 8 10:38:21 PST 2006


Gabriel:

Pois é, o Larry Wall estava me perguntando porque eu não utilizei o
PGE, que é um programa que já está bem adiantado - mas depois ele
admitiu que se o PGE usasse o meu método já teria feito bootstrap :)

O processo é o seguinte:
- compilador super-básico, capaz de pegar um texto simples e gerar uma
árvore de sintaxe (array de hashes, etc)
- um programa também super simplificado para emitir código compilado.
Por exemplo, ele tem coisas assim: print "print \"\\n\";";
* o motivo do "super básico" é que o próprio programa compilador
precisa ser _muito_ fácil de compilar
- como o perl6 é uma linguagem dinâmica, foi implementada uma
estrutura em que a sintaxe pode ficar em um array, que pode ser
modificado a qualquer hora.
- com estas coisas no lugar, foi implementada a linguagem de "rules"
do perl6, que corresponde aos regex do perl5
- com o pouco que havia sido implementado da linguagem, foram
acrescentados novos comandos.
- a partir de um certo ponto, já podiam ser acrescentados novos
comandos escritos em puro perl6
- neste ponto é feito o bootstrap: o compilador foi reescrito em perl6
e compilado usando ele mesmo. O resultado (chamado de "state") foi
gravado em um arquivo.
- uma parte do programa original foi apagada, e substituída pelo "state"
- assim, progressivamente, o programa original em perl5 foi sendo
substituído por perl6

Ainda há várias coisas que continuam em perl5, porque não são
prioritárias (carga de módulos, mensagens de erro) - o processo de
conversão total deve ainda demorar um tempo.

- Flavio S. Glock

Em 08/03/06, Gabriel Vieira<gabriel.vieira em gmail.com> escreveu:
> Parabéns!
>
> Fico besta em pensar na linguagem sendo compilada por ela mesma. Ficava
> pensando onde o C arrumara 'suporte' pra se auto interpretar oO.
> Onde foi que descobriu essa maneira?


Mais detalhes sobre a lista de discussão Cascavel-pm