| /* |
| * 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.tree.IElementType; |
| import com.intellij.psi.tree.TokenSet; |
| import com.intellij.psi.StringEscapesTokenTypes; |
| |
| 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 GROUP_BEGIN = new RegExpElementType("GROUP_BEGIN"); |
| IElementType GROUP_END = new RegExpElementType("GROUP_END"); |
| |
| IElementType NON_CAPT_GROUP = new RegExpElementType("NON_CAPT_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") |
| 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 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") |
| 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"); |
| |
| // 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 = new RegExpElementType("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) |
| IElementType PYTHON_NAMED_GROUP_REF = new RegExpElementType("PYTHON_NAMED_GROUP_REF"); |
| // (?(id/name)yes-pattern|no-pattern) |
| IElementType PYTHON_COND_REF = new RegExpElementType("PYTHON_COND_REF"); |
| |
| // (?<name>... |
| IElementType RUBY_NAMED_GROUP = new RegExpElementType("RUBY_NAMED_GROUP"); |
| |
| // (?'name'... |
| IElementType RUBY_QUOTED_NAMED_GROUP = new RegExpElementType("RUBY_QUOTED_NAMED_GROUP"); |
| |
| TokenSet KEYWORDS = TokenSet.create(DOT, STAR, QUEST, PLUS); |
| |
| 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 SIMPLE_CLASSES = TokenSet.create(DOT, CHAR_CLASS); |
| |
| // caret is just a character in classes after the first position: [a^] matches "a" or "^" |
| TokenSet CHARACTERS2 = TokenSet.orSet(CHARACTERS, SIMPLE_CLASSES, TokenSet.create(CARET, LBRACE)); |
| |
| TokenSet QUANTIFIERS = TokenSet.create(QUEST, PLUS, STAR, LBRACE); |
| |
| TokenSet GROUPS = TokenSet.create(GROUP_BEGIN, |
| NON_CAPT_GROUP, |
| POS_LOOKAHEAD, |
| NEG_LOOKAHEAD, |
| POS_LOOKBEHIND, |
| NEG_LOOKBEHIND); |
| |
| TokenSet BOUNDARIES = TokenSet.create(BOUNDARY, CARET, DOLLAR); |
| } |