Author: coke
Date: Wed Mar 22 08:10:35 2006
New Revision: 11985

Modified:
   trunk/languages/APL/lib/APL.g
   trunk/languages/APL/lib/APLGrammar.pir
   trunk/languages/APL/lib/APLOpLookup.pir
   trunk/languages/APL/lib/PAST/Node.pir
   trunk/languages/APL/lib/PAST/Op.pir
   trunk/languages/APL/lib/PAST/Val.pir
   trunk/languages/APL/lib/POST/Node.pir
   trunk/languages/APL/lib/POST/Op.pir
   trunk/languages/APL/lib/POST/Val.pir
   trunk/languages/APL/lib/POST/Var.pir
   trunk/languages/APL/lib/past2post.g
   trunk/languages/APL/lib/pge2past.g

Log:
[APL]
~ remove some unused grammar bits
~ remove Perl* PMCs.
~ use "new .Foo" syntax.



Modified: trunk/languages/APL/lib/APL.g
==============================================================================
--- trunk/languages/APL/lib/APL.g       (original)
+++ trunk/languages/APL/lib/APL.g       Wed Mar 22 08:10:35 2006
@@ -2,15 +2,18 @@
 
 rule prog    { ^<APLGrammar::lineseq>$ }
 
-rule lineseq { \s*<APLGrammar::line>*\s* }
+rule lineseq { \s* <APLGrammar::line>* \s* }
 
 rule line    { [ <APLGrammar::expr> ] \s* }
 
 rule word { \w[\w|\d]* }
 
-rule expr    { <APLGrammar::gprint> | <APLGrammar::cexpr> }
+rule expr    {
+    <APLGrammar::gprint>
+  | <APLGrammar::cexpr> 
+}
 
-rule gprint  { (print) \s* <APLGrammar::expr> }
+rule gprint  { (print) \s+ <APLGrammar::expr> }
 
 rule cexpr {
     <APLGrammar::oexpr> \s* [, \s* <APLGrammar::oexpr>]*
@@ -23,9 +26,16 @@
     | <APLGrammar::stringsingle>
 }
 
+rule variable {
+  <[A..Z]>+
+}
+
+rule newterm {
+    [ <APLGrammar::scalar> \s+ ] * <APLGrammar::scalar>   # scalar/vector
+  | <APLGrammar::variable>
+}
+
 rule integer { \d+ }
-rule number { \d+\.\d+ }
+rule number  { \d+ \. \d+ }
 rule stringdouble { " [ "" | <-["]> ]* " }
 rule stringsingle { ' [ '' | <-[']> ]* ' }
-
-

Modified: trunk/languages/APL/lib/APLGrammar.pir
==============================================================================
--- trunk/languages/APL/lib/APLGrammar.pir      (original)
+++ trunk/languages/APL/lib/APLGrammar.pir      Wed Mar 22 08:10:35 2006
@@ -10,8 +10,9 @@
       .local pmc match
       .local string source
  
-      # Perl 1 source code
-      source = 'print 1;'
+      # APL source code
+      # Assign a 2 element vector to a variable..
+      source = 'FOO ← 1  2'
 
       # Retrieve the start rule
       start_rule = find_global 'APLGrammar', 'prog'
@@ -26,13 +27,10 @@
 
 =head1 DESCRIPTION
 
-This is a grammar to parse Perl 1 programs. It inherits the behavior
+This is a grammar to parse APL programs. It inherits the behavior
 of the PGE::Rule class. It parses a string of source code according to
 its hierarchy of rules and returns a PGE::Match object (a parse tree).
 
-Currently, all it can parse is a single statement printing a single
-digit, in the form of 'print 1;'.
-
 =cut
 
 .namespace [ 'APLGrammar' ]

Modified: trunk/languages/APL/lib/APLOpLookup.pir
==============================================================================
--- trunk/languages/APL/lib/APLOpLookup.pir     (original)
+++ trunk/languages/APL/lib/APLOpLookup.pir     Wed Mar 22 08:10:35 2006
@@ -65,7 +65,7 @@
     .param pmc lookuptable
     .param string key
     .param string value
-    $P1 = new PerlString
+    $P1 = new .String
     $P1 = value
     lookuptable[ key ] = $P1
 .end

Modified: trunk/languages/APL/lib/PAST/Node.pir
==============================================================================
--- trunk/languages/APL/lib/PAST/Node.pir       (original)
+++ trunk/languages/APL/lib/PAST/Node.pir       Wed Mar 22 08:10:35 2006
@@ -21,9 +21,9 @@
 
 
 .sub __init :method
