Beispiel #1
0
 /**
  * @return org\jecat\framework\lang\compile\object\TokenPool
  */
 public function scan($sSourceFile)
 {
     $aSource = new String();
     $aSourceFile = new File($sSourceFile);
     $aSourceStream = $aSourceFile->openReader()->readInString($aSource);
     $aTokenPool = $this->createTokenPool($sSourceFile);
     $nLine = 1;
     $nPosition = 1;
     $arrTokens = token_get_all($aSource);
     foreach ($arrTokens as &$oneToken) {
         if (is_array($oneToken)) {
             if ($nLine != $oneToken[2]) {
                 $nLine = $oneToken[2];
                 $nPosition = 1;
             }
             $oneToken[3] = token_name($oneToken[0]);
             $aTokenPool->add(new Token($oneToken[0], $oneToken[1], $nPosition++, $nLine));
         } else {
             if (is_string($oneToken)) {
                 $aTokenPool->add(new Token(T_STRING, $oneToken, $nPosition++, $nLine));
             }
         }
     }
     return $aTokenPool;
 }
Beispiel #2
0
 private function generateClassInfo($sClassName)
 {
     $aClassLoader = ClassLoader::singleton();
     $sFilePath = $aClassLoader->searchClass($sClassName, Package::nocompiled);
     if (empty($sFilePath)) {
         return array();
     }
     $aFile = new File($sFilePath);
     $aInheritInfoDetector = InheritInfoDetector::singleton();
     $arrClassInfo = $aInheritInfoDetector->detect($aFile->openReader());
     return $arrClassInfo;
 }
Beispiel #3
0
 public function loadFile(File $aFile)
 {
     $aReader = $aFile->openReader();
     $nBytes = $aReader->readInString($this);
     $aReader->close();
     return $nBytes;
 }