summaryrefslogtreecommitdiff
path: root/sc/inc/orcus/css_parser.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/orcus/css_parser.hpp')
-rw-r--r--sc/inc/orcus/css_parser.hpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/sc/inc/orcus/css_parser.hpp b/sc/inc/orcus/css_parser.hpp
index 7a1b3e51241f..c211ccaebcbc 100644
--- a/sc/inc/orcus/css_parser.hpp
+++ b/sc/inc/orcus/css_parser.hpp
@@ -143,7 +143,7 @@ void css_parser<_Handler>::parse()
std::cout << "'" << std::endl;
#endif
m_handler.begin_parse();
- for (; has_char(); next())
+ while (has_char())
rule();
m_handler.end_parse();
}
@@ -151,7 +151,7 @@ void css_parser<_Handler>::parse()
template<typename _Handler>
void css_parser<_Handler>::rule()
{
- // <name> , ... , <name> { <properties> }
+ // <selector name> , ... , <selector name> <block>
while (has_char())
{
char c = cur_char();
@@ -201,7 +201,11 @@ void css_parser<_Handler>::at_rule_name()
template<typename _Handler>
void css_parser<_Handler>::selector_name()
{
+ // <element name>
+ // '.' <class name>
// <element name> '.' <class name>
+ //
+ // Both element and class names are identifiers.
assert(has_char());
char c = cur_char();
@@ -239,6 +243,8 @@ void css_parser<_Handler>::selector_name()
template<typename _Handler>
void css_parser<_Handler>::property_name()
{
+ // <identifier>
+
assert(has_char());
char c = cur_char();
if (!is_alpha(c) && c != '.')
@@ -259,7 +265,8 @@ void css_parser<_Handler>::property_name()
template<typename _Handler>
void css_parser<_Handler>::property()
{
- // <name> : <value> , ... , <value>
+ // <property name> : <value> , ... , <value>
+
m_handler.begin_property();
property_name();
if (cur_char() != ':')
@@ -286,6 +293,8 @@ void css_parser<_Handler>::property()
template<typename _Handler>
void css_parser<_Handler>::quoted_value()
{
+ // Parse until the the end quote is reached.
+
assert(cur_char() == '"');
next();
const char* p = mp_char;
@@ -373,7 +382,7 @@ void css_parser<_Handler>::property_sep()
template<typename _Handler>
void css_parser<_Handler>::block()
{
- // '{' <property> ';' ... ';' <property> '}'
+ // '{' <property> ';' ... ';' <property> ';'(optional) '}'
assert(cur_char() == '{');
#if ORCUS_DEBUG_CSS