-    $P1 = new PerlUndef
-    $P2 = new Integer
-    $P3 = new PerlUndef
+    $P1 = new .Undef
+    $P2 = new .Integer
+    $P3 = new .Undef
 
     setattribute self, "source", $P1
     setattribute self, "pos", $P2
@@ -116,7 +116,7 @@
     unless $I0 goto no_children
     print "\n"
     .local pmc iter
-    iter = new Iterator, $P3 # loop over the array
+    iter = new .Iterator, $P3 # loop over the array
     iter = 0 # start at the beginning
   loop_start:
     unless iter goto loop_end

Modified: trunk/languages/APL/lib/PAST/Op.pir
==============================================================================
--- trunk/languages/APL/lib/PAST/Op.pir (original)
+++ trunk/languages/APL/lib/PAST/Op.pir Wed Mar 22 08:10:35 2006
@@ -29,7 +29,7 @@
     $P1 = source
     $P2 = getattribute self, "pos"
     $P2 = pos
-    $P3 = new PerlString
+    $P3 = new .String
     $P3 = op
     setattribute self, "op", $P3
     unless got_children goto no_children

Modified: trunk/languages/APL/lib/PAST/Val.pir
==============================================================================
--- trunk/languages/APL/lib/PAST/Val.pir        (original)
+++ trunk/languages/APL/lib/PAST/Val.pir        Wed Mar 22 08:10:35 2006
@@ -27,7 +27,7 @@
     $P1 = source
     $P2 = getattribute self, "pos"
     $P2 = pos
-    $P3 = new PerlString
+    $P3 = new .String
     $P3 = value
     setattribute self, "value", $P3
     .return ()
@@ -65,7 +65,7 @@
     .param string valtype :optional
     unless valtype goto get
   set:
-    $P1 = new PerlString
+    $P1 = new .String
     $P1 = valtype
     setattribute self, "valtype", $P1
     .return ($P1)

Modified: trunk/languages/APL/lib/POST/Node.pir
==============================================================================
--- trunk/languages/APL/lib/POST/Node.pir       (original)
+++ trunk/languages/APL/lib/POST/Node.pir       Wed Mar 22 08:10:35 2006
@@ -21,9 +21,9 @@
 
 
 .sub __init :method
-    $P1 = new PerlUndef
-    $P2 = new Integer
-    $P3 = new PerlUndef
+    $P1 = new .Undef
+    $P2 = new .Integer
+    $P3 = new .Undef
 
     setattribute self, "source", $P1
     setattribute self, "pos", $P2
@@ -117,7 +117,7 @@
     unless $I0 goto no_children
     print "\n"
     .local pmc iter
-    iter = new Iterator, $P3 # loop over the array
+    iter = new .Iterator, $P3 # loop over the array
     iter = 0 # start at the beginning
   loop_start:
     unless iter goto loop_end

Modified: trunk/languages/APL/lib/POST/Op.pir
==============================================================================
--- trunk/languages/APL/lib/POST/Op.pir (original)
+++ trunk/languages/APL/lib/POST/Op.pir Wed Mar 22 08:10:35 2006
@@ -29,7 +29,7 @@
     $P1 = source
     $P2 = getattribute self, "pos"
     $P2 = pos
-    $P3 = new PerlString
+    $P3 = new .String
     $P3 = op
     setattribute self, "op", $P3
     unless got_children goto no_children

Modified: trunk/languages/APL/lib/POST/Val.pir
==============================================================================
--- trunk/languages/APL/lib/POST/Val.pir        (original)
+++ trunk/languages/APL/lib/POST/Val.pir        Wed Mar 22 08:10:35 2006
@@ -27,7 +27,7 @@
     $P1 = source
     $P2 = getattribute self, "pos"
     $P2 = pos
-    $P3 = new PerlString
+    $P3 = new .String
     $P3 = value
     setattribute self, "value", $P3
     .return ()
@@ -66,7 +66,7 @@
     .param int got_valtype :opt_flag
     unless got_valtype goto get
   set:
-    $P1 = new PerlString
+    $P1 = new .String
     $P1 = valtype
     setattribute self, "valtype", $P1
     .return ($P1)

Modified: trunk/languages/APL/lib/POST/Var.pir
==============================================================================
--- trunk/languages/APL/lib/POST/Var.pir        (original)
+++ trunk/languages/APL/lib/POST/Var.pir        Wed Mar 22 08:10:35 2006
@@ -30,7 +30,7 @@
     $P2 = pos
 
     unless got_varname goto no_varname
