我试图在给定的Java程序中可视化变量的范围。如何在“{”“}”之间命名每个范围?即我希望通过查看程序员可以轻松地知道变量或对象的范围来显示树结构中的变量或对象。 我编写了一个程序来计算“{”“}”以及条件语句或循环语句是否出现在一行上,没有任何“{”“}”。 我的问题是!是否已经有任何其他工具或概念来做同样的事情或我们自己写的。对不起,我不知道怎么说得更清楚。
答案 0 :(得分:2)
如何命名“{”“}”
之间的每个范围
目前尚不清楚为什么需要命名块。大多数IDE都不这样做:他们可能会使用突出显示来显示哪些开始和结束大括号匹配。我认为你的意思是你希望识别每对匹配的大括号,但你实际上并不需要为它们命名。
无论哪种方式,您都必须解析源代码以正确匹配大括号。请注意,不足以在不解析代码的情况下计算大括号,因为例如注释和字符串中的大括号不会开始或结束范围。
如果条件语句或循环语句出现单行且没有“{”“}”,该怎么办。
在条件语句的主体中(或在循环语句的主体中)创建变量是不合法的,除非该主体是一个块(即由大括号包围)。这是因为Block
的定义是:
BlockStatement:
LocalVariableDeclarationStatement
ClassDeclaration
Statement
IfThenStatement
被定义为folows:
IfThenStatement:
if ( Expression ) Statement
Statement
的定义不包括LocalVariableDeclarationStatement
(块内除外)。
答案 1 :(得分:1)
您可以随意命名范围。如果你想在代码中执行此操作,可以为它们添加标签。
OUTER: {
// code
INNER: {
if(flag)
break OUTER;
}
// code
}
你不能在独立语句中声明变量(没有{
}
)唯一的例外是for / for-each循环声明变量。