Files
openide/RegExpSupport/src/org/intellij/lang/regexp/RegExpTT.java
Filippova Maria a58330a1c1 WI-60779 Support PCRE "pseudo" conditions DEFINE and VERSION as conditions in conditional groups.
GitOrigin-RevId: bdf83d81e0235826d7980739025f90581bc4222c
2022-08-10 14:38:31 +00:00

194 lines
8.7 KiB
Java

/*
* Copyright 2006 Sascha Weinreuter
*
* 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.lang.regexp;
import com.intellij.psi.StringEscapesTokenTypes;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
public interface RegExpTT {
IElementType NUMBER = new RegExpElementType("NUMBER");
IElementType NAME = new RegExpElementType("NAME");
IElementType COMMA = new RegExpElementType("COMMA");
/** "\\Q" */
IElementType QUOTE_BEGIN = new RegExpElementType("QUOTE_BEGIN");
/** <QUOTE> "\\E" */
IElementType QUOTE_END = new RegExpElementType("QUOTE_END");
/** "\\" 0-9 */
IElementType BACKREF = new RegExpElementType("BACKREF");
/** "{" */
IElementType LBRACE = new RegExpElementType("LBRACE");
/** "}" */
IElementType RBRACE = new RegExpElementType("RBRACE");
/** "[" */
IElementType CLASS_BEGIN = new RegExpElementType("CLASS_BEGIN");
/** "]" */
IElementType CLASS_END = new RegExpElementType("CLASS_END");
/** "&&" */
IElementType ANDAND = new RegExpElementType("ANDAND");
/** "[:" */
IElementType BRACKET_EXPRESSION_BEGIN = new RegExpElementType("BRACKET_EXPRESSION_BEGIN");
/** ":]" */
IElementType BRACKET_EXPRESSION_END = new RegExpElementType("BRACKET_EXPRESSION_END");
/** "[." */
IElementType MYSQL_CHAR_BEGIN = new RegExpElementType("MYSQL_CHAR_BEGIN");
/** ".]" */
IElementType MYSQL_CHAR_END = new RegExpElementType("MYSQL_CHAR_END");
/** "[=" */
IElementType MYSQL_CHAR_EQ_BEGIN = new RegExpElementType("MYSQL_CHAR_EQ_BEGIN");
/** "=]" */
IElementType MYSQL_CHAR_EQ_END = new RegExpElementType("MYSQL_CHAR_EQ_END");
/** "(" */
IElementType GROUP_BEGIN = new RegExpElementType("GROUP_BEGIN");
/** ")" */
IElementType GROUP_END = new RegExpElementType("GROUP_END");
/** "(?:" */
IElementType NON_CAPT_GROUP = new RegExpElementType("NON_CAPT_GROUP");
/** "(?>" */
IElementType ATOMIC_GROUP = new RegExpElementType("ATOMIC_GROUP");
/** "(?<=" */
IElementType POS_LOOKBEHIND = new RegExpElementType("POS_LOOKBEHIND");
/** "(?<!" */
IElementType NEG_LOOKBEHIND = new RegExpElementType("NEG_LOOKBEHIND");
/** "(?=" */
IElementType POS_LOOKAHEAD = new RegExpElementType("POS_LOOKAHEAD");
/** "(?!" */
IElementType NEG_LOOKAHEAD = new RegExpElementType("NEG_LOOKAHEAD");
/** "(?" */
IElementType SET_OPTIONS = new RegExpElementType("SET_OPTIONS");
IElementType QUEST = new RegExpElementType("QUEST");
IElementType STAR = new RegExpElementType("STAR");
IElementType PLUS = new RegExpElementType("PLUS");
IElementType COLON = new RegExpElementType("COLON");
/** "\\" ("b" | "B" | "A" | "z" | "Z" | "G" | "K") */
IElementType BOUNDARY = new RegExpElementType("BOUNDARY");
/** "^" */
IElementType CARET = new RegExpElementType("CARET");
/** "$" */
IElementType DOLLAR = new RegExpElementType("DOLLAR");
IElementType DOT = new RegExpElementType("DOT");
/** "|" */
IElementType UNION = new RegExpElementType("UNION");
/**
* "=" in some unicode properties, e.g.(\p{name=value})
*/
IElementType EQ = new RegExpElementType("EQ");
/** ">" in Python/Ruby named group */
IElementType GT = new RegExpElementType("GT");
/* "'" in Ruby quoted named group */
IElementType QUOTE = new RegExpElementType("QUOTE");
/** "\b" | "\t" | "\f" | "\r" | "\n" */
IElementType CTRL_CHARACTER = new RegExpElementType("CTRL_CHARACTER");
/** "\\" ("t" | "n" | "r" | "f" | "a" | "e") */
IElementType ESC_CTRL_CHARACTER = new RegExpElementType("ESC_CTRL_CHARACTER");
/** "\\" ("." | "|" | "$" | "^" | "?" | "*" | "+" | "[" | "{" | "(" | ")") */
IElementType ESC_CHARACTER = new RegExpElementType("ESC_CHARACTER");
/** "\\" ("w" | "W" | "s" | "S" | "d" | "D" | "v" | "V" | "h" | "H" | "X" | "R") */
IElementType CHAR_CLASS = new RegExpElementType("CHAR_CLASS");
/** "\\u" XXXX */
IElementType UNICODE_CHAR = new RegExpElementType("UNICODE_CHAR");
/** "\\x" XX */
IElementType HEX_CHAR = new RegExpElementType("HEX_CHAR");
/** "\\0" OOO */
IElementType OCT_CHAR = new RegExpElementType("OCT_CHAR");
/** "\\c" x */
IElementType CTRL = new RegExpElementType("CTRL");
/** "\\p" | "\\P" */
IElementType PROPERTY = new RegExpElementType("PROPERTY");
/** "\\N */
IElementType NAMED_CHARACTER = new RegExpElementType("NAMED_CHARACTER");
/** "L" | "M" | "Z" | "S" | "N" | "P" | "C" after a property escape */
IElementType CATEGORY_SHORT_HAND = new RegExpElementType("CATEGORY_SHORT_HAND");
/** e.g. "\\#" but also "\\q" which is not a valid escape actually */
IElementType REDUNDANT_ESCAPE = new RegExpElementType("REDUNDANT_ESCAPE");
IElementType MINUS = new RegExpElementType("MINUS");
IElementType CHARACTER = new RegExpElementType("CHARACTER");
IElementType BAD_CHARACTER = TokenType.BAD_CHARACTER;
IElementType BAD_OCT_VALUE = new RegExpElementType("BAD_OCT_VALUE");
IElementType BAD_HEX_VALUE = new RegExpElementType("BAD_HEX_VALUE");
IElementType COMMENT = new RegExpElementType("COMMENT");
IElementType OPTIONS_ON = new RegExpElementType("OPTIONS_ON");
IElementType OPTIONS_OFF = new RegExpElementType("OPTIONS_OFF");
/** (?P<name>... */
IElementType PYTHON_NAMED_GROUP = new RegExpElementType("PYTHON_NAMED_GROUP");
/** (?P>name) or (?&name) */
IElementType PCRE_RECURSIVE_NAMED_GROUP_REF = new RegExpElementType("PCRE_RECURSIVE_NAMED_GROUP");
/** (?P=name) */
IElementType PYTHON_NAMED_GROUP_REF = new RegExpElementType("PYTHON_NAMED_GROUP_REF");
/** (?(id/name/lookaround)yes-pattern|no-pattern) */
IElementType CONDITIONAL = new RegExpElementType("CONDITIONAL");
/** (' */
IElementType QUOTED_CONDITION_BEGIN = new RegExpElementType("QUOTED_CONDITION_BEGIN");
IElementType QUOTED_CONDITION_END = new RegExpElementType("QUOTED_CONDITION_END");
IElementType ANGLE_BRACKET_CONDITION_BEGIN = new RegExpElementType("ANGLE_BRACKET_CONDITION_BEGIN");
IElementType ANGLE_BRACKET_CONDITION_END = new RegExpElementType("ANGLE_BRACKET_CONDITION_END");
/** (?|regex) */
IElementType PCRE_BRANCH_RESET = new RegExpElementType("PCRE_BRANCH_RESET");
/** (?<name>... */
IElementType RUBY_NAMED_GROUP = new RegExpElementType("RUBY_NAMED_GROUP");
/** \k<name> */
IElementType RUBY_NAMED_GROUP_REF = new RegExpElementType("RUBY_NAMED_GROUP_REF");
/** \g<name> */
IElementType RUBY_NAMED_GROUP_CALL = new RegExpElementType("RUBY_NAMED_GROUP_CALL");
/** (?'name'... */
IElementType RUBY_QUOTED_NAMED_GROUP = new RegExpElementType("RUBY_QUOTED_NAMED_GROUP");
/** \k'name' */
IElementType RUBY_QUOTED_NAMED_GROUP_REF = new RegExpElementType("RUBY_QUOTED_NAMED_GROUP_REF");
/** \g'name' */
IElementType RUBY_QUOTED_NAMED_GROUP_CALL = new RegExpElementType("RUBY_QUOTED_NAMED_GROUP_CALL");
/** DEFINE|VERSION[>]=n.m */
IElementType PCRE_CONDITION = new RegExpElementType("PCRE_CONDITION");
TokenSet CHARACTERS = TokenSet.create(CHARACTER,
ESC_CTRL_CHARACTER,
ESC_CHARACTER,
CTRL_CHARACTER,
CTRL,
UNICODE_CHAR,
HEX_CHAR, BAD_HEX_VALUE,
OCT_CHAR, BAD_OCT_VALUE,
REDUNDANT_ESCAPE,
MINUS,
StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN,
StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN);
TokenSet QUANTIFIERS = TokenSet.create(QUEST, PLUS, STAR, LBRACE);
TokenSet GROUPS = TokenSet.create(GROUP_BEGIN, NON_CAPT_GROUP, ATOMIC_GROUP, POS_LOOKAHEAD, NEG_LOOKAHEAD, POS_LOOKBEHIND, NEG_LOOKBEHIND, PCRE_BRANCH_RESET);
TokenSet LOOKAROUND_GROUPS = TokenSet.create(POS_LOOKAHEAD, NEG_LOOKAHEAD, POS_LOOKBEHIND, NEG_LOOKBEHIND);
TokenSet BOUNDARIES = TokenSet.create(BOUNDARY, CARET, DOLLAR);
}