mirror of
https://github.com/danog/PHP-Parser.git
synced 2024-11-27 04:14:44 +01:00
db3181aff1
The parser didn't account for the additional newline after the content of doc strings, which is left there by the tokenizer for some reason. Additoinally esacape sequences were parsed in nowdoc strings. Additionally this contains some minor changes to the grammar: Some _list nonterminals were refactored to have the possible single elements in a reparate rule and only assemble those single elements. (This reduces duplication and gives better assignment of line number context.)
67 lines
995 B
Plaintext
67 lines
995 B
Plaintext
Nowdoc and heredoc strings
|
|
-----
|
|
<?php
|
|
|
|
// empty strings
|
|
<<<'EOS'
|
|
EOS;
|
|
<<<EOS
|
|
EOS;
|
|
|
|
// constant encapsed strings
|
|
<<<'EOS'
|
|
Test '" $a \n
|
|
EOS;
|
|
<<<EOS
|
|
Test '" \$a \n
|
|
EOS;
|
|
|
|
// encapsed strings
|
|
<<<EOS
|
|
Test $a
|
|
EOS;
|
|
<<<EOS
|
|
Test $a and $b->c test
|
|
EOS;
|
|
|
|
// comment to force line break before EOF
|
|
-----
|
|
array(
|
|
0: Scalar_String(
|
|
value:
|
|
)
|
|
1: Scalar_String(
|
|
value:
|
|
)
|
|
2: Scalar_String(
|
|
value: Test '" $a \n
|
|
)
|
|
3: Scalar_String(
|
|
value: Test '" $a
|
|
|
|
)
|
|
4: Scalar_Encapsed(
|
|
parts: array(
|
|
0: Test
|
|
1: Expr_Variable(
|
|
name: a
|
|
)
|
|
)
|
|
)
|
|
5: Scalar_Encapsed(
|
|
parts: array(
|
|
0: Test
|
|
1: Expr_Variable(
|
|
name: a
|
|
)
|
|
2: and
|
|
3: Expr_PropertyFetch(
|
|
var: Expr_Variable(
|
|
name: b
|
|
)
|
|
name: c
|
|
)
|
|
4: test
|
|
)
|
|
)
|
|
) |