/** * @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; }
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; }
public function loadFile(File $aFile) { $aReader = $aFile->openReader(); $nBytes = $aReader->readInString($this); $aReader->close(); return $nBytes; }