Author: bernhard
Date: Sun May  4 05:44:48 2008
New Revision: 27318

Added:
   trunk/languages/plumhead/src/common/driver_nqp.pir
   trunk/languages/plumhead/src/phc/past_xml_to_past_nqp.xsl
      - copied, changed from r27316, 
/trunk/languages/plumhead/src/phc/past_xml_to_past_pir.xsl
Modified:
   trunk/   (props changed)
   trunk/MANIFEST
   trunk/MANIFEST.SKIP
   trunk/languages/plumhead/   (props changed)
   trunk/languages/plumhead/config/makefiles/root.in
   trunk/languages/plumhead/src/common/builtins.pir
   trunk/languages/plumhead/src/common/plumhead.pir
   trunk/languages/plumhead/src/phc/past_xml_to_past_pir.xsl

Log:
[Plumhead]
Start with setting up PAST in NQP for 'Plumhead PHC'.
Some tests are passing, most are failing.


Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST      (original)
+++ trunk/MANIFEST      Sun May  4 05:44:48 2008
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Sat May  3 13:24:57 2008 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sun May  4 12:40:19 2008 UT
 #
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
@@ -1981,10 +1981,12 @@
 languages/plumhead/src/antlr3/PlumheadLexer.java            [plumhead]
 languages/plumhead/src/antlr3/PlumheadParser.java           [plumhead]
 languages/plumhead/src/common/builtins.pir                  [plumhead]
+languages/plumhead/src/common/driver_nqp.pir                [plumhead]
 languages/plumhead/src/common/plumhead.pir                  [plumhead]
 languages/plumhead/src/pct/Plumhead.pg                      [plumhead]
 languages/plumhead/src/pct/Plumhead/Grammar.pir             [plumhead]
 languages/plumhead/src/pct/PlumheadPAST.tg                  [plumhead]
+languages/plumhead/src/phc/past_xml_to_past_nqp.xsl         [plumhead]
 languages/plumhead/src/phc/past_xml_to_past_pir.xsl         [plumhead]
 languages/plumhead/src/phc/phc_xml_to_past_xml.xsl          [plumhead]
 languages/plumhead/t/harness                                [plumhead]

Modified: trunk/MANIFEST.SKIP
==============================================================================
--- trunk/MANIFEST.SKIP (original)
+++ trunk/MANIFEST.SKIP Sun May  4 05:44:48 2008
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Sat May  3 13:24:57 2008 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sun May  4 12:40:19 2008 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -17,22 +17,10 @@
 # generated from svn:ignore of './'
 ^.*\.core$
 ^.*\.core/
-^.*\.def$
-^.*\.def/
 ^.*\.exe$
 ^.*\.exe/
-^.*\.exp$
-^.*\.exp/
-^.*\.ilk$
-^.*\.ilk/
-^.*\.lib$
-^.*\.lib/
-^.*\.manifest$
-^.*\.manifest/
 ^.*\.ncb$
 ^.*\.ncb/
-^.*\.obj$
-^.*\.obj/
 ^.*\.patch$
 ^.*\.patch/
 ^.*\.pdb$
@@ -45,8 +33,6 @@
 ^.*\.tmp/
 ^.*\.vcproj.*$
 ^.*\.vcproj.*/
-^\.parrot_current_rev$
-^\.parrot_current_rev/
 ^CFLAGS$
 ^CFLAGS/
 ^MANIFEST\.configure\.generated$
@@ -61,8 +47,6 @@
 ^blib/
 ^config_lib\.pasm$
 ^config_lib\.pasm/
-^cover_db$
-^cover_db/
 ^disassemble$
 ^disassemble/
 ^install_config\.fpmc$
@@ -81,8 +65,6 @@
 ^parrot/
 ^parrot\.ilk$
 ^parrot\.ilk/
-^parrot\.iss$
-^parrot\.iss/
 ^parrot\.pc$
 ^parrot\.pc/
 ^parrot\.pdb$
