}
void SwitchStatement() :
-{}
{
- <SWITCH> <LPAREN> Expression() <RPAREN> <LBRACE>
- ( SwitchLabel() ( BlockStatement() )* )*
- <RBRACE>
+ Token breakToken = null;
+ int line;
+}
+{
+ <SWITCH>
+ try {
+ <LPAREN>
+ } catch (ParseException e) {
+ errorMessage = "'(' expected after 'switch'";
+ errorLevel = ERROR;
+ throw e;
+ }
+ Expression()
+ try {
+ <RPAREN>
+ } catch (ParseException e) {
+ errorMessage = "')' expected";
+ errorLevel = ERROR;
+ throw e;
+ }
+ try {
+ <LBRACE>
+ } catch (ParseException e) {
+ errorMessage = "'{' expected";
+ errorLevel = ERROR;
+ throw e;
+ }
+ (
+ line = SwitchLabel()
+ ( BlockStatement() )*
+ [ breakToken = <BREAK> ]
+ {
+ try {
+ if (breakToken == null) {
+ setMarker(fileToParse,
+ "You should use put a 'break' at the end of your statement",
+ line,
+ INFO,
+ "Line " + line);
+ }
+ } catch (CoreException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+ )*
+ try {
+ <RBRACE>
+ } catch (ParseException e) {
+ errorMessage = "'}' expected";
+ errorLevel = ERROR;
+ throw e;
+ }
}
-void SwitchLabel() :
-{}
+int SwitchLabel() :
{
- <CASE> Expression() <COLON>
+ final Token token;
+}
+{
+ token = <CASE>
+ try {
+ Expression()
+ } catch (ParseException e) {
+ if (errorMessage != null) throw e;
+ errorMessage = "expression expected after 'case' keyword";
+ errorLevel = ERROR;
+ throw e;
+ }
+ try {
+ <COLON>
+ } catch (ParseException e) {
+ errorMessage = "':' expected after case expression";
+ errorLevel = ERROR;
+ throw e;
+ }
+ {return token.beginLine;}
|
- <_DEFAULT> <COLON>
+ token = <_DEFAULT>
+ try {
+ <COLON>
+ } catch (ParseException e) {
+ errorMessage = "':' expected after 'default' keyword";
+ errorLevel = ERROR;
+ throw e;
+ }
+ {return token.beginLine;}
}
void IfStatement() :