Question

I'm using eclipse parser to work with expressions and statements in java code.

I have a function:

    public boolean visit(PostfixExpression node)

which deals with Postfix expressoins, such ass i++;

Problem is i want to distinguish between a for statement postfix, and other postfixes. I thought maybe i could get to the node's parent and somehow check if it's a for. Something like node.getParent()... but node.getParent() doesn't return an expression.

Any ideas how to recognize if the PostfixExpression belongs to a for loop?

Thanks

edit:

By "for statement postfix" i mean the postfix in the for loop's first line. Such as:

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

So i want to distinguish this i++ from other i++'s.

Was it helpful?

Solution 2

I solved this by creating a for_updaters List (using node.updaters()) and updating it every time i visit a for loop (could also be nested loops). Also, whenever i come across a PostfixExpression (including for updaters), i add it to another List, and then delete from this List all similar occurrences that appear in for_updaters List. This way i'm only left with non-for-updaters Postfixes. This also works for me because every time i visit a for loop i clear both Lists, so no worries about duplicate variable names.

Note: node.updaters() returns the exact full expression: [i++]. But i only need i. It's easy to extract it by converting the updater to String and then use substring().

OTHER TIPS

Can't you just call ASTNode.getParent() to see what kind of statement the expression is contained in?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top