@@ -91,16 +73,18 @@
 ^pbc_info/
 ^pbc_merge$
 ^pbc_merge/
-^pbc_to_exe$
-^pbc_to_exe/
-^pbc_to_exe\..*$
-^pbc_to_exe\..*/
 ^pdb$
 ^pdb/
 ^pdump$
 ^pdump/
-^perl6$
-^perl6/
+^plumhead_past\.nqp$
+^plumhead_past\.nqp/
+^plumhead_past\.pir$
+^plumhead_past\.pir/
+^plumhead_past\.xml$
+^plumhead_past\.xml/
+^plumhead_phc_ast\.xml$
+^plumhead_phc_ast\.xml/
 ^smoke\.html$
 ^smoke\.html/
 ^tags$
@@ -1004,6 +988,8 @@
 # generated from svn:ignore of 'languages/plumhead/'
 ^languages/plumhead/Makefile$
 ^languages/plumhead/Makefile/
+^languages/plumhead/driver_nqp\.pbc$
+^languages/plumhead/driver_nqp\.pbc/
 ^languages/plumhead/plumhead\.log$
 ^languages/plumhead/plumhead\.log/
 ^languages/plumhead/plumhead\.pbc$

Modified: trunk/languages/plumhead/config/makefiles/root.in
==============================================================================
--- trunk/languages/plumhead/config/makefiles/root.in   (original)
+++ trunk/languages/plumhead/config/makefiles/root.in   Sun May  4 05:44:48 2008
@@ -79,7 +79,7 @@
 
 build-pct:       build-common
 
-build-phc:       build-common
+build-phc:       build-common driver_nqp.pbc
 
 build-antlr3:    build-common
        @echo 'Be sure to have set CLASSPATH as laid out in docs/antlr3.pod'
@@ -103,6 +103,9 @@
     src/pct/PlumheadPAST_gen.pir
        $(PARROT) -o plumhead.pbc src/common/plumhead.pir
 
+driver_nqp.pbc: src/common/plumheadlib.pbc src/common/driver_nqp.pir
+       $(PARROT) -o driver_nqp.pbc src/common/driver_nqp.pir
+
 test:     all test-pct
 
 test-all: all test-php test-phc test-antlr3 test-pct
