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