如何知道Postfix Expression是否属于for语句?

时间:2014-04-24 12:02:30

标签: eclipse eclipse-jdt

我使用eclipse解析器处理java代码中的表达式和语句。

我有一个功能:

    public boolean visit(PostfixExpression node)

处理Postfix表达,例如i++;

问题是我想要区分for statement后缀和其他后缀。 我想也许我可以到node parent并以某种方式检查它是否是for。类似于node.getParent() ...但node.getParent()不会返回expression

如何识别PostfixExpression是否属于for loop

的任何想法

由于

修改

通过" for statement后缀"我的意思是for loop第一行的后缀。如:

for(i=0;i<10;i++)

所以我想将此i++与其他i++区别开来。

2 个答案:

答案 0 :(得分:0)

你不能只是致电ASTNode.getParent()来查看表达式包含哪种语句?

答案 1 :(得分:0)

我通过创建for_updaters列表(使用node.updaters())并在每次访问for循环时更新它(也可能是nested loops)来解决这个问题。此外,每当我遇到PostfixExpression(包括for updaters)时,我将其添加到另一个列表,然后从此列表中删除出现在for_updaters列表中的所有类似事件。这样我只留下非更新者Postfixes。这对我也有用,因为每次我访问for循环时我都清除了两个列表,所以不用担心重复的变量名称。

注意: node.updaters()会返回完整的完整表达式:[i++]。但我只需要i。通过将updater转换为String然后使用substring(),可以轻松提取它。