@@ -130,6 +133,9 @@
 clean-antlr3:
        $(RM_F) src/antlr3/*.class
 
+clean-phc:
+       $(RM_F) driver_nqp.pbc
+
 clean-test:
        $(RM_F) t/php/*.php t/php/*.pir t/php/*.out t/pmc/*.pir
 

Modified: trunk/languages/plumhead/src/common/builtins.pir
==============================================================================
--- trunk/languages/plumhead/src/common/builtins.pir    (original)
+++ trunk/languages/plumhead/src/common/builtins.pir    Sun May  4 05:44:48 2008
@@ -1,7 +1,10 @@
 # $Id$
 
+.sub 'print_newline'
+    say ''
+.end
+
 # steal builtins from Perl6
-# TODO: put that into php_builtins.pir
 .sub 'print'
     .param pmc list            :slurpy
     .local pmc iter

Added: trunk/languages/plumhead/src/common/driver_nqp.pir
==============================================================================
--- (empty file)
+++ trunk/languages/plumhead/src/common/driver_nqp.pir  Sun May  4 05:44:48 2008
@@ -0,0 +1,74 @@
+#!/usr/bin/env parrot                                                  
+                                                                       
+.sub 'php_init' :load :init                                            
+                                                                       
+    load_bytecode 'PGE.pbc'                                            
+    load_bytecode 'PGE/Text.pbc'                                       
+    load_bytecode 'PGE/Util.pbc'                                       
+    load_bytecode 'PGE/Dumper.pbc'                                     
+    load_bytecode 'PCT.pbc'                                            
+
+    load_bytecode 'languages/plumhead/src/common/plumheadlib.pbc'      
+    load_bytecode 'MIME/Base64.pbc'                                    
+    load_bytecode 'CGI/QueryHash.pbc'                                  
+                                                                       
+.end                                                                   
+                                                                       
+                                                                       
+.sub plumhead :main                                                    
+                                                                       
+    .param pmc argv
+
+    .local string program_name, nqp_fn
+    program_name = shift argv
+    nqp_fn       = shift argv
+
+    # look for subs in other namespaces                                
+    .local pmc decode_base64_sub, parse_get_sub, parse_post_sub        
+    decode_base64_sub = get_global [ 'MIME'; 'Base64' ], 'decode_base64'  
+    parse_get_sub     = get_global [ 'CGI'; 'QueryHash' ], 'parse_get'    
+    parse_post_sub    = get_global [ 'CGI'; 'QueryHash' ], 'parse_post'   
+                                                                       
+    # the superglobals                                                 
+    .local pmc superglobal_GET                                         
+    ( superglobal_GET ) = parse_get_sub()                              
+    set_global '_GET', superglobal_GET                                 
+                                                                       
+    .local pmc superglobal_POST                                        
+    ( superglobal_POST ) = parse_post_sub()                            
+    set_global '_POST', superglobal_POST                               
+
+    # compile NQP to PIR
+    .local string pir_fn, cmd
+    .local int ret
+    clone pir_fn, nqp_fn
+    substr pir_fn, -3, 3, 'pir'
+    cmd = "./parrot ./compilers/nqp/nqp.pbc --target=pir --output="
+    concat cmd, pir_fn
+    concat cmd, " "
+    concat cmd, nqp_fn
+    # say cmd
+    ret = spawnw cmd
+
+    # load the generated PIR
+    #$S1 = concat "languages/eclectus/", pir_fn
+    $S1 = concat "", pir_fn
+    load_bytecode $S1
+
+    .local pmc stmts
+    ( stmts ) = php_entry()
+
+    # compile and evaluate the PAST returned from scheme_entry()
+    .local pmc past_compiler
+    past_compiler = new [ 'PCT::HLLCompiler' ]
+    $P0 = split ' ', 'post pir'
+    past_compiler.'stages'( $P0 )
+    $P1 = past_compiler.'eval'(stmts)
+    #_dumper ($P1)
+    $P0 = split ' ', 'evalpmc'
+    past_compiler.'stages'( $P0 )
+    past_compiler.'eval'( $P1 )
+
+.end                                                              
+                                                                  
+

Modified: trunk/languages/plumhead/src/common/plumhead.pir
==============================================================================
--- trunk/languages/plumhead/src/common/plumhead.pir    (original)
+++ trunk/languages/plumhead/src/common/plumhead.pir    Sun May  4 05:44:48 2008
@@ -141,12 +141,14 @@
     ret = spawnw cmd
     if ret goto ERROR
 
-    err_msg = 'Creating PIR with xsltproc failed'
-    cmd = 'xsltproc languages/plumhead/src/phc/past_xml_to_past_pir.xsl  
plumhead_past.xml  > plumhead_past.pir'
+    #err_msg = 'Creating PIR with xsltproc failed'
+    #cmd = 'xsltproc languages/plumhead/src/phc/past_xml_to_past_pir.xsl  
plumhead_past.xml  > plumhead_past.pir'
+    err_msg = 'Creating NQP with xsltproc failed'
+    cmd = 'xsltproc languages/plumhead/src/phc/past_xml_to_past_nqp.xsl  
plumhead_past.xml  > plumhead_past.nqp'
     ret = spawnw cmd
     if ret goto ERROR
     err_msg = 'Executing plumhead_past.pir with parrot failed'
-    cmd = './parrot plumhead_past.pir'
+    cmd = './parrot languages/plumhead/driver_nqp.pbc plumhead_past.nqp'
     ret = spawnw cmd
     if ret goto ERROR
 

Copied: trunk/languages/plumhead/src/phc/past_xml_to_past_nqp.xsl (from r27316, 
/trunk/languages/plumhead/src/phc/past_xml_to_past_pir.xsl)
==============================================================================
--- /trunk/languages/plumhead/src/phc/past_xml_to_past_pir.xsl  (original)
+++ trunk/languages/plumhead/src/phc/past_xml_to_past_nqp.xsl   Sun May  4 
05:44:48 2008
@@ -2,8 +2,7 @@
 <xsl:stylesheet 
   xmlns:past="http://www.parrotcode.org/PAST-0.1";
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
-  version="1.0"
->
+  version="1.0" >
 <!--
 
 $Id$
@@ -18,86 +17,34 @@
 <xsl:template match="/" >
 
 # Do not edit this file.                                          
-# This file has been generated by past_xml_to_past_pir.xsl
+# This file has been generated by past_xml_to_past_nqp.xsl
                                                                   
-<xsl:call-template name="php-init" />
-
-
-.sub plumhead :main                                                     
+sub php_entry () {
                                                                   
-    # look for subs in other namespaces
-    .local pmc decode_base64_sub, parse_get_sub, parse_post_sub  
-    decode_base64_sub = get_global [ "MIME"; "Base64" ], 'decode_base64'
-    parse_get_sub  = get_global [ 'CGI'; 'QueryHash' ], 'parse_get'
-    parse_post_sub = get_global [ 'CGI'; 'QueryHash' ], 'parse_post'
-    
-    # the superglobals
-    .local pmc superglobal_GET
-    ( superglobal_GET ) = parse_get_sub()
-    set_global "_GET", superglobal_GET
-
-    .local pmc superglobal_POST
-    ( superglobal_POST ) = parse_post_sub()
-    set_global "_POST", superglobal_POST
-
-    # The root node of PAST.
-    .local pmc past_node_<xsl:value-of select="generate-id(.)" />              
                                    
-    past_node_<xsl:value-of select="generate-id(.)" />  = new 'PAST::Block'
-    past_node_<xsl:value-of select="generate-id(.)" />.init('name' => 
'plumhead_main')
-
     <xsl:apply-templates />
 
-    # '_dumper'(past_node_<xsl:value-of select="generate-id(.)" />, 'past')
-    # '_dumper'(superglobal_POST , 'superglobal_POST')
-    # '_dumper'(superglobal_GET , 'superglobal_GET')
-
-    # .local pmc post
-    # post = past_node_<xsl:value-of select="generate-id(.)" />.'compile'( 
'target' => 'post' )
-    # '_dumper'(post, 'post')
-
-    # .local pmc pir
-    # pir = past_node_<xsl:value-of select="generate-id(.)" />.'compile'( 
'target' => 'pir' )
-    # print pir
+}
                                                                   
-    .local pmc past_compiler
-    past_compiler = new [ 'PCT::HLLCompiler' ]
-    $P0 = split ' ', 'post pir evalpmc'
-    past_compiler.'stages'( $P0 )
-    past_compiler.'eval'(past_node_<xsl:value-of select="generate-id(.)" />)
+</xsl:template>
 
-.end                                                              
-                                                                  
+<xsl:template match="past:Stmts" >
+  PAST::Stmts.new( 
+  <xsl:apply-templates select="@*"/>
+  <xsl:apply-templates /> );
 </xsl:template>
 
-<xsl:template match="past:Stmts | past:Op | past:Val | past:Var | past:Block" >
+<xsl:template match=" past:Op | past:Val | past:Var | past:Block" >
 
-  # start of generic node
-  .local pmc past_node_<xsl:value-of select="generate-id(.)" />                
                                  
-  past_node_<xsl:value-of select="generate-id(.)" /> = new '<xsl:choose>
+  <xsl:choose>
     <xsl:when test="name() = 'past:Block'" >PAST::Block</xsl:when>
     <xsl:when test="name() = 'past:Exp'"   >PAST::Exp</xsl:when>
     <xsl:when test="name() = 'past:Op'"    >PAST::Op</xsl:when>
     <xsl:when test="name() = 'past:Stmt'"  >PAST::Stmt</xsl:when>
-    <xsl:when test="name() = 'past:Stmts'" >PAST::Stmts</xsl:when>
     <xsl:when test="name() = 'past:Var'"   >PAST::Var</xsl:when>
-                                                            </xsl:choose>'
+    <xsl:when test="name() = 'past:Val'"   >PAST::Val</xsl:when>
+  </xsl:choose>.new( 
   <xsl:apply-templates select="@*"/>
-  <xsl:apply-templates />
-  past_node_<xsl:value-of select="generate-id(..)" />.'push'( 
past_node_<xsl:value-of select="generate-id(.)" /> )      
-  null past_node_<xsl:value-of select="generate-id(.)" />
-  # end of generic node
-
-</xsl:template>
-
-<xsl:template match="past:Val">
-
-  # start of past:Val
-  .local pmc past_node_<xsl:value-of select="generate-id(.)" />
-  past_node_<xsl:value-of select="generate-id(.)" /> = new 'PAST::Val'         
                    
-  <xsl:apply-templates select="@value"/>
-  <xsl:apply-templates select="@returns"/>
-  past_node_<xsl:value-of select="generate-id(..)" />.'push'( 
past_node_<xsl:value-of select="generate-id(.)" /> )      
-  # end of past:Val
+  <xsl:apply-templates /> ),
 
 </xsl:template>
 
@@ -105,37 +52,19 @@
 <xsl:template match="@value">
   <xsl:choose>
     <xsl:when test="../@encoding = 'base64'" >
-      .local string decoded
-      decoded = decode_base64_sub( "<xsl:value-of select="." />" )
-      past_node_<xsl:value-of select="generate-id(..)" />.'attr'( 
'<xsl:value-of select="name()" />', decoded, 1 )                              
-      null decoded
+      :<xsl:value-of select="name()" />( "\n" ),                              
     </xsl:when>
     <xsl:otherwise>
-      past_node_<xsl:value-of select="generate-id(..)" />.'attr'( 
'<xsl:value-of select="name()" />', '<xsl:value-of select="." />', 1 )          
                    
+      :<xsl:value-of select="name()" />( '<xsl:value-of select="." />' ),      
                        
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
 
-<xsl:template match="@*">
-  past_node_<xsl:value-of select="generate-id(..)" />.'attr'( '<xsl:value-of 
select="name()" />', '<xsl:value-of select="." />', 1 )                         
     
+<xsl:template match="@encoding">
 </xsl:template>
 
-<xsl:template name="php-init" >
-
-.sub 'php_init' :load :init
-
-    load_bytecode 'PGE.pbc'
-    load_bytecode 'PGE/Text.pbc'
-    load_bytecode 'PGE/Util.pbc'
-    load_bytecode 'PGE/Dumper.pbc'
-    load_bytecode 'PCT.pbc'
-    load_bytecode 'languages/plumhead/src/common/plumheadlib.pbc'
-    load_bytecode 'MIME/Base64.pbc'              
-    load_bytecode 'dumper.pbc'
-    load_bytecode 'CGI/QueryHash.pbc'
-
-.end
-
+<xsl:template match="@*">
+  :<xsl:value-of select="name()" />( '<xsl:value-of select="." />' ),          
                    
 </xsl:template>
 
 </xsl:stylesheet>

Modified: trunk/languages/plumhead/src/phc/past_xml_to_past_pir.xsl
==============================================================================
--- trunk/languages/plumhead/src/phc/past_xml_to_past_pir.xsl   (original)
+++ trunk/languages/plumhead/src/phc/past_xml_to_past_pir.xsl   Sun May  4 
05:44:48 2008
@@ -8,6 +8,8 @@
 
 $Id$
 
+This file will soon be removed, as it is being replaced by 
past_xml_to_past_nqp.xsl.
+
 This transformation takes an abstract syntax tree as generated 
 by phc_xml_to_past_xml.xsl. It generates a PIR-script that creates
 a PAST data structure and runs it with the help of a PCT::HLLCompiler.

Reply via email to