@@ -120,13 +120,15 @@ private function getAttributeValue(Reader $reader, array $chars = null)
120120 return $ expression ;
121121 }
122122
123- private function readAttributeValue (Reader $ reader , AttributeToken $ token )
123+ private function readAttributeValue (Reader $ reader , AttributeToken $ token, $ expression = '' )
124124 {
125- $ expression = $ this ->getAttributeValue ($ reader );
125+ $ expression .= $ this ->getAttributeValue ($ reader );
126+
126127 while ($ this ->isTruncatedExpression ($ reader , $ expression )) {
127128 $ this ->skipComments ($ reader );
128129 $ expression .= $ this ->getAttributeValue ($ reader );
129130 }
131+
130132 $ token ->setValue ($ expression );
131133
132134 //Ignore a comma if found
@@ -212,17 +214,25 @@ private function getAttributeToken(State $state)
212214 $ token ->escape ();
213215 $ token ->check ();
214216
215- if ($ variadic = $ reader ->peekString ('... ' )) {
217+ if ($ reader ->peekString ('... ' )) {
216218 $ token ->setIsVariadic (true );
217219 $ reader ->consume ();
218220 }
219221
220222 return $ token ;
221223 }
222224
223- private function seedAttributeToken (State $ state , AttributeToken $ token , $ expression )
225+ private function seedAttributeToken (State $ state , AttributeToken $ token , $ expression, array $ options )
224226 {
225227 $ reader = $ state ->getReader ();
228+ $ allowName = isset ($ options ['allow_name ' ]) ? $ options ['allow_name ' ] : true ;
229+
230+ if (!$ allowName ) {
231+ $ this ->readAttributeValue ($ reader , $ token , $ expression );
232+ $ this ->skipComments ($ reader );
233+
234+ return ;
235+ }
226236
227237 $ token ->setName ($ expression );
228238
@@ -254,7 +264,7 @@ private function seedAttributeToken(State $state, AttributeToken $token, $expres
254264 }
255265 }
256266
257- private function scanParenthesesContent (State $ state )
267+ private function scanParenthesesContent (State $ state, array $ options )
258268 {
259269 $ reader = $ state ->getReader ();
260270
@@ -265,7 +275,7 @@ private function scanParenthesesContent(State $state)
265275 continue ;
266276 }
267277
268- $ this ->seedAttributeToken ($ state , $ token , $ expression );
278+ $ this ->seedAttributeToken ($ state , $ token , $ expression, $ options );
269279
270280 yield $ token ;
271281
@@ -277,15 +287,15 @@ private function scanParenthesesContent(State $state)
277287 }
278288 }
279289
280- private function scanParentheses (State $ state )
290+ private function scanParentheses (State $ state, array $ options )
281291 {
282292 $ reader = $ state ->getReader ();
283293
284294 if ($ reader ->peekChar (') ' )) {
285295 return ;
286296 }
287297
288- foreach ($ this ->scanParenthesesContent ($ state ) as $ token ) {
298+ foreach ($ this ->scanParenthesesContent ($ state, $ options ) as $ token ) {
289299 yield $ token ;
290300 }
291301
@@ -296,7 +306,7 @@ private function scanParentheses(State $state)
296306 }
297307 }
298308
299- public function scan (State $ state )
309+ public function scan (State $ state, array $ options = [] )
300310 {
301311 $ reader = $ state ->getReader ();
302312
@@ -309,7 +319,7 @@ public function scan(State $state)
309319 $ reader ->consume ();
310320 yield $ state ->endToken ($ start );
311321
312- foreach ($ this ->scanParentheses ($ state ) as $ token ) {
322+ foreach ($ this ->scanParentheses ($ state, $ options ) as $ token ) {
313323 yield $ token ;
314324 }
315325
0 commit comments