import java.util.Hashtable;
import net.sourceforge.phpdt.core.compiler.*;
-import net.sourceforge.phpdt.internal.compiler.parser.*;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.PHPString;
-import net.sourceforge.phpeclipse.phpeditor.php.PHPKeywords;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.ui.texteditor.MarkerUtilities;
import test.PHPParserSuperclass;
-public class Parser extends PHPParserSuperclass implements PHPKeywords, ITerminalSymbols {
+public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
- public static final int ERROR = 2;
- public static final int WARNING = 1;
- public static final int INFO = 0;
-
- public static final boolean DEBUG = false;
- //scanner token
+ //scanner token
public Scanner scanner;
private IFile fileToParse;
private String str;
// current character
-// char ch;
+ // char ch;
// current token
int token;
private String stringValue;
/** Contains the current expression. */
- // private StringBuffer expression;
+ // private StringBuffer expression;
private boolean phpMode;
this.initializeScanner();
}
/**
- * Class Constructor.
+ * ClassDeclaration Constructor.
*
*@param s
*@param sess Description of Parameter
*@see
*/
public Parser(IFile fileToParse) {
-// if (keywordMap == null) {
-// keywordMap = new HashMap();
-// for (int i = 0; i < PHP_KEYWORS.length; i++) {
-// keywordMap.put(PHP_KEYWORS[i], new Integer(PHP_KEYWORD_TOKEN[i]));
-// }
-// }
+ // if (keywordMap == null) {
+ // keywordMap = new HashMap();
+ // for (int i = 0; i < PHP_KEYWORS.length; i++) {
+ // keywordMap.put(PHP_KEYWORS[i], new Integer(PHP_KEYWORD_TOKEN[i]));
+ // }
+ // }
this.currentPHPString = 0;
this.fileToParse = fileToParse;
this.phpList = null;
this.str = "";
this.token = TokenNameEOF;
-// this.chIndx = 0;
-// this.rowCount = 1;
-// this.columnCount = 0;
+ // this.chIndx = 0;
+ // this.rowCount = 1;
+ // this.columnCount = 0;
this.phpEnd = false;
// getNextToken();
/**
* Create marker for the parse error
*/
- private void setMarker(
- String message,
- int charStart,
- int charEnd,
- int errorLevel)
- throws CoreException {
+ private void setMarker(String message, int charStart, int charEnd, int errorLevel) throws CoreException {
setMarker(fileToParse, message, charStart, charEnd, errorLevel);
}
- public static void setMarker(
- IFile file,
- String message,
- int charStart,
- int charEnd,
- int errorLevel)
- throws CoreException {
- if (file != null) {
- Hashtable attributes = new Hashtable();
- MarkerUtilities.setMessage(attributes, message);
- switch (errorLevel) {
- case ERROR :
- attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
- break;
- case WARNING :
- attributes.put(
- IMarker.SEVERITY,
- new Integer(IMarker.SEVERITY_WARNING));
- break;
- case INFO :
- attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
- break;
- }
- MarkerUtilities.setCharStart(attributes, charStart);
- MarkerUtilities.setCharEnd(attributes, charEnd);
- // setLineNumber(attributes, lineNumber);
- MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
- }
- }
-
/**
* This method will throw the SyntaxError.
* It will add the good lines and columns to the Error
*/
private void throwSyntaxError(String error) {
-// if (str.length() < chIndx) {
-// chIndx--;
-// }
-// // read until end-of-line
-// int eol = chIndx;
-// while (str.length() > eol) {
-// ch = str.charAt(eol++);
-// if (ch == '\n') {
-// eol--;
-// break;
-// }
-// }
-// throw new SyntaxError(
-// rowCount,
-// chIndx - columnCount + 1,
-// str.substring(columnCount, eol),
-// error);
- throw new SyntaxError(
- 1,
- 1,
- "",
- error);
+ // if (str.length() < chIndx) {
+ // chIndx--;
+ // }
+ // // read until end-of-line
+ // int eol = chIndx;
+ // while (str.length() > eol) {
+ // ch = str.charAt(eol++);
+ // if (ch == '\n') {
+ // eol--;
+ // break;
+ // }
+ // }
+ // throw new SyntaxError(
+ // rowCount,
+ // chIndx - columnCount + 1,
+ // str.substring(columnCount, eol),
+ // error);
+ throw new SyntaxError(1, 1, "", error);
}
/**
*
*@see
*/
-// private void getChar() {
-// if (str.length() > chIndx) {
-// ch = str.charAt(chIndx++);
-//
-// return;
-// }
-//
-// chIndx = str.length() + 1;
-// ch = ' ';
-// // token = TokenNameEOF;
-// phpEnd = true;
-// }
+ // private void getChar() {
+ // if (str.length() > chIndx) {
+ // ch = str.charAt(chIndx++);
+ //
+ // return;
+ // }
+ //
+ // chIndx = str.length() + 1;
+ // ch = ' ';
+ // // token = TokenNameEOF;
+ // phpEnd = true;
+ // }
/**
* gets the next token from input
private void getNextToken() throws CoreException {
try {
token = scanner.getNextToken();
- if (DEBUG) {
+ if (Scanner.DEBUG) {
int currentEndPosition = scanner.getCurrentTokenEndPosition();
int currentStartPosition = scanner.getCurrentTokenStartPosition();
- System.out.print(
- currentStartPosition + "," + currentEndPosition + ": ");
+ System.out.print(currentStartPosition + "," + currentEndPosition + ": ");
System.out.println(scanner.toStringAction(token));
}
} catch (InvalidInputException e) {
* if it's a <code>double</code> the number will be stored in <code>longNumber</code> and the token will have the
* value {@link Parser#TokenNameINT_NUMBER}
*/
-// private void getNumber() {
-// StringBuffer inum = new StringBuffer();
-// char dFlag = ' ';
-// int numFormat = 10;
-//
-// // save first digit
-// char firstCh = ch;
-// inum.append(ch);
-//
-// getChar();
-// // determine number conversions:
-// if (firstCh == '0') {
-// switch (ch) {
-// case 'b' :
-// numFormat = 2;
-// getChar();
-// break;
-// case 'B' :
-// numFormat = 2;
-// getChar();
-// break;
-// case 'o' :
-// numFormat = 8;
-// getChar();
-// break;
-// case 'O' :
-// numFormat = 8;
-// getChar();
-// break;
-// case 'x' :
-// numFormat = 16;
-// getChar();
-// break;
-// case 'X' :
-// numFormat = 16;
-// getChar();
-// break;
-// }
-// }
-//
-// if (numFormat == 16) {
-// while ((ch >= '0' && ch <= '9')
-// || (ch >= 'a' && ch <= 'f')
-// || (ch >= 'A' && ch <= 'F')) {
-// inum.append(ch);
-// getChar();
-// }
-// } else {
-// while ((ch >= '0' && ch <= '9')
-// || (ch == '.')
-// || (ch == 'E')
-// || (ch == 'e')) {
-// if ((ch == '.') || (ch == 'E') || (ch == 'e')) {
-// if (ch == '.' && dFlag != ' ') {
-// break;
-// }
-// if ((dFlag == 'E') || (dFlag == 'e')) {
-// break;
-// }
-// dFlag = ch;
-// inum.append(ch);
-// getChar();
-// if ((ch == '-') || (ch == '+')) {
-// inum.append(ch);
-// getChar();
-// }
-// } else {
-// inum.append(ch);
-// getChar();
-// }
-// }
-// }
-// chIndx--;
-//
-// try {
-// if (dFlag != ' ') {
-// doubleNumber = new Double(inum.toString());
-// token = TokenNameDoubleLiteral;
-// return;
-// } else {
-// longNumber = Long.valueOf(inum.toString(), numFormat);
-// token = TokenNameIntegerLiteral;
-// return;
-// }
-//
-// } catch (Throwable e) {
-// throwSyntaxError("Number format error: " + inum.toString());
-// }
-// }
-//
-// /**
-// * Get a String.
-// * @param openChar the opening char ('\'', '"', '`')
-// * @param typeString the type of string {@link #TokenNameSTRING_CONSTANT},{@link #TokenNameINTERPOLATED_STRING}
-// * @param errorMsg the error message in case of parse error in the string
-// */
-// private void getString(
-// final char openChar,
-// final int typeString,
-// final String errorMsg) {
-// StringBuffer sBuffer = new StringBuffer();
-// boolean openString = true;
-// int startRow = rowCount;
-// while (str.length() > chIndx) {
-// ch = str.charAt(chIndx++);
-// if (ch == '\\') {
-// sBuffer.append(ch);
-// if (str.length() > chIndx) {
-// ch = str.charAt(chIndx++);
-// sBuffer.append(ch);
-// }
-// } else if (ch == openChar) {
-// openString = false;
-// break;
-// } else if (ch == '\n') {
-// rowCount++;
-// columnCount = chIndx;
-// } else {
-// sBuffer.append(ch);
-// }
-// }
-// if (openString) {
-// if (typeString == TokenNameStringConstant) {
-// throwSyntaxError(errorMsg, startRow);
-// } else {
-// throwSyntaxError(errorMsg);
-// }
-// }
-// token = typeString;
-// stringValue = sBuffer.toString();
-// }
+ // private void getNumber() {
+ // StringBuffer inum = new StringBuffer();
+ // char dFlag = ' ';
+ // int numFormat = 10;
+ //
+ // // save first digit
+ // char firstCh = ch;
+ // inum.append(ch);
+ //
+ // getChar();
+ // // determine number conversions:
+ // if (firstCh == '0') {
+ // switch (ch) {
+ // case 'b' :
+ // numFormat = 2;
+ // getChar();
+ // break;
+ // case 'B' :
+ // numFormat = 2;
+ // getChar();
+ // break;
+ // case 'o' :
+ // numFormat = 8;
+ // getChar();
+ // break;
+ // case 'O' :
+ // numFormat = 8;
+ // getChar();
+ // break;
+ // case 'x' :
+ // numFormat = 16;
+ // getChar();
+ // break;
+ // case 'X' :
+ // numFormat = 16;
+ // getChar();
+ // break;
+ // }
+ // }
+ //
+ // if (numFormat == 16) {
+ // while ((ch >= '0' && ch <= '9')
+ // || (ch >= 'a' && ch <= 'f')
+ // || (ch >= 'A' && ch <= 'F')) {
+ // inum.append(ch);
+ // getChar();
+ // }
+ // } else {
+ // while ((ch >= '0' && ch <= '9')
+ // || (ch == '.')
+ // || (ch == 'E')
+ // || (ch == 'e')) {
+ // if ((ch == '.') || (ch == 'E') || (ch == 'e')) {
+ // if (ch == '.' && dFlag != ' ') {
+ // break;
+ // }
+ // if ((dFlag == 'E') || (dFlag == 'e')) {
+ // break;
+ // }
+ // dFlag = ch;
+ // inum.append(ch);
+ // getChar();
+ // if ((ch == '-') || (ch == '+')) {
+ // inum.append(ch);
+ // getChar();
+ // }
+ // } else {
+ // inum.append(ch);
+ // getChar();
+ // }
+ // }
+ // }
+ // chIndx--;
+ //
+ // try {
+ // if (dFlag != ' ') {
+ // doubleNumber = new Double(inum.toString());
+ // token = TokenNameDoubleLiteral;
+ // return;
+ // } else {
+ // longNumber = Long.valueOf(inum.toString(), numFormat);
+ // token = TokenNameIntegerLiteral;
+ // return;
+ // }
+ //
+ // } catch (Throwable e) {
+ // throwSyntaxError("Number format error: " + inum.toString());
+ // }
+ // }
+ //
+ // /**
+ // * Get a String.
+ // * @param openChar the opening char ('\'', '"', '`')
+ // * @param typeString the type of string {@link #TokenNameSTRING_CONSTANT},{@link #TokenNameINTERPOLATED_STRING}
+ // * @param errorMsg the error message in case of parse error in the string
+ // */
+ // private void getString(
+ // final char openChar,
+ // final int typeString,
+ // final String errorMsg) {
+ // StringBuffer sBuffer = new StringBuffer();
+ // boolean openString = true;
+ // int startRow = rowCount;
+ // while (str.length() > chIndx) {
+ // ch = str.charAt(chIndx++);
+ // if (ch == '\\') {
+ // sBuffer.append(ch);
+ // if (str.length() > chIndx) {
+ // ch = str.charAt(chIndx++);
+ // sBuffer.append(ch);
+ // }
+ // } else if (ch == openChar) {
+ // openString = false;
+ // break;
+ // } else if (ch == '\n') {
+ // rowCount++;
+ // columnCount = chIndx;
+ // } else {
+ // sBuffer.append(ch);
+ // }
+ // }
+ // if (openString) {
+ // if (typeString == TokenNameStringConstant) {
+ // throwSyntaxError(errorMsg, startRow);
+ // } else {
+ // throwSyntaxError(errorMsg);
+ // }
+ // }
+ // token = typeString;
+ // stringValue = sBuffer.toString();
+ // }
// public void htmlParserTester(String input) {
// int lineNumber = 1;
}
}
this.token = TokenNameEOF;
-// this.chIndx = 0;
-// this.rowCount = rowCount;
-// this.columnCount = 0;
+ // this.chIndx = 0;
+ // this.rowCount = rowCount;
+ // this.columnCount = 0;
this.phpEnd = false;
this.phpMode = true;
scanner.setSource(s.toCharArray());
if (token != TokenNameEOF && token != TokenNameERROR) {
statementList();
}
- if (token != TokenNameEOF && token != TokenNameERROR) {
+ if (token != TokenNameEOF) {
+ if (token == TokenNameERROR) {
+ throwSyntaxError("Scanner error (Found unknown token: " + scanner.toStringAction(token) + ")");
+ }
if (token == TokenNameRPAREN) {
throwSyntaxError("Too many closing ')'; end-of-file not reached.");
}
throw err;
} else {
// setMarker(err.getMessage(), err.getLine(), ERROR);
- setMarker(
- err.getMessage(),
- scanner.getCurrentTokenStartPosition(),
- scanner.getCurrentTokenEndPosition(),
- ERROR);
+ setMarker(err.getMessage(), scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition(), ERROR);
}
// if an error occured,
// try to find keywords 'class' or 'function'
public void parse(String s) throws CoreException {
this.str = s;
this.token = TokenNameEOF;
-// this.chIndx = 0;
-// this.rowCount = 1;
-// this.columnCount = 0;
+ // this.chIndx = 0;
+ // this.rowCount = 1;
+ // this.columnCount = 0;
this.phpEnd = false;
this.phpMode = false;
/* scanner initialization */
if (token != TokenNameEOF && token != TokenNameERROR) {
statementList();
}
- if (token != TokenNameEOF && token != TokenNameERROR) {
+ if (token != TokenNameEOF) {
+ if (token == TokenNameERROR) {
+ throwSyntaxError("Scanner error (Found unknown token: " + scanner.toStringAction(token) + ")");
+ }
if (token == TokenNameRPAREN) {
throwSyntaxError("Too many closing ')'; end-of-file not reached.");
}
return;
} catch (SyntaxError sytaxErr1) {
// setMarker(sytaxErr1.getMessage(), sytaxErr1.getLine(), ERROR);
- setMarker(
- sytaxErr1.getMessage(),
- scanner.getCurrentTokenStartPosition(),
- scanner.getCurrentTokenEndPosition(),
- ERROR);
+ setMarker(sytaxErr1.getMessage(), scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition(), ERROR);
try {
// if an error occured,
// try to find keywords 'class' or 'function'
}
} catch (SyntaxError sytaxErr2) {
// setMarker(sytaxErr2.getMessage(), sytaxErr2.getLine(), ERROR);
- setMarker(
- sytaxErr2.getMessage(),
- scanner.getCurrentTokenStartPosition(),
- scanner.getCurrentTokenEndPosition(),
- ERROR);
+ setMarker(sytaxErr2.getMessage(), scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition(), ERROR);
return;
}
}
this.str = s;
this.token = TokenNameEOF;
-// this.chIndx = 0;
-// this.rowCount = 1;
-// this.columnCount = 0;
+ // this.chIndx = 0;
+ // this.rowCount = 1;
+ // this.columnCount = 0;
this.phpEnd = false;
this.phpMode = false;
scanner.setSource(s.toCharArray());
return outlineInfo;
}
- private void parseDeclarations(
- PHPOutlineInfo outlineInfo,
- PHPSegmentWithChildren current,
- boolean goBack) {
+ private void parseDeclarations(PHPOutlineInfo outlineInfo, OutlineableWithChildren current, boolean goBack) {
char[] ident;
// PHPClassDeclaration current = (PHPClassDeclaration) stack.peek();
PHPSegmentWithChildren temp;
int counter = 0;
-
+
IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
try {
while (token != TokenNameEOF && token != TokenNameERROR) {
getNextToken();
} else if (token == TokenNamevar) {
getNextToken();
- if (token == TokenNameVariable
- && store.getBoolean(PHPeclipsePlugin.PHP_OUTLINE_VAR)) {
+ if (token == TokenNameVariable && store.getBoolean(PHPeclipsePlugin.PHP_OUTLINE_VAR)) {
ident = scanner.getCurrentIdentifierSource();
- String variableName = new String(ident);
+ //substring(1) added because PHPVarDeclaration doesn't need the $ anymore
+ String variableName = new String(ident).substring(1);
outlineInfo.addVariable(variableName);
getNextToken();
if (token != TokenNameSEMICOLON) {
-
+
getNextToken();
ident = scanner.getCurrentTokenSource();
if (token > TokenNameKEYWORD) {
scanner.getCurrentTokenStartPosition(), new String(ident)));
break;
case TokenNameDoubleLiteral :
- current
- .add(new PHPVarDeclaration(
- current,
- variableName + doubleNumber,
+ current.add(new PHPVarDeclaration(current, variableName + doubleNumber,
// chIndx - ident.length,
scanner.getCurrentTokenStartPosition(), new String(ident)));
break;
if (token == TokenNameAND) {
getNextToken();
}
- if (token == TokenNameIdentifier
- && store.getBoolean(PHPeclipsePlugin.PHP_OUTLINE_FUNC)) {
+ if (token == TokenNameIdentifier && store.getBoolean(PHPeclipsePlugin.PHP_OUTLINE_FUNC)) {
ident = scanner.getCurrentIdentifierSource();
outlineInfo.addVariable(new String(ident));
temp = new PHPFunctionDeclaration(current, new String(ident),
}
} else if (token == TokenNameclass) {
getNextToken();
- if (token == TokenNameIdentifier
- && store.getBoolean(PHPeclipsePlugin.PHP_OUTLINE_CLASS)) {
+ if (token == TokenNameIdentifier && store.getBoolean(PHPeclipsePlugin.PHP_OUTLINE_CLASS)) {
ident = scanner.getCurrentIdentifierSource();
outlineInfo.addVariable(new String(ident));
temp = new PHPClassDeclaration(current, new String(ident),
getNextToken();
//skip tokens for classname, extends and others until we have the opening '{'
- while (token != TokenNameLBRACE
- && token != TokenNameEOF
- && token != TokenNameERROR) {
+ while (token != TokenNameLBRACE && token != TokenNameEOF && token != TokenNameERROR) {
getNextToken();
}
parseDeclarations(outlineInfo, temp, true);
// stack.pop();
}
- } else if (token == TokenNameLBRACE) {
+ } else if ((token == TokenNameLBRACE) || (token == TokenNameDOLLAR_LBRACE)) {
getNextToken();
counter++;
} else if (token == TokenNameRBRACE) {
|| token == TokenNamerequire_once
|| token == TokenNameinclude
|| token == TokenNameinclude_once) {
- ident = scanner.getCurrentTokenSource();
-
+ ident = scanner.getCurrentTokenSource();
+
getNextToken();
int startPosition = scanner.getCurrentTokenStartPosition();
expression();
- char[] expr = scanner.getCurrentTokenSource(startPosition);
+ char[] expr = scanner.getCurrentTokenSource(startPosition);
outlineInfo.addVariable(new String(ident));
current.add(new PHPReqIncDeclaration(current, new String(ident),
// chIndx - ident.length,
} catch (SyntaxError sytaxErr) {
try {
// setMarker(sytaxErr.getMessage(), sytaxErr.getLine(), ERROR);
- setMarker(
- sytaxErr.getMessage(),
- scanner.getCurrentTokenStartPosition(),
- scanner.getCurrentTokenEndPosition(),
- ERROR);
+ setMarker(sytaxErr.getMessage(), scanner.getCurrentTokenStartPosition(), scanner.getCurrentTokenEndPosition(), ERROR);
} catch (CoreException e) {
}
}
foreachStatement();
return;
- } else if (
- token == TokenNamecontinue
- || token == TokenNamebreak
- || token == TokenNamereturn) {
+ } else if (token == TokenNamecontinue || token == TokenNamebreak || token == TokenNamereturn) {
getNextToken();
if (token != TokenNameSEMICOLON) {
expression();
return;
} else {
if (token != TokenNameStopPHP && token != TokenNameEOF) {
- throwSyntaxError(
- "';' expected after expression (Found token: "
- + scanner.toStringAction(token)
- + ")");
+ throwSyntaxError("';' expected after expression (Found token: " + scanner.toStringAction(token) + ")");
}
getNextToken();
}
if (token == TokenNameIdentifier) {
getNextToken();
} else {
- throwSyntaxError("Class name expected after keyword 'extends'.");
+ throwSyntaxError("ClassDeclaration name expected after keyword 'extends'.");
}
}
} else {
- throwSyntaxError("Class name expected after keyword 'class'.");
+ if (token > TokenNameKEYWORD) {
+ throwSyntaxError("Don't use keyword for class declaration [" + token + "].");
+ }
+ throwSyntaxError("ClassDeclaration name expected after keyword 'class'.");
}
}
} else {
getNextToken();
}
+ } else {
+ if (token > TokenNameKEYWORD) {
+ throwSyntaxError("Don't use keyword for function declaration [" + token + "].");
+ }
+ throwSyntaxError("Function name expected after keyword 'function'.");
}
}
//
constant();
if (token == TokenNameCOLON) {
getNextToken();
- if (token == TokenNamecase
- || token == TokenNamedefault) { // empty case statement ?
+ if (token == TokenNamecase || token == TokenNamedefault) { // empty case statement ?
continue;
}
statementList();
// rowCount,
// PHPParser.INFO);
setMarker(
- "':' expected after 'case' keyword (Found token: "
- + scanner.toStringAction(token)
- + ")",
+ "':' expected after 'case' keyword (Found token: " + scanner.toStringAction(token) + ")",
scanner.getCurrentTokenStartPosition(),
scanner.getCurrentTokenEndPosition(),
INFO);
}
statementList();
} else {
- throwSyntaxError(
- "':' character after 'case' constant expected (Found token: "
- + scanner.toStringAction(token)
- + ")");
+ throwSyntaxError("':' character after 'case' constant expected (Found token: " + scanner.toStringAction(token) + ")");
}
} else { // TokenNamedefault
getNextToken();
private void expression() throws CoreException {
//todo: find a better way to get the expression
-// expression = new StringBuffer();
-// for (int i = chIndx; i < str.length(); i++) {
-// if (str.charAt(i) == ';') {
-// break;
-// }
-// expression.append(str.charAt(i));
-// }
-
+ // expression = new StringBuffer();
+ // for (int i = chIndx; i < str.length(); i++) {
+ // if (str.charAt(i) == ';') {
+ // break;
+ // }
+ // expression.append(str.charAt(i));
+ // }
+
// if (token == TokenNameSTRING_CONSTANT || token == TokenNameINTERPOLATED_STRING) {
// getNextToken();
// } else {
getNextToken();
expression();
if (token != TokenNameRBRACE) {
- throwSyntaxError(
- "'}' expected after variable '"
- + new String(ident)
- + "' in variable-expression.");
+ throwSyntaxError("'}' expected after variable '" + new String(ident) + "' in variable-expression.");
}
getNextToken();
} else if (token == TokenNameLPAREN) {
if (token != TokenNameRPAREN) {
expressionList();
if (token != TokenNameRPAREN) {
- throwSyntaxError(
- "')' expected after variable '"
- + new String(ident)
- + "' in postfix-expression.");
+ throwSyntaxError("')' expected after variable '" + new String(ident) + "' in postfix-expression.");
}
}
getNextToken();
// rowCount,
// PHPParser.INFO);
setMarker(
- "Avoid using keyword '"
- + new String(ident)
- + "' as variable name.",
+ "Avoid using keyword '" + new String(ident) + "' as variable name.",
scanner.getCurrentTokenStartPosition(),
scanner.getCurrentTokenEndPosition(),
INFO);
break;
default :
throwSyntaxError("Syntax error after '->' token.");
- } while (
- token == TokenNameLBRACKET
- || token == TokenNameLPAREN
- || token == TokenNameLBRACE) {
+ } while (token == TokenNameLBRACKET || token == TokenNameLPAREN || token == TokenNameLBRACE) {
if (token == TokenNameLBRACKET) {
getNextToken();
expressionList();
unaryExpression();
}
- private void typeName() throws CoreException {
- //'string' 'unset' 'array' 'object'
- //'bool' 'boolean'
- //'real' 'double' 'float'
- //'int' 'integer'
- String identifier = "";
- if (token == TokenNameIdentifier) {
- char[] ident = scanner.getCurrentIdentifierSource();
- identifier = new String(ident);
- String str = identifier.toLowerCase();
- getNextToken();
- for (int i = 0; i < PHP_TYPES.length; i++) {
- if (PHP_TYPES[i].equals(str)) {
- return;
- }
- }
- }
- throwSyntaxError(
- "Expected type cast '( <type-name> )'; Got '" + identifier + "'.");
- }
+ // private void typeName() throws CoreException {
+ // //'string' 'unset' 'array' 'object'
+ // //'bool' 'boolean'
+ // //'real' 'double' 'float'
+ // //'int' 'integer'
+ // String identifier = "";
+ // if (token == TokenNameIdentifier) {
+ // char[] ident = scanner.getCurrentIdentifierSource();
+ // identifier = new String(ident);
+ // String str = identifier.toLowerCase();
+ // getNextToken();
+ // for (int i = 0; i < PHP_TYPES.length; i++) {
+ // if (PHP_TYPES[i].equals(str)) {
+ // return;
+ // }
+ // }
+ // }
+ // throwSyntaxError(
+ // "Expected type cast '( <type-name> )'; Got '" + identifier + "'.");
+ // }
private void assignExpression() throws CoreException {
castExpression();
private void multiplicativeExpression() throws CoreException {
do {
assignExpression();
- if (token != TokenNameMULTIPLY
- && token != TokenNameDIVIDE
- && token != TokenNameREMAINDER) {
+ if (token != TokenNameMULTIPLY && token != TokenNameDIVIDE && token != TokenNameREMAINDER) {
return;
}
getNextToken();
private void relationalExpression() throws CoreException {
do {
shiftExpression();
- if (token != TokenNameLESS
- && token != TokenNameGREATER
- && token != TokenNameLESS_EQUAL
- && token != TokenNameGREATER_EQUAL) {
+ if (token != TokenNameLESS && token != TokenNameGREATER && token != TokenNameLESS_EQUAL && token != TokenNameGREATER_EQUAL) {
return;
}
getNextToken();
private void identicalExpression() throws CoreException {
do {
relationalExpression();
- if (token != TokenNameEQUAL_EQUAL_EQUAL
- && token != TokenNameNOT_EQUAL_EQUAL) {
+ if (token != TokenNameEQUAL_EQUAL_EQUAL && token != TokenNameNOT_EQUAL_EQUAL) {
return;
}
getNextToken();
if (token != TokenNameRPAREN) {
expressionList();
if (token != TokenNameRPAREN) {
- throwSyntaxError(
- "')' expected after identifier '"
- + new String(ident)
- + "' in postfix-expression.");
+ throwSyntaxError("')' expected after identifier '" + new String(ident) + "' in postfix-expression.");
}
}
getNextToken();