Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Pugs Apocryphon 1 out; technical questions wanted

by audreyt (Hermit)
on Feb 25, 2005 at 21:32 UTC ( [id://434659]=perlmeditation: print w/replies, xml ) Need Help??

So I'm back asking for more questions. :-)

I'd like thank to everyone who have contributed questions in the previous thread; I have sorted through all general (high-level, not-terribly-technical) questions and produced Pugs Apocryphon 1, which hopefully answers some of them.

Next month I will produce PA02, which is intended to be a technical walkthrough to the Pugs source tree and internals, including plans for future extensions like NCIs. As such, I'd like to solicit questions regarding the Pugs implementation here.

Like in the previous thread, it is okay to ask other questions -- e.g. what drug I am on (the answer is caffeine, via Diet Coke) -- and I will try to answer all of them in the coming Apocrypha documents.

Thanks!
/Autrijus/

  • Comment on Pugs Apocryphon 1 out; technical questions wanted

Replies are listed 'Best First'.
Re: Pugs Apocryphon 1 out; technical questions wanted
by Mugatu (Monk) on Feb 26, 2005 at 00:09 UTC
    I must say, this is very encouraging! I know there has been a lot of work on the Perl 6 backend, by way of Parrot, but it's nice to see some actual Perl 6 code up and running.
Re: Pugs Apocryphon 1 out; technical questions wanted
by pernod (Chaplain) on Feb 26, 2005 at 17:54 UTC

    I read the first Apocryphon and want to ask some questions that will expose my ignorance of the Perl 6 design process, and the fact that my compiler theory is somewhat rusty:

    How does Abstract Syntax Trees (AST) work? Why are they useful? Is it possible to explain these in sentences with words containing two syllables or less?

    I am so impressed by the work being done on Pugs. Keep up the good work!

    pernod
    --
    Mischief. Mayhem. Soap.

      Thanks for your words of encouragement. :) You can see a simple AST by running:
      % perl -MO=Concise -e 'print "Hello, $world!"' a <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 1 -e:1) v ->3 9 <@> print vK ->a 3 <0> pushmark s ->4 - <1> ex-stringify sK/1 ->9 - <0> ex-pushmark s ->4 8 <2> concat[t3] sKS/2 ->9 6 <2> concat[t2] sK/2 ->7 4 <$> const[PV "Hello, "] s ->5 - <1> ex-rv2sv sK/1 ->6 5 <#> gvsv[*world] s ->6 7 <$> const[PV "!"] s ->8
      Compare it with Pugs (using r317 on svn.openfoundry.org, with some indenting):
      % pugs -c -e 'print "Hello, $world!"' { Statements [( App "&prefix:print" [App "&prefix:~" [App "&infix:~" [Val (VStr "Hello, ") ,App "&infix:~" [Var "$world" ,Val (VStr "!") ] [] ] [] ] [] ] [] ,"<interactive>" (line 1, column 1) )] }

      That should give you a pretty good idea of what an AST is. :)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://434659]
Approved by Arunbear
Front-paged by stvn
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2024-04-23 07:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found