backslash before newline in single quoted string
imuli opened this issue · comments
While backslash-newline doesn't have any special meaning inside a string in PHP,
it is syntatically valid. Currently parsing somethng like
<?php
echo "/ --- \
| foo |
\ --- /" . "\n";
echo '/ --- \
| bar |
\ --- /' . "\n";
yields syntax errors on the second string
==> multi_line_strings.php
syntax error: unexpected $unk at line 5
syntax error: unexpected T_DEC, expecting T_STRING at line 7
| [*node.Root]
| "Position": Pos{Line: 2-7 Pos: 7-83};
| "Stmts":
| [*stmt.Echo]
| "Position": Pos{Line: 2-4 Pos: 7-44};
| "Exprs":
| [*binary.Concat]
| "Position": Pos{Line: 2-4 Pos: 12-43};
| "Left":
| [*scalar.String]
| "Position": Pos{Line: 2-4 Pos: 12-36};
| "Value": "/ --- \
| foo |
\ --- /";
| "Right":
| [*scalar.String]
| "Position": Pos{Line: 4-4 Pos: 40-43};
| "Value": "\n";
| [*stmt.Expression]
| "Position": Pos{Line: 7-7 Pos: 79-83};
| "Expr":
| [*scalar.String]
| "Position": Pos{Line: 7-7 Pos: 79-82};
| "Value": "\n";
rather than two valid strings
==> /home/imuli/src/github.com/imuli/semantic-php/snippets/multi_line_strings.php
| [*node.Root]
| "Position": Pos{Line: 2-7 Pos: 7-83};
| "Stmts":
| [*stmt.Echo]
| "Position": Pos{Line: 2-4 Pos: 7-44};
| "Exprs":
| [*binary.Concat]
| "Position": Pos{Line: 2-4 Pos: 12-43};
| "Left":
| [*scalar.String]
| "Position": Pos{Line: 2-4 Pos: 12-36};
| "Value": "/ --- \
| foo |
\ --- /";
| "Right":
| [*scalar.String]
| "Position": Pos{Line: 4-4 Pos: 40-43};
| "Value": "\n";
| [*stmt.Echo]
| "Position": Pos{Line: 5-7 Pos: 46-83};
| "Exprs":
| [*binary.Concat]
| "Position": Pos{Line: 5-7 Pos: 51-82};
| "Left":
| [*scalar.String]
| "Position": Pos{Line: 5-7 Pos: 51-75};
| "Value": '/ --- \
| bar |
\ --- /';
| "Right":
| [*scalar.String]
| "Position": Pos{Line: 7-7 Pos: 79-82};
| "Value": "\n";