Author: pmichaud
Date: Fri Oct 5 00:47:26 2007
New Revision: 21884
Modified:
branches/pdd15oo/compilers/pge/PGE/Exp.pir
branches/pdd15oo/compilers/pge/PGE/P6Regex.pir
branches/pdd15oo/compilers/pge/PGE/Regex.pir
Log:
[pge]:
* Getting a bit closer by turning rule subs into rule methods.
Modified: branches/pdd15oo/compilers/pge/PGE/Exp.pir
==============================================================================
--- branches/pdd15oo/compilers/pge/PGE/Exp.pir (original)
+++ branches/pdd15oo/compilers/pge/PGE/Exp.pir Fri Oct 5 00:47:26 2007
@@ -133,13 +133,13 @@
.local string returnop
returnop = '.yield'
code.emit(<<" CODE", name, .INTERPINFO_CURRENT_SUB)
- .sub '%0'
- .param pmc mob
+ .sub '%0' :method
.param pmc adverbs :slurpy :named
.const .Sub corou = '%0_corou'
+ .local pmc mob
$P0 = corou
$P0 = clone $P0
- mob = $P0(mob, adverbs)
+ mob = $P0(self, adverbs)
.return (mob)
.end
.sub '%0_corou'
@@ -159,14 +159,13 @@
## Initial code for a rule that cannot be backtracked into.
returnop = '.return'
code.emit(<<" CODE", name)
- .sub '%0'
- .param pmc mob :unique_reg
+ .sub '%0' :method
.param pmc adverbs :unique_reg :slurpy :named
.local string target :unique_reg
- .local pmc mfrom, mpos :unique_reg
+ .local pmc mob, mfrom, mpos :unique_reg
.local int cpos, iscont :unique_reg
- $P0 = get_global ['PGE'], 'Match'
- (mob, cpos, target, mfrom, mpos, iscont) = $P0.'new'(mob, adverbs
:flat :named)
+ $P0 = get_hll_global ['PGE'], 'Match'
+ (mob, cpos, target, mfrom, mpos, iscont) = $P0.'new'(self, adverbs
:flat :named)
CODE
code_body:
Modified: branches/pdd15oo/compilers/pge/PGE/P6Regex.pir
==============================================================================
--- branches/pdd15oo/compilers/pge/PGE/P6Regex.pir (original)
+++ branches/pdd15oo/compilers/pge/PGE/P6Regex.pir Fri Oct 5 00:47:26 2007
@@ -133,8 +133,7 @@
.namespace [ 'PGE::Grammar' ]
-.sub 'regex'
- .param pmc mob
+.sub 'regex' :method
.param pmc adverbs :slurpy :named
.local string stop
@@ -145,7 +144,7 @@
stop = adverbs['stop']
push stopstack, stop
- match = optable.'parse'(mob, 'stop'=>stop)
+ match = optable.'parse'(self, 'stop'=>stop)
$S0 = pop stopstack
.return (match)
Modified: branches/pdd15oo/compilers/pge/PGE/Regex.pir
==============================================================================
--- branches/pdd15oo/compilers/pge/PGE/Regex.pir (original)
+++ branches/pdd15oo/compilers/pge/PGE/Regex.pir Fri Oct 5 00:47:26 2007
@@ -33,15 +33,14 @@
=cut
-.sub 'ident'
- .param pmc mob
+.sub 'ident' :method
.param pmc adverbs :slurpy :named
.local string target
- .local pmc mfrom, mpos
+ .local pmc mob, mfrom, mpos
.local int pos, lastpos
$P0 = get_hll_global ['PGE'], 'Match'
- (mob, pos, target) = $P0.'new'(mob)
+ (mob, pos, target) = $P0.'new'(self)
lastpos = length target
$S0 = substr target, pos, 1
@@ -62,11 +61,11 @@
=cut
-.sub "null"
- .param pmc mob
+.sub "null" :method
+ .local pmc mob
.local int pos
$P0 = get_hll_global ['PGE'], 'Match'
- (mob, pos) = $P0.'new'(mob)
+ (mob, pos) = $P0.'new'(self)
mob.'to'(pos)
.return (mob)
.end
@@ -268,17 +267,16 @@
=cut
-.sub "ws"
- .param pmc mob
+.sub "ws" :method
.local string target
- .local pmc mfrom, mpos
+ .local pmc mob, mfrom, mpos
.local int rep, pos, lastpos
.local string nextchars
.const .Sub corou = "ws_corou"
nextchars = ""
ws_1:
$P0 = get_hll_global ['PGE'], 'Match'
- (mob, pos, target, mfrom, mpos) = $P0.'new'(mob)
+ (mob, pos, target, mfrom, mpos) = $P0.'new'(self)
lastpos = length target
pos = mfrom
if pos >= lastpos goto found