@@ -347,107 +347,107 @@ discard block |
||
| 347 | 347 | // $0 = $len |
| 348 | 348 | $len = \count($tokens) - 1; |
| 349 | 349 | switch ($yystate) { |
| 350 | - case 1: |
|
| 351 | - $yytext = preg_replace_callback('{(?:\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4})}', array($this, 'stringInterpolation'), $yytext); |
|
| 352 | - $yyval->token = $yytext; |
|
| 353 | - break; |
|
| 354 | - case 2: |
|
| 355 | - if (strpos($yytext, 'e') !== false || strpos($yytext, 'E') !== false) { |
|
| 356 | - $yyval->token = \floatval($yytext); |
|
| 357 | - } else { |
|
| 358 | - $yyval->token = strpos($yytext, '.') === false ? \intval($yytext) : \floatval($yytext); |
|
| 359 | - } |
|
| 360 | - break; |
|
| 361 | - case 3: |
|
| 362 | - $yyval->token = null; |
|
| 363 | - break; |
|
| 364 | - case 4: |
|
| 365 | - $yyval->token = true; |
|
| 366 | - break; |
|
| 367 | - case 5: |
|
| 368 | - $yyval->token = false; |
|
| 369 | - break; |
|
| 370 | - case 6: |
|
| 371 | - return $yyval->token = $tokens[$len-1]; |
|
| 372 | - case 13: |
|
| 373 | - if ($this->flags & self::PARSE_TO_ASSOC) { |
|
| 374 | - $yyval->token = array(); |
|
| 375 | - } else { |
|
| 376 | - $yyval->token = new stdClass; |
|
| 377 | - } |
|
| 378 | - break; |
|
| 379 | - case 14: |
|
| 380 | - $yyval->token = $tokens[$len-1]; |
|
| 381 | - break; |
|
| 382 | - case 15: |
|
| 383 | - $yyval->token = array($tokens[$len-2], $tokens[$len]); |
|
| 384 | - break; |
|
| 385 | - case 16: |
|
| 386 | - if (PHP_VERSION_ID < 70100) { |
|
| 387 | - $property = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; |
|
| 388 | - } else { |
|
| 389 | - $property = $tokens[$len][0]; |
|
| 390 | - } |
|
| 391 | - if ($this->flags & self::PARSE_TO_ASSOC) { |
|
| 392 | - $yyval->token = array(); |
|
| 393 | - $yyval->token[$property] = $tokens[$len][1]; |
|
| 394 | - } else { |
|
| 395 | - $yyval->token = new stdClass; |
|
| 396 | - $yyval->token->$property = $tokens[$len][1]; |
|
| 397 | - } |
|
| 398 | - break; |
|
| 399 | - case 17: |
|
| 400 | - if ($this->flags & self::PARSE_TO_ASSOC) { |
|
| 401 | - $yyval->token =& $tokens[$len-2]; |
|
| 402 | - $key = $tokens[$len][0]; |
|
| 403 | - if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($tokens[$len-2][$key])) { |
|
| 404 | - $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; |
|
| 405 | - $errStr .= $this->lexer->showPosition() . "\n"; |
|
| 406 | - $errStr .= "Duplicate key: ".$tokens[$len][0]; |
|
| 407 | - throw new DuplicateKeyException($errStr, $tokens[$len][0], array('line' => $yylineno+1)); |
|
| 408 | - } elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($tokens[$len-2][$key])) { |
|
| 409 | - $duplicateCount = 1; |
|
| 410 | - do { |
|
| 411 | - $duplicateKey = $key . '.' . $duplicateCount++; |
|
| 412 | - } while (isset($tokens[$len-2][$duplicateKey])); |
|
| 413 | - $key = $duplicateKey; |
|
| 414 | - } |
|
| 415 | - $tokens[$len-2][$key] = $tokens[$len][1]; |
|
| 416 | - } else { |
|
| 417 | - $yyval->token = $tokens[$len-2]; |
|
| 418 | - if (PHP_VERSION_ID < 70100) { |
|
| 419 | - $key = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; |
|
| 420 | - } else { |
|
| 421 | - $key = $tokens[$len][0]; |
|
| 422 | - } |
|
| 423 | - if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($tokens[$len-2]->{$key})) { |
|
| 424 | - $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; |
|
| 425 | - $errStr .= $this->lexer->showPosition() . "\n"; |
|
| 426 | - $errStr .= "Duplicate key: ".$tokens[$len][0]; |
|
| 427 | - throw new DuplicateKeyException($errStr, $tokens[$len][0], array('line' => $yylineno+1)); |
|
| 428 | - } elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($tokens[$len-2]->{$key})) { |
|
| 429 | - $duplicateCount = 1; |
|
| 430 | - do { |
|
| 431 | - $duplicateKey = $key . '.' . $duplicateCount++; |
|
| 432 | - } while (isset($tokens[$len-2]->$duplicateKey)); |
|
| 433 | - $key = $duplicateKey; |
|
| 434 | - } |
|
| 435 | - $tokens[$len-2]->$key = $tokens[$len][1]; |
|
| 436 | - } |
|
| 437 | - break; |
|
| 438 | - case 18: |
|
| 439 | - $yyval->token = array(); |
|
| 440 | - break; |
|
| 441 | - case 19: |
|
| 442 | - $yyval->token = $tokens[$len-1]; |
|
| 443 | - break; |
|
| 444 | - case 20: |
|
| 445 | - $yyval->token = array($tokens[$len]); |
|
| 446 | - break; |
|
| 447 | - case 21: |
|
| 448 | - $tokens[$len-2][] = $tokens[$len]; |
|
| 449 | - $yyval->token = $tokens[$len-2]; |
|
| 450 | - break; |
|
| 350 | + case 1: |
|
| 351 | + $yytext = preg_replace_callback('{(?:\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4})}', array($this, 'stringInterpolation'), $yytext); |
|
| 352 | + $yyval->token = $yytext; |
|
| 353 | + break; |
|
| 354 | + case 2: |
|
| 355 | + if (strpos($yytext, 'e') !== false || strpos($yytext, 'E') !== false) { |
|
| 356 | + $yyval->token = \floatval($yytext); |
|
| 357 | + } else { |
|
| 358 | + $yyval->token = strpos($yytext, '.') === false ? \intval($yytext) : \floatval($yytext); |
|
| 359 | + } |
|
| 360 | + break; |
|
| 361 | + case 3: |
|
| 362 | + $yyval->token = null; |
|
| 363 | + break; |
|
| 364 | + case 4: |
|
| 365 | + $yyval->token = true; |
|
| 366 | + break; |
|
| 367 | + case 5: |
|
| 368 | + $yyval->token = false; |
|
| 369 | + break; |
|
| 370 | + case 6: |
|
| 371 | + return $yyval->token = $tokens[$len-1]; |
|
| 372 | + case 13: |
|
| 373 | + if ($this->flags & self::PARSE_TO_ASSOC) { |
|
| 374 | + $yyval->token = array(); |
|
| 375 | + } else { |
|
| 376 | + $yyval->token = new stdClass; |
|
| 377 | + } |
|
| 378 | + break; |
|
| 379 | + case 14: |
|
| 380 | + $yyval->token = $tokens[$len-1]; |
|
| 381 | + break; |
|
| 382 | + case 15: |
|
| 383 | + $yyval->token = array($tokens[$len-2], $tokens[$len]); |
|
| 384 | + break; |
|
| 385 | + case 16: |
|
| 386 | + if (PHP_VERSION_ID < 70100) { |
|
| 387 | + $property = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; |
|
| 388 | + } else { |
|
| 389 | + $property = $tokens[$len][0]; |
|
| 390 | + } |
|
| 391 | + if ($this->flags & self::PARSE_TO_ASSOC) { |
|
| 392 | + $yyval->token = array(); |
|
| 393 | + $yyval->token[$property] = $tokens[$len][1]; |
|
| 394 | + } else { |
|
| 395 | + $yyval->token = new stdClass; |
|
| 396 | + $yyval->token->$property = $tokens[$len][1]; |
|
| 397 | + } |
|
| 398 | + break; |
|
| 399 | + case 17: |
|
| 400 | + if ($this->flags & self::PARSE_TO_ASSOC) { |
|
| 401 | + $yyval->token =& $tokens[$len-2]; |
|
| 402 | + $key = $tokens[$len][0]; |
|
| 403 | + if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($tokens[$len-2][$key])) { |
|
| 404 | + $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; |
|
| 405 | + $errStr .= $this->lexer->showPosition() . "\n"; |
|
| 406 | + $errStr .= "Duplicate key: ".$tokens[$len][0]; |
|
| 407 | + throw new DuplicateKeyException($errStr, $tokens[$len][0], array('line' => $yylineno+1)); |
|
| 408 | + } elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($tokens[$len-2][$key])) { |
|
| 409 | + $duplicateCount = 1; |
|
| 410 | + do { |
|
| 411 | + $duplicateKey = $key . '.' . $duplicateCount++; |
|
| 412 | + } while (isset($tokens[$len-2][$duplicateKey])); |
|
| 413 | + $key = $duplicateKey; |
|
| 414 | + } |
|
| 415 | + $tokens[$len-2][$key] = $tokens[$len][1]; |
|
| 416 | + } else { |
|
| 417 | + $yyval->token = $tokens[$len-2]; |
|
| 418 | + if (PHP_VERSION_ID < 70100) { |
|
| 419 | + $key = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; |
|
| 420 | + } else { |
|
| 421 | + $key = $tokens[$len][0]; |
|
| 422 | + } |
|
| 423 | + if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($tokens[$len-2]->{$key})) { |
|
| 424 | + $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; |
|
| 425 | + $errStr .= $this->lexer->showPosition() . "\n"; |
|
| 426 | + $errStr .= "Duplicate key: ".$tokens[$len][0]; |
|
| 427 | + throw new DuplicateKeyException($errStr, $tokens[$len][0], array('line' => $yylineno+1)); |
|
| 428 | + } elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($tokens[$len-2]->{$key})) { |
|
| 429 | + $duplicateCount = 1; |
|
| 430 | + do { |
|
| 431 | + $duplicateKey = $key . '.' . $duplicateCount++; |
|
| 432 | + } while (isset($tokens[$len-2]->$duplicateKey)); |
|
| 433 | + $key = $duplicateKey; |
|
| 434 | + } |
|
| 435 | + $tokens[$len-2]->$key = $tokens[$len][1]; |
|
| 436 | + } |
|
| 437 | + break; |
|
| 438 | + case 18: |
|
| 439 | + $yyval->token = array(); |
|
| 440 | + break; |
|
| 441 | + case 19: |
|
| 442 | + $yyval->token = $tokens[$len-1]; |
|
| 443 | + break; |
|
| 444 | + case 20: |
|
| 445 | + $yyval->token = array($tokens[$len]); |
|
| 446 | + break; |
|
| 447 | + case 21: |
|
| 448 | + $tokens[$len-2][] = $tokens[$len]; |
|
| 449 | + $yyval->token = $tokens[$len-2]; |
|
| 450 | + break; |
|
| 451 | 451 | } |
| 452 | 452 | |
| 453 | 453 | return new Undefined(); |
@@ -456,24 +456,24 @@ discard block |
||
| 456 | 456 | private function stringInterpolation($match) |
| 457 | 457 | { |
| 458 | 458 | switch ($match[0]) { |
| 459 | - case '\\\\': |
|
| 460 | - return '\\'; |
|
| 461 | - case '\"': |
|
| 462 | - return '"'; |
|
| 463 | - case '\b': |
|
| 464 | - return \chr(8); |
|
| 465 | - case '\f': |
|
| 466 | - return \chr(12); |
|
| 467 | - case '\n': |
|
| 468 | - return "\n"; |
|
| 469 | - case '\r': |
|
| 470 | - return "\r"; |
|
| 471 | - case '\t': |
|
| 472 | - return "\t"; |
|
| 473 | - case '\/': |
|
| 474 | - return "/"; |
|
| 475 | - default: |
|
| 476 | - return html_entity_decode('&#x'.ltrim(substr($match[0], 2), '0').';', ENT_QUOTES, 'UTF-8'); |
|
| 459 | + case '\\\\': |
|
| 460 | + return '\\'; |
|
| 461 | + case '\"': |
|
| 462 | + return '"'; |
|
| 463 | + case '\b': |
|
| 464 | + return \chr(8); |
|
| 465 | + case '\f': |
|
| 466 | + return \chr(12); |
|
| 467 | + case '\n': |
|
| 468 | + return "\n"; |
|
| 469 | + case '\r': |
|
| 470 | + return "\r"; |
|
| 471 | + case '\t': |
|
| 472 | + return "\t"; |
|
| 473 | + case '\/': |
|
| 474 | + return "/"; |
|
| 475 | + default: |
|
| 476 | + return html_entity_decode('&#x'.ltrim(substr($match[0], 2), '0').';', ENT_QUOTES, 'UTF-8'); |
|
| 477 | 477 | } |
| 478 | 478 | } |
| 479 | 479 | |
@@ -198,36 +198,36 @@ |
||
| 198 | 198 | private function performAction($avoiding_name_collisions, $YY_START) |
| 199 | 199 | { |
| 200 | 200 | switch ($avoiding_name_collisions) { |
| 201 | - case 0:/* skip whitespace */ |
|
| 202 | - break; |
|
| 203 | - case 1: |
|
| 204 | - return 6; |
|
| 205 | - case 2: |
|
| 206 | - $this->yytext = substr($this->yytext, 1, $this->yyleng-2); |
|
| 207 | - |
|
| 208 | - return 4; |
|
| 209 | - case 3: |
|
| 210 | - return 17; |
|
| 211 | - case 4: |
|
| 212 | - return 18; |
|
| 213 | - case 5: |
|
| 214 | - return 23; |
|
| 215 | - case 6: |
|
| 216 | - return 24; |
|
| 217 | - case 7: |
|
| 218 | - return 22; |
|
| 219 | - case 8: |
|
| 220 | - return 21; |
|
| 221 | - case 9: |
|
| 222 | - return 10; |
|
| 223 | - case 10: |
|
| 224 | - return 11; |
|
| 225 | - case 11: |
|
| 226 | - return 8; |
|
| 227 | - case 12: |
|
| 228 | - return 14; |
|
| 229 | - case 13: |
|
| 230 | - return 'INVALID'; |
|
| 201 | + case 0:/* skip whitespace */ |
|
| 202 | + break; |
|
| 203 | + case 1: |
|
| 204 | + return 6; |
|
| 205 | + case 2: |
|
| 206 | + $this->yytext = substr($this->yytext, 1, $this->yyleng-2); |
|
| 207 | + |
|
| 208 | + return 4; |
|
| 209 | + case 3: |
|
| 210 | + return 17; |
|
| 211 | + case 4: |
|
| 212 | + return 18; |
|
| 213 | + case 5: |
|
| 214 | + return 23; |
|
| 215 | + case 6: |
|
| 216 | + return 24; |
|
| 217 | + case 7: |
|
| 218 | + return 22; |
|
| 219 | + case 8: |
|
| 220 | + return 21; |
|
| 221 | + case 9: |
|
| 222 | + return 10; |
|
| 223 | + case 10: |
|
| 224 | + return 11; |
|
| 225 | + case 11: |
|
| 226 | + return 8; |
|
| 227 | + case 12: |
|
| 228 | + return 14; |
|
| 229 | + case 13: |
|
| 230 | + return 'INVALID'; |
|
| 231 | 231 | } |
| 232 | 232 | } |
| 233 | 233 | } |
@@ -113,18 +113,18 @@ |
||
| 113 | 113 | case '.': |
| 114 | 114 | break; |
| 115 | 115 | |
| 116 | - case '..': |
|
| 117 | - if (empty($parts)) { |
|
| 118 | - throw new LogicException( |
|
| 119 | - 'Path is outside of the defined root, path: [' . $path . ']' |
|
| 120 | - ); |
|
| 121 | - } |
|
| 122 | - array_pop($parts); |
|
| 123 | - break; |
|
| 124 | - |
|
| 125 | - default: |
|
| 126 | - $parts[] = $part; |
|
| 127 | - break; |
|
| 116 | + case '..': |
|
| 117 | + if (empty($parts)) { |
|
| 118 | + throw new LogicException( |
|
| 119 | + 'Path is outside of the defined root, path: [' . $path . ']' |
|
| 120 | + ); |
|
| 121 | + } |
|
| 122 | + array_pop($parts); |
|
| 123 | + break; |
|
| 124 | + |
|
| 125 | + default: |
|
| 126 | + $parts[] = $part; |
|
| 127 | + break; |
|
| 128 | 128 | } |
| 129 | 129 | } |
| 130 | 130 | |