import net.sourceforge.phpeclipse.internal.compiler.ast.MethodDeclaration;
import net.sourceforge.phpeclipse.internal.compiler.ast.SingleTypeReference;
import net.sourceforge.phpeclipse.internal.compiler.ast.TypeDeclaration;
-import net.sourceforge.phpeclipse.phpeditor.PHPString;
+
import org.eclipse.core.resources.IFile;
public class Parser //extends PHPParserSuperclass
implements ITerminalSymbols, CompilerModifiers, ParserBasicInformation {
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after do-while statement.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'continue', 'break' or 'return'.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'echo' statement.");
}
getNextToken();
}
return;
+ } else if (token == TokenNameINLINE_HTML) {
+ getNextToken();
+ return;
// } else if (token == TokenNameprint) {
// getNextToken();
// expression();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'global' statement.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'static' statement.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'unset' statement.");
}
getNextToken();
}
return;
- // } else if (token == TokenNameexit || token == TokenNamedie) {
- // getNextToken();
- // if (token != TokenNameSEMICOLON) {
- // exitStatus();
- // }
- // if (token == TokenNameSEMICOLON) {
- // getNextToken();
- // } else {
- // if (token != TokenNameStopPHP) {
- // throwSyntaxError("';' expected after 'exit' or 'die'
- // statement.");
- // }
- // getNextToken();
- // }
- // return;
- // } else if (token == TokenNamedefine) {
- // getNextToken();
- // if (token == TokenNameLPAREN) {
- // getNextToken();
- // } else {
- // throwSyntaxError("'(' expected after 'define' keyword.");
- // }
- // expr();
- // if (token == TokenNameCOMMA) {
- // getNextToken();
- // } else {
- // throwSyntaxError("',' expected after first 'define' constant.");
- // }
- // expr();
- // if (token == TokenNameCOMMA) {
- // getNextToken();
- // expr();
- // }
- // if (token == TokenNameRPAREN) {
- // getNextToken();
- // } else {
- // throwSyntaxError("')' expected after 'define' statement.");
- // }
- // if (token == TokenNameSEMICOLON) {
- // getNextToken();
- // } else {
- // if (token != TokenNameStopPHP) {
- // throwSyntaxError("';' expected after 'define' statement.");
- // }
- // getNextToken();
- // }
- // return;
} else if (token == TokenNamefunction) {
MethodDeclaration methodDecl = new MethodDeclaration(
this.compilationUnit.compilationResult);
getNextToken();
functionDefinition(methodDecl);
return;
+ } else if (token == TokenNametry) {
+ getNextToken();
+if (token != TokenNameLBRACE) {
+ throwSyntaxError("'{' expected in 'try' statement.");
+ }
+ getNextToken();
+ statementList();
+if (token != TokenNameRBRACE) {
+ throwSyntaxError("'}' expected in 'try' statement.");
+ }
+getNextToken();
+ return;
+ } else if (token == TokenNamecatch) {
+getNextToken();
+if (token != TokenNameLPAREN) {
+ throwSyntaxError("'(' expected in 'catch' statement.");
+ }
+ getNextToken();
+ fully_qualified_class_name();
+ if (token != TokenNameVariable) {
+ throwSyntaxError("Variable expected in 'catch' statement.");
+ }
+ getNextToken();
+
+ if (token != TokenNameRBRACE) {
+ throwSyntaxError("')' expected in 'catch' statement.");
+ }
+ getNextToken();
+getNextToken();
+if (token != TokenNameLBRACE) {
+ throwSyntaxError("'{' expected in 'catch' statement.");
+ }
+ getNextToken();
+ statementList();
+if (token != TokenNameRBRACE) {
+ throwSyntaxError("'}' expected in 'catch' statement.");
+ }
+getNextToken();
+ additional_catches();
+ return;
+ } else if (token == TokenNamethrow) {
+ getNextToken();
+
+ expr();
+ if (token == TokenNameSEMICOLON) {
+ getNextToken();
+ } else {
+ throwSyntaxError("';' expected after 'throw' exxpression.");
+ }
+
+ return;
} else if (token == TokenNamefinal || token == TokenNameabstract
|| token == TokenNameclass || token == TokenNameinterface) {
TypeDeclaration typeDecl = new TypeDeclaration(
getNextToken();
return;
} else {
- if (token != TokenNameStopPHP && token != TokenNameEOF) {
+ if (token != TokenNameINLINE_HTML && token != TokenNameEOF) {
throwSyntaxError("';' expected after expression (Found token: "
+ scanner.toStringAction(token) + ")");
}
}
}
}
+ private void additional_catches() {
+ while (token == TokenNamecatch) {
+ getNextToken();
+ if (token != TokenNameLPAREN) {
+ throwSyntaxError("'(' expected in 'catch' statement.");
+ }
+ getNextToken();
+ fully_qualified_class_name();
+ if (token != TokenNameVariable) {
+ throwSyntaxError("Variable expected in 'catch' statement.");
+ }
+ getNextToken();
+
+ if (token != TokenNameRBRACE) {
+ throwSyntaxError("')' expected in 'catch' statement.");
+ }
+ getNextToken();
+ getNextToken();
+ if (token != TokenNameLBRACE) {
+ throwSyntaxError("'{' expected in 'catch' statement.");
+ }
+ getNextToken();
+ statementList();
+ if (token != TokenNameRBRACE) {
+ throwSyntaxError("'}' expected in 'catch' statement.");
+ }
+ getNextToken();
+ }
+ }
+
private void global_var_list() {
// global_var_list:
// global_var_list ',' global_var
}
break;
default :
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("Error in expression (found token '"
+ scanner.toStringAction(token) + "').");
}
if (Scanner.TRACE) {
System.out.println("TRACE: variable_name()");
}
- if (token == TokenNameIdentifier) {
+ if (token == TokenNameIdentifier || token > TokenNameKEYWORD) {
+ if (token > TokenNameKEYWORD) {
+ // TODO show a warning "Keyword used as variable" ?
+ }
getNextToken();
} else {
+
if (token != TokenNameLBRACE) {
throwSyntaxError("'{' expected in variable name.");
}
break;
}
getNextToken();
- if (token != TokenNameRPAREN) {
+ if (token == TokenNameRPAREN) {
break;
}
}