Skip to content
This repository has been archived by the owner on Feb 3, 2021. It is now read-only.

Commit

Permalink
Rework building of initial tokens in terms of PAST.
Browse files Browse the repository at this point in the history
  • Loading branch information
pmichaud committed Oct 22, 2009
1 parent 2577049 commit 045112d
Show file tree
Hide file tree
Showing 3 changed files with 519 additions and 521 deletions.
26 changes: 12 additions & 14 deletions src/PAST/Compiler-Regex.pir
Expand Up @@ -97,23 +97,21 @@ Return the POST representation of the regex AST rooted by C<node>.
.local string cur, rep, pos, tgt, off, eos
(cur, rep, pos, tgt, off, eos) = self.'!rxregs'('cur rep pos tgt off eos')

.local pmc peek
.local int peek_len
(peek :slurpy) = node.'prefix'('')
peek_len = elements peek
$I0 = 0
peek_loop:
unless $I0 < peek_len goto peek_done
$S0 = peek[$I0]
$S0 = self.'escape'($S0)
peek[$I0] = $S0
inc $I0
goto peek_loop
peek_done:
.local pmc tpast, token, tpost
$P99 = get_hll_global ['PAST'], 'Op'
tpast = $P99.'new'( 'pirop'=>'return v*', 'node'=>node )
(token :slurpy) = node.'prefix'('')
token_loop:
unless token goto token_done
$P0 = shift token
push tpast, $P0
goto token_loop
token_done:
tpost = self.'as_post'(tpast, 'rtype'=>'v')
ops.'push_pirop'('getattribute', '$P10', 'self', '"$!type"')
ops.'push_pirop'('if_null', '$P10', peeklabel)
ops.'push_pirop'('ne', '$P10', CURSOR_TYPE_PEEK, peeklabel)
ops.'push_pirop'('return', peek :flat)
ops.'push'(tpost)
ops.'push'(peeklabel)

$S0 = concat '(', cur
Expand Down
80 changes: 40 additions & 40 deletions src/stage0/P6Grammar-s0.pir
Expand Up @@ -17,28 +17,28 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
### .include 'src/gen/p6grammar-grammar.pir'

.namespace ["Regex";"P6Grammar";"Grammar"]
.sub "_block11" :subid("10_1256191326.87034")
.sub "_block11" :subid("10_1256203071.80944")
.annotate "line", 0
.const 'Sub' $P40 = "15_1256191326.87034"
.const 'Sub' $P40 = "15_1256203071.80944"
capture_lex $P40
.const 'Sub' $P28 = "14_1256191326.87034"
.const 'Sub' $P28 = "14_1256203071.80944"
capture_lex $P28
.const 'Sub' $P22 = "13_1256191326.87034"
.const 'Sub' $P22 = "13_1256203071.80944"
capture_lex $P22
.const 'Sub' $P18 = "12_1256191326.87034"
.const 'Sub' $P18 = "12_1256203071.80944"
capture_lex $P18
.const 'Sub' $P13 = "11_1256191326.87034"
.const 'Sub' $P13 = "11_1256203071.80944"
capture_lex $P13
.annotate "line", 19
.const 'Sub' $P40 = "15_1256191326.87034"
.const 'Sub' $P40 = "15_1256203071.80944"
capture_lex $P40
.annotate "line", 1
.return ($P40)
.end


