| /* |
| * Copyright 2000-2013 JetBrains s.r.o. |
| * |
| * 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.intellij.tasks.jira.jql; |
| |
| import com.intellij.psi.TokenType; |
| import com.intellij.psi.tree.IElementType; |
| import com.intellij.psi.tree.TokenSet; |
| |
| /** |
| * @author Mikhail Golubev |
| */ |
| public interface JqlTokenTypes { |
| IElementType WHITE_SPACE = TokenType.WHITE_SPACE; |
| IElementType BAD_CHARACTER = TokenType.BAD_CHARACTER; |
| |
| IElementType AND_KEYWORD = new JqlElementType("AND_KEYWORD"); |
| IElementType OR_KEYWORD = new JqlElementType("OR_KEYWORD"); |
| IElementType NOT_KEYWORD = new JqlElementType("NOT_KEYWORD"); |
| IElementType EMPTY_KEYWORD = new JqlElementType("EMPTY_KEYWORD"); |
| IElementType NULL_KEYWORD = new JqlElementType("NULL_KEYWORD"); |
| IElementType ORDER_KEYWORD = new JqlElementType("ORDER_KEYWORD"); |
| IElementType BY_KEYWORD = new JqlElementType("BY_KEYWORD"); |
| IElementType WAS_KEYWORD = new JqlElementType("WAS_KEYWORD"); |
| IElementType IS_KEYWORD = new JqlElementType("IS_KEYWORD"); |
| IElementType IN_KEYWORD = new JqlElementType("IN_KEYWORD"); |
| IElementType ASC_KEYWORD = new JqlElementType("ASC_KEYWORD"); |
| IElementType DESC_KEYWORD = new JqlElementType("DESC_KEYWORD"); |
| |
| IElementType CHANGED_KEYWORD = new JqlElementType("CHANGED_KEYWORD"); |
| IElementType FROM_KEYWORD = new JqlElementType("FROM_KEYWORD"); |
| IElementType TO_KEYWORD = new JqlElementType("TO_KEYWORD"); |
| IElementType ON_KEYWORD = new JqlElementType("ON_KEYWORD"); |
| IElementType DURING_KEYWORD = new JqlElementType("DURING_KEYWORD"); |
| IElementType BEFORE_KEYWORD = new JqlElementType("BEFORE_KEYWORD"); |
| IElementType AFTER_KEYWORD = new JqlElementType("AFTER_KEYWORD"); |
| |
| IElementType STRING_LITERAL = new JqlElementType("STRING_LITERAL"); |
| IElementType NUMBER_LITERAL = new JqlElementType("NUMBER_LITERAL"); |
| IElementType CUSTOM_FIELD = new JqlElementType("CUSTOM_FIELD"); |
| // operators |
| IElementType EQ = new JqlElementType("EQ"); // = |
| IElementType NE = new JqlElementType("NE"); // != |
| IElementType LT = new JqlElementType("LT"); // < |
| IElementType GT = new JqlElementType("GT"); // > |
| IElementType LE = new JqlElementType("LE"); // <= |
| IElementType GE = new JqlElementType("GE"); // >= |
| IElementType LPAR = new JqlElementType("LPAR"); // ( |
| IElementType RPAR = new JqlElementType("RPAR"); // ) |
| IElementType CONTAINS = new JqlElementType("CONTAINS"); // ~ |
| IElementType NOT_CONTAINS = new JqlElementType("NOT_CONTAINS"); // !~ |
| IElementType COMMA = new JqlElementType("COMMA"); // , |
| IElementType AMP = new JqlElementType("AMP"); // & |
| IElementType AMP_AMP = new JqlElementType("AMP_AMP"); // && |
| IElementType PIPE = new JqlElementType("PIPE"); // | |
| IElementType PIPE_PIPE = new JqlElementType("PIPE_PIPE"); // || |
| IElementType BANG = new JqlElementType("BANG"); // ! |
| /** |
| * Well-known tokes types |
| */ |
| TokenSet WHITESPACES = TokenSet.create(WHITE_SPACE); |
| TokenSet KEYWORDS = TokenSet.create( |
| AND_KEYWORD, |
| OR_KEYWORD, |
| NOT_KEYWORD, |
| IS_KEYWORD, |
| EMPTY_KEYWORD, |
| NULL_KEYWORD, |
| IN_KEYWORD, |
| WAS_KEYWORD, |
| CHANGED_KEYWORD, |
| FROM_KEYWORD, |
| TO_KEYWORD, |
| BY_KEYWORD, |
| DURING_KEYWORD, |
| AFTER_KEYWORD, |
| BEFORE_KEYWORD, |
| ORDER_KEYWORD, |
| ON_KEYWORD, |
| ASC_KEYWORD, |
| DESC_KEYWORD |
| ); |
| TokenSet SIMPLE_OPERATORS = TokenSet.create(EQ, NE, LT, LE, GT, GE, CONTAINS, NOT_CONTAINS); |
| |
| TokenSet SIGN_OPERATORS = TokenSet.create( |
| EQ, NE, LT, LE, GT, GE, CONTAINS, NOT_CONTAINS, AMP, AMP_AMP, PIPE, PIPE_PIPE, BANG |
| ); |
| TokenSet AND_OPERATORS = TokenSet.create(AND_KEYWORD, AMP_AMP, AMP); |
| TokenSet OR_OPERATORS = TokenSet.create(OR_KEYWORD, PIPE_PIPE, PIPE); |
| |
| TokenSet NOT_OPERATORS = TokenSet.create(NOT_KEYWORD, BANG); |
| TokenSet HISTORY_PREDICATES = TokenSet.create( |
| ON_KEYWORD, BEFORE_KEYWORD, AFTER_KEYWORD, DURING_KEYWORD, FROM_KEYWORD, TO_KEYWORD, BY_KEYWORD |
| ); |
| TokenSet SORT_ORDERS = TokenSet.create(ASC_KEYWORD, DESC_KEYWORD); |
| TokenSet EMPTY_VALUES = TokenSet.create(EMPTY_KEYWORD, NULL_KEYWORD); |
| TokenSet LITERALS = TokenSet.create(NUMBER_LITERAL, STRING_LITERAL); |
| |
| /** |
| * Any properly escaped literal can be used as field name according to weird JQL grammar |
| * @see JqlElementTypes |
| */ |
| TokenSet VALID_FIELD_NAMES = TokenSet.create(STRING_LITERAL, NUMBER_LITERAL, CUSTOM_FIELD); |
| TokenSet VALID_ARGUMENTS = LITERALS; |
| } |