/*******************************************************************************
* Copyright (c) 2007, 2008 Edgar Espina.
* 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
*
*******************************************************************************/
package org.deved.antlride.core.model;
public enum ElementKind {
GRAMMAR(null),
GRAMMAR_OPTIONS(GRAMMAR),
GRAMMAR_OPTION(GRAMMAR_OPTIONS),
GRAMMAR_OPTION_NAME(GRAMMAR_OPTION),
GRAMMAR_OPTION_VALUE(GRAMMAR_OPTION),
GRAMMAR_SCOPE(GRAMMAR),
GRAMMAR_SCOPE_ATTRIBUTE(GRAMMAR_SCOPE),
/**Tokens*/
TOKENS(GRAMMAR),
TOKEN(TOKENS),
TOKEN_NAME(TOKEN),
TOKEN_VALUE(TOKEN),
/**Grammar Action*/
GRAMMAR_ACTION(GRAMMAR),
/**Imports*/
IMPORTS(GRAMMAR),
IMPORT(IMPORTS),
/**RULES*/
RULE(GRAMMAR),
RULE_PARAMETERS(RULE),
RULE_PARAMETER(RULE),
RULE_RETURNS(RULE),
RULE_RETURN(RULE),
RULE_OPTIONS(RULE),
RULE_OPTION(RULE_OPTIONS),
RULE_OPTION_NAME(RULE_OPTION),
RULE_OPTION_VALUE(RULE_OPTION),
RULE_SCOPE(RULE),
RULE_SCOPE_ATTRIBUTE(RULE),
RULE_ACTION(RULE),
RULE_THROWS(RULE),
RULE_CATCH(RULE),
RULE_FINALLY(RULE),
/**CALL*/
CALL(RULE),
CALL_OPTION(CALL),
CALL_PARAMETERS(CALL),
CALL_PARAMETER(CALL_PARAMETERS),
/**Statements*/
BLOCK(RULE),
BLOCK_OPTIONS(BLOCK),
BLOCK_OPTION(BLOCK_OPTIONS),
BLOCK_OPTION_NAME(BLOCK_OPTION),
BLOCK_OPTION_VALUE(BLOCK_OPTION),
ALTERNATIVE(RULE),
TEMPLATE(RULE),
TEMPLATE_PARAMETER(TEMPLATE),
TREE_STATEMENT(RULE),
STATEMENT_ACTION(RULE),
VARIABLE(RULE),
ASSIGN_OPERATOR(RULE),
NOT_OPERATOR(RULE),
ROOT_OPERATOR(RULE),
BANG_OPERATOR(RULE),
RANGE(RULE),
/**Predicates*/
SEMPRED(RULE),
SYN_PRED(RULE),
TARGET_ACTION(RULE),
/**References*/
REFERENCE(RULE),
SCOPE_REFERENCE(RULE),
SCOPE_ATTRIBUTE_REFERENCE(RULE),
RULE_SCOPE_REFERENCE(RULE),
RULE_SCOPE_ATTRIBUTE_REFERENCE(RULE),
RULE_REFERENCE(RULE);
private ElementKind parent;
private ElementKind(ElementKind parent) {
this.parent = parent;
}
public boolean isChildOf(ElementKind parent) {
ElementKind p = this.parent;
while(p!=null) {
if(p == parent)
return true;
p = p.parent;
}
return false;
}
public ElementKind parent() {
return parent;
}
}