xref: /php-src/ext/dom/lexbor/lexbor/css/syntax/parser.h (revision f0934090)
1 /*
2  * Copyright (C) 2020-2022 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #ifndef LEXBOR_CSS_SYNTAX_PARSER_H
8 #define LEXBOR_CSS_SYNTAX_PARSER_H
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 
15 #include "lexbor/css/base.h"
16 #include "lexbor/css/at_rule.h"
17 
18 
19 LXB_API lxb_status_t
20 lxb_css_syntax_parser_run(lxb_css_parser_t *parser);
21 
22 LXB_API const lxb_css_syntax_token_t *
23 lxb_css_syntax_parser_token(lxb_css_parser_t *parser);
24 
25 LXB_API const lxb_css_syntax_token_t *
26 lxb_css_syntax_parser_token_wo_ws(lxb_css_parser_t *parser);
27 
28 LXB_API void
29 lxb_css_syntax_parser_consume(lxb_css_parser_t *parser);
30 
31 LXB_API lxb_css_syntax_rule_t *
32 lxb_css_syntax_parser_list_rules_push(lxb_css_parser_t *parser,
33                                       const lxb_css_syntax_token_t *token,
34                                       lxb_css_parser_state_f state_back,
35                                       const lxb_css_syntax_cb_list_rules_t *list_rules,
36                                       void *ctx, bool top_level,
37                                       lxb_css_syntax_token_type_t stop);
38 
39 LXB_API lxb_css_syntax_rule_t *
40 lxb_css_syntax_parser_at_rule_push(lxb_css_parser_t *parser,
41                                    const lxb_css_syntax_token_t *token,
42                                    lxb_css_parser_state_f state_back,
43                                    const lxb_css_syntax_cb_at_rule_t *at_rule,
44                                    void *ctx, lxb_css_syntax_token_type_t stop);
45 
46 LXB_API lxb_css_syntax_rule_t *
47 lxb_css_syntax_parser_qualified_push(lxb_css_parser_t *parser,
48                                      const lxb_css_syntax_token_t *token,
49                                      lxb_css_parser_state_f state_back,
50                                      const lxb_css_syntax_cb_qualified_rule_t *qualified,
51                                      void *ctx, lxb_css_syntax_token_type_t stop);
52 
53 LXB_API lxb_css_syntax_rule_t *
54 lxb_css_syntax_parser_declarations_push(lxb_css_parser_t *parser,
55                                         const lxb_css_syntax_token_t *token,
56                                         lxb_css_parser_state_f state_back,
57                                         const lxb_css_syntax_cb_declarations_t *declarations,
58                                         void *ctx, lxb_css_syntax_token_type_t stop);
59 
60 LXB_API lxb_css_syntax_rule_t *
61 lxb_css_syntax_parser_components_push(lxb_css_parser_t *parser,
62                                       const lxb_css_syntax_token_t *token,
63                                       lxb_css_parser_state_f state_back,
64                                       const lxb_css_syntax_cb_components_t *comp,
65                                       void *ctx, lxb_css_syntax_token_type_t stop);
66 
67 LXB_API lxb_css_syntax_rule_t *
68 lxb_css_syntax_parser_function_push(lxb_css_parser_t *parser,
69                                     const lxb_css_syntax_token_t *token,
70                                     lxb_css_parser_state_f state_back,
71                                     const lxb_css_syntax_cb_function_t *func,
72                                     void *ctx);
73 
74 LXB_API lxb_css_syntax_rule_t *
75 lxb_css_syntax_parser_block_push(lxb_css_parser_t *parser,
76                                  const lxb_css_syntax_token_t *token,
77                                  lxb_css_parser_state_f state_back,
78                                  const lxb_css_syntax_cb_block_t *block,
79                                  void *ctx);
80 
81 LXB_API lxb_css_syntax_rule_t *
82 lxb_css_syntax_parser_pipe_push(lxb_css_parser_t *parser,
83                                 lxb_css_parser_state_f state_back,
84                                 const lxb_css_syntax_cb_pipe_t *pipe,
85                                 void *ctx, lxb_css_syntax_token_type_t stop);
86 
87 LXB_API lxb_status_t
88 lxb_css_syntax_parser_tkz_cb(lxb_css_syntax_tokenizer_t *tkz,
89                              const lxb_char_t **data, const lxb_char_t **end,
90                              void *ctx);
91 
92 LXB_API const lxb_css_syntax_token_t *
93 lxb_css_syntax_parser_start_block(lxb_css_parser_t *parser,
94                                   const lxb_css_syntax_token_t *token,
95                                   lxb_css_syntax_rule_t *rule);
96 
97 LXB_API const lxb_css_syntax_token_t *
98 lxb_css_syntax_parser_end(lxb_css_parser_t *parser,
99                           const lxb_css_syntax_token_t *token,
100                           lxb_css_syntax_rule_t *rule);
101 
102 
103 #ifdef __cplusplus
104 } /* extern "C" */
105 #endif
106 
107 #endif /* LEXBOR_CSS_SYNTAX_PARSER_H */
108