Author: pmichaud
Date: Wed May  3 21:51:44 2006
New Revision: 12495

Modified:
   trunk/languages/perl6/lib/grammar_rules.pg
   trunk/languages/perl6/lib/main.pir
   trunk/languages/perl6/lib/pge2past.tg
   trunk/languages/perl6/perl6.pir

Log:
[perl6]:
* Updated grammar with $<KEY> aliases.
* Added --dump option to perl6 compiler, dumps intermediate stages of
  compilation to standard output.


Modified: trunk/languages/perl6/lib/grammar_rules.pg
==============================================================================
--- trunk/languages/perl6/lib/grammar_rules.pg  (original)
+++ trunk/languages/perl6/lib/grammar_rules.pg  Wed May  3 21:51:44 2006
@@ -66,14 +66,14 @@
 
 rule statement_control {
     <?ws>:
-    ([if|unless]) <expression: circumfix:{ }> <block>
+    $<KEY>:=[if|unless] <expression: circumfix:{ }> <block>
         [ <?ws>: elsif <expression: circumfix{ }> <block> ]*
         [ <?ws>: else <block> ]?
 }
 
 
 rule statement_modifier {
-    <?ws> ([if|unless]) <expression: infix:;>
+    <?ws> $<KEY>:=[if|unless] <expression: infix:;>
 }
 
 

Modified: trunk/languages/perl6/lib/main.pir
==============================================================================
--- trunk/languages/perl6/lib/main.pir  (original)
+++ trunk/languages/perl6/lib/main.pir  Wed May  3 21:51:44 2006
@@ -49,6 +49,7 @@
     getopts.'notOptStop'(1)
     push getopts, 'target=s'
     push getopts, 'dump-optable'
+    push getopts, 'dump|d'
     push getopts, 'help|h'
     opts = getopts.'get_options'(args)
 
@@ -57,6 +58,9 @@
     $S0 = opts['help']
     if $S0 goto usage
 
+    .local string dump
+    dump = opts['dump']
+
     .local string target
     target = opts['target']
 
@@ -93,7 +97,7 @@
   perl6_eval:
     $I0 = find_charset 'iso-8859-1'                # XXX: Note 2006-04-14
     trans_charset stmt, $I0
-    $P0 = perl6(stmt, 'target' => target)
+    $P0 = perl6(stmt, 'target' => target, 'dump' => dump)
     if target == 'PIR' goto dump_pir
     if target goto dump_object
     $P0()

Modified: trunk/languages/perl6/lib/pge2past.tg
==============================================================================
--- trunk/languages/perl6/lib/pge2past.tg       (original)
+++ trunk/languages/perl6/lib/pge2past.tg       Wed May  3 21:51:44 2006
@@ -48,7 +48,7 @@
     modifier = $P0[0]
     thenpast = stmt
     null elsepast
-    $S0 = modifier[0]
+    $S0 = modifier['KEY']
     if $S0 != 'unless' goto stmt_modifier_1
     exchange thenpast, elsepast
   stmt_modifier_1:

Modified: trunk/languages/perl6/perl6.pir
==============================================================================
--- trunk/languages/perl6/perl6.pir     (original)
+++ trunk/languages/perl6/perl6.pir     Wed May  3 21:51:44 2006
@@ -65,9 +65,14 @@
     .param pmc code
     .param string target       :named('target') :optional
     .param int has_target      :opt_flag
+    .param int dump            :named('dump') :optional
+    .param int has_dump        :opt_flag
 
-    if has_target goto parse
+    if has_target goto set_dump
     target = 'pbc'
+  set_dump:
+    if has_dump goto parse
+    dump = 0
 
   parse:
     .local pmc parse
@@ -76,6 +81,9 @@
     match = parse(code)
 
     unless match goto return_match
+    unless dump goto parse_1
+    '_dumper'(match, 'parse')
+  parse_1:
     if target == 'parse' goto return_match
 
   build_ast:
@@ -84,6 +92,9 @@
     astgrammar = new 'Perl6::PAST::Grammar'
     astbuilder = astgrammar.apply(match)
     ast = astbuilder.get('past')
+    unless dump goto build_ast_1
+    '_dumper'(match, 'PAST')
+  build_ast_1:
     if target == 'PAST' goto return_ast
 
   build_post:
@@ -91,11 +102,17 @@
     postgrammar = new 'Perl6::POST::Grammar'
     postbuilder = postgrammar.'apply'(ast)
     post = postbuilder.get('post')
+    unless dump goto build_post_1
+    '_dumper'(match, 'POST')
+  build_post_1:
     if target == 'POST' goto return_post
 
   build_pir:
     .local string pir
     pir = post.'pir'()
+    unless dump goto build_pir_1
+    print pir
+  build_pir_1:
     if target == 'PIR' goto return_pir
 
  compile_pir:

Reply via email to