@@ -77,6 +77,15 @@ sub __TOKENIZER__on_char {
77
77
}
78
78
}
79
79
80
+ # Postfix dereference: ->**
81
+ if ( $char eq ' *' ) {
82
+ my ( $prev ) = $t -> _previous_significant_tokens(1);
83
+ if ( $prev and $prev -> isa(' PPI::Token::Operator' ) and $prev -> content eq ' ->' ) {
84
+ $t -> {class } = $t -> {token }-> set_class( ' Cast' );
85
+ return 1;
86
+ }
87
+ }
88
+
80
89
if ( $char eq ' *' || $char eq ' =' ) {
81
90
# Power operator '**' or mult-assign '*='
82
91
$t -> {class } = $t -> {token }-> set_class( ' Operator' );
@@ -91,6 +100,15 @@ sub __TOKENIZER__on_char {
91
100
92
101
93
102
} elsif ( $c eq ' $' ) {
103
+ # Postfix dereference: ->$* ->$#*
104
+ if ( $char eq ' *' || $char eq ' #' ) {
105
+ my ( $prev ) = $t -> _previous_significant_tokens(1);
106
+ if ( $prev and $prev -> isa(' PPI::Token::Operator' ) and $prev -> content eq ' ->' ) {
107
+ $t -> {class } = $t -> {token }-> set_class( ' Cast' );
108
+ return 1;
109
+ }
110
+ }
111
+
94
112
if ( $char =~ / [a-z_]/i ) {
95
113
# Symbol
96
114
$t -> {class } = $t -> {token }-> set_class( ' Symbol' );
@@ -120,6 +138,15 @@ sub __TOKENIZER__on_char {
120
138
121
139
122
140
} elsif ( $c eq ' @' ) {
141
+ # Postfix dereference: ->@*
142
+ if ( $char eq ' *' ) {
143
+ my ( $prev ) = $t -> _previous_significant_tokens(1);
144
+ if ( $prev and $prev -> isa(' PPI::Token::Operator' ) and $prev -> content eq ' ->' ) {
145
+ $t -> {class } = $t -> {token }-> set_class( ' Cast' );
146
+ return 1;
147
+ }
148
+ }
149
+
123
150
if ( $char =~ / [\w :]/ ) {
124
151
# Symbol
125
152
$t -> {class } = $t -> {token }-> set_class( ' Symbol' );
@@ -149,6 +176,21 @@ sub __TOKENIZER__on_char {
149
176
150
177
151
178
} elsif ( $c eq ' %' ) {
179
+ # Postfix dereference: ->%* ->%[...]
180
+ if ( $char eq ' *' || $char eq ' [' ) {
181
+ my ( $prev ) = $t -> _previous_significant_tokens(1);
182
+ if ( $prev and $prev -> isa(' PPI::Token::Operator' ) and $prev -> content eq ' ->' ) {
183
+ if ( $char eq ' *' ) {
184
+ $t -> {class } = $t -> {token }-> set_class( ' Cast' );
185
+ return 1;
186
+ }
187
+ if ( $char eq ' [' ) {
188
+ $t -> {class } = $t -> {token }-> set_class( ' Cast' );
189
+ return $t -> _finalize_token-> __TOKENIZER__on_char( $t );
190
+ }
191
+ }
192
+ }
193
+
152
194
# Is it a number?
153
195
if ( $char =~ / \d / ) {
154
196
# bitwise operator
@@ -190,6 +232,15 @@ sub __TOKENIZER__on_char {
190
232
191
233
192
234
} elsif ( $c eq ' &' ) {
235
+ # Postfix dereference: ->&*
236
+ if ( $char eq ' *' ) {
237
+ my ( $prev ) = $t -> _previous_significant_tokens(1);
238
+ if ( $prev and $prev -> isa(' PPI::Token::Operator' ) and $prev -> content eq ' ->' ) {
239
+ $t -> {class } = $t -> {token }-> set_class( ' Cast' );
240
+ return 1;
241
+ }
242
+ }
243
+
193
244
# Is it a number?
194
245
if ( $char =~ / \d / ) {
195
246
# bitwise operator
0 commit comments