理解缩进的php语法检查器

考虑这个PHP脚本:

<?php                       // 1
                            // 2
function foo() {            // 3
                            // 4
    $foo = 1;               // 5
                            // 6
    if("something") {       // 7
        $bar = 2;           // 8
                            // 9 = note the missing brace
                            // 10
    $baz = 4;               // 11
                            // 12
}                           // 13
?>                          // 14

运行它时,您会收到解析错误

 Parse error: syntax error, unexpected end of file in ... on line 14

是否有用于php的工具,该工具足够聪明,可以分析我的缩进,并告诉我实际的问题在第9行(或者就此而言,在第11行),而不是在脚本的末尾.

解决方法:

这种问题几乎是无法解决的.编译器会尽力告诉您发生错误的位置,但是它不能做到无误.从本质上讲,它将继续扫描文件,直到到达某个必须无效的位置为止.但这并不意味着那是您搞砸的地方.这只是意味着在您犯错的那一刻,遵循的技术上仍然是有效的语法(即使完全愚蠢),直到编译器厌恶地放弃为止.

因此,在您的情况下,即使代码偏离了第9行中的预期,在第14行之前,该语法在技术上还是可以的.解析器无法知道这一点.

由于缩进是可选的并且被解析器忽略,因此几乎肯定会引起更多麻烦,而不是将缩进考虑在内.如果确实如此,它将在没有错误的地方不断提出错误.毕竟,缩进在语法上没有意义的一个结果是,存在多种合理的缩进方式.

我认为,最好的选择是使用自动为您添加缩进的IDE. (当然可以将Eclipse配置为为您整理缩进.)如果这样做,您会在编写第11行时发现它想缩进的幅度超出了您的预期,这将为您提供线索忘了一个大括号.

上一篇:Javascript中的多变量声明过程中不熟悉使用方括号


下一篇:JavaScript >>代表什么?