/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org2.eclipse.php.internal.core.ast.rewrite; import java_cup.runtime.Symbol; import org2.eclipse.php.internal.core.PHPVersion; import org2.eclipse.php.internal.core.ast.nodes.AST; import org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants; /** * A class that holds all the relevant PHP4/PHP5 Symbols that are in use in the * {@link ASTRewriteAnalyzer}. * * @author shalom */ public class SymbolsProvider { // Symbols ids. public static final int DOT_SYMBOL_ID = 0; public static final int LESS_ID = 1; public static final int GREATER_ID = 2; public static final int RBRACKET_ID = 3; public static final int LBRACKET_ID = 4; public static final int RBRACE_ID = 5; public static final int LBRACE_ID = 6; public static final int RPAREN_ID = 7; public static final int LPAREN_ID = 8; public static final int INTERFACE_ID = 9; // PHP 5 only public static final int CLASS_ID = 10; public static final int RETURN_ID = 11; public static final int BREAK_ID = 12; public static final int CONTINUE_ID = 13; public static final int DO_ID = 14; public static final int WHILE_ID = 15; public static final int SEMICOLON_ID = 16; public static final int THROW_ID = 17; // PHP 5 only public static final int NEW_ID = 18; public static final int ELSE_ID = 19; public static final int IMPLEMENTS_ID = 20; public static final int END_IF_ID = 21; public static final int END_FOR_ID = 22; public static final int END_WHILE_ID = 23; public static final int END_FOREACH_ID = 24; public static final int END_SWITCH_ID = 25; public static final int OBJECT_OP_SYMBOL_ID = 26; public static final Symbol ERROR_SYMBOL = new Symbol(Integer.MIN_VALUE); // Pre-defined PHP 54 Symbols. private static final Symbol OBJECT_OP_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_OBJECT_OPERATOR); private static final Symbol DOT_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_NEKUDA); private static final Symbol LESS_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_RGREATER); private static final Symbol GREATER_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_LGREATER); private static final Symbol RBRACKET_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_CLOSE_RECT); private static final Symbol LBRACKET_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_OPEN_RECT); private static final Symbol RBRACE_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_CURLY_CLOSE); private static final Symbol LBRACE_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_CURLY_OPEN); private static final Symbol LPAREN_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_OPEN_PARENTHESE); private static final Symbol RPAREN_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_CLOSE_PARENTHESE); private static final Symbol INTERFACE_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_INTERFACE); private static final Symbol CLASS_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_CLASS); private static final Symbol RETURN_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_RETURN); private static final Symbol BREAK_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_BREAK); private static final Symbol CONTINUE_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_CONTINUE); private static final Symbol DO_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_DO); private static final Symbol WHILE_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_WHILE); private static final Symbol SEMICOLON_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_SEMICOLON); private static final Symbol THROW_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_THROW); private static final Symbol NEW_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_NEW); private static final Symbol ELSE_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_ELSE); private static final Symbol IMPLEMENTS_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_IMPLEMENTS); private static final Symbol END_IF_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_ENDIF); private static final Symbol END_FOR_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_ENDFOR); private static final Symbol END_WHILE_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_ENDWHILE); private static final Symbol END_FOREACH_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_ENDFOREACH); private static final Symbol END_SWITCH_SYMBOL_PHP54 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_ENDSWITCH); // Pre-defined PHP 53 Symbols. private static final Symbol OBJECT_OP_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_OBJECT_OPERATOR); private static final Symbol DOT_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_NEKUDA); private static final Symbol LESS_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_RGREATER); private static final Symbol GREATER_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_LGREATER); private static final Symbol RBRACKET_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_CLOSE_RECT); private static final Symbol LBRACKET_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_OPEN_RECT); private static final Symbol RBRACE_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_CURLY_CLOSE); private static final Symbol LBRACE_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_CURLY_OPEN); private static final Symbol LPAREN_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_OPEN_PARENTHESE); private static final Symbol RPAREN_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_CLOSE_PARENTHESE); private static final Symbol INTERFACE_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_INTERFACE); private static final Symbol CLASS_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_CLASS); private static final Symbol RETURN_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_RETURN); private static final Symbol BREAK_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_BREAK); private static final Symbol CONTINUE_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_CONTINUE); private static final Symbol DO_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_DO); private static final Symbol WHILE_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_WHILE); private static final Symbol SEMICOLON_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_SEMICOLON); private static final Symbol THROW_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_THROW); private static final Symbol NEW_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_NEW); private static final Symbol ELSE_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_ELSE); private static final Symbol IMPLEMENTS_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_IMPLEMENTS); private static final Symbol END_IF_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_ENDIF); private static final Symbol END_FOR_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_ENDFOR); private static final Symbol END_WHILE_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_ENDWHILE); private static final Symbol END_FOREACH_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_ENDFOREACH); private static final Symbol END_SWITCH_SYMBOL_PHP53 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_ENDSWITCH); // Pre-defined PHP 5 Symbols. private static final Symbol OBJECT_OP_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_OBJECT_OPERATOR); private static final Symbol DOT_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_NEKUDA); private static final Symbol LESS_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_RGREATER); private static final Symbol GREATER_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_LGREATER); private static final Symbol RBRACKET_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_CLOSE_RECT); private static final Symbol LBRACKET_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_OPEN_RECT); private static final Symbol RBRACE_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_CURLY_CLOSE); private static final Symbol LBRACE_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_CURLY_OPEN); private static final Symbol LPAREN_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_OPEN_PARENTHESE); private static final Symbol RPAREN_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_CLOSE_PARENTHESE); private static final Symbol INTERFACE_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_INTERFACE); private static final Symbol CLASS_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_CLASS); private static final Symbol RETURN_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_RETURN); private static final Symbol BREAK_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_BREAK); private static final Symbol CONTINUE_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_CONTINUE); private static final Symbol DO_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_DO); private static final Symbol WHILE_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_WHILE); private static final Symbol SEMICOLON_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_SEMICOLON); private static final Symbol THROW_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_THROW); private static final Symbol NEW_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_NEW); private static final Symbol ELSE_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_ELSE); private static final Symbol IMPLEMENTS_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_IMPLEMENTS); private static final Symbol END_IF_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_ENDIF); private static final Symbol END_FOR_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_ENDFOR); private static final Symbol END_WHILE_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_ENDWHILE); private static final Symbol END_FOREACH_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_ENDFOREACH); private static final Symbol END_SWITCH_SYMBOL_PHP5 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_ENDSWITCH); // Pre-defined PHP 4 Symbols. private static final Symbol DOT_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_NEKUDA); private static final Symbol LESS_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_RGREATER); private static final Symbol GREATER_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_LGREATER); private static final Symbol RBRACKET_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_CLOSE_RECT); private static final Symbol LBRACKET_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_OPEN_RECT); private static final Symbol RBRACE_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_CURLY_CLOSE); private static final Symbol LBRACE_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_CURLY_OPEN); private static final Symbol LPAREN_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_OPEN_PARENTHESE); private static final Symbol RPAREN_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_CLOSE_PARENTHESE); private static final Symbol CLASS_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_CLASS); private static final Symbol RETURN_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_RETURN); private static final Symbol BREAK_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_BREAK); private static final Symbol CONTINUE_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_CONTINUE); private static final Symbol DO_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_DO); private static final Symbol WHILE_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_WHILE); private static final Symbol SEMICOLON_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_SEMICOLON); private static final Symbol NEW_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_NEW); private static final Symbol ELSE_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_ELSE); private static final Symbol END_IF_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_ENDIF); private static final Symbol END_FOR_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_ENDFOR); private static final Symbol END_WHILE_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_ENDWHILE); private static final Symbol END_FOREACH_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_ENDFOREACH); private static final Symbol END_SWITCH_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_ENDSWITCH); private static final Symbol OBJECT_OP_SYMBOL_PHP4 = new Symbol( org2.eclipse.php.internal.core.ast.scanner.php4.ParserConstants.T_OBJECT_OPERATOR); /** * Returns a {@link Symbol} that holds a sym id that is computed by * identifying the correct id for the given php version. The given symID * should be one of this class ID constants, and the PHP version String * should be one of the {@link AST} defined PHP constants. The returned * Symbol will always be a non-null Symbol. In case the Symbol was not * recognized, an {@link SymbolsProvider#ERROR_SYMBOL} will be returned. * * @param symID * Symbol ID - One of this class constants. * @param phpVersion * PHP version String. * @return A Symbol reference for the given id and php version. */ public static Symbol getSymbol(int symID, PHPVersion phpVersion) { if (PHPVersion.PHP5 == phpVersion) { switch (symID) { case DOT_SYMBOL_ID: return DOT_SYMBOL_PHP5; case LESS_ID: return LESS_SYMBOL_PHP5; case GREATER_ID: return GREATER_SYMBOL_PHP5; case RBRACKET_ID: return RBRACKET_SYMBOL_PHP5; case LBRACKET_ID: return LBRACKET_SYMBOL_PHP5; case RBRACE_ID: return RBRACE_SYMBOL_PHP5; case LBRACE_ID: return LBRACE_SYMBOL_PHP5; case RPAREN_ID: return RPAREN_SYMBOL_PHP5; case LPAREN_ID: return LPAREN_SYMBOL_PHP5; case INTERFACE_ID: return INTERFACE_SYMBOL_PHP5; case CLASS_ID: return CLASS_SYMBOL_PHP5; case RETURN_ID: return RETURN_SYMBOL_PHP5; case BREAK_ID: return BREAK_SYMBOL_PHP5; case CONTINUE_ID: return CONTINUE_SYMBOL_PHP5; case DO_ID: return DO_SYMBOL_PHP5; case WHILE_ID: return WHILE_SYMBOL_PHP5; case SEMICOLON_ID: return SEMICOLON_SYMBOL_PHP5; case THROW_ID: return THROW_SYMBOL_PHP5; case NEW_ID: return NEW_SYMBOL_PHP5; case ELSE_ID: return ELSE_SYMBOL_PHP5; case IMPLEMENTS_ID: return IMPLEMENTS_SYMBOL_PHP5; case END_FOR_ID: return END_FOR_SYMBOL_PHP5; case END_FOREACH_ID: return END_FOREACH_SYMBOL_PHP5; case END_IF_ID: return END_IF_SYMBOL_PHP5; case END_WHILE_ID: return END_WHILE_SYMBOL_PHP5; case END_SWITCH_ID: return END_SWITCH_SYMBOL_PHP5; case OBJECT_OP_SYMBOL_ID: return OBJECT_OP_SYMBOL_PHP5; default: break; } } else if (PHPVersion.PHP4 == phpVersion) { switch (symID) { case DOT_SYMBOL_ID: return DOT_SYMBOL_PHP4; case LESS_ID: return LESS_SYMBOL_PHP4; case GREATER_ID: return GREATER_SYMBOL_PHP4; case RBRACKET_ID: return RBRACKET_SYMBOL_PHP4; case LBRACKET_ID: return LBRACKET_SYMBOL_PHP4; case RBRACE_ID: return RBRACE_SYMBOL_PHP4; case LBRACE_ID: return LBRACE_SYMBOL_PHP4; case RPAREN_ID: return RPAREN_SYMBOL_PHP4; case LPAREN_ID: return LPAREN_SYMBOL_PHP4; case CLASS_ID: return CLASS_SYMBOL_PHP4; case RETURN_ID: return RETURN_SYMBOL_PHP4; case BREAK_ID: return BREAK_SYMBOL_PHP4; case CONTINUE_ID: return CONTINUE_SYMBOL_PHP4; case DO_ID: return DO_SYMBOL_PHP4; case WHILE_ID: return WHILE_SYMBOL_PHP4; case SEMICOLON_ID: return SEMICOLON_SYMBOL_PHP4; case NEW_ID: return NEW_SYMBOL_PHP4; case ELSE_ID: return ELSE_SYMBOL_PHP4; case END_FOR_ID: return END_FOR_SYMBOL_PHP4; case END_FOREACH_ID: return END_FOREACH_SYMBOL_PHP4; case END_IF_ID: return END_IF_SYMBOL_PHP4; case END_WHILE_ID: return END_WHILE_SYMBOL_PHP4; case END_SWITCH_ID: return END_SWITCH_SYMBOL_PHP4; case OBJECT_OP_SYMBOL_ID: return OBJECT_OP_SYMBOL_PHP4; default: break; } } if (PHPVersion.PHP5_3 == phpVersion) { switch (symID) { case DOT_SYMBOL_ID: return DOT_SYMBOL_PHP53; case LESS_ID: return LESS_SYMBOL_PHP53; case GREATER_ID: return GREATER_SYMBOL_PHP53; case RBRACKET_ID: return RBRACKET_SYMBOL_PHP53; case LBRACKET_ID: return LBRACKET_SYMBOL_PHP53; case RBRACE_ID: return RBRACE_SYMBOL_PHP53; case LBRACE_ID: return LBRACE_SYMBOL_PHP53; case RPAREN_ID: return RPAREN_SYMBOL_PHP53; case LPAREN_ID: return LPAREN_SYMBOL_PHP53; case INTERFACE_ID: return INTERFACE_SYMBOL_PHP53; case CLASS_ID: return CLASS_SYMBOL_PHP53; case RETURN_ID: return RETURN_SYMBOL_PHP53; case BREAK_ID: return BREAK_SYMBOL_PHP53; case CONTINUE_ID: return CONTINUE_SYMBOL_PHP53; case DO_ID: return DO_SYMBOL_PHP53; case WHILE_ID: return WHILE_SYMBOL_PHP53; case SEMICOLON_ID: return SEMICOLON_SYMBOL_PHP53; case THROW_ID: return THROW_SYMBOL_PHP53; case NEW_ID: return NEW_SYMBOL_PHP53; case ELSE_ID: return ELSE_SYMBOL_PHP53; case IMPLEMENTS_ID: return IMPLEMENTS_SYMBOL_PHP53; case END_FOR_ID: return END_FOR_SYMBOL_PHP53; case END_FOREACH_ID: return END_FOREACH_SYMBOL_PHP53; case END_IF_ID: return END_IF_SYMBOL_PHP53; case END_WHILE_ID: return END_WHILE_SYMBOL_PHP53; case END_SWITCH_ID: return END_SWITCH_SYMBOL_PHP53; case OBJECT_OP_SYMBOL_ID: return OBJECT_OP_SYMBOL_PHP53; default: break; } } if (PHPVersion.PHP5_4 == phpVersion) { switch (symID) { case DOT_SYMBOL_ID: return DOT_SYMBOL_PHP54; case LESS_ID: return LESS_SYMBOL_PHP54; case GREATER_ID: return GREATER_SYMBOL_PHP54; case RBRACKET_ID: return RBRACKET_SYMBOL_PHP54; case LBRACKET_ID: return LBRACKET_SYMBOL_PHP54; case RBRACE_ID: return RBRACE_SYMBOL_PHP54; case LBRACE_ID: return LBRACE_SYMBOL_PHP54; case RPAREN_ID: return RPAREN_SYMBOL_PHP54; case LPAREN_ID: return LPAREN_SYMBOL_PHP54; case INTERFACE_ID: return INTERFACE_SYMBOL_PHP54; case CLASS_ID: return CLASS_SYMBOL_PHP54; case RETURN_ID: return RETURN_SYMBOL_PHP54; case BREAK_ID: return BREAK_SYMBOL_PHP54; case CONTINUE_ID: return CONTINUE_SYMBOL_PHP54; case DO_ID: return DO_SYMBOL_PHP54; case WHILE_ID: return WHILE_SYMBOL_PHP54; case SEMICOLON_ID: return SEMICOLON_SYMBOL_PHP54; case THROW_ID: return THROW_SYMBOL_PHP54; case NEW_ID: return NEW_SYMBOL_PHP54; case ELSE_ID: return ELSE_SYMBOL_PHP54; case IMPLEMENTS_ID: return IMPLEMENTS_SYMBOL_PHP54; case END_FOR_ID: return END_FOR_SYMBOL_PHP54; case END_FOREACH_ID: return END_FOREACH_SYMBOL_PHP54; case END_IF_ID: return END_IF_SYMBOL_PHP54; case END_WHILE_ID: return END_WHILE_SYMBOL_PHP54; case END_SWITCH_ID: return END_SWITCH_SYMBOL_PHP54; case OBJECT_OP_SYMBOL_ID: return OBJECT_OP_SYMBOL_PHP54; default: break; } } return ERROR_SYMBOL; } /** * Returns the sym integer for the given modifier ('public', 'final', * 'protected' etc.). * * @param modifier * The modifier string * @param phpVersion * The relevant PHP version. * @return The sym id or the ERROR_SYMBOL.sym in case of an error. */ @SuppressWarnings("nls") public static int getModifierSym(String modifier, PHPVersion phpVersion) { if (PHPVersion.PHP5_4 == phpVersion) { if (modifier.equals("public")) { return org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_PUBLIC; } else if (modifier.equals("private")) { return org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_PRIVATE; } else if (modifier.equals("protected")) { return org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_PROTECTED; } else if (modifier.equals("static")) { return org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_STATIC; } else if (modifier.equals("abstract")) { return org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_ABSTRACT; } else if (modifier.equals("final")) { return org2.eclipse.php.internal.core.ast.scanner.php54.ParserConstants.T_FINAL; } } else if (PHPVersion.PHP5_3 == phpVersion) { if (modifier.equals("public")) { return org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_PUBLIC; } else if (modifier.equals("private")) { return org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_PRIVATE; } else if (modifier.equals("protected")) { return org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_PROTECTED; } else if (modifier.equals("static")) { return org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_STATIC; } else if (modifier.equals("abstract")) { return org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_ABSTRACT; } else if (modifier.equals("final")) { return org2.eclipse.php.internal.core.ast.scanner.php53.ParserConstants.T_FINAL; } } else if (PHPVersion.PHP5 == phpVersion) { if (modifier.equals("public")) { return org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_PUBLIC; } else if (modifier.equals("private")) { return org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_PRIVATE; } else if (modifier.equals("protected")) { return org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_PROTECTED; } else if (modifier.equals("static")) { return org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_STATIC; } else if (modifier.equals("abstract")) { return org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_ABSTRACT; } else if (modifier.equals("final")) { return org2.eclipse.php.internal.core.ast.scanner.php5.ParserConstants.T_FINAL; } } else if (PHPVersion.PHP4 == phpVersion) { if (modifier.equals("static")) { return ParserConstants.T_STATIC; } } return ERROR_SYMBOL.sym; } }