package org.fandev.lang.fan; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.IFileElementType; import org.fandev.lang.fan.psi.api.statements.typeDefs.*; import org.fandev.lang.fan.psi.stubs.FanReferenceListStub; import org.fandev.lang.fan.psi.stubs.FanTypeDefinitionStub; import org.fandev.lang.fan.psi.stubs.elements.*; import org.fandev.lang.fan.psi.stubs.elements.FanBuildScriptDefinitionElementType; import org.fandev.lang.fan.types.FanFileElementType; import java.util.Collection; import java.util.Arrays; /** * @author Dror * @date Dec 11, 2008 11:58:30 PM */ public interface FanElementTypes { IFileElementType FILE = new FanFileElementType(FanSupportLoader.FAN.getLanguage()); FanStubElementType<FanTypeDefinitionStub, FanClassDefinition> CLASS_DEFINITION = new FanClassDefinitionElementType(); IElementType CLASS_BODY = new FanElementType("CLASS_BODY"); IElementType CLASS_TYPE_ELEMENT = new FanElementType("CLASS_TYPE_ELEMENT"); FanStubElementType<FanTypeDefinitionStub, FanMixinDefinition> MIXIN_DEFINITION = new FanMixinDefinitionElementType(); IElementType MIXIN_BODY = new FanElementType("MIXIN_BODY"); FanStubElementType<FanTypeDefinitionStub, FanEnumDefinition> ENUM_DEFINITION = new FanEnumDefinitionElementType(); IElementType ENUM_BODY = new FanElementType("ENUM_BODY"); IElementType ENUM_VALUE = new FanElementType("ENUM_VALUE"); FanStubElementType<FanTypeDefinitionStub, FanBuildScriptDefinition> BUILDSCRIPT_DEFINITION = new FanBuildScriptDefinitionElementType(); IElementType BUILDSCRIPT_BODY = new FanElementType("BUILDSCRIPT_BODY"); IElementType STATIC_BLOCK = new FanMethodElementType("static block"); IElementType CTOR_DEFINITION = new FanConstructorElementType("CTOR_DEFINITION"); IElementType CTOR_CHAIN = new FanElementType("CTOR_CHAIN"); IElementType METHOD_DEFINITION = new FanMethodElementType("METHOD_DEFINITION"); IElementType PARAM_DEFAULT = new FanElementType("Parameter default value"); IElementType METHOD_BODY = new FanElementType("method block"); IElementType FIELD_DEFINITION = new FanFieldElementType("FIELD_DEFINITION"); IElementType FIELD_DEFAULT = new FanElementType("Field default value"); IElementType GETTER_SETTER_FIELD_DEFINITION = new FanElementType("GETTER_SETTER_FIELD_DEFINITION"); IElementType GETTER_FIELD_DEFINITION = new FanElementType("GETTER_FIELD_DEFINITION"); IElementType SETTER_FIELD_DEFINITION = new FanElementType("SETTER_FIELD_DEFINITION"); FanStubElementType<FanReferenceListStub, FanInheritanceClause> INHERITANCE_CLAUSE = new FanInheritanceClauseElementType(); // TODO: from here the elements are not implemented /* -----------------------------------------------------------------------------*/ IElementType NAME_ELEMENT = new FanElementType("name id"); IElementType REFERENCE_ELEMENT = new FanElementType("REFERENCE_EXPRESSION"); IElementType MODIFIERS = new FanElementType("MODIFIERS"); IElementType BUILT_IN_TYPE = new FanElementType("BUILT_IN_TYPE"); IElementType NONE = new FanElementType("NO_TOKEN"); IElementType WRONGWAY = new FanElementType("WRONG_WAY"); IElementType LCURLY = new FanElementType("{"); IElementType TYPE = new FanElementType("Full Type wrapper"); IElementType NULLABLE_TYPE = new FanElementType("mark for ?"); IElementType LIST_TYPE = new FanElementType("LIST_TYPE"); IElementType MAP_TYPE = new FanElementType("MAP_TYPE"); IElementType FUNC_TYPE = new FanElementType("FUNC_TYPE"); IElementType FORMALS = new FanElementType("FORMALS"); IElementType FORMAL = new FanElementType("FORMAL"); IElementType TYPE_PARAMETER_LIST = new FanElementType("TYPE_PARAMETER_LIST"); IElementType TYPE_PARAMETER = new FanElementType("TYPE_PARAMETER"); IElementType ARGUMENT_LIST = new FanElementType("args"); IElementType ARGUMENT_EXPR = new FanElementType("arg exp"); IElementType FACET = new FanElementType("facet declaration"); IElementType FACET_VALUE = new FanElementType("facet value"); IElementType EXPRESSION = new FanElementType("expression"); IElementType LOCAL_DEF_STATEMENT = new FanElementType("local def"); IElementType IT_ADD_STATEMENT = new FanElementType("it add"); IElementType FFI_NAME = new FanElementType("FFI name"); IElementType POD_REFERENCE = new FanElementType("Pod or Package Reference"); IElementType USING_AS_NAME = new FanElementType("Using as name"); IElementType USING_STATEMENT = new FanElementType("Using statement"); IElementType CONTROL_FLOW = new FanElementType("Control Flow"); IElementType FOR_STATEMENT = new FanElementType("For statement"); IElementType FOR_INIT_EXPR = new FanElementType("For init expression"); IElementType FOR_INIT_LOCAL_DEF = new FanElementType("For init local def"); IElementType FOR_CONDITION = new FanElementType("For condition"); IElementType FOR_REPEAT = new FanElementType("For repeat"); IElementType FOR_BLOCK = new FanElementType("For block"); IElementType IF_STATEMENT = new FanElementType("If statement"); IElementType CONDITION_EXPR = new FanElementType("Condition expression"); IElementType COND_TRUE_BLOCK = new FanElementType("If block"); IElementType COND_FALSE_BLOCK = new FanElementType("Else block"); IElementType RETURN_STATEMENT = new FanElementType("return"); IElementType THROW_STATEMENT = new FanElementType("throw"); IElementType SWITCH_STATEMENT = new FanElementType("Switch"); IElementType SWITCH_VALUE = new FanElementType("Switch value"); IElementType SWITCH_CASE = new FanElementType("Switch case"); IElementType SWITCH_CASE_VALUE = new FanElementType("Switch case value"); IElementType SWITCH_CASE_STATEMENT = new FanElementType("Switch case statement"); IElementType WHILE_STATEMENT = new FanElementType("while statement"); IElementType WHILE_CONDITION = new FanElementType("while condition"); IElementType WHILE_BLOCK = new FanElementType("while block"); IElementType TRY_STATEMENT = new FanElementType("try statement"); IElementType TRY_BLOCK = new FanElementType("try block"); IElementType CATCH_STATEMENT = new FanElementType("catch statement"); IElementType CATCH_DEFINITION = new FanElementType("catch definition"); IElementType CATCH_BLOCK = new FanElementType("catch block"); IElementType FINALLY_STATEMENT = new FanElementType("finally statement"); IElementType FINALLY_BLOCK = new FanElementType("finally block"); IElementType ASSIGN_EXPRESSION = new FanElementType("assign expr"); IElementType ASSIGN_LEFT_EXPR = new FanElementType("assign left expr"); IElementType ASSIGN_RIGHT_EXPR = new FanElementType("assign right expr"); IElementType COND_EXPR = new FanElementType("assign expr"); IElementType LOGICAL_OR_EXPR = new FanElementType("logical OR expr"); IElementType LOGICAL_AND_EXPR = new FanElementType("logical AND expr"); IElementType EQUALITY_EXPR = new FanElementType("equality expr"); IElementType RELATIONAL_EXPR = new FanElementType("relational expr"); IElementType ELVIS_EXPR = new FanElementType("elvis expr"); IElementType RANGE_EXPR = new FanElementType("range expr"); IElementType BIT_OR_EXPR = new FanElementType("bit or expr"); IElementType BIT_AND_EXPR = new FanElementType("bit and expr"); IElementType SHIFT_EXPR = new FanElementType("shift expr"); IElementType ADD_EXPR = new FanElementType("add expr"); IElementType MULT_EXPR = new FanElementType("mult expr"); IElementType PAREN_EXPR = new FanElementType("parent expr"); IElementType CAST_EXPR = new FanElementType("cast expr"); IElementType GROUPED_EXPR = new FanElementType("grouped expr"); IElementType UNARY_EXPR = new FanElementType("unary expr"); IElementType PREFIX_EXPR = new FanElementType("prefix expr"); IElementType POSTFIX_EXPR = new FanElementType("postfix expr"); IElementType TERM_EXPR = new FanElementType("term expr"); IElementType TERM_CHAIN_EXPR = new FanElementType("termchain expr"); IElementType LITERAL = new FanElementType("literal"); IElementType THIS_REFERENCE_EXPRESSION = new FanElementType("this"); IElementType SUPER_REFERENCE_EXPRESSION = new FanElementType("super"); IElementType SIMPLE_LITERAL = new FanElementType("simple literal"); IElementType LIST_LITERAL = new FanElementType("list literal"); IElementType LIST_ITEM = new FanElementType("list item"); IElementType MAP_LITERAL = new FanElementType("map literal"); IElementType MAP_ITEM = new FanElementType("map item"); IElementType MAP_ITEM_KEY = new FanElementType("map item key"); IElementType MAP_ITEM_VALUE = new FanElementType("map item value"); IElementType ID_EXPR = new FanElementType("idExpr"); IElementType CLOSURE_EXPR = new FanElementType("closure"); IElementType CLOSURE_BODY = new FanElementType("closure body"); IElementType IT_BODY = new FanElementType("it body"); IElementType WITH_BLOCK_EXPR = new FanElementType("withBlock expr"); IElementType INDEX_EXPR = new FanElementType("index expr"); Collection<IElementType> BLOCK_ELEMENTS = Arrays.asList( METHOD_BODY, CLOSURE_BODY, FOR_BLOCK, WHILE_BLOCK, TRY_BLOCK, CATCH_BLOCK, FINALLY_BLOCK, STATIC_BLOCK); }