#include <glib.h>
#include "cr-input.h"
#include "cr-tknzr.h"
#include "cr-utils.h"
#include "cr-doc-handler.h"
Go to the source code of this file.
Data Structures | |
struct | _CRParser |
The implementation of the SAC parser. More... | |
Typedefs | |
typedef _CRParser | CRParser |
typedef _CRParserPriv | CRParserPriv |
Functions | |
CRParser * | cr_parser_new (CRTknzr *a_tknzr) |
Creates a new parser to parse data coming the input stream given in parameter. | |
CRParser * | cr_parser_new_from_buf (guchar *a_buf, gulong a_len, enum CREncoding a_enc, gboolean a_free_buf) |
Instanciates a new parser from a memory buffer. | |
CRParser * | cr_parser_new_from_file (const guchar *a_file_uri, enum CREncoding a_enc) |
CRParser * | cr_parser_new_from_input (CRInput *a_input) |
enum CRStatus | cr_parser_set_tknzr (CRParser *a_this, CRTknzr *a_tknzr) |
enum CRStatus | cr_parser_get_tknzr (CRParser *a_this, CRTknzr **a_tknzr) |
Getter of the parser's underlying tokenizer. | |
enum CRStatus | cr_parser_get_parsing_location (CRParser *a_this, CRParsingLocation *a_loc) |
Gets the current parsing location. | |
enum CRStatus | cr_parser_try_to_skip_spaces_and_comments (CRParser *a_this) |
Same as cr_parser_try_to_skip_spaces() but this one skips spaces and comments. | |
enum CRStatus | cr_parser_set_sac_handler (CRParser *a_this, CRDocHandler *a_handler) |
Sets a SAC document handler to the parser. | |
enum CRStatus | cr_parser_get_sac_handler (CRParser *a_this, CRDocHandler **a_handler) |
Gets the SAC document handler. | |
enum CRStatus | cr_parser_set_use_core_grammar (CRParser *a_this, gboolean a_use_core_grammar) |
enum CRStatus | cr_parser_get_use_core_grammar (CRParser *a_this, gboolean *a_use_core_grammar) |
enum CRStatus | cr_parser_parse (CRParser *a_this) |
Parses the data that comes from the input previously associated to the current instance of CRParser. | |
enum CRStatus | cr_parser_parse_file (CRParser *a_this, const guchar *a_file_uri, enum CREncoding a_enc) |
Parses a the given in parameter. | |
enum CRStatus | cr_parser_parse_buf (CRParser *a_this, const guchar *a_buf, gulong a_len, enum CREncoding a_enc) |
Parses a stylesheet from a buffer. | |
enum CRStatus | cr_parser_set_default_sac_handler (CRParser *a_this) |
Sets the SAC handler associated to the current instance of CRParser to the default SAC handler. | |
enum CRStatus | cr_parser_parse_term (CRParser *a_this, CRTerm **a_term) |
Parses a "term" as defined in the css2 spec, appendix D.1: term ::= unary_operator? [NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | TIME S* | FREQ S* | function ] | STRING S* | IDENT S* | URI S* | RGB S* | UNICODERANGE S* | hexcolor. | |
enum CRStatus | cr_parser_parse_expr (CRParser *a_this, CRTerm **a_expr) |
Parses an expression as defined by the css2 spec in appendix D.1: expr: term [ operator term ]*. | |
enum CRStatus | cr_parser_parse_prio (CRParser *a_this, CRString **a_prio) |
Parses a declaration priority as defined by the css2 grammar in appendix C: prio: IMPORTANT_SYM S*. | |
enum CRStatus | cr_parser_parse_declaration (CRParser *a_this, CRString **a_property, CRTerm **a_expr, gboolean *a_important) |
TODO: return the parsed priority, so that upper layers can take benefit from it. | |
enum CRStatus | cr_parser_parse_statement_core (CRParser *a_this) |
Parses a statement as defined by the css core grammar in chapter 4.1 of the css2 spec. | |
enum CRStatus | cr_parser_parse_ruleset (CRParser *a_this) |
Parses a "ruleset" as defined in the css2 spec at appendix D.1. | |
enum CRStatus | cr_parser_parse_import (CRParser *a_this, GList **a_media_list, CRString **a_import_string, CRParsingLocation *a_location) |
Parses an 'import' declaration as defined in the css2 spec in appendix D.1:. | |
enum CRStatus | cr_parser_parse_media (CRParser *a_this) |
Parses a 'media' declaration as specified in the css2 spec at appendix D.1:. | |
enum CRStatus | cr_parser_parse_page (CRParser *a_this) |
Parses '' rule as specified in the css2 spec in appendix D.1: page ::= PAGE_SYM S* IDENT? pseudo_page? S* '{' S* declaration [ ';' S* declaration ]* '}' S*. | |
enum CRStatus | cr_parser_parse_charset (CRParser *a_this, CRString **a_value, CRParsingLocation *a_charset_sym_location) |
Parses a charset declaration as defined implictly by the css2 spec in appendix D.1: charset ::= CHARSET_SYM S* STRING S* ';'. | |
enum CRStatus | cr_parser_parse_font_face (CRParser *a_this) |
Parses the "@font-face" rule specified in the css1 spec in appendix D.1:. | |
void | cr_parser_destroy (CRParser *a_this) |
Destroys the current instance of CRParser. |
Definition in file cr-parser.h.
|
|
Definition at line 41 of file cr-parser.h. Referenced by cr_parser_new(). |
|
Destroys the current instance of CRParser.
Definition at line 4380 of file cr-parser.c. References cr_doc_handler_unref(), cr_tknzr_unref(), CRParser, and PRIVATE. Referenced by cr_declaration_parse_from_buf(), cr_declaration_parse_list_from_buf(), cr_om_parser_destroy(), cr_rgb_parse_from_buf(), cr_statement_at_charset_rule_parse_from_buf(), cr_statement_at_import_rule_parse_from_buf(), cr_statement_at_media_rule_parse_from_buf(), cr_statement_at_page_rule_parse_from_buf(), cr_statement_does_buf_parses_against_core(), cr_statement_font_face_rule_parse_from_buf(), cr_statement_ruleset_parse_from_buf(), and cr_term_parse_expression_from_buf(). |
|
Gets the current parsing location.
Definition at line 4331 of file cr-parser.c. References CR_BAD_PARAM_ERROR, cr_tknzr_get_parsing_location(), CRParser, CRParsingLocation, and PRIVATE. Referenced by cr_parser_parse_import(). |
|
Gets the SAC document handler.
Definition at line 2847 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CRParser, and PRIVATE. Referenced by cr_om_parser_parse_buf(), and cr_om_parser_parse_file(). |
|
Getter of the parser's underlying tokenizer.
Definition at line 4314 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CRParser, and PRIVATE. Referenced by cr_declaration_parse_list_from_buf(). |
|
Definition at line 2896 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CRParser, and PRIVATE. |
|
Creates a new parser to parse data coming the input stream given in parameter.
Definition at line 2731 of file cr-parser.c. References CR_OK, cr_parser_set_tknzr(), CRParser, CRParserPriv, CRStatus, and PRIVATE. Referenced by cr_om_parser_parse_buf(), cr_parser_new_from_file(), and cr_parser_new_from_input(). |
|
|
Definition at line 2801 of file cr-parser.c. References cr_parser_new(), cr_tknzr_new_from_uri(), cr_utils_trace_info, CRParser, and CRTknzr. Referenced by cr_om_parser_parse_file(). |
|
Definition at line 2784 of file cr-parser.c. References cr_parser_new(), cr_tknzr_new(), CRInput, CRParser, and CRTknzr. Referenced by cr_om_parser_new(), and cr_parser_new_from_buf(). |
|
Parses the data that comes from the input previously associated to the current instance of CRParser.
Definition at line 4273 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CRParser, CRStatus, and PRIVATE. Referenced by cr_parser_parse_buf(), and cr_parser_parse_file(). |
|
Parses a stylesheet from a buffer.
Definition at line 4351 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_parser_parse(), cr_parser_set_tknzr(), cr_tknzr_new_from_buf(), CRParser, CRStatus, CRTknzr, and PRIVATE. Referenced by cr_om_parser_parse_buf(). |
|
Parses a charset declaration as defined implictly by the css2 spec in appendix D.1: charset ::= CHARSET_SYM S* STRING S* ';'.
Definition at line 4032 of file cr-parser.c. References CHARSET_SYM_TK, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_try_to_skip_spaces_and_comments(), cr_parsing_location_copy(), cr_string_destroy(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_token_destroy(), CRInputPos, CRParser, CRParsingLocation, CRStatus, CRString, CRToken, ENSURE_PARSING_COND, _CRToken::location, PRIVATE, RECORD_INITIAL_POS, SEMICOLON_TK, _CRToken::str, STRING_TK, and _CRToken::u. Referenced by cr_statement_at_charset_rule_parse_from_buf(). |
|
TODO: return the parsed priority, so that upper layers can take benefit from it. Parses a "declaration" as defined by the css2 spec in appendix D.1: declaration ::= [property ':' S* expr prio?]?
Definition at line 3093 of file cr-parser.c. References CHECK_PARSING_STATUS_ERR, CR_BAD_PARAM_ERROR, cr_parser_parse_expr(), cr_parser_parse_prio(), cr_parser_try_to_skip_spaces_and_comments(), cr_string_destroy(), cr_term_append_term(), cr_term_destroy(), cr_tknzr_set_cur_pos(), CRInputPos, CRParser, CRStatus, CRString, CRTerm, PRIVATE, READ_NEXT_CHAR, and RECORD_INITIAL_POS. Referenced by cr_declaration_parse_from_buf(), cr_declaration_parse_list_from_buf(), cr_parser_parse_font_face(), cr_parser_parse_page(), and cr_parser_parse_ruleset(). |
|
Parses an expression as defined by the css2 spec in appendix D.1: expr: term [ operator term ]*.
Definition at line 2941 of file cr-parser.c. References CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_term(), cr_parser_try_to_skip_spaces_and_comments(), cr_term_append_term(), cr_term_destroy(), cr_tknzr_peek_byte(), cr_tknzr_set_cur_pos(), CRInputPos, CRParser, CRStatus, CRTerm, PRIVATE, READ_NEXT_BYTE, and RECORD_INITIAL_POS. Referenced by cr_parser_parse_declaration(), and cr_term_parse_expression_from_buf(). |
|
Parses a the given in parameter.
Definition at line 2914 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CR_ERROR, CR_OK, cr_parser_parse(), cr_parser_set_tknzr(), cr_tknzr_new_from_uri(), CRParser, CRStatus, CRTknzr, and PRIVATE. Referenced by cr_om_parser_parse_file(). |
|
Parses the "@font-face" rule specified in the css1 spec in appendix D.1:. font_face ::= FONT_FACE_SYM S* '{' S* declaration [ ';' S* declaration ]* '}' S* This function will call SAC handlers whenever it is necessary.
Definition at line 4119 of file cr-parser.c. References CBO_TK, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_declaration(), cr_parser_try_to_skip_spaces_and_comments(), cr_parsing_location_copy(), cr_string_destroy(), cr_term_destroy(), cr_term_ref(), cr_term_unref(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_token_destroy(), CRInputPos, CRParser, CRParsingLocation, CRStatus, CRString, CRTerm, CRToken, ENSURE_PARSING_COND, FONT_FACE_SYM_TK, _CRToken::location, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, and RECORD_INITIAL_POS. Referenced by cr_statement_font_face_rule_parse_from_buf(). |
|
Parses an 'import' declaration as defined in the css2 spec in appendix D.1:. import ::= [STRING|URI] S* [ medium [ ',' S* medium]* ]? ';' S*
Definition at line 3458 of file cr-parser.c. References BYTE, CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_get_parsing_location(), cr_parser_try_to_skip_spaces_and_comments(), cr_string_destroy(), cr_tknzr_peek_char(), cr_tknzr_set_cur_pos(), CRInputPos, CRParser, CRParsingLocation, CRStatus, CRString, ENSURE_PARSING_COND, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, RECORD_INITIAL_POS, and SKIP_CHARS. Referenced by cr_statement_at_import_rule_parse_from_buf(). |
|
Parses a 'media' declaration as specified in the css2 spec at appendix D.1:. media ::= S* medium [ ',' S* medium ]* '{' S* ruleset* '}' S* Note that this function calls the required sac handlers during the parsing to notify media productions. See CRDocHandler to know the callback called during parsing.
Definition at line 3616 of file cr-parser.c. References CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_ruleset(), cr_parser_try_to_skip_spaces_and_comments(), cr_parsing_location_copy(), cr_string_destroy(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_token_destroy(), CRInputPos, CRParser, CRParsingLocation, CRStatus, CRString, CRToken, ENSURE_PARSING_COND, IDENT_TK, _CRToken::location, MEDIA_SYM_TK, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, RECORD_INITIAL_POS, _CRToken::str, and _CRToken::u. Referenced by cr_statement_at_media_rule_parse_from_buf(). |
|
Parses '' rule as specified in the css2 spec in appendix D.1: page ::= PAGE_SYM S* IDENT? pseudo_page? S* '{' S* declaration [ ';' S* declaration ]* '}' S*. This function also calls the relevant SAC handlers whenever it encounters a construction that must be reported to the calling application.
Definition at line 3783 of file cr-parser.c. References CBC_TK, CBO_TK, CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_declaration(), cr_parser_try_to_skip_spaces_and_comments(), cr_parsing_location_copy(), cr_string_destroy(), cr_term_destroy(), cr_term_ref(), cr_term_unref(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_tknzr_unget_token(), cr_token_destroy(), CRInputPos, CRParser, CRParsingLocation, CRStatus, CRString, CRTerm, CRToken, DELIM_TK, ENSURE_PARSING_COND, _CRToken::location, PAGE_SYM_TK, PRIVATE, and RECORD_INITIAL_POS. Referenced by cr_statement_at_page_rule_parse_from_buf(). |
|
Parses a declaration priority as defined by the css2 grammar in appendix C: prio: IMPORTANT_SYM S*.
Definition at line 3044 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CR_OK, cr_parser_try_to_skip_spaces_and_comments(), cr_string_new_from_string(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_token_destroy(), CRInputPos, CRParser, CRStatus, CRString, CRToken, ENSURE_PARSING_COND, IMPORTANT_SYM_TK, PRIVATE, and RECORD_INITIAL_POS. Referenced by cr_parser_parse_declaration(). |
|
Parses a "ruleset" as defined in the css2 spec at appendix D.1. ruleset ::= selector [ ',' S* selector ]* '{' S* declaration? [ ';' S* declaration? ]* '}' S*; This methods calls the the SAC handler on the relevant SAC handler callbacks whenever it encounters some specific constructions. See the documentation of CRDocHandler (the SAC handler) to know when which SAC handler is called.
Definition at line 3245 of file cr-parser.c. References CHECK_PARSING_STATUS, CHECK_PARSING_STATUS_ERR, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_parse_declaration(), cr_parser_try_to_skip_spaces_and_comments(), cr_selector_ref(), cr_selector_unref(), cr_simple_sel_destroy(), cr_string_destroy(), cr_term_ref(), cr_term_unref(), cr_tknzr_peek_char(), cr_tknzr_set_cur_pos(), CRInputPos, CRParser, CRSelector, CRSimpleSel, CRStatus, CRString, CRTerm, ENSURE_PARSING_COND_ERR, PEEK_NEXT_CHAR, PRIVATE, READ_NEXT_CHAR, and RECORD_INITIAL_POS. Referenced by cr_parser_parse_media(), and cr_statement_ruleset_parse_from_buf(). |
|
Parses a statement as defined by the css core grammar in chapter 4.1 of the css2 spec. statement : ruleset | at-rule;
Definition at line 3184 of file cr-parser.c. References ATKEYWORD_TK, CHARSET_SYM_TK, CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_tknzr_unget_token(), cr_token_destroy(), CRInputPos, CRParser, CRStatus, CRToken, ENSURE_PARSING_COND, FONT_FACE_SYM_TK, IMPORT_SYM_TK, MEDIA_SYM_TK, PAGE_SYM_TK, PRIVATE, and RECORD_INITIAL_POS. Referenced by cr_statement_does_buf_parses_against_core(). |
|
Parses a "term" as defined in the css2 spec, appendix D.1: term ::= unary_operator? [NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | TIME S* | FREQ S* | function ] | STRING S* | IDENT S* | URI S* | RGB S* | UNICODERANGE S* | hexcolor. TODO: handle parsing of 'RGB'
Definition at line 1499 of file cr-parser.c. References ANGLE_TK, CHECK_PARSING_STATUS, CR_BAD_PARAM_ERROR, CR_OK, cr_parser_try_to_skip_spaces_and_comments(), cr_parsing_location_copy(), cr_string_destroy(), cr_term_append_term(), cr_term_destroy(), cr_term_new(), cr_term_set_function(), cr_term_set_hash(), cr_term_set_ident(), cr_term_set_number(), cr_term_set_rgb(), cr_term_set_string(), cr_term_set_uri(), cr_tknzr_get_next_token(), cr_tknzr_set_cur_pos(), cr_tknzr_unget_token(), cr_token_destroy(), CRInputPos, CRParser, CRParsingLocation, CRStatus, CRString, CRTerm, CRToken, DELIM_TK, EMS_TK, EXS_TK, FREQ_TK, LENGTH_TK, _CRTerm::location, _CRToken::location, _CRToken::num, PERCENTAGE_TK, PRIVATE, RECORD_INITIAL_POS, _CRToken::rgb, _CRToken::str, TIME_TK, _CRToken::u, and _CRToken::unichar. Referenced by cr_parser_parse_expr(), and cr_rgb_parse_from_buf(). |
|
Sets the SAC handler associated to the current instance of CRParser to the default SAC handler.
Definition at line 2863 of file cr-parser.c. References CR_BAD_PARAM_ERROR, cr_doc_handler_destroy(), cr_doc_handler_new(), cr_doc_handler_set_default_sac_handler(), cr_parser_set_sac_handler(), CRDocHandler, CRParser, CRStatus, and PRIVATE. |
|
Sets a SAC document handler to the parser.
Definition at line 2824 of file cr-parser.c. References CR_BAD_PARAM_ERROR, cr_doc_handler_ref(), cr_doc_handler_unref(), CRParser, and PRIVATE. Referenced by cr_parser_set_default_sac_handler(), cr_statement_at_media_rule_parse_from_buf(), cr_statement_at_page_rule_parse_from_buf(), cr_statement_font_face_rule_parse_from_buf(), and cr_statement_ruleset_parse_from_buf(). |
|
Definition at line 4290 of file cr-parser.c. References CR_BAD_PARAM_ERROR, cr_tknzr_ref(), cr_tknzr_unref(), CRParser, and PRIVATE. Referenced by cr_parser_new(), cr_parser_parse_buf(), and cr_parser_parse_file(). |
|
Definition at line 2885 of file cr-parser.c. References CR_BAD_PARAM_ERROR, CRParser, and PRIVATE. Referenced by cr_statement_does_buf_parses_against_core(). |
|
Same as cr_parser_try_to_skip_spaces() but this one skips spaces and comments.
Definition at line 615 of file cr-parser.c. References COMMENT_TK, CR_BAD_PARAM_ERROR, cr_tknzr_get_next_token(), cr_tknzr_unget_token(), cr_token_destroy(), CRParser, CRStatus, CRToken, and PRIVATE. Referenced by cr_declaration_parse_from_buf(), cr_declaration_parse_list_from_buf(), cr_parser_parse_charset(), cr_parser_parse_declaration(), cr_parser_parse_expr(), cr_parser_parse_font_face(), cr_parser_parse_import(), cr_parser_parse_media(), cr_parser_parse_page(), cr_parser_parse_prio(), cr_parser_parse_ruleset(), cr_parser_parse_term(), cr_rgb_parse_from_buf(), cr_statement_at_charset_rule_parse_from_buf(), cr_statement_at_import_rule_parse_from_buf(), cr_statement_at_media_rule_parse_from_buf(), cr_statement_at_page_rule_parse_from_buf(), cr_statement_font_face_rule_parse_from_buf(), cr_statement_ruleset_parse_from_buf(), and cr_term_parse_expression_from_buf(). |