.namespace ["Regex";"P6Grammar";"Grammar"]
.sub "" :load :init :subid("post16") :outer("10_1256191326.87034")
.sub "" :load :init :subid("post16") :outer("10_1256203071.80944")
.annotate "line", 0
get_hll_global $P12, ["Regex";"P6Grammar";"Grammar"], "_block11"
.local pmc block
Expand All @@ -50,7 +50,7 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
.namespace ["Regex";"P6Grammar";"Grammar"]
.sub "TOP" :subid("11_1256191326.87034") :method :outer("10_1256191326.87034")
.sub "TOP" :subid("11_1256203071.80944") :method :outer("10_1256203071.80944")
.annotate "line", 3
.local string rx14_tgt
.local int rx14_pos
Expand Down Expand Up @@ -130,7 +130,7 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
.namespace ["Regex";"P6Grammar";"Grammar"]
.sub "name" :subid("12_1256191326.87034") :method :outer("10_1256191326.87034")
.sub "name" :subid("12_1256203071.80944") :method :outer("10_1256203071.80944")
.annotate "line", 9
.local string rx19_tgt
.local int rx19_pos
Expand Down Expand Up @@ -190,7 +190,7 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
.namespace ["Regex";"P6Grammar";"Grammar"]
.sub "longname" :subid("13_1256191326.87034") :method :outer("10_1256191326.87034")
.sub "longname" :subid("13_1256203071.80944") :method :outer("10_1256203071.80944")
.annotate "line", 11
.local string rx23_tgt
.local int rx23_pos
Expand Down Expand Up @@ -272,7 +272,7 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
.namespace ["Regex";"P6Grammar";"Grammar"]
.sub "grammar_stmt" :subid("14_1256191326.87034") :method :outer("10_1256191326.87034")
.sub "grammar_stmt" :subid("14_1256203071.80944") :method :outer("10_1256203071.80944")
.annotate "line", 17
.local string rx29_tgt
.local int rx29_pos
Expand Down Expand Up @@ -394,7 +394,7 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
.namespace ["Regex";"P6Grammar";"Grammar"]
.sub "regex_stmt" :subid("15_1256191326.87034") :method :outer("10_1256191326.87034")
.sub "regex_stmt" :subid("15_1256203071.80944") :method :outer("10_1256203071.80944")
.annotate "line", 19
.local string rx41_tgt
.local int rx41_pos
Expand Down Expand Up @@ -675,7 +675,7 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
### .include 'src/gen/p6grammar-actions.pir'
.namespace []
.sub "_block11" :anon :subid("10_1256191321.423")
.sub "_block11" :anon :subid("10_1256203067.02092")
.annotate "line", 3
get_hll_global $P14, ["Regex";"P6Grammar";"Actions"], "_block13"
.annotate "line", 1
Expand All @@ -684,29 +684,29 @@ Regex::P6Grammar - scaffolding compiler for NQP / Perl 6 grammars
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "_block13" :init :load :subid("11_1256191321.423")
.sub "_block13" :init :load :subid("11_1256203067.02092")
.annotate "line", 3
.const 'Sub' $P83 = "15_1256191321.423"
.const 'Sub' $P83 = "15_1256203067.02092"
capture_lex $P83
.const 'Sub' $P44 = "14_1256191321.423"
.const 'Sub' $P44 = "14_1256203067.02092"
capture_lex $P44
.const 'Sub' $P16 = "12_1256191321.423"
.const 'Sub' $P16 = "12_1256203067.02092"
capture_lex $P16
$P15 = get_root_global ["parrot"], "P6metaclass"
$P15."new_class"("Regex::P6Grammar::Actions", "Regex::P6Regex::Actions" :named("parent"))
.annotate "line", 30
.const 'Sub' $P83 = "15_1256191321.423"
.const 'Sub' $P83 = "15_1256203067.02092"
capture_lex $P83
.annotate "line", 3
.return ($P83)
.end
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "TOP" :subid("12_1256191321.423") :method :outer("11_1256191321.423")
.sub "TOP" :subid("12_1256203067.02092") :method :outer("11_1256203067.02092")
.param pmc param_19
.annotate "line", 3
.const 'Sub' $P29 = "13_1256191321.423"
.const 'Sub' $P29 = "13_1256203067.02092"
capture_lex $P29
new $P18, 'ExceptionHandler'
set_addr $P18, control_17
Expand Down Expand Up @@ -739,7 +739,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
unless $P23, loop35_done
shift $P27, $P23
loop35_redo:
.const 'Sub' $P29 = "13_1256191321.423"
.const 'Sub' $P29 = "13_1256203067.02092"
capture_lex $P29
$P29($P27)
loop35_next:
Expand Down Expand Up @@ -782,7 +782,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "_block28" :anon :subid("13_1256191321.423") :outer("12_1256191321.423")
.sub "_block28" :anon :subid("13_1256203067.02092") :outer("12_1256203067.02092")
.param pmc param_30
.annotate "line", 5
.lex "$_", param_30
Expand All @@ -803,7 +803,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "grammar_stmt" :subid("14_1256191321.423") :method :outer("11_1256191321.423")
.sub "grammar_stmt" :subid("14_1256203067.02092") :method :outer("11_1256203067.02092")
.param pmc param_47
.annotate "line", 13
new $P46, 'ExceptionHandler'
Expand Down Expand Up @@ -917,16 +917,16 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "regex_stmt" :subid("15_1256191321.423") :method :outer("11_1256191321.423")
.sub "regex_stmt" :subid("15_1256203067.02092") :method :outer("11_1256203067.02092")
.param pmc param_86
.param pmc param_87 :optional
.param int has_param_87 :opt_flag
.annotate "line", 30
.const 'Sub' $P141 = "20_1256191321.423"
.const 'Sub' $P141 = "20_1256203067.02092"
capture_lex $P141
.const 'Sub' $P130 = "19_1256191321.423"
.const 'Sub' $P130 = "19_1256203067.02092"
capture_lex $P130
.const 'Sub' $P95 = "16_1256191321.423"
.const 'Sub' $P95 = "16_1256203067.02092"
capture_lex $P95
new $P85, 'ExceptionHandler'
set_addr $P85, control_84
Expand All @@ -952,7 +952,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
set $S92, $P91
iseq $I93, $S92, "open"
unless $I93, if_90_end
.const 'Sub' $P95 = "16_1256191321.423"
.const 'Sub' $P95 = "16_1256203067.02092"
capture_lex $P95
$P95()
if_90_end:
Expand All @@ -977,13 +977,13 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
vivify_51:
if $P128, if_126
.annotate "line", 57
.const 'Sub' $P141 = "20_1256191321.423"
.const 'Sub' $P141 = "20_1256203067.02092"
capture_lex $P141
$P141()
goto if_126_end
if_126:
.annotate "line", 43
.const 'Sub' $P130 = "19_1256191321.423"
.const 'Sub' $P130 = "19_1256203067.02092"
capture_lex $P130
$P130()
if_126_end:
Expand All @@ -1006,11 +1006,11 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "_block94" :anon :subid("16_1256191321.423") :outer("15_1256191321.423")
.sub "_block94" :anon :subid("16_1256203067.02092") :outer("15_1256203067.02092")
.annotate "line", 34
.const 'Sub' $P112 = "18_1256191321.423"
.const 'Sub' $P112 = "18_1256203067.02092"
capture_lex $P112
.const 'Sub' $P103 = "17_1256191321.423"
.const 'Sub' $P103 = "17_1256203067.02092"
capture_lex $P103
.annotate "line", 35
new $P96, "Hash"
Expand All @@ -1024,7 +1024,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
set $S100, $P99
iseq $I101, $S100, "token"
unless $I101, if_97_end
.const 'Sub' $P103 = "17_1256191321.423"
.const 'Sub' $P103 = "17_1256203067.02092"
capture_lex $P103
$P103()
if_97_end:
Expand All @@ -1037,7 +1037,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
set $S109, $P108
iseq $I110, $S109, "rule"
unless $I110, if_106_end
.const 'Sub' $P112 = "18_1256191321.423"
.const 'Sub' $P112 = "18_1256203067.02092"
capture_lex $P112
$P112()
if_106_end:
Expand All @@ -1064,7 +1064,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "_block102" :anon :subid("17_1256191321.423") :outer("16_1256191321.423")
.sub "_block102" :anon :subid("17_1256203067.02092") :outer("16_1256203067.02092")
.annotate "line", 36
new $P104, "Integer"
assign $P104, 1
Expand All @@ -1079,7 +1079,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "_block111" :anon :subid("18_1256191321.423") :outer("16_1256191321.423")
.sub "_block111" :anon :subid("18_1256203067.02092") :outer("16_1256203067.02092")
.annotate "line", 37
new $P113, "Integer"
assign $P113, 1
Expand All @@ -1102,7 +1102,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "_block140" :anon :subid("20_1256191321.423") :outer("15_1256191321.423")
.sub "_block140" :anon :subid("20_1256203067.02092") :outer("15_1256203067.02092")
.annotate "line", 58
find_lex $P142, "$/"
set $P143, $P142["nibbler"]
Expand Down Expand Up @@ -1176,7 +1176,7 @@ $P15 = get_root_global ["parrot"], "P6metaclass"
.namespace ["Regex";"P6Grammar";"Actions"]
.sub "_block129" :anon :subid("19_1256191321.423") :outer("15_1256191321.423")
.sub "_block129" :anon :subid("19_1256203067.02092") :outer("15_1256203067.02092")
.annotate "line", 45
get_hll_global $P131, ["PAST"], "Block"
find_lex $P132, "$name"
Expand Down

0 comments on commit 045112d

Please sign in to comment.