1425bb815Sopenharmony_ci/* Copyright JS Foundation and other contributors, http://js.foundation
2425bb815Sopenharmony_ci *
3425bb815Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4425bb815Sopenharmony_ci * you may not use this file except in compliance with the License.
5425bb815Sopenharmony_ci * You may obtain a copy of the License at
6425bb815Sopenharmony_ci *
7425bb815Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8425bb815Sopenharmony_ci *
9425bb815Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10425bb815Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS
11425bb815Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12425bb815Sopenharmony_ci * See the License for the specific language governing permissions and
13425bb815Sopenharmony_ci * limitations under the License.
14425bb815Sopenharmony_ci */
15425bb815Sopenharmony_ci
16425bb815Sopenharmony_ci#ifndef RE_TOKEN_H
17425bb815Sopenharmony_ci#define RE_TOKEN_H
18425bb815Sopenharmony_ci
19425bb815Sopenharmony_ci#if ENABLED (JERRY_BUILTIN_REGEXP)
20425bb815Sopenharmony_ci
21425bb815Sopenharmony_ci/** \addtogroup parser Parser
22425bb815Sopenharmony_ci * @{
23425bb815Sopenharmony_ci *
24425bb815Sopenharmony_ci * \addtogroup regexparser Regular expression
25425bb815Sopenharmony_ci * @{
26425bb815Sopenharmony_ci *
27425bb815Sopenharmony_ci * \addtogroup regexparser_parser Parser
28425bb815Sopenharmony_ci * @{
29425bb815Sopenharmony_ci */
30425bb815Sopenharmony_ci
31425bb815Sopenharmony_ci/**
32425bb815Sopenharmony_ci * RegExp token type definitions
33425bb815Sopenharmony_ci */
34425bb815Sopenharmony_citypedef enum
35425bb815Sopenharmony_ci{
36425bb815Sopenharmony_ci  RE_TOK_EOF,                        /**< EOF */
37425bb815Sopenharmony_ci  RE_TOK_BACKREFERENCE,              /**< "\[0..9]" */
38425bb815Sopenharmony_ci  RE_TOK_ALTERNATIVE,                /**< "|" */
39425bb815Sopenharmony_ci  RE_TOK_ASSERT_START,               /**< "^" */
40425bb815Sopenharmony_ci  RE_TOK_ASSERT_END,                 /**< "$" */
41425bb815Sopenharmony_ci  RE_TOK_PERIOD,                     /**< "." */
42425bb815Sopenharmony_ci  RE_TOK_START_CAPTURE_GROUP,        /**< "(" */
43425bb815Sopenharmony_ci  RE_TOK_START_NON_CAPTURE_GROUP,    /**< "(?:" */
44425bb815Sopenharmony_ci  RE_TOK_END_GROUP,                  /**< ")" */
45425bb815Sopenharmony_ci  RE_TOK_ASSERT_LOOKAHEAD,           /**< "(?=" */
46425bb815Sopenharmony_ci  RE_TOK_ASSERT_WORD_BOUNDARY,       /**< "\b" */
47425bb815Sopenharmony_ci  RE_TOK_ASSERT_NOT_WORD_BOUNDARY,   /**< "\B" */
48425bb815Sopenharmony_ci  RE_TOK_CLASS_ESCAPE,               /**< "\d \D \w \W \s \S" */
49425bb815Sopenharmony_ci  RE_TOK_CHAR_CLASS,                 /**< "[ ]" */
50425bb815Sopenharmony_ci  RE_TOK_CHAR,                       /**< any character */
51425bb815Sopenharmony_ci} re_token_type_t;
52425bb815Sopenharmony_ci
53425bb815Sopenharmony_ci/**
54425bb815Sopenharmony_ci * RegExp token
55425bb815Sopenharmony_ci */
56425bb815Sopenharmony_citypedef struct
57425bb815Sopenharmony_ci{
58425bb815Sopenharmony_ci  uint32_t value;         /**< value of the token */
59425bb815Sopenharmony_ci  uint32_t qmin;          /**< minimum number of token iterations */
60425bb815Sopenharmony_ci  uint32_t qmax;          /**< maximum number of token iterations */
61425bb815Sopenharmony_ci  re_token_type_t type;   /**< type of the token */
62425bb815Sopenharmony_ci  bool greedy;            /**< type of iteration */
63425bb815Sopenharmony_ci} re_token_t;
64425bb815Sopenharmony_ci
65425bb815Sopenharmony_ci/**
66425bb815Sopenharmony_ci * @}
67425bb815Sopenharmony_ci * @}
68425bb815Sopenharmony_ci * @}
69425bb815Sopenharmony_ci */
70425bb815Sopenharmony_ci
71425bb815Sopenharmony_ci#endif /* ENABLED (JERRY_BUILTIN_REGEXP) */
72425bb815Sopenharmony_ci#endif /* !RE_TOKEN_H */
73