[svn:parrot] r44731 - branches/ops_pct/compilers/opsc/src/Ops

cotto at svn.parrot.org cotto at svn.parrot.org
Sun Mar 7 08:26:07 UTC 2010


Author: cotto
Date: Sun Mar  7 08:26:06 2010
New Revision: 44731
URL: https://trac.parrot.org/parrot/changeset/44731

Log:
[opsc] regex correctness fixes in _substitute

Modified:
   branches/ops_pct/compilers/opsc/src/Ops/Op.pm

Modified: branches/ops_pct/compilers/opsc/src/Ops/Op.pm
==============================================================================
--- branches/ops_pct/compilers/opsc/src/Ops/Op.pm	Sun Mar  7 08:25:53 2010	(r44730)
+++ branches/ops_pct/compilers/opsc/src/Ops/Op.pm	Sun Mar  7 08:26:06 2010	(r44731)
@@ -225,42 +225,39 @@
         -> $m { $trans.access_arg( self.arg_type(+$m<op_num> - 1), +$m<op_num>) }
     );
 
-    #XXX: the following substitutions need to be rewritten to exclude nested expressions 
-    # e.g. {{={{=0}},=foo}}
-
     #s/{{=0,=([^{]*?)}}/   $trans->restart_address($1) . "; {{=0}}"; /me;
     $str := subst($str,
-        /'{{=0,=' $<addr>=[.*?] '}}'/,
+        /'{{=0,=' $<addr>=[<-[{]>*?] '}}'/,
         -> $m { $trans.restart_address($m<addr>) ~ '; {{=0}}' }
     );
 
     #s/{{=0,\+=([^{]*?)}}/ $trans->restart_offset($1)  . "; {{=0}}"; /me;
     $str := subst($str,
-        /'{{=0,+=' $<offset>=[.*?] '}}'/,
+        /'{{=0,+=' $<offset>=[<-[{]>*?] '}}'/,
         -> $m { $trans.restart_offset($m<offset>) ~ '; {{=0}}' }
     );
 
     #s/{{=0,-=([^{]*?)}}/  $trans->restart_offset(-$1) . "; {{=0}}"; /me;
     $str := subst($str,
-        /'{{=0,-=' $<offset>=[.*?] '}}'/,
+        /'{{=0,-=' $<offset>=[<-[{]>*?] '}}'/,
         -> $m { $trans.restart_offset( '-' ~ $m<offset>) ~ '; {{=0}}' }
     );
 
     #s/{{=([^*][^{]*?)}}/  $trans->goto_address($1); /me;
     $str := subst($str,
-        /'{{=' $<addr>=[.*?] '}}'/,
+        /'{{=' $<addr>=[<-[{]>*?] '}}'/,
         -> $m { $trans.goto_address($m<addr>) }
     );
 
     #s/{{\+=([^{]*?)}}/    $trans->goto_offset($1);  /me;
     $str := subst($str,
-        /'{{+=' $<offset>=[.*?] '}}'/,
+        /'{{+=' $<offset>=[<-[{]>*?] '}}'/,
         -> $m { $trans.goto_offset($m<offset>) }
     );
 
     #s/{{-=([^{]*?)}}/     $trans->goto_offset(-$1); /me;
     $str := subst($str,
-        /'{{-=' $<offset>=[.*?] '}}'/,
+        /'{{-=' $<offset>=[<-[{]>*?] '}}'/,
         -> $m { $trans.goto_offset( '-' ~ $m<offset>) }
     );
 
@@ -272,19 +269,19 @@
 
     #s/{{\^\+([^{]*?)}}/   $trans->expr_offset($1);  /me;
     $str := subst($str,
-        /'{{^+' $<offset>=[.*?] '}}'/,
+        /'{{^+' $<offset>=[<-[{]>*?] '}}'/,
         -> $m { $trans.expr_offset($m<offset>) }
     );
 
     #s/{{\^-([^{]*?)}}/    $trans->expr_offset(-$1); /me;
     $str := subst($str,
-        /'{{^-' $<offset>=[.*?] '}}'/,
+        /'{{^-' $<offset>=[<-[{]>*?] '}}'/,
         -> $m { $trans.expr_offset( '-' ~ $m<offset>) }
     );
 
     #s/{{\^([^{]*?)}}/     $trans->expr_address($1); /me;
     $str := subst($str,
-        /'{{^' $<addr>=[.*?] '}}'/,
+        /'{{^' $<addr>=[<-[{]>*?] '}}'/,
         -> $m { $trans.expr_address($m<addr>) }
     );
 


More information about the parrot-commits mailing list