[PHP-DEV] Bug #11447 Updated: Switch statement sensible for white-space
ID: 11447 User Update by: [EMAIL PROTECTED] Status: Open Bug Type: Scripting Engine problem Operating system: Linux (RedHat 6.2) PHP Version: 4.0.4pl1 Description: Switch statement sensible for white-space Observe that the spaces are significant. This doesn't work: ? switch($var){ ? ? case alpha: break; }? This does!: ? switch($var){ ? ? case alpha: break; }? I suppose that the interpreter converts text outside ? ? to echo statements, so that the first code block is equivalent to: ? switch($var){ echo ' '; case alpha: break; }? This code block gave the same parse error as the first one! (Expecting T_CASE or T_DEFAULT or '}') Previous Comments: --- [2001-06-19 12:29:47] [EMAIL PROTECTED] The bug is valid - if you close and reopen the PHP tags between the switch and the case statement, it is going to bark at you. It shouldn't. This does not work: ? switch($var){ ? ? case alpha: break; }? This does: ? switch($var){ case alpha: break; }? Why in the world would anyone do that, is a whole other issue, still they probably expect to be able to do just that. If they can't, we either need to document it as such, (thus re-classify this as documentation problem) or fix it. I do not know what it takes to fix that, but it is a valid report nevertheless. Unbogusifying... --- [2001-06-13 14:58:29] [EMAIL PROTECTED] Which style I use, the classical style (using {}) or the alternative style (using : and endswitch), doesn't matter; the problem is the same. Sniper's comment about using ? ? several times is surely justified when having one-line code as in his example, but when it comes to multi-line code, there is an issue of readability. I think that script A below is easier to read than script B. Don't you? --- begin script A --- ? switch($var): ? ? case alpha: ? pAlpha/p ? break; ? ? case beta: ? pBeta/p ? break; ? ? default: ? pDefault/p ? break; ? ? endswitch; ? --- end script A --- --- begin script B --- ? switch($var): case alpha: ? pAlpha/p ? break; case beta: ? pBeta/p ? break; default: ? pDefault/p ? break; endswitch; ? --- end script B --- --- [2001-06-13 10:18:56] [EMAIL PROTECTED] Use the {} instead of the : / endswitch; ie. ?php switch ($value) { case: ? pAlpha/p ?php break; } ? And anyway, using ? ? too much is really not good idea. This is just stupid: ? some code ?? more code?? code..? --- [2001-06-12 19:13:44] [EMAIL PROTECTED] Section 7.4 in the FAQ is a little bit related. Should perhaps the ending for a block of PHP-code be ? followed by any number of white-space characters? --- [2001-06-12 18:51:27] [EMAIL PROTECTED] The following script gave a parse error: ? switch($var): ? ? case alpha: ? pAlpha/p ? break; ? !-- ... -- ? endswitch; ? Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in my-path/bug.php on line 2 First I thought that this was really a bug, but then, while typing this report I realized that non-PHP-mode characters (like the two spaces) probably are converted to an echo instruction, so the PHP-parser sees something like the following code: switch($var): echo ' '; case alpha: echo 'pAlpha/p'; break; endswitch; The parser doesn't expect anything (but PHP-mode white-space) to come between the ':' on line 1 and 'case' on line 3 and therefore reports parse error. Right? For the sake of pretty-scripting, I would like this to change, but at the same time, now that I understand why the parser complains, I'm not sure if it should be changed... --- The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online. Full Bug description available at: http://bugs.php.net/?id=11447 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #11447 Updated: Switch statement sensible for white-space
ID: 11447 User Update by: [EMAIL PROTECTED] Status: Bogus Bug Type: Scripting Engine problem Operating system: Linux (RedHat 6.2) PHP Version: 4.0.4pl1 Description: Switch statement sensible for white-space Which style I use, the classical style (using {}) or the alternative style (using : and endswitch), doesn't matter; the problem is the same. Sniper's comment about using ? ? several times is surely justified when having one-line code as in his example, but when it comes to multi-line code, there is an issue of readability. I think that script A below is easier to read than script B. Don't you? --- begin script A --- ? switch($var): ? ? case alpha: ? pAlpha/p ? break; ? ? case beta: ? pBeta/p ? break; ? ? default: ? pDefault/p ? break; ? ? endswitch; ? --- end script A --- --- begin script B --- ? switch($var): case alpha: ? pAlpha/p ? break; case beta: ? pBeta/p ? break; default: ? pDefault/p ? break; endswitch; ? --- end script B --- Previous Comments: --- [2001-06-13 10:18:56] [EMAIL PROTECTED] Use the {} instead of the : / endswitch; ie. ?php switch ($value) { case: ? pAlpha/p ?php break; } ? And anyway, using ? ? too much is really not good idea. This is just stupid: ? some code ?? more code?? code..? --- [2001-06-12 19:13:44] [EMAIL PROTECTED] Section 7.4 in the FAQ is a little bit related. Should perhaps the ending for a block of PHP-code be ? followed by any number of white-space characters? --- [2001-06-12 18:51:27] [EMAIL PROTECTED] The following script gave a parse error: ? switch($var): ? ? case alpha: ? pAlpha/p ? break; ? !-- ... -- ? endswitch; ? Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in my-path/bug.php on line 2 First I thought that this was really a bug, but then, while typing this report I realized that non-PHP-mode characters (like the two spaces) probably are converted to an echo instruction, so the PHP-parser sees something like the following code: switch($var): echo ' '; case alpha: echo 'pAlpha/p'; break; endswitch; The parser doesn't expect anything (but PHP-mode white-space) to come between the ':' on line 1 and 'case' on line 3 and therefore reports parse error. Right? For the sake of pretty-scripting, I would like this to change, but at the same time, now that I understand why the parser complains, I'm not sure if it should be changed... --- Full Bug description available at: http://bugs.php.net/?id=11447 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #11447: Switch statement sensible for white-space
From: [EMAIL PROTECTED] Operating system: Linux (RedHat 6.2) PHP version: 4.0.4pl1 PHP Bug Type: Scripting Engine problem Bug description: Switch statement sensible for white-space The following script gave a parse error: ? switch($var): ? ? case alpha: ? pAlpha/p ? break; ? !-- ... -- ? endswitch; ? Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in my-path/bug.php on line 2 First I thought that this was really a bug, but then, while typing this report I realized that non-PHP-mode characters (like the two spaces) probably are converted to an echo instruction, so the PHP-parser sees something like the following code: switch($var): echo ' '; case alpha: echo 'pAlpha/p'; break; endswitch; The parser doesn't expect anything (but PHP-mode white-space) to come between the ':' on line 1 and 'case' on line 3 and therefore reports parse error. Right? For the sake of pretty-scripting, I would like this to change, but at the same time, now that I understand why the parser complains, I'm not sure if it should be changed... -- Edit Bug report at: http://bugs.php.net/?id=11447edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #11447 Updated: Switch statement sensible for white-space
ID: 11447 User Update by: [EMAIL PROTECTED] Status: Open Bug Type: Scripting Engine problem Operating system: Linux (RedHat 6.2) PHP Version: 4.0.4pl1 Description: Switch statement sensible for white-space Section 7.4 in the FAQ is a little bit related. Should perhaps the ending for a block of PHP-code be ? followed by any number of white-space characters? Previous Comments: --- [2001-06-12 18:51:27] [EMAIL PROTECTED] The following script gave a parse error: ? switch($var): ? ? case alpha: ? pAlpha/p ? break; ? !-- ... -- ? endswitch; ? Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in my-path/bug.php on line 2 First I thought that this was really a bug, but then, while typing this report I realized that non-PHP-mode characters (like the two spaces) probably are converted to an echo instruction, so the PHP-parser sees something like the following code: switch($var): echo ' '; case alpha: echo 'pAlpha/p'; break; endswitch; The parser doesn't expect anything (but PHP-mode white-space) to come between the ':' on line 1 and 'case' on line 3 and therefore reports parse error. Right? For the sake of pretty-scripting, I would like this to change, but at the same time, now that I understand why the parser complains, I'm not sure if it should be changed... --- Full Bug description available at: http://bugs.php.net/?id=11447 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]