1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:57:44 +00:00

LibWeb: Rename CSS::Parser::SelectorParsingResult => ParsingResult

I'm going to use it for non-selector purposes too, so the name needed to
change.
This commit is contained in:
Sam Atkins 2021-09-12 19:29:47 +01:00 committed by Andreas Kling
parent 6c27e2938a
commit 00b84249d6
2 changed files with 49 additions and 49 deletions

View file

@ -187,7 +187,7 @@ Optional<SelectorList> Parser::parse_as_selector()
} }
template<typename T> template<typename T>
Result<SelectorList, Parser::SelectorParsingResult> Parser::parse_a_selector(TokenStream<T>& tokens) Result<SelectorList, Parser::ParsingResult> Parser::parse_a_selector(TokenStream<T>& tokens)
{ {
return parse_a_selector_list(tokens); return parse_a_selector_list(tokens);
} }
@ -202,13 +202,13 @@ Optional<SelectorList> Parser::parse_as_relative_selector()
} }
template<typename T> template<typename T>
Result<SelectorList, Parser::SelectorParsingResult> Parser::parse_a_relative_selector(TokenStream<T>& tokens) Result<SelectorList, Parser::ParsingResult> Parser::parse_a_relative_selector(TokenStream<T>& tokens)
{ {
return parse_a_relative_selector_list(tokens); return parse_a_relative_selector_list(tokens);
} }
template<typename T> template<typename T>
Result<SelectorList, Parser::SelectorParsingResult> Parser::parse_a_selector_list(TokenStream<T>& tokens) Result<SelectorList, Parser::ParsingResult> Parser::parse_a_selector_list(TokenStream<T>& tokens)
{ {
auto comma_separated_lists = parse_a_comma_separated_list_of_component_values(tokens); auto comma_separated_lists = parse_a_comma_separated_list_of_component_values(tokens);
@ -222,13 +222,13 @@ Result<SelectorList, Parser::SelectorParsingResult> Parser::parse_a_selector_lis
} }
if (selectors.is_empty()) if (selectors.is_empty())
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
return selectors; return selectors;
} }
template<typename T> template<typename T>
Result<SelectorList, Parser::SelectorParsingResult> Parser::parse_a_relative_selector_list(TokenStream<T>& tokens) Result<SelectorList, Parser::ParsingResult> Parser::parse_a_relative_selector_list(TokenStream<T>& tokens)
{ {
auto comma_separated_lists = parse_a_comma_separated_list_of_component_values(tokens); auto comma_separated_lists = parse_a_comma_separated_list_of_component_values(tokens);
@ -242,12 +242,12 @@ Result<SelectorList, Parser::SelectorParsingResult> Parser::parse_a_relative_sel
} }
if (selectors.is_empty()) if (selectors.is_empty())
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
return selectors; return selectors;
} }
Result<NonnullRefPtr<Selector>, Parser::SelectorParsingResult> Parser::parse_complex_selector(TokenStream<StyleComponentValueRule>& tokens, bool allow_starting_combinator) Result<NonnullRefPtr<Selector>, Parser::ParsingResult> Parser::parse_complex_selector(TokenStream<StyleComponentValueRule>& tokens, bool allow_starting_combinator)
{ {
Vector<Selector::CompoundSelector> compound_selectors; Vector<Selector::CompoundSelector> compound_selectors;
@ -256,7 +256,7 @@ Result<NonnullRefPtr<Selector>, Parser::SelectorParsingResult> Parser::parse_com
return first_selector.error(); return first_selector.error();
if (!allow_starting_combinator) { if (!allow_starting_combinator) {
if (first_selector.value().combinator != Selector::Combinator::Descendant) if (first_selector.value().combinator != Selector::Combinator::Descendant)
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
first_selector.value().combinator = Selector::Combinator::None; first_selector.value().combinator = Selector::Combinator::None;
} }
compound_selectors.append(first_selector.value()); compound_selectors.append(first_selector.value());
@ -264,7 +264,7 @@ Result<NonnullRefPtr<Selector>, Parser::SelectorParsingResult> Parser::parse_com
while (tokens.has_next_token()) { while (tokens.has_next_token()) {
auto compound_selector = parse_compound_selector(tokens); auto compound_selector = parse_compound_selector(tokens);
if (compound_selector.is_error()) { if (compound_selector.is_error()) {
if (compound_selector.error() == SelectorParsingResult::Done) if (compound_selector.error() == ParsingResult::Done)
break; break;
else else
return compound_selector.error(); return compound_selector.error();
@ -273,12 +273,12 @@ Result<NonnullRefPtr<Selector>, Parser::SelectorParsingResult> Parser::parse_com
} }
if (compound_selectors.is_empty()) if (compound_selectors.is_empty())
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
return Selector::create(move(compound_selectors)); return Selector::create(move(compound_selectors));
} }
Result<Selector::CompoundSelector, Parser::SelectorParsingResult> Parser::parse_compound_selector(TokenStream<StyleComponentValueRule>& tokens) Result<Selector::CompoundSelector, Parser::ParsingResult> Parser::parse_compound_selector(TokenStream<StyleComponentValueRule>& tokens)
{ {
tokens.skip_whitespace(); tokens.skip_whitespace();
@ -291,7 +291,7 @@ Result<Selector::CompoundSelector, Parser::SelectorParsingResult> Parser::parse_
while (tokens.has_next_token()) { while (tokens.has_next_token()) {
auto component = parse_simple_selector(tokens); auto component = parse_simple_selector(tokens);
if (component.is_error()) { if (component.is_error()) {
if (component.error() == SelectorParsingResult::Done) if (component.error() == ParsingResult::Done)
break; break;
else else
return component.error(); return component.error();
@ -301,7 +301,7 @@ Result<Selector::CompoundSelector, Parser::SelectorParsingResult> Parser::parse_
} }
if (simple_selectors.is_empty()) if (simple_selectors.is_empty())
return SelectorParsingResult::Done; return ParsingResult::Done;
return Selector::CompoundSelector { combinator, move(simple_selectors) }; return Selector::CompoundSelector { combinator, move(simple_selectors) };
} }
@ -333,7 +333,7 @@ Optional<Selector::Combinator> Parser::parse_selector_combinator(TokenStream<Sty
return {}; return {};
} }
Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_simple_selector(TokenStream<StyleComponentValueRule>& tokens) Result<Selector::SimpleSelector, Parser::ParsingResult> Parser::parse_simple_selector(TokenStream<StyleComponentValueRule>& tokens)
{ {
auto peek_token_ends_selector = [&]() -> bool { auto peek_token_ends_selector = [&]() -> bool {
auto& value = tokens.peek_token(); auto& value = tokens.peek_token();
@ -341,7 +341,7 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
}; };
if (peek_token_ends_selector()) if (peek_token_ends_selector())
return SelectorParsingResult::Done; return ParsingResult::Done;
auto& first_value = tokens.next_token(); auto& first_value = tokens.next_token();
@ -353,7 +353,7 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
} else if (first_value.is(Token::Type::Hash)) { } else if (first_value.is(Token::Type::Hash)) {
if (first_value.token().hash_type() != Token::HashType::Id) { if (first_value.token().hash_type() != Token::HashType::Id) {
dbgln_if(CSS_PARSER_DEBUG, "Selector contains hash token that is not an id: {}", first_value.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Selector contains hash token that is not an id: {}", first_value.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
return Selector::SimpleSelector { return Selector::SimpleSelector {
.type = Selector::SimpleSelector::Type::Id, .type = Selector::SimpleSelector::Type::Id,
@ -362,12 +362,12 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
} else if (first_value.is(Token::Type::Delim) && first_value.token().delim() == "."sv) { } else if (first_value.is(Token::Type::Delim) && first_value.token().delim() == "."sv) {
if (peek_token_ends_selector()) if (peek_token_ends_selector())
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
auto& class_name_value = tokens.next_token(); auto& class_name_value = tokens.next_token();
if (!class_name_value.is(Token::Type::Ident)) { if (!class_name_value.is(Token::Type::Ident)) {
dbgln_if(CSS_PARSER_DEBUG, "Expected an ident after '.', got: {}", class_name_value.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Expected an ident after '.', got: {}", class_name_value.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
return Selector::SimpleSelector { return Selector::SimpleSelector {
.type = Selector::SimpleSelector::Type::Class, .type = Selector::SimpleSelector::Type::Class,
@ -385,14 +385,14 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
if (attribute_parts.is_empty()) { if (attribute_parts.is_empty()) {
dbgln_if(CSS_PARSER_DEBUG, "CSS attribute selector is empty!"); dbgln_if(CSS_PARSER_DEBUG, "CSS attribute selector is empty!");
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
// FIXME: Handle namespace prefix for attribute name. // FIXME: Handle namespace prefix for attribute name.
auto& attribute_part = attribute_parts.first(); auto& attribute_part = attribute_parts.first();
if (!attribute_part.is(Token::Type::Ident)) { if (!attribute_part.is(Token::Type::Ident)) {
dbgln_if(CSS_PARSER_DEBUG, "Expected ident for attribute name, got: '{}'", attribute_part.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Expected ident for attribute name, got: '{}'", attribute_part.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
Selector::SimpleSelector simple_selector { Selector::SimpleSelector simple_selector {
@ -415,7 +415,7 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
auto& delim_part = attribute_parts.at(attribute_index); auto& delim_part = attribute_parts.at(attribute_index);
if (!delim_part.is(Token::Type::Delim)) { if (!delim_part.is(Token::Type::Delim)) {
dbgln_if(CSS_PARSER_DEBUG, "Expected a delim for attribute comparison, got: '{}'", delim_part.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Expected a delim for attribute comparison, got: '{}'", delim_part.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
if (delim_part.token().delim() == "="sv) { if (delim_part.token().delim() == "="sv) {
@ -425,13 +425,13 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
attribute_index++; attribute_index++;
if (attribute_index >= attribute_parts.size()) { if (attribute_index >= attribute_parts.size()) {
dbgln_if(CSS_PARSER_DEBUG, "Attribute selector ended part way through a match type."); dbgln_if(CSS_PARSER_DEBUG, "Attribute selector ended part way through a match type.");
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
auto& delim_second_part = attribute_parts.at(attribute_index); auto& delim_second_part = attribute_parts.at(attribute_index);
if (!(delim_second_part.is(Token::Type::Delim) && delim_second_part.token().delim() == "=")) { if (!(delim_second_part.is(Token::Type::Delim) && delim_second_part.token().delim() == "=")) {
dbgln_if(CSS_PARSER_DEBUG, "Expected a double delim for attribute comparison, got: '{}{}'", delim_part.to_debug_string(), delim_second_part.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Expected a double delim for attribute comparison, got: '{}{}'", delim_part.to_debug_string(), delim_second_part.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
if (delim_part.token().delim() == "~"sv) { if (delim_part.token().delim() == "~"sv) {
@ -454,13 +454,13 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
if (attribute_index >= attribute_parts.size()) { if (attribute_index >= attribute_parts.size()) {
dbgln_if(CSS_PARSER_DEBUG, "Attribute selector ended without a value to match."); dbgln_if(CSS_PARSER_DEBUG, "Attribute selector ended without a value to match.");
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
auto& value_part = attribute_parts.at(attribute_index); auto& value_part = attribute_parts.at(attribute_index);
if (!value_part.is(Token::Type::Ident) && !value_part.is(Token::Type::String)) { if (!value_part.is(Token::Type::Ident) && !value_part.is(Token::Type::String)) {
dbgln_if(CSS_PARSER_DEBUG, "Expected a string or ident for the value to match attribute against, got: '{}'", value_part.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Expected a string or ident for the value to match attribute against, got: '{}'", value_part.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
simple_selector.attribute.value = value_part.token().is(Token::Type::Ident) ? value_part.token().ident() : value_part.token().string(); simple_selector.attribute.value = value_part.token().is(Token::Type::Ident) ? value_part.token().ident() : value_part.token().string();
@ -469,14 +469,14 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
} else if (first_value.is(Token::Type::Colon)) { } else if (first_value.is(Token::Type::Colon)) {
if (peek_token_ends_selector()) if (peek_token_ends_selector())
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
bool is_pseudo = false; bool is_pseudo = false;
if (tokens.peek_token().is(Token::Type::Colon)) { if (tokens.peek_token().is(Token::Type::Colon)) {
is_pseudo = true; is_pseudo = true;
tokens.next_token(); tokens.next_token();
if (peek_token_ends_selector()) if (peek_token_ends_selector())
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
if (is_pseudo) { if (is_pseudo) {
@ -487,12 +487,12 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
auto& name_token = tokens.next_token(); auto& name_token = tokens.next_token();
if (!name_token.is(Token::Type::Ident)) { if (!name_token.is(Token::Type::Ident)) {
dbgln_if(CSS_PARSER_DEBUG, "Expected an ident for pseudo-element, got: '{}'", name_token.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Expected an ident for pseudo-element, got: '{}'", name_token.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
auto pseudo_name = name_token.token().ident(); auto pseudo_name = name_token.token().ident();
if (has_ignored_vendor_prefix(pseudo_name)) if (has_ignored_vendor_prefix(pseudo_name))
return SelectorParsingResult::IncludesIgnoredVendorPrefix; return ParsingResult::IncludesIgnoredVendorPrefix;
if (pseudo_name.equals_ignoring_case("after")) { if (pseudo_name.equals_ignoring_case("after")) {
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::After; simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::After;
@ -504,14 +504,14 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLine; simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLine;
} else { } else {
dbgln_if(CSS_PARSER_DEBUG, "Unrecognized pseudo-element: '{}'", pseudo_name); dbgln_if(CSS_PARSER_DEBUG, "Unrecognized pseudo-element: '{}'", pseudo_name);
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
return simple_selector; return simple_selector;
} }
if (peek_token_ends_selector()) if (peek_token_ends_selector())
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
auto& pseudo_class_token = tokens.next_token(); auto& pseudo_class_token = tokens.next_token();
Selector::SimpleSelector simple_selector { Selector::SimpleSelector simple_selector {
@ -521,7 +521,7 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
if (pseudo_class_token.is(Token::Type::Ident)) { if (pseudo_class_token.is(Token::Type::Ident)) {
auto pseudo_name = pseudo_class_token.token().ident(); auto pseudo_name = pseudo_class_token.token().ident();
if (has_ignored_vendor_prefix(pseudo_name)) if (has_ignored_vendor_prefix(pseudo_name))
return SelectorParsingResult::IncludesIgnoredVendorPrefix; return ParsingResult::IncludesIgnoredVendorPrefix;
if (pseudo_name.equals_ignoring_case("active")) { if (pseudo_name.equals_ignoring_case("active")) {
simple_selector.pseudo_class.type = Selector::SimpleSelector::PseudoClass::Type::Active; simple_selector.pseudo_class.type = Selector::SimpleSelector::PseudoClass::Type::Active;
@ -572,7 +572,7 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLine; simple_selector.pseudo_element = Selector::SimpleSelector::PseudoElement::FirstLine;
} else { } else {
dbgln_if(CSS_PARSER_DEBUG, "Unknown pseudo class: '{}'", pseudo_name); dbgln_if(CSS_PARSER_DEBUG, "Unknown pseudo class: '{}'", pseudo_name);
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
return simple_selector; return simple_selector;
@ -586,7 +586,7 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
auto not_selector = parse_a_selector(function_token_stream); auto not_selector = parse_a_selector(function_token_stream);
if (not_selector.is_error()) { if (not_selector.is_error()) {
dbgln_if(CSS_PARSER_DEBUG, "Invalid selector in :not() clause"); dbgln_if(CSS_PARSER_DEBUG, "Invalid selector in :not() clause");
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
simple_selector.pseudo_class.not_selector = not_selector.release_value(); simple_selector.pseudo_class.not_selector = not_selector.release_value();
} else if (pseudo_function.name().equals_ignoring_case("nth-child")) { } else if (pseudo_function.name().equals_ignoring_case("nth-child")) {
@ -597,7 +597,7 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
simple_selector.pseudo_class.nth_child_pattern = nth_child_pattern.value(); simple_selector.pseudo_class.nth_child_pattern = nth_child_pattern.value();
} else { } else {
dbgln_if(CSS_PARSER_DEBUG, "!!! Invalid nth-child format"); dbgln_if(CSS_PARSER_DEBUG, "!!! Invalid nth-child format");
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
} else if (pseudo_function.name().equals_ignoring_case("nth-last-child")) { } else if (pseudo_function.name().equals_ignoring_case("nth-last-child")) {
simple_selector.pseudo_class.type = Selector::SimpleSelector::PseudoClass::Type::NthLastChild; simple_selector.pseudo_class.type = Selector::SimpleSelector::PseudoClass::Type::NthLastChild;
@ -607,18 +607,18 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
simple_selector.pseudo_class.nth_child_pattern = nth_child_pattern.value(); simple_selector.pseudo_class.nth_child_pattern = nth_child_pattern.value();
} else { } else {
dbgln_if(CSS_PARSER_DEBUG, "!!! Invalid nth-child format"); dbgln_if(CSS_PARSER_DEBUG, "!!! Invalid nth-child format");
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
} else { } else {
dbgln_if(CSS_PARSER_DEBUG, "Unknown pseudo class: '{}'()", pseudo_function.name()); dbgln_if(CSS_PARSER_DEBUG, "Unknown pseudo class: '{}'()", pseudo_function.name());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
return simple_selector; return simple_selector;
} else { } else {
dbgln_if(CSS_PARSER_DEBUG, "Unexpected Block in pseudo-class name, expected a function or identifier. '{}'", pseudo_class_token.to_debug_string()); dbgln_if(CSS_PARSER_DEBUG, "Unexpected Block in pseudo-class name, expected a function or identifier. '{}'", pseudo_class_token.to_debug_string());
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
} }
@ -628,12 +628,12 @@ Result<Selector::SimpleSelector, Parser::SelectorParsingResult> Parser::parse_si
auto delim = first_value.token().delim(); auto delim = first_value.token().delim();
if ((delim == ">"sv) || (delim == "+"sv) || (delim == "~"sv) || (delim == "|"sv)) { if ((delim == ">"sv) || (delim == "+"sv) || (delim == "~"sv) || (delim == "|"sv)) {
tokens.reconsume_current_input_token(); tokens.reconsume_current_input_token();
return SelectorParsingResult::Done; return ParsingResult::Done;
} }
} }
dbgln_if(CSS_PARSER_DEBUG, "!!! Invalid simple selector!"); dbgln_if(CSS_PARSER_DEBUG, "!!! Invalid simple selector!");
return SelectorParsingResult::SyntaxError; return ParsingResult::SyntaxError;
} }
NonnullRefPtrVector<StyleRule> Parser::consume_a_list_of_rules(bool top_level) NonnullRefPtrVector<StyleRule> Parser::consume_a_list_of_rules(bool top_level)
@ -1232,7 +1232,7 @@ RefPtr<CSSRule> Parser::convert_to_rule(NonnullRefPtr<StyleRule> rule)
auto selectors = parse_a_selector(prelude_stream); auto selectors = parse_a_selector(prelude_stream);
if (selectors.is_error()) { if (selectors.is_error()) {
if (selectors.error() != SelectorParsingResult::IncludesIgnoredVendorPrefix) { if (selectors.error() != ParsingResult::IncludesIgnoredVendorPrefix) {
dbgln("CSSParser: style rule selectors invalid; discarding."); dbgln("CSSParser: style rule selectors invalid; discarding.");
prelude_stream.dump_all_tokens(); prelude_stream.dump_all_tokens();
} }

View file

@ -100,7 +100,7 @@ public:
RefPtr<StyleValue> parse_as_css_value(PropertyID); RefPtr<StyleValue> parse_as_css_value(PropertyID);
private: private:
enum class SelectorParsingResult { enum class ParsingResult {
Done, Done,
IncludesIgnoredVendorPrefix, IncludesIgnoredVendorPrefix,
SyntaxError, SyntaxError,
@ -123,13 +123,13 @@ private:
template<typename T> template<typename T>
Vector<Vector<StyleComponentValueRule>> parse_a_comma_separated_list_of_component_values(TokenStream<T>&); Vector<Vector<StyleComponentValueRule>> parse_a_comma_separated_list_of_component_values(TokenStream<T>&);
template<typename T> template<typename T>
Result<SelectorList, SelectorParsingResult> parse_a_selector(TokenStream<T>&); Result<SelectorList, ParsingResult> parse_a_selector(TokenStream<T>&);
template<typename T> template<typename T>
Result<SelectorList, SelectorParsingResult> parse_a_relative_selector(TokenStream<T>&); Result<SelectorList, ParsingResult> parse_a_relative_selector(TokenStream<T>&);
template<typename T> template<typename T>
Result<SelectorList, SelectorParsingResult> parse_a_selector_list(TokenStream<T>&); Result<SelectorList, ParsingResult> parse_a_selector_list(TokenStream<T>&);
template<typename T> template<typename T>
Result<SelectorList, SelectorParsingResult> parse_a_relative_selector_list(TokenStream<T>&); Result<SelectorList, ParsingResult> parse_a_relative_selector_list(TokenStream<T>&);
Optional<Selector::SimpleSelector::ANPlusBPattern> parse_a_n_plus_b_pattern(TokenStream<StyleComponentValueRule>&); Optional<Selector::SimpleSelector::ANPlusBPattern> parse_a_n_plus_b_pattern(TokenStream<StyleComponentValueRule>&);
@ -212,10 +212,10 @@ private:
static OwnPtr<CalculatedStyleValue::CalcNumberSumPartWithOperator> parse_calc_number_sum_part_with_operator(ParsingContext const&, TokenStream<StyleComponentValueRule>&); static OwnPtr<CalculatedStyleValue::CalcNumberSumPartWithOperator> parse_calc_number_sum_part_with_operator(ParsingContext const&, TokenStream<StyleComponentValueRule>&);
static OwnPtr<CalculatedStyleValue::CalcSum> parse_calc_expression(ParsingContext const&, Vector<StyleComponentValueRule> const&); static OwnPtr<CalculatedStyleValue::CalcSum> parse_calc_expression(ParsingContext const&, Vector<StyleComponentValueRule> const&);
Result<NonnullRefPtr<Selector>, SelectorParsingResult> parse_complex_selector(TokenStream<StyleComponentValueRule>&, bool allow_starting_combinator); Result<NonnullRefPtr<Selector>, ParsingResult> parse_complex_selector(TokenStream<StyleComponentValueRule>&, bool allow_starting_combinator);
Result<Selector::CompoundSelector, SelectorParsingResult> parse_compound_selector(TokenStream<StyleComponentValueRule>&); Result<Selector::CompoundSelector, ParsingResult> parse_compound_selector(TokenStream<StyleComponentValueRule>&);
Optional<Selector::Combinator> parse_selector_combinator(TokenStream<StyleComponentValueRule>&); Optional<Selector::Combinator> parse_selector_combinator(TokenStream<StyleComponentValueRule>&);
Result<Selector::SimpleSelector, SelectorParsingResult> parse_simple_selector(TokenStream<StyleComponentValueRule>&); Result<Selector::SimpleSelector, ParsingResult> parse_simple_selector(TokenStream<StyleComponentValueRule>&);
static bool has_ignored_vendor_prefix(StringView const&); static bool has_ignored_vendor_prefix(StringView const&);