mirror of
https://github.com/phabelio/PHP-Parser.git
synced 2024-11-27 04:24:43 +01:00
Don't save quote type for strings anymore (as it is irrelevant for script execution)
This commit is contained in:
parent
7d43c02c06
commit
197b8e6967
@ -622,9 +622,9 @@ common_scalar:
|
|||||||
| T_FUNC_C { $$ = Scalar_FuncConst[]; }
|
| T_FUNC_C { $$ = Scalar_FuncConst[]; }
|
||||||
| T_NS_C { $$ = Scalar_NSConst[]; }
|
| T_NS_C { $$ = Scalar_NSConst[]; }
|
||||||
| T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
|
| T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
|
||||||
{ $$ = Scalar_String[value: Scalar_String::parseEscapeSequences($2), isBinary: false, type: '\'' === $1[3] ? Scalar_String::SINGLE_QUOTED : Scalar_String::DOUBLE_QUOTED]; }
|
{ $$ = Scalar_String[value: Scalar_String::parseEscapeSequences($2), isBinary: 'b' === $1[0]]; }
|
||||||
| T_START_HEREDOC T_END_HEREDOC
|
| T_START_HEREDOC T_END_HEREDOC
|
||||||
{ $$ = Scalar_String[value: '', isBinary: false, type: Scalar_String::SINGLE_QUOTED]; }
|
{ $$ = Scalar_String[value: '', isBinary: 'b' === $1[0]]; }
|
||||||
;
|
;
|
||||||
|
|
||||||
static_scalar: /* compile-time evaluated scalars */
|
static_scalar: /* compile-time evaluated scalars */
|
||||||
@ -637,7 +637,7 @@ static_scalar: /* compile-time evaluated scalars */
|
|||||||
;
|
;
|
||||||
|
|
||||||
scalar:
|
scalar:
|
||||||
T_STRING_VARNAME { $$ = Scalar_String[value: $1, isBinary: false, type: Scalar_String::SINGLE_QUOTED]; }
|
T_STRING_VARNAME { $$ = Scalar_String[value: $1, isBinary: false]; }
|
||||||
| class_constant { $$ = $1; }
|
| class_constant { $$ = $1; }
|
||||||
| name { $$ = Expr_ConstFetch[name: $1]; }
|
| name { $$ = Expr_ConstFetch[name: $1]; }
|
||||||
| common_scalar { $$ = $1; }
|
| common_scalar { $$ = $1; }
|
||||||
@ -776,7 +776,7 @@ encaps_var:
|
|||||||
;
|
;
|
||||||
|
|
||||||
encaps_var_offset:
|
encaps_var_offset:
|
||||||
T_STRING { $$ = Scalar_String[value: $1, isBinary: false, type: Scalar_String::SINGLE_QUOTED]; }
|
T_STRING { $$ = Scalar_String[value: $1, isBinary: false]; }
|
||||||
| T_NUM_STRING { $$ = Scalar_LNumber[value: parseLNumber($1)]; }
|
| T_NUM_STRING { $$ = Scalar_LNumber[value: parseLNumber($1)]; }
|
||||||
| T_VARIABLE { $$ = Variable[name: parseVar($1)]; }
|
| T_VARIABLE { $$ = Variable[name: parseVar($1)]; }
|
||||||
;
|
;
|
||||||
|
@ -3,13 +3,9 @@
|
|||||||
/**
|
/**
|
||||||
* @property string $value String value
|
* @property string $value String value
|
||||||
* @property bool $isBinary Whether the string is binary (b'')
|
* @property bool $isBinary Whether the string is binary (b'')
|
||||||
* @property int $type Whether SINGLE_QUOTED or DOUBLE_QUOTED
|
|
||||||
*/
|
*/
|
||||||
class PHPParser_Node_Scalar_String extends PHPParser_Node_Scalar
|
class PHPParser_Node_Scalar_String extends PHPParser_Node_Scalar
|
||||||
{
|
{
|
||||||
const SINGLE_QUOTED = 0;
|
|
||||||
const DOUBLE_QUOTED = 1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a String node from a string token (parses escape sequences).
|
* Creates a String node from a string token (parses escape sequences).
|
||||||
*
|
*
|
||||||
@ -24,23 +20,19 @@ class PHPParser_Node_Scalar_String extends PHPParser_Node_Scalar
|
|||||||
$isBinary = true;
|
$isBinary = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('\'' === $s[0]) {
|
if ('\'' === $s[$isBinary]) {
|
||||||
$type = self::SINGLE_QUOTED;
|
|
||||||
|
|
||||||
$s = str_replace(
|
$s = str_replace(
|
||||||
array('\\\\', '\\\''),
|
array('\\\\', '\\\''),
|
||||||
array( '\\', '\''),
|
array( '\\', '\''),
|
||||||
substr($s, $isBinary + 1, -1)
|
substr($s, $isBinary + 1, -1)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$type = self::DOUBLE_QUOTED;
|
|
||||||
|
|
||||||
$s = self::parseEscapeSequences(substr($s, $isBinary + 1, -1));
|
$s = self::parseEscapeSequences(substr($s, $isBinary + 1, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new self(
|
return new self(
|
||||||
array(
|
array(
|
||||||
'value' => $s, 'isBinary' => $isBinary, 'type' => $type
|
'value' => $s, 'isBinary' => $isBinary
|
||||||
),
|
),
|
||||||
$line
|
$line
|
||||||
);
|
);
|
||||||
|
@ -2114,11 +2114,11 @@ class PHPParser_Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function yyn275($line, $docComment) {
|
private function yyn275($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => PHPParser_Node_Scalar_String::parseEscapeSequences($this->yyastk[$this->yysp-(3-2)]), 'isBinary' => false, 'type' => '\'' === $this->yyastk[$this->yysp-(3-1)][3] ? PHPParser_Node_Scalar_String::SINGLE_QUOTED : PHPParser_Node_Scalar_String::DOUBLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => PHPParser_Node_Scalar_String::parseEscapeSequences($this->yyastk[$this->yysp-(3-2)]), 'isBinary' => 'b' === $this->yyastk[$this->yysp-(3-1)][0]), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn276($line, $docComment) {
|
private function yyn276($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => '', 'isBinary' => false, 'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => '', 'isBinary' => 'b' === $this->yyastk[$this->yysp-(2-1)][0]), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn277($line, $docComment) {
|
private function yyn277($line, $docComment) {
|
||||||
@ -2146,7 +2146,7 @@ class PHPParser_Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function yyn283($line, $docComment) {
|
private function yyn283($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false, 'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn284($line, $docComment) {
|
private function yyn284($line, $docComment) {
|
||||||
@ -2422,7 +2422,7 @@ class PHPParser_Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function yyn352($line, $docComment) {
|
private function yyn352($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false, 'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn353($line, $docComment) {
|
private function yyn353($line, $docComment) {
|
||||||
|
@ -2513,11 +2513,11 @@ class PHPParser_ParserDebug
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function yyn275($line, $docComment) {
|
private function yyn275($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => PHPParser_Node_Scalar_String::parseEscapeSequences($this->yyastk[$this->yysp-(3-2)]), 'isBinary' => false, 'type' => '\'' === $this->yyastk[$this->yysp-(3-1)][3] ? PHPParser_Node_Scalar_String::SINGLE_QUOTED : PHPParser_Node_Scalar_String::DOUBLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => PHPParser_Node_Scalar_String::parseEscapeSequences($this->yyastk[$this->yysp-(3-2)]), 'isBinary' => 'b' === $this->yyastk[$this->yysp-(3-1)][0]), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn276($line, $docComment) {
|
private function yyn276($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => '', 'isBinary' => false, 'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => '', 'isBinary' => 'b' === $this->yyastk[$this->yysp-(2-1)][0]), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn277($line, $docComment) {
|
private function yyn277($line, $docComment) {
|
||||||
@ -2545,7 +2545,7 @@ class PHPParser_ParserDebug
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function yyn283($line, $docComment) {
|
private function yyn283($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false, 'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn284($line, $docComment) {
|
private function yyn284($line, $docComment) {
|
||||||
@ -2821,7 +2821,7 @@ class PHPParser_ParserDebug
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function yyn352($line, $docComment) {
|
private function yyn352($line, $docComment) {
|
||||||
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false, 'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED), $line, $docComment);
|
$this->yyval = new PHPParser_Node_Scalar_String(array('value' => $this->yyastk[$this->yysp-(1-1)], 'isBinary' => false), $line, $docComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function yyn353($line, $docComment) {
|
private function yyn353($line, $docComment) {
|
||||||
|
@ -53,10 +53,7 @@ class PHPParser_PrettyPrinter_Zend extends PHPParser_PrettyPrinterAbstract
|
|||||||
|
|
||||||
public function pScalar_String(PHPParser_Node_Scalar_String $node) {
|
public function pScalar_String(PHPParser_Node_Scalar_String $node) {
|
||||||
return ($node->isBinary ? 'b' : '')
|
return ($node->isBinary ? 'b' : '')
|
||||||
. (PHPParser_Node_Scalar_String::SINGLE_QUOTED === $node->type
|
. '\'' . $this->pSafe(addcslashes($node->value, '\'\\')) . '\'';
|
||||||
? '\'' . $this->pSafe(addcslashes($node->value, '\'\\')) . '\''
|
|
||||||
: '"' . addcslashes($node->value, "\n\r\t\f\v$\"\\") . '"'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function pScalar_Encapsed(PHPParser_Node_Scalar_Encapsed $node) {
|
public function pScalar_Encapsed(PHPParser_Node_Scalar_Encapsed $node) {
|
||||||
|
@ -13,16 +13,14 @@ class Unit_NodeTraverserTest extends PHPUnit_Framework_TestCase
|
|||||||
'exprs' => array(
|
'exprs' => array(
|
||||||
new PHPParser_Node_Scalar_String(array(
|
new PHPParser_Node_Scalar_String(array(
|
||||||
'value' => 'Hallo World',
|
'value' => 'Hallo World',
|
||||||
'isBinary' => false,
|
'isBinary' => false
|
||||||
'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED
|
|
||||||
))
|
))
|
||||||
)
|
)
|
||||||
)),
|
)),
|
||||||
new PHPParser_Node_Expr_Print(array(
|
new PHPParser_Node_Expr_Print(array(
|
||||||
'expr' => new PHPParser_Node_Scalar_String(array(
|
'expr' => new PHPParser_Node_Scalar_String(array(
|
||||||
'value' => 'Hallo World, again!',
|
'value' => 'Hallo World, again!',
|
||||||
'isBinary' => false,
|
'isBinary' => false
|
||||||
'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED
|
|
||||||
))
|
))
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
@ -83,8 +81,7 @@ class Unit_NodeTraverserTest extends PHPUnit_Framework_TestCase
|
|||||||
'exprs' => array(
|
'exprs' => array(
|
||||||
new PHPParser_Node_Scalar_String(array(
|
new PHPParser_Node_Scalar_String(array(
|
||||||
'value' => 'Foo Bar',
|
'value' => 'Foo Bar',
|
||||||
'isBinary' => false,
|
'isBinary' => false
|
||||||
'type' => PHPParser_Node_Scalar_String::SINGLE_QUOTED
|
|
||||||
))
|
))
|
||||||
)
|
)
|
||||||
)),
|
)),
|
||||||
|
Loading…
Reference in New Issue
Block a user