Perlito Perl6

Flávio S. Glock
Publicado em 01/09/2010

Perlito Perl6

Perl 6 é uma especificação de linguagem escrita e avaliada pela própria comunidade ao longo da última década. A medida que as pessoas envolvidas foram concordando com os principais aspectos dessa especificação, algumas implementações começaram a surgir, ajudando a comunidade a testar funcionalidades e verificar o que de fato era prático e o que deveria ser repensado.

Nos últimos meses, a atenção do mundo voltou-se para o Rakudo Star, uma implementação útil e usável do Perl 6. Mas o poderoso Rakudo está longe de ser o único compilador Perl 6 por aí...

No artigo de hoje, vamos chamar sua atenção para outra implementação muito interessante, o Perlito, também conhecido como MiniPerl6.

O que o Perlito tem de especial?

Ao contrário de implementações mais robustas - e mais lentas - como o Rakudo, o Perlito não implementa todos os detalhes do Perl 6. Pelo contrário, a ideia do projeto é oferecer apenas um "subconjunto útil" da linguagem, em um compilador pequeno e eficiente.

Como resultado, o Perlito gera programas relativamente rápidos, e pode ser utilizado como linguagem para bootstrapping, ou como uma implementação ideal para seus primeiros passos em Perl 6.

Outra característica marcante do Perlito é que seu programa em Perl 6 pode ser compilado para a linguagem de sua escolha, seja Perl 5, Python, Ruby, Lisp, Go, ou várias outras opções. De fato, um dos backends mais interessantes do Perlito é em JavaScript, e permite que você programe em Perl 6 diretamente de seu navegador web - até por smartphones!

Perl6 em Javascript - Perlito no browser

Esta página carregou a versão para Javascript do Perlito. Para utilizá-la, clique no botão "Execute" abaixo de cada exemplo.

É possível editar os exemplos, experimente. Você certamente encontrará erros do compilador - este é um trabalho em desenvolvimento, e a implementação ainda tem alguns problemas.

Exemplo: interpolação de string, comando "say"



Exemplo: comando "for", estruturas de dados



Exemplo: gramática e objeto "Match"



Perl6 em Perl5 - Perlito no CPAN

A distribuição do Perlito no CPAN se chama "v6". Para instalar:

	cpan install v6




Com v6.pm instalado, é possível executar scripts com o perl 5 que você tem no seu computador:

	#!/usr/local/bin/perl
	use v6-perlito;

	"hello, world".say;




Perlito shell

A distribuição "v6" inclui o script "perlito", que permite a execução interativa:

	perlito
	>
	> my @v
	> @v = 1..4
	> say @v.perl
	[1, 2, 3, 4]
	> for @v { say "hello, $_" }
	hello, 1
	hello, 2
	hello, 3
	hello, 4

Funcionamento do compilador

O compilador consiste de uma gramática, como a que vimos no exemplo acima, que descreve as diversas estruturas da linguagem Perl 6. O resultado da gramática é um objeto que contém a "árvore de sintaxe abstrata" (AST) do script. A árvore de sintaxe é então percorrida por um gerador de código, que escreve o programa executável.

Exemplo: clique no botão para ver a árvore de sintaxe



Exemplo: clique no botão para gerar a árvore de sintaxe deste script



A arquitetura do compilador Perlito é derivada do compilador "MiniPerl6", desenvolvido em 2006. O desenho abaixo mostra a relação entre os diversos componentes do MiniPerl6. O Perlito acrescenta a esta estrutura um parser de precedência.

Desenvolvimento do Perlito

O compilador Perlito é a ferramenta que traduz o seu script para um formato em que possa ser executado: Javascript, Perl5, Python, Ruby, Lisp, ou binário ".exe", "elf" ou ".class".

A versão completa do compilador está disponível no site github: http://github.com/fglock/Perlito

As versões estáveis estão disponíveis em http://github.com/fglock/Perlito/downloads

Distribuições

v6.pm "Perl6 em Perl5" disponível no CPAN: http://search.cpan.org/dist/v6

Perlito em Javascript: disponível em http://perlcabal.org/~fglock/perlito.js. Esta é a versão utilizada nos exemplos deste artigo.

AUTOR

Flávio S. Glock <fglock@gmail.com>

blog comments powered by Disqus