-      $P3 = new PerlString
+      $P3 = new .String
       $P3 = varname
       setattribute self, "varname", $P3
     no_varname:
@@ -49,11 +49,11 @@
     self.set_node(nodesource,nodepos)
     self.new_temp()
     # Then we create a child array for a fabricated op to create a new
-    # pmc of type 'PerlUndef'. It has 2 arguments: the temp variable and
+    # pmc of type 'Undef'. It has 2 arguments: the temp variable and
     # the type.
-    $P5 = new PerlArray
+    $P5 = new .ResizablePMCArray
     push $P5, self
-    $I1 = find_type 'PerlUndef'
+    $I1 = find_type 'Undef'
     $S10 = $I1
     $P6 = new 'POST::Val'
     $P6.set_node(nodesource,nodepos,$S10)
@@ -70,7 +70,7 @@
     .param int got_varname :opt_flag
     unless got_varname goto get
   set:
-    $P1 = new PerlString
+    $P1 = new .String
     $P1 = varname
     setattribute self, "varname", $P1
     .return ($P1)

Modified: trunk/languages/APL/lib/past2post.g
==============================================================================
--- trunk/languages/APL/lib/past2post.g (original)
+++ trunk/languages/APL/lib/past2post.g Wed Mar 22 08:10:35 2006
@@ -1,6 +1,6 @@
 ROOT: result(.) = {
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
     $P1 = node.children()
     .local pmc iter
     iter = new Iterator, $P1    # setup iterator for node
@@ -21,7 +21,7 @@
 
 PAST::Stmts: result(.) = {
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
     $P1 = node.children()
     .local pmc iter
     iter = new Iterator, $P1    # setup iterator for node
@@ -73,9 +73,9 @@
     # Iterate through the children of the node, and generate the result
     # for each child.
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
     .local pmc newops
-    newops = new PerlArray
+    newops = new .ResizablePMCArray
     $P1 = node.children()
     .local pmc iter
     iter = new Iterator, $P1    # setup iterator for node
@@ -141,9 +141,9 @@
     nodesource = node.source()
     nodepos = node.pos()
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
     .local pmc newops
-    newops = new PerlArray
+    newops = new .ResizablePMCArray
     $P1 = node.children()
     .local pmc iter
     iter = new Iterator, $P1    # setup iterator for node
@@ -164,7 +164,7 @@
         push newops, $P5
         push newchildren, $P4
         # Assign the value node to the variable
-        $P6 = new PerlArray
+        $P6 = new .ResizablePMCArray
         push $P6, $P4 # the first argument is the variable
         push $P6, $P3 # the second argument is the value
         $P7 = new 'POST::Op'
@@ -231,9 +231,9 @@
     # Iterate through the children of the node, and generate the result
     # for each child.
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
     .local pmc newops
-    newops = new PerlArray
+    newops = new .ResizablePMCArray
     .local pmc iter
     iter = new Iterator, $P1    # setup iterator for node
     iter = 0
@@ -242,7 +242,7 @@
       shift $P2, iter
       $P3 = tree.get('result', $P2)
       $S1 = typeof $P3
-      $P4 = new PerlArray
+      $P4 = new .ResizablePMCArray
       $P5 = new 'POST::Op'
       $S1 = typeof $P3
       if $S1 == 'POST::Ops' goto complex_result # the argument has setup

Modified: trunk/languages/APL/lib/pge2past.g
==============================================================================
--- trunk/languages/APL/lib/pge2past.g  (original)
+++ trunk/languages/APL/lib/pge2past.g  Wed Mar 22 08:10:35 2006
@@ -13,24 +13,9 @@
     end
 }
 
-APLGrammar::block: result(.) = {
-    # Ask the child node for its result
-    .local pmc child
-    $I0 = defined node["APLGrammar::lineseq"]
-    unless $I0 goto err_no_tree
-    $P0 = node["APLGrammar::lineseq"]
-    child = tree.get('result', $P0, 'APLGrammar::lineseq')
-
-    .return (child)
-
-  err_no_tree:
-    print "The block node doesn't contain an 'lineseq' match.\n"
-    end
-}
-
 APLGrammar::lineseq: result(.) = {
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
     # Ask the child node for its result
     .local pmc child
     $I0 = defined node["APLGrammar::line"]
@@ -38,7 +23,7 @@
     $P0 = node["APLGrammar::line"]
 
     .local pmc iter
-    iter = new Iterator, $P0    # setup iterator for node
+    iter = new .Iterator, $P0    # setup iterator for node
     iter = 0
   iter_loop:
     unless iter, iter_end         # while (entries) ...
@@ -62,10 +47,10 @@
 
 APLGrammar::line: result(.) = {
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
 
     .local pmc iter
-    iter = new Iterator, node    # setup iterator for node
+    iter = new .Iterator, node    # setup iterator for node
     iter = 0
   iter_loop:
     unless iter, iter_end         # while (entries) ...
@@ -91,10 +76,10 @@
 APLGrammar::expr: result(.) = {
     .local pmc result
     .local pmc children
-    children = new PerlArray
+    children = new .ResizablePMCArray
     result = new 'PAST::Exp'
     $P1 = node.get_hash()
-    $P0 = new Iterator, $P1    # setup iterator for node
+    $P0 = new .Iterator, $P1    # setup iterator for node
     set $P0, 0 # reset iterator, begin at start
   iter_loop:
     unless $P0, iter_end         # while (entries) ...
@@ -116,10 +101,10 @@
 APLGrammar::gprint: result(.) = {
     .local pmc result
     .local pmc children
-    children = new PerlArray
+    children = new .ResizablePMCArray
     result = new 'PAST::Op'
     $P1 = node.get_hash()
-    $P0 = new Iterator, $P1    # setup iterator for node
+    $P0 = new .Iterator, $P1    # setup iterator for node
     set $P0, 0 # reset iterator, begin at start
   iter_loop:
     unless $P0, iter_end         # while (entries) ...
@@ -139,44 +124,14 @@
     .return (result)
 }
 
-APLGrammar::cond: result(.) = {
-    .local pmc result
-    .local pmc children
-    children = new PerlArray
-    result = new 'PAST::Op'
-    $P1 = node.get_hash()
-    .local pmc iter
-    iter = new Iterator, $P1    # setup iterator for node
-    set iter, 0 # reset iterator, begin at start
-  iter_loop:
-    unless iter, iter_end         # while (entries) ...
-      shift $S2, iter             # get key for next entry
-      $P2 = iter[$S2]      # get entry at current key
-      $P3 = tree.get('result', $P2, $S2)
-      push children, $P3
-      goto iter_loop
-  iter_end:
-
-    # get the source string and position offset from start of source
-    # code for this match node
-    $S2 = node 
-    $S3 = node[0]
-    $I3 = node.from()
-    result.set_node($S2,$I3,$S3,children)
-    .return (result)
-}
-APLGrammar::label: result(.) = {
-    .return ()
-}
-
 APLGrammar::cexpr: result(.) = {
     .local pmc result
     $I0 = defined node["APLGrammar::oexpr"]
     unless $I0 goto err_no_oexpr
     $P1 = node["APLGrammar::oexpr"]
     .local pmc children
-    children = new PerlArray
-    $P0 = new Iterator, $P1    # setup iterator for node
+    children = new .ResizablePMCArray
+    $P0 = new .Iterator, $P1    # setup iterator for node
     set $P0, 0 # reset iterator, begin at start
   iter_loop:
     unless $P0, iter_end         # while (entries) ...
@@ -208,11 +163,11 @@
 
 APLGrammar::oexpr: result(.) = {
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
 
     .local pmc iter
     $P1 = node.get_hash()
-    iter = new Iterator, $P1    # setup iterator for node
+    iter = new .Iterator, $P1    # setup iterator for node
     iter = 0
   iter_loop:
     unless iter, iter_end         # while (entries) ...
@@ -342,10 +297,10 @@
     .local string type
     type = node["type"]
     .local pmc newchildren
-    newchildren = new PerlArray
+    newchildren = new .ResizablePMCArray
     $P1 = node.get_array()
     .local pmc iter
-    iter = new Iterator, $P1    # setup iterator for node
+    iter = new .Iterator, $P1    # setup iterator for node
     set iter, 0 # reset iterator, begin at start
   iter_loop:
     unless iter, iter_end         # while (entries) ...
@@ -369,9 +324,9 @@
 expr: term(.) = {
     .local pmc result
     .local pmc children
-    children = new PerlArray
+    children = new .ResizablePMCArray
     $P1 = node.get_hash()
-    $P0 = new Iterator, $P1    # setup iterator for node
+    $P0 = new .Iterator, $P1    # setup iterator for node
     set $P0, 0 # reset iterator, begin at start
   iter_loop:
     unless $P0, iter_end         # while (entries) ...

Reply via email to