@@ -75,16 +75,14 @@ class QRegex::P6Regex::Actions is HLL::Actions {
75
75
76
76
method quantified_atom ($/ ) {
77
77
my $ qast := $ < atom > . ast;
78
- my $ quant := $ < quantifier > ;
79
- if $ quant {
80
- $/ . CURSOR. panic(' Quantifier quantifies nothing' )
81
- unless $ qast ;
82
78
83
- # Always capture sigspace before quantifier
84
- my $ sig := $ < sigmaybe > . ast if $ < sigmaybe > ;
85
- $ qast := QAST ::Regex. new (: rxtype<concat >, $ qast , $ sig ) if $ sig ;
79
+ my $ sigmaybe := $ < sigmaybe > . ast if $ < sigmaybe > ;
80
+ $ qast := QAST ::Regex. new (: rxtype<concat >, $ qast , $ sigmaybe ) if $ sigmaybe ;
86
81
87
- my $ ast := $ quant [0 ]. ast;
82
+ if $ < quantifier > {
83
+ $/ . CURSOR. panic(' Quantifier quantifies nothing' )
84
+ unless $ qast ;
85
+ my $ ast := $ < quantifier > . ast;
88
86
$ ast . unshift ($ qast );
89
87
$ qast := $ ast ;
90
88
}
@@ -93,22 +91,16 @@ class QRegex::P6Regex::Actions is HLL::Actions {
93
91
$/ . CURSOR. panic(" '" ~ $ < separator > [0 ]<septype > ~
94
92
" ' many only be used immediately following a quantifier" )
95
93
}
96
- $ qast . push ($ < separator > [ 0 ] . ast);
97
- if $ < separator > [ 0 ] <septype > eq ' %%' {
94
+ $ qast . push ($ < separator > . ast);
95
+ if $ < separator >< septype > eq ' %%' {
98
96
$ qast := QAST ::Regex. new ( : rxtype<concat >, $ qast ,
99
- QAST ::Regex. new ( : rxtype<quant >, : min (0 ), : max (1 ), $ < separator > [ 0 ] . ast ));
97
+ QAST ::Regex. new ( : rxtype<quant >, : min (0 ), : max (1 ), $ < separator > . ast ));
100
98
}
101
99
}
102
- # Don't capture trailing sigspace in a $<var> = binding
103
- unless $ * VARDEF {
104
- my $ sig ;
105
- if $ quant {
106
- $ sig := $ < sigfinal > [0 ]. ast if $ < sigfinal > ;
107
- } else {
108
- $ sig := $ < sigmaybe > . ast if $ < sigmaybe > ;
109
- }
110
- $ qast := QAST ::Regex. new (: rxtype<concat >, $ qast , $ sig ) if $ sig && $ qast ;
111
- }
100
+
101
+ my $ sigfinal := $ < sigfinal > . ast if $ < sigfinal > ;
102
+ $ qast := QAST ::Regex. new (: rxtype<concat >, $ qast , $ sigfinal ) if $ sigfinal ;
103
+
112
104
if $ qast {
113
105
$ qast . backtrack(' r' ) if ! $ qast . backtrack && (% * RX <r > || $ < backmod > && ~ $ < backmod > [0 ] eq ' :' );
114
106
$ qast . node($/ );
0 commit comments