Perl6 boken ankom i dag. Holder meg oppdatert og opptatt.

Momas blogg for uke 9 2008.

"Perl 6 Now" boken ankom i dag.
Den vil nok holde meg opptatt en stund.
161024

Parrot VM
Jeg er også meget interessert i Parrot virtual maskin. Parrot VM er (eller vil bli) en felles utførelsesenhet for flere dynamiske språk som Perl 6, Python, PHP og Ruby. Parrot er under utvikling men det finnes allerede flere programmeringsspråk som satser på å benytte Parrot-plattformen.

Parrots webside: http://www.parrotcode.org

Parrot vil bli meget farlig konkurrent til Java VM og Microsofts .NET (CLI) utførelsesenheter.

PGE, Parser Grammar Engine:
Jeg tror at Parrot VM er opprinelig et biprodukt av Perl6-prosjektet. Syntaksen til Perl6 er tildels kompleks og man måtte vel utvikle nye verktøy for å parse grammatikken. Yacc/Bison og Lex/Flex klarer ikke alt ;-)

Parrots PGE (Parrot eller Parser Grammar Engine) er en meget avansert parsingmaskin som lar deg beskrive både leksikale delen og parsingen (syntaksanalysen) i samme fil. PGE benytter et subsett av Perl6s grammatikkregler og regulære uttrykk.

Jeg anbefaler at du laster den kildekoden til Parrot VM fra http://parrotcode.org

Du finner flere fine eksempler i languages katalogen. F.eks bla til "abc" kalkulator prosjektet og studer grammar.pg og grammar-actions.pl filene. Du finner dem i src/ katalogen.

/parrot/languages/abc/src/grammar.pg
/parrot/languages/abc/src/grammar-actions.pl

Grammar.pg er en PGE-fil som beskriver syntaksen til abc's matematiske uttrykk og funksjoner. Parrot kompilerer grammar.pg til et AST (abstrakt syntakstree).

Grammar-actions.pl beskriver hva som gjøres med nodene i AST treet. F.eks en subrutine-node skal generere kode for en subrutine og operasjoner på matematiske/boolske utrykk genereres riktig. Dette dokumentet beskriver alle tillatte operasjonene på AST: http://www.parrotcode.org/docs/pdd/pdd26_ast.html

Stort sett er det kun disse to (2) filene du må skrive. Parrots kompileringsenhet håndterer resten helt til ferdig, kjørbar PIR eller PASM-kode.

Altså hvis du utvikler et programmeringsspråk eller parsingenhet, har du mye å vinne ved å benytte Parrots PGE til parsing og kodegenerering. PGE og Parrot kan også kjøres på flere plattformer.

PIR er Parrots språkform som er nokså høynivå og lett leselig. PIR håndterer automatisk registerallokering (spilling) og lar deg benytte ekte variabelnavn i koden. PASM er et lavnivåspråk men fremdeles nokså lesbart. I PASM må du håndtere registerallokering selv.

Jeg har selv begynt å programmere i PIR og elsker det. Du bør absolutt studere eksemplene i Parrots examples/tutorial/ katalogen.

Bla til: parrot/examples/tutorial/ og parrot/examples/pir/

Lua-språket som du finner i languages/lua katalogen er et annet godt eksempel på bruken av PGE.

Men du bør vite at ikke alle språkene i languages/ katalogen benytter PGE. Noen språk, som f.eks cola-språket, benytter fremdeles Yacc og Lex og fra det genererer kjørbar PIR-kode. Selv har jeg forlatt manuell parsing vha c/c++ samt Yacc/Lex og satser mer på PGE i mine små programmeringsspråkprosjekter.

Jeg vil at du skal designe og utvikle ditt eget Parrot-VM kompatibelt programmeringsspråk. Du bør selvfølgelig gjøre leksikale delen, syntaksanalysen og semantiske analysen vha PGE.

Jeg anbefaler denne boka hvis du er interessert i Parrot.
161024

Husk at Amazon tilbyr også brukte bøker. Jeg kjøper nesten alle bøkene via Amazons brukt-lenke. F.eks denne "Perl 6 Now" boken kostet meg 8 dollar og boken er så-å-si ny. Jeg bestiller flere bøker for å minimere fraktkostnaden. Du får klar melding ved bestilling om boken (i brukt tilstand) ikke kan leveres. Ikke alt kan leveres utenfor Canada/USA.
-----------------------------------------------

Beklager for evt. syntaks -og faktafeil. Ikke skyt meg, ta redaktøren i stedet ;-)
-----------------------------------------------

Installing Parrot on Ubuntu Gutsy and Hardy is very easy
EDIT: Slik installerer du Parrot VM på Ubuntu Gutsy og Hardy:

Først, installer et par nødvendige pakker
$ sudo apt-get install build-essential subversion

Last ned kildekoden fra Parrots hjemmeside vha subversion
$ svn co https://svn.perl.org/parrot/trunk parrot

Konfigurer kildekoden
$ cd parrot
$ perl Configure.pl

Kompiler
$ make

Installer
$ sudo make install
$ sudo make reallyinstall

Oppdater cachen over dynamiske biblioteker
$ sudo ldconfig
--------------------------------------------------

Testing the examples of PIR-code
EDIT: Slik kjører du PIR-eksemplene i tutorial-katalogen.

$ cd parrot/examples
$ cd tutorial

List eksemplene
$ ls -l

Kjør eksempel 01_temp_var.pir
$ parrot 01_temp_var.pir

-----
Eller kompiler PIR kode til PASM
$ parrot -o 01_temp_var.pasm 01_temp_var.pir

Og kjør PASM kode
$ parrot 01_temp_var.pasm
-----

Eller kompiler PIR eller PASM kode til Parrot VM bytekode (.pbc).
Bytekoden har binærformat. Den utføres direkte på Parrot VM (virtuell maskin) og er følgelig meget rask. Også JIT (Just In Time kompilering) kan slå inn. Parrot rocks !

$ parrot -o 01_temp_var.pbc 01_temp_var.pir

Og kjør Parrot bytekode
$ parrot 01_temp_var.pbc
-----

Gjenta det samme for de andre eksemplene.
Åpne pir (og pasm) filene i en teksteditor og studer koden.
-----

Studer også eksemplene i parrot/examples/pir/ katalogen.
$ cd parrot/examples/pir/

  • Skriv ut artikkel
  • Abonner med RSS

Siste kommentarer