| /* |
| * Copyright 2016 The Bazel Authors. All rights reserved. |
| * |
| * 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 com.google.idea.blaze.base.lang.buildfile.psi; |
| |
| import com.google.idea.blaze.base.lang.buildfile.language.BuildFileType; |
| import com.intellij.psi.tree.IFileElementType; |
| import com.intellij.psi.tree.TokenSet; |
| |
| /** |
| * Collects the types used by the PsiBuilder to construct the AST |
| */ |
| public interface BuildElementTypes { |
| |
| IFileElementType BUILD_FILE = new IFileElementType(BuildFileType.INSTANCE.getLanguage()); |
| |
| // Statements |
| BuildElementType RETURN_STATEMENT = new BuildElementType("return", ReturnStatement.class); |
| BuildElementType PASS_STATMENT = new BuildElementType("pass", PassStatement.class); |
| BuildElementType ASSIGNMENT_STATEMENT = new BuildElementType("assignment", AssignmentStatement.class); |
| BuildElementType AUGMENTED_ASSIGNMENT = new BuildElementType("aug_assign", AugmentedAssignmentStatement.class); |
| BuildElementType FLOW_STATEMENT = new BuildElementType("flow", FlowStatement.class); |
| BuildElementType LOAD_STATEMENT = new BuildElementType("load", LoadStatement.class); |
| BuildElementType FUNCTION_STATEMENT = new BuildElementType("function_def", FunctionStatement.class); |
| BuildElementType FOR_STATEMENT = new BuildElementType("for", ForStatement.class); |
| BuildElementType IF_STATEMENT = new BuildElementType("if", IfStatement.class); |
| |
| BuildElementType IF_PART = new BuildElementType("if_part", IfPart.class); |
| BuildElementType ELSE_IF_PART = new BuildElementType("else_if_part", ElseIfPart.class); |
| BuildElementType ELSE_PART = new BuildElementType("else_part", ElsePart.class); |
| |
| BuildElementType STATEMENT_LIST = new BuildElementType("stmt_list", StatementList.class); |
| |
| // passed arguments |
| BuildElementType ARGUMENT_LIST = new BuildElementType("arg_list", ArgumentList.class); |
| BuildElementType KEYWORD = new BuildElementType("keyword", Argument.Keyword.class); |
| BuildElementType POSITIONAL = new BuildElementType("positional", Argument.Positional.class); |
| BuildElementType STAR = new BuildElementType("*", Argument.Star.class); |
| BuildElementType STAR_STAR = new BuildElementType("**", Argument.StarStar.class); |
| |
| // parameters |
| BuildElementType PARAMETER_LIST = new BuildElementType("parameter_list", ParameterList.class); |
| BuildElementType PARAM_OPTIONAL = new BuildElementType("optional_param", Parameter.Optional.class); |
| BuildElementType PARAM_MANDATORY = new BuildElementType("mandatory_param", Parameter.Mandatory.class); |
| BuildElementType PARAM_STAR = new BuildElementType("*", Parameter.Star.class); |
| BuildElementType PARAM_STAR_STAR = new BuildElementType("**", Parameter.StarStar.class); |
| |
| // Expressions |
| BuildElementType DICTIONARY_LITERAL = new BuildElementType("dict", DictionaryLiteral.class); |
| BuildElementType DICTIONARY_ENTRY_LITERAL = new BuildElementType("dict_entry", DictionaryEntryLiteral.class); |
| BuildElementType BINARY_OP_EXPRESSION = new BuildElementType("binary_op", BinaryOpExpression.class); |
| BuildElementType FUNCALL_EXPRESSION = new BuildElementType("function_call", FuncallExpression.class); |
| BuildElementType DOT_EXPRESSION = new BuildElementType("dot_expr", DotExpression.class); |
| BuildElementType STRING_LITERAL = new BuildElementType("string", StringLiteral.class); |
| BuildElementType INTEGER_LITERAL = new BuildElementType("int", IntegerLiteral.class); |
| BuildElementType BOOLEAN_LITERAL = new BuildElementType("bool", BooleanLiteral.class); |
| BuildElementType LIST_LITERAL = new BuildElementType("list", ListLiteral.class); |
| BuildElementType GLOB_EXPRESSION = new BuildElementType("glob", GlobExpression.class); |
| BuildElementType REFERENCE_EXPRESSION = new BuildElementType("reference", ReferenceExpression.class); |
| BuildElementType TARGET_EXPRESSION = new BuildElementType("target", TargetExpression.class); |
| BuildElementType LIST_COMPREHENSION_EXPR = new BuildElementType("list_comp", ListComprehensionExpression.class); |
| |
| TokenSet EXPRESSIONS = TokenSet.create( |
| FUNCALL_EXPRESSION, |
| DICTIONARY_LITERAL, |
| DICTIONARY_ENTRY_LITERAL, |
| BINARY_OP_EXPRESSION, |
| DOT_EXPRESSION, |
| STRING_LITERAL, |
| INTEGER_LITERAL, |
| BOOLEAN_LITERAL, |
| LIST_LITERAL, |
| REFERENCE_EXPRESSION, |
| TARGET_EXPRESSION, |
| LIST_COMPREHENSION_EXPR, |
| GLOB_EXPRESSION |
| ); |
| |
| TokenSet STATEMENTS = TokenSet.create( |
| RETURN_STATEMENT, |
| PASS_STATMENT, |
| ASSIGNMENT_STATEMENT, |
| FLOW_STATEMENT, |
| LOAD_STATEMENT, |
| FUNCTION_STATEMENT, |
| FOR_STATEMENT, |
| IF_STATEMENT |
| ); |
| |
| TokenSet ARGUMENTS = TokenSet.create( |
| KEYWORD, |
| POSITIONAL, |
| STAR, |
| STAR_STAR |
| ); |
| |
| TokenSet PARAMETERS = TokenSet.create( |
| PARAM_OPTIONAL, |
| PARAM_MANDATORY, |
| PARAM_STAR, |
| PARAM_STAR_STAR |
| ); |
| |
| TokenSet STRINGS = TokenSet.create(STRING_LITERAL); |
| TokenSet FUNCTIONS = TokenSet.create(FUNCTION_STATEMENT); |
| |
| } |