+++ /dev/null
-package net.sourceforge.phpeclipse.mover.obfuscator;
-
-/**
- * Analyze the file with the PHP Scanner
- */
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
-import net.sourceforge.phpdt.core.compiler.InvalidInputException;
-import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
-import net.sourceforge.phpdt.internal.compiler.parser.SyntaxError;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpeclipse.mover.DefaultMover;
-import net.sourceforge.phpeclipse.views.PHPConsole;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-
-public class PHPAnalyzer extends DefaultMover implements ITerminalSymbols {
-
- protected Scanner fScanner;
- protected int fToken;
-
- protected HashMap fIdentifierMap;
-
- /**
- * buffer, for obvious reasons access to this buffer must
- * be synchronized
- */
- protected byte[] bytes = new byte[1024];
-
- /**
- * Creates a PHPAnalyzer
- * @param console reports error to the PHPConsole
- */
- public PHPAnalyzer(PHPConsole console, Scanner scanner, HashMap identifierMap) {
- super(console);
- this.fScanner = scanner;
- this.fIdentifierMap = identifierMap;
- }
-
- /**
- * gets the next token from input
- */
- private void getNextToken() {
-
- try {
- fToken = fScanner.getNextToken();
- if (Scanner.DEBUG) {
- int currentEndPosition = fScanner.getCurrentTokenEndPosition();
- int currentStartPosition = fScanner.getCurrentTokenStartPosition();
-
- System.out.print(currentStartPosition + "," + currentEndPosition + ": ");
- System.out.println(fScanner.toStringAction(fToken));
- }
- return;
- } catch (InvalidInputException e) {
-
- }
- fToken = TokenNameERROR;
- }
-
- private void parseIdentifiers(boolean goBack) {
- char[] ident;
- String identifier;
- PHPIdentifier value;
- int counter = 0;
-
- IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
- try {
- while (fToken != TokenNameEOF && fToken != TokenNameERROR) {
- if (fToken == TokenNameVariable) {
- identifier = new String(fScanner.getCurrentIdentifierSource());
- value = (PHPIdentifier) fIdentifierMap.get(identifier);
- if (value == null) {
- fIdentifierMap.put(identifier, new PHPIdentifier(null, PHPIdentifier.VARIABLE));
- }
- getNextToken();
- // } else if (fToken == TokenNamefunction) {
- // getNextToken();
- // if (fToken == TokenNameAND) {
- // getNextToken();
- // }
- // if (fToken == TokenNameIdentifier) {
- // ident = fScanner.getCurrentIdentifierSource();
- // outlineInfo.addVariable(new String(ident));
- // temp = new PHPFunctionDeclaration(current, new String(ident), fScanner.getCurrentTokenStartPosition());
- // current.add(temp);
- // getNextToken();
- // parseDeclarations(outlineInfo, temp, true);
- // }
- // } else if (fToken == TokenNameclass) {
- // getNextToken();
- // if (fToken == TokenNameIdentifier) {
- // ident = fScanner.getCurrentIdentifierSource();
- // outlineInfo.addVariable(new String(ident));
- // temp = new PHPClassDeclaration(current, new String(ident), fScanner.getCurrentTokenStartPosition());
- // current.add(temp);
- // getNextToken();
- //
- // //skip fTokens for classname, extends and others until we have the opening '{'
- // while (fToken != TokenNameLBRACE && fToken != TokenNameEOF && fToken != TokenNameERROR) {
- // getNextToken();
- // }
- // parseDeclarations(outlineInfo, temp, true);
- // // stack.pop();
- // }
- } else if (fToken == TokenNameStringLiteral) {
- char currentCharacter;
- int i = fScanner.startPosition;
- ArrayList varList = new ArrayList();
-
- while (i < fScanner.currentPosition) {
- currentCharacter = fScanner.source[i++];
- if (currentCharacter == '$' && fScanner.source[i - 2] != '\\') {
- StringBuffer varName = new StringBuffer();
- varName.append("$");
- while (i < fScanner.currentPosition) {
- currentCharacter = fScanner.source[i++];
- if (!Scanner.isPHPIdentifierPart(currentCharacter)) {
- break; // while loop
- }
- varName.append(currentCharacter);
- }
- varList.add(varName.toString());
- }
- }
-
- for (i = 0; i < varList.size(); i++) {
- identifier = (String) varList.get(i);
- value = (PHPIdentifier) fIdentifierMap.get(identifier);
- if (value == null) {
- fIdentifierMap.put(identifier, new PHPIdentifier(null, PHPIdentifier.VARIABLE));
- }
- }
-
- getNextToken();
- } else if ((fToken == TokenNameLBRACE) || (fToken == TokenNameDOLLAR_LBRACE)) {
- getNextToken();
- counter++;
- } else if (fToken == TokenNameRBRACE) {
- getNextToken();
- --counter;
- if (counter == 0 && goBack) {
- return;
- }
- } else {
- getNextToken();
- }
- }
- } catch (SyntaxError sytaxErr) {
- // do nothing
- }
- }
- /**
- * Move one file.
- * @param sourceFile the file to move
- * @param targetDir the directory to copy the result to
- * @return file or null if the file was ignored
- */
- public File move(File sourceFile, File targetDir) {
-
- StringBuffer buf = new StringBuffer();
-
- try {
- long filelen = sourceFile.length();
- char[] charArray = new char[(int) filelen];
-
- BufferedReader br = new BufferedReader(new FileReader(sourceFile.getAbsolutePath()));
- br.read(charArray, 0, (int) filelen);
- br.close();
-
- // String input = buf.toString();
- /* fScanner initialization */
- fScanner.setSource(charArray);
- fScanner.setPHPMode(false);
- fToken = TokenNameEOF;
- getNextToken();
- parseIdentifiers(false);
- return null;
- } catch (IOException e) {
- fConsole.write(e.toString());
- }
- return null;
- }
-}
\ No newline at end of file