classes/phing/parser/ProjectConfigurator.php
protected function parse()
    {
        try {
            // get parse context
            $ctx = $this->project->getReference(self::PARSING_CONTEXT_REFERENCE);
            if (null == $ctx) {
                // make a new context and register it with project
                $ctx = new PhingXMLContext($this->project);
                $this->project->addReference(self::PARSING_CONTEXT_REFERENCE, $ctx);
            }

            //record this parse with context
            $ctx->addImport($this->buildFile);

            if (count($ctx->getImportStack()) > 1) {
                $currentImplicit = $ctx->getImplicitTarget();
                $currentTargets = $ctx->getCurrentTargets();

                $newCurrent = new Target();
                $newCurrent->setProject($this->project);
                $newCurrent->setName('');
                $ctx->setCurrentTargets([]);
                $ctx->setImplicitTarget($newCurrent);

                // this is an imported file
                // modify project tag parse behavior
                $this->setIgnoreProjectTag(true);
                $this->_parse($ctx);
                $newCurrent->main();

                $ctx->setImplicitTarget($currentImplicit);
                $ctx->setCurrentTargets($currentTargets);
            } else {
                $ctx->setCurrentTargets([]);
                $this->_parse($ctx);
                $ctx->getImplicitTarget()->main();
            }
        } catch (Exception $exc) {
            //throw new BuildException("Error reading project file", $exc);
            throw $exc;
        }
    }
protected function parse()
    {
        try {
            // get parse context
            $ctx = $this->project->getReference(self::PARSING_CONTEXT_REFERENCE);
            if (null == $ctx) {
                // make a new context and register it with project
                $ctx = new PhingXMLContext($this->project);
                $this->project->addReference(self::PARSING_CONTEXT_REFERENCE, $ctx);
            }

            //record this parse with context
            $ctx->addImport($this->buildFile);

            if (count($ctx->getImportStack()) > 1) {
                $currentImplicit = $ctx->getImplicitTarget();
                $currentTargets = $ctx->getCurrentTargets();

                $newCurrent = new Target();
                $newCurrent->setProject($this->project);
                $newCurrent->setName('');
                $ctx->setCurrentTargets([]);
                $ctx->setImplicitTarget($newCurrent);

                // this is an imported file
                // modify project tag parse behavior
                $this->setIgnoreProjectTag(true);
                $this->_parse($ctx);
                $newCurrent->main();

                $ctx->setImplicitTarget($currentImplicit);
                $ctx->setCurrentTargets($currentTargets);
            } else {
                $ctx->setCurrentTargets([]);
                $this->_parse($ctx);
                $ctx->getImplicitTarget()->main();
            }
        } catch (Exception $exc) {
            //throw new BuildException("Error reading project file", $exc);
            throw $exc;
        }
    }
protected function parse ( ) { try { // get parse context $ ctx = $ this -> project -> getReference ( self :: PARSING_CONTEXT_REFERENCE ) ; if ( null == $ ctx ) { // make a new context and register it with project $ ctx = new PhingXMLContext ( $ this -> project ) ; $ this -> project -> addReference ( self :: PARSING_CONTEXT_REFERENCE , $ ctx ) ; } //record this parse with context $ ctx -> addImport ( $ this -> buildFile ) ; if ( count ( $ ctx -> getImportStack ( ) ) > 1 ) { $ currentImplicit = $ ctx -> getImplicitTarget ( ) ; $ currentTargets = $ ctx -> getCurrentTargets ( ) ; $ newCurrent = new Target ( ) ; $ newCurrent -> setProject ( $ this -> project ) ; $ newCurrent -> setName ( '' ) ; $ ctx -> setCurrentTargets ( [ ] ) ; $ ctx -> setImplicitTarget ( $ newCurrent ) ; // this is an imported file // modify project tag parse behavior $ this -> setIgnoreProjectTag ( true ) ; $ this -> _parse ( $ ctx ) ; $ newCurrent -> main ( ) ; $ ctx -> setImplicitTarget ( $ currentImplicit ) ; $ ctx -> setCurrentTargets ( $ currentTargets ) ; } else { $ ctx -> setCurrentTargets ( [ ] ) ; $ this -> _parse ( $ ctx ) ; $ ctx -> getImplicitTarget ( ) -> main ( ) ; } } catch ( Exception $ exc ) { //throw new BuildException("Error reading project file", $exc); throw $ exc ; } }
Creates the ExpatParser, sets root handler and kick off parsing
process.

@throws BuildException if there is any kind of exception during
the parsing process
Creates the ExpatParser sets root handler and kick off parsing process .