/* * Copyright 2011-present Greg Shrago * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.intellij.grammar.psi; import com.intellij.psi.tree.IElementType; import com.intellij.psi.PsiElement; import com.intellij.lang.ASTNode; import org.intellij.grammar.psi.impl.*; public interface BnfTypes { IElementType BNF_ATTR = new BnfCompositeElementType("BNF_ATTR"); IElementType BNF_ATTRS = new BnfCompositeElementType("BNF_ATTRS"); IElementType BNF_ATTR_PATTERN = new BnfCompositeElementType("BNF_ATTR_PATTERN"); IElementType BNF_CHOICE = new BnfCompositeElementType("BNF_CHOICE"); IElementType BNF_EXPRESSION = new BnfCompositeElementType("BNF_EXPRESSION"); IElementType BNF_EXTERNAL_EXPRESSION = new BnfCompositeElementType("BNF_EXTERNAL_EXPRESSION"); IElementType BNF_LIST_ENTRY = new BnfCompositeElementType("BNF_LIST_ENTRY"); IElementType BNF_LITERAL_EXPRESSION = new BnfCompositeElementType("BNF_LITERAL_EXPRESSION"); IElementType BNF_MODIFIER = new BnfCompositeElementType("BNF_MODIFIER"); IElementType BNF_PAREN_EXPRESSION = new BnfCompositeElementType("BNF_PAREN_EXPRESSION"); IElementType BNF_PAREN_OPT_EXPRESSION = new BnfCompositeElementType("BNF_PAREN_OPT_EXPRESSION"); IElementType BNF_PREDICATE = new BnfCompositeElementType("BNF_PREDICATE"); IElementType BNF_PREDICATE_SIGN = new BnfCompositeElementType("BNF_PREDICATE_SIGN"); IElementType BNF_QUANTIFIED = new BnfCompositeElementType("BNF_QUANTIFIED"); IElementType BNF_QUANTIFIER = new BnfCompositeElementType("BNF_QUANTIFIER"); IElementType BNF_REFERENCE_OR_TOKEN = new BnfCompositeElementType("BNF_REFERENCE_OR_TOKEN"); IElementType BNF_RULE = new BnfCompositeElementType("BNF_RULE"); IElementType BNF_SEQUENCE = new BnfCompositeElementType("BNF_SEQUENCE"); IElementType BNF_STRING_LITERAL_EXPRESSION = new BnfCompositeElementType("BNF_STRING_LITERAL_EXPRESSION"); IElementType BNF_VALUE_LIST = new BnfCompositeElementType("BNF_VALUE_LIST"); IElementType BNF_BLOCK_COMMENT = new BnfTokenType("block_comment"); IElementType BNF_EXTERNAL_END = new BnfTokenType(">>"); IElementType BNF_EXTERNAL_START = new BnfTokenType("<<"); IElementType BNF_ID = new BnfTokenType("id"); IElementType BNF_LEFT_BRACE = new BnfTokenType("{"); IElementType BNF_LEFT_BRACKET = new BnfTokenType("["); IElementType BNF_LEFT_PAREN = new BnfTokenType("("); IElementType BNF_LINE_COMMENT = new BnfTokenType("line_comment"); IElementType BNF_NUMBER = new BnfTokenType("number"); IElementType BNF_OP_AND = new BnfTokenType("&"); IElementType BNF_OP_EQ = new BnfTokenType("="); IElementType BNF_OP_IS = new BnfTokenType("::="); IElementType BNF_OP_NOT = new BnfTokenType("!"); IElementType BNF_OP_ONEMORE = new BnfTokenType("+"); IElementType BNF_OP_OPT = new BnfTokenType("?"); IElementType BNF_OP_OR = new BnfTokenType("|"); IElementType BNF_OP_ZEROMORE = new BnfTokenType("*"); IElementType BNF_RIGHT_BRACE = new BnfTokenType("}"); IElementType BNF_RIGHT_BRACKET = new BnfTokenType("]"); IElementType BNF_RIGHT_PAREN = new BnfTokenType(")"); IElementType BNF_SEMICOLON = new BnfTokenType(";"); IElementType BNF_STRING = new BnfTokenType("string"); class Factory { public static PsiElement createElement(ASTNode node) { IElementType type = node.getElementType(); if (type == BNF_ATTR) { return new BnfAttrImpl(node); } else if (type == BNF_ATTRS) { return new BnfAttrsImpl(node); } else if (type == BNF_ATTR_PATTERN) { return new BnfAttrPatternImpl(node); } else if (type == BNF_CHOICE) { return new BnfChoiceImpl(node); } else if (type == BNF_EXTERNAL_EXPRESSION) { return new BnfExternalExpressionImpl(node); } else if (type == BNF_LIST_ENTRY) { return new BnfListEntryImpl(node); } else if (type == BNF_LITERAL_EXPRESSION) { return new BnfLiteralExpressionImpl(node); } else if (type == BNF_MODIFIER) { return new BnfModifierImpl(node); } else if (type == BNF_PAREN_EXPRESSION) { return new BnfParenExpressionImpl(node); } else if (type == BNF_PAREN_OPT_EXPRESSION) { return new BnfParenOptExpressionImpl(node); } else if (type == BNF_PREDICATE) { return new BnfPredicateImpl(node); } else if (type == BNF_PREDICATE_SIGN) { return new BnfPredicateSignImpl(node); } else if (type == BNF_QUANTIFIED) { return new BnfQuantifiedImpl(node); } else if (type == BNF_QUANTIFIER) { return new BnfQuantifierImpl(node); } else if (type == BNF_REFERENCE_OR_TOKEN) { return new BnfReferenceOrTokenImpl(node); } else if (type == BNF_RULE) { return new BnfRuleImpl(node); } else if (type == BNF_SEQUENCE) { return new BnfSequenceImpl(node); } else if (type == BNF_STRING_LITERAL_EXPRESSION) { return new BnfStringLiteralExpressionImpl(node); } else if (type == BNF_VALUE_LIST) { return new BnfValueListImpl(node); } throw new AssertionError("Unknown element type: " + type); } } }