blob: ddb8bdf577a6257729d660df11b6e6ed9dad0d8f [file] [log] [blame]
/*
* 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;
}