net.sourceforge.pmd.lang.plsql.dfa
Class StatementAndBraceFinder

java.lang.Object
  extended by net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitorAdapter
      extended by net.sourceforge.pmd.lang.plsql.dfa.StatementAndBraceFinder
All Implemented Interfaces:
PLSQLParserVisitor

public class StatementAndBraceFinder
extends PLSQLParserVisitorAdapter

Author:
raik

Sublayer of DataFlowFacade. Finds all data flow nodes and stores the type information (@see StackObject). At last it uses this information to link the nodes.


Constructor Summary
StatementAndBraceFinder(DataFlowHandler dataFlowHandler)
           
 
Method Summary
 void buildDataFlowFor(PLSQLNode node)
           
 Object visit(ASTCaseStatement node, Object data)
           
 Object visit(ASTCaseWhenClause node, Object data)
           
 Object visit(ASTCloseStatement node, Object data)
           
 Object visit(ASTContinueStatement node, Object data)
          Treat a PLSQL CONTINUE like a Java "continue"
 Object visit(ASTElseClause node, Object data)
           
 Object visit(ASTElsifClause node, Object data)
           
 Object visit(ASTEmbeddedSqlStatement node, Object data)
           
 Object visit(ASTExitStatement node, Object data)
          Treat a PLSQL EXIT like a Java "break"
 Object visit(ASTExpression node, Object data)
           
 Object visit(ASTFetchStatement node, Object data)
           
 Object visit(ASTGotoStatement node, Object data)
          Treat a PLSQL GOTO like a Java "continue"
 Object visit(ASTIfStatement node, Object data)
           
 Object visit(ASTLabelledStatement node, Object data)
           
 Object visit(ASTLoopStatement node, Object data)
          PL/SQL does not have a do/while statement or repeat/until statement: the equivalent is a LOOP statement.
 Object visit(ASTOpenStatement node, Object data)
           
 Object visit(ASTPipelineStatement node, Object data)
           
 Object visit(ASTRaiseStatement node, Object data)
           
 Object visit(ASTReturnStatement node, Object data)
           
 Object visit(ASTSqlStatement node, Object data)
           
 Object visit(ASTStatement node, Object data)
           
 Object visit(ASTUnlabelledStatement node, Object data)
           
 Object visit(ASTVariableOrConstantDeclarator node, Object data)
           
 Object visit(ASTWhileStatement node, Object data)
          A PL/SQL WHILE statement includes the LOOP statement and all Expressions within it: it does not have a single test expression, so the Java control processing (on the Expression) fires for each Expression in the LOOP.
 
Methods inherited from class net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitorAdapter
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatementAndBraceFinder

public StatementAndBraceFinder(DataFlowHandler dataFlowHandler)
Method Detail

buildDataFlowFor

public void buildDataFlowFor(PLSQLNode node)

visit

public Object visit(ASTSqlStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTEmbeddedSqlStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTCloseStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTOpenStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTFetchStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTPipelineStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTVariableOrConstantDeclarator node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTExpression node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTLabelledStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTLoopStatement node,
                    Object data)
PL/SQL does not have a do/while statement or repeat/until statement: the equivalent is a LOOP statement. A PL/SQL LOOP statement is exited using an explicit EXIT ( == break;) statement It does not have a test expression, so the Java control processing (on the expression) does not fire. The best way to cope it to push a DO_EXPR after the loop.

Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTWhileStatement node,
                    Object data)
A PL/SQL WHILE statement includes the LOOP statement and all Expressions within it: it does not have a single test expression, so the Java control processing (on the Expression) fires for each Expression in the LOOP. The best way to cope it to push a WHILE_LAST_STATEMENT after the WhileStatement has been processed.

Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTUnlabelledStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTCaseStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTCaseWhenClause node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTIfStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTElseClause node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTElsifClause node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTContinueStatement node,
                    Object data)
Treat a PLSQL CONTINUE like a Java "continue"

Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter
Parameters:
node -
data -
Returns:

visit

public Object visit(ASTExitStatement node,
                    Object data)
Treat a PLSQL EXIT like a Java "break"

Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter
Parameters:
node -
data -
Returns:

visit

public Object visit(ASTGotoStatement node,
                    Object data)
Treat a PLSQL GOTO like a Java "continue"

Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter
Parameters:
node -
data -
Returns:

visit

public Object visit(ASTReturnStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter

visit

public Object visit(ASTRaiseStatement node,
                    Object data)
Specified by:
visit in interface PLSQLParserVisitor
Overrides:
visit in class PLSQLParserVisitorAdapter


Copyright © 2002-2016 InfoEther. All Rights Reserved.