protected override void ParseArgument(ItemFactory itemFactory, ITextProvider text, TokenStream tokens) { SimpleSelector simpleSelector = itemFactory.CreateSpecific <SimpleSelector>(this); if (simpleSelector.ParseInFunction(itemFactory, text, tokens)) { Selector = simpleSelector; ArgumentItems.Add(Selector); Children.Add(Selector); } if (tokens.CurrentToken.TokenType != CssTokenType.Comma && tokens.CurrentToken.TokenType != CssTokenType.CloseFunctionBrace) { Children.AddParseError(ParseErrorType.FunctionArgumentCommaMissing); } }
public override bool Parse(ItemFactory itemFactory, ITextProvider text, TokenStream tokens) { while (!IsAtSelectorGroupTerminator(tokens)) { SimpleSelector simpleSelector = itemFactory.CreateSpecific <SimpleSelector>(this); if (!simpleSelector.Parse(itemFactory, text, tokens)) { break; } SimpleSelectors.Add(simpleSelector); Children.Add(simpleSelector); } if (tokens.CurrentToken.TokenType == CssTokenType.Comma) { Comma = Children.AddCurrentAndAdvance(tokens, CssClassifierContextType.Punctuation); if (SimpleSelectors.Count == 0) { Comma.AddParseError(ParseErrorType.SelectorBeforeCommaMissing, ParseErrorLocation.BeforeItem); } } if (SimpleSelectors.Count > 0) { SimpleSelector lastSimpleSelector = SimpleSelectors[SimpleSelectors.Count - 1]; if (lastSimpleSelector.SelectorCombineOperator != null) { lastSimpleSelector.AddParseError(ParseErrorType.SelectorAfterCombineOperatorMissing, ParseErrorLocation.AfterItem); } } return(Children.Count > 0); }