Re: [PHP-DOC] #26582 [NoF-Opn]: HEREDOC linefeed requirement mis-documented

2003-12-22 Thread Jakub Vrana
Does someone know more about it? I just can see that in
zend_language_scanner.l are these rules:

NEWLINE (\r|\n|\r\n)

ST_IN_SCRIPTING{TABS_AND_SPACES}{LABEL}{NEWLINE} {
...
BEGIN(ST_HEREDOC);
...
}

ST_HEREDOC^{LABEL}(;)?{NEWLINE} {
...
BEGIN(ST_IN_SCRIPTING);
...
}

It seems that it was intended to accept all types of newlines but \r
is not accepted on Linux/Windows nor on MacOS (maybe only X) in fact.

Jakub Vrana

  ID:   26582
  User updated by:  iwd32900 at yahoo dot com
  Reported By:  iwd32900 at yahoo dot com
 -Status:   No Feedback
 +Status:   Open
  Bug Type: Documentation problem
  Operating System: Darwin/Mac OS X
  PHP Version:  4.3.4
  New Comment:

 No, it doesn't work with \r.

 I realize that in some sense, \n is the new 'native' 
 linefeed for Mac since OS X is Unix based. This doesn't 
 change my opinion that PHP should be linefeed-agnostic, 
 so that code can easily be transported from one platform 
 to another.


 Previous Comments:
 

 [2003-12-18 05:21:18] [EMAIL PROTECTED]

 No feedback was provided. The bug is being suspended because
 we assume that you are no longer experiencing the problem.
 If this is not the case and you are able to provide the
 information that was requested earlier, please do so and
 change the status of the bug back to Open. Thank you.



 

 [2003-12-10 09:39:06] [EMAIL PROTECTED]

 Does heredoc work for you with \r?

 

 [2003-12-10 09:12:36] iwd32900 at yahoo dot com

 Description:
 
 The current manual says this, under the Heredoc 
 section in Strings in Types:

 -
 It's also important to realize that the first character 
 before the closing identifier must be a newline as 
 defined by your operating system. This is \r on 
 Macintosh for example.

 If this rule is broken and the closing identifier is not 
 clean then it's not considered to be a closing 
 identifier and PHP will continue looking for one. If in 
 this case a proper closing identifier is not found then 
 a parse error will result with the line number being at 
 the end of the script.
 -

 I have two issues with this.
 1. This doesn't appear to be true. I'm using the 
 entropy.ch distribution of 4.3.4, and it accepts \n as a 
 linefeed before the end marker on my Mac.

 2. One of the great things about PHP is that it's cross-
 platform portable. The interpretter otherwise seems to 
 be linefeed-agnostic; it should be here, too. That way, 
 I can write my scripts on any platform and distribute 
 them to any other, and no one has to worry about 
 something as irritating as linefeeds. Just check for any 
 of \n, \r, or \r\n before a heredoc terminator. Should 
 be really easy, and it will do a lot for making PHP more 
 platform independent.

 Reproduce code:
 ---
 $heredoc = HEREDOC
 Does this cause a parse error?
 HEREDOC;
 echo $heredoc;

 // No, it doesn't

 Expected result:
 
 Given what the manual says, this should break since the 
 linefeeds are Unix but it was run on a Mac.

 The documented behavior isn't the DESIRABLE behavior, 
 however. PHP should accept all linefeed types on all 
 platforms to promote code portability.

 Actual result:
 --
 The example works just fine on my Mac, actually. It may 
 be that the cross-platform behavior is already 
 implementd, and just hasn't been documented yet.


 


[PHP-DOC] #26582 [NoF-Opn]: HEREDOC linefeed requirement mis-documented

2003-12-18 Thread iwd32900 at yahoo dot com
 ID:   26582
 User updated by:  iwd32900 at yahoo dot com
 Reported By:  iwd32900 at yahoo dot com
-Status:   No Feedback
+Status:   Open
 Bug Type: Documentation problem
 Operating System: Darwin/Mac OS X
 PHP Version:  4.3.4
 New Comment:

No, it doesn't work with \r.

I realize that in some sense, \n is the new 'native' 
linefeed for Mac since OS X is Unix based. This doesn't 
change my opinion that PHP should be linefeed-agnostic, 
so that code can easily be transported from one platform 
to another.


Previous Comments:


[2003-12-18 05:21:18] [EMAIL PROTECTED]

No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to Open. Thank you.





[2003-12-10 09:39:06] [EMAIL PROTECTED]

Does heredoc work for you with \r?



[2003-12-10 09:12:36] iwd32900 at yahoo dot com

Description:

The current manual says this, under the Heredoc 
section in Strings in Types:

-
It's also important to realize that the first character 
before the closing identifier must be a newline as 
defined by your operating system. This is \r on 
Macintosh for example.

If this rule is broken and the closing identifier is not 
clean then it's not considered to be a closing 
identifier and PHP will continue looking for one. If in 
this case a proper closing identifier is not found then 
a parse error will result with the line number being at 
the end of the script.
-

I have two issues with this.
1. This doesn't appear to be true. I'm using the 
entropy.ch distribution of 4.3.4, and it accepts \n as a 
linefeed before the end marker on my Mac.

2. One of the great things about PHP is that it's cross-
platform portable. The interpretter otherwise seems to 
be linefeed-agnostic; it should be here, too. That way, 
I can write my scripts on any platform and distribute 
them to any other, and no one has to worry about 
something as irritating as linefeeds. Just check for any 
of \n, \r, or \r\n before a heredoc terminator. Should 
be really easy, and it will do a lot for making PHP more 
platform independent.

Reproduce code:
---
$heredoc = HEREDOC
Does this cause a parse error?
HEREDOC;
echo $heredoc;

// No, it doesn't

Expected result:

Given what the manual says, this should break since the 
linefeeds are Unix but it was run on a Mac.

The documented behavior isn't the DESIRABLE behavior, 
however. PHP should accept all linefeed types on all 
platforms to promote code portability.

Actual result:
--
The example works just fine on my Mac, actually. It may 
be that the cross-platform behavior is already 
implementd, and just hasn't been documented yet.





-- 
Edit this bug report at http://bugs.php.net/?id=26582edit=1