diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-05 13:52:40 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2014-12-05 13:52:40 +0100 |
commit | ddbea4164e126739f39658627c04e7e23b71e090 (patch) | |
tree | bdac63cf2a1c73fd3f67fa03fc821ef4eaf93b83 /src/core/CSSParser.hpp | |
parent | 3d6058315f7f0da9994e35c144d0acb76a252472 (diff) | |
parent | 9cb01624a4efe2063d5870f41e033476d9368b6d (diff) |
fixed conflict
Diffstat (limited to 'src/core/CSSParser.hpp')
-rw-r--r-- | src/core/CSSParser.hpp | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/src/core/CSSParser.hpp b/src/core/CSSParser.hpp deleted file mode 100644 index 7dfc872..0000000 --- a/src/core/CSSParser.hpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_CSS_PARSER_HPP_ -#define _OUSIA_CSS_PARSER_HPP_ - -#include <vector> -#include <tuple> - -#include "BufferedCharReader.hpp" -#include "CodeTokenizer.hpp" -#include "CSS.hpp" -#include "Exceptions.hpp" - -namespace ousia { - -/** - * This is a context free, recursive parser for a subset of the CSS3 language - * as defined by W3C. We allow the following grammar: - * - * DOC := SELECT RULESET DOC | epsilon - * SELECTORS := SELECT , SELECTORS | SELECT - * SELECT := SELECT' OPERATOR SELECT | SELECT' - * SELECT' := TYPE | TYPE:PSEUDO | TYPE::GEN_PSEUDO | - * TYPE:PSEUDO(ARGUMENTS) | - * TYPE::GEN_PSEUDO(ARGUMENTS) | TYPE#ID | - * TYPE[ATTRIBUTE] | TYPE[ATTRIBUTE=VALUE] - * TYPE := string - * PSEUDO := string - * GEN_PSEUDO := string - * ARGUMENTS := string , ARGUMENTS - * ID := string - * ATTRIBUTE := string - * VALUE := string - * OPERATOR := epsilon | > - * RULESET := epsilon | { RULES } - * RULES := RULE RULES | epsilon - * RULE := KEY : VALUE ; - * KEY := string - * VALUE := type-specific parser - * - * - * @author Benjamin Paassen - bpaassen@techfak.uni-bielefeld.de - */ -class CSSParser { -private: - /** - * Implements the DOC Nonterminal - */ - void parseDocument(Rooted<SelectorNode> root, CodeTokenizer &tokenizer); - /** - * Implements the SELECTORS Nonterminal and adds all leaf nodes of the - * resulting SelectorTree to the input leafList so that a parsed RuleSet can - * be inserted there. - */ - void parseSelectors(Rooted<SelectorNode> root, CodeTokenizer &tokenizer, - std::vector<Rooted<SelectorNode>> &leafList); - /** - * Implements the SELECT Nonterminal, which in effect parses a SelectorPath - * of the SelectorTree and returns the beginning node of the path as first - * element as well as the leaf of the path as second tuple element. - */ - std::tuple<Rooted<SelectorNode>, Rooted<SelectorNode>> parseSelector( - CodeTokenizer &tokenizer); - - /** - * Implements the SELECT' Nonterminal, which parses a single Selector with - * its PseudoSelector and returns it. - */ - Rooted<SelectorNode> parsePrimitiveSelector(CodeTokenizer &tokenizer); - - // TODO: Add RuleSet parsing methods. - - /** - * A convenience function to wrap around the tokenizer peek() function that - * only returns true if an instance of the expected type occurs. - * - * @param expectedType the ID of the expected type according to the - * CodeTokenizer specification. - * @param tokenizer the tokenizer for the input. - * @param t an empty token that gets the parsed token content - * if it has the expected type. - * @param force a flag to be set if it would be fatal for the - * parsing process to get the wrong type. In that case - * an exception is thrown. - * @return true iff a token of the expected type was found. - */ - bool expect(int expectedType, CodeTokenizer &tokenizer, Token &t, - bool force); - -public: - /** - * This parses the given input as CSS content as specified by the grammar - * seen above. The return value is a Rooted reference to the root of the - * SelectorTree. - * TODO: The RuleSet at the respective node at the tree lists all CSS Style - * rules that apply. - */ - Rooted<SelectorNode> parse(BufferedCharReader &input); -}; -} - -#endif |