OSDN Git Service

web/css_parser.hpp: 1_ルールざっくり書き
authorMyun2 <myun2@nwhite.info>
Tue, 30 Nov 2010 15:57:27 +0000 (00:57 +0900)
committerMyun2 <myun2@nwhite.info>
Tue, 30 Nov 2010 15:57:27 +0000 (00:57 +0900)
roast/include/roast/web/css_parser.hpp

index 445e7a2..48b5e6b 100644 (file)
@@ -7,6 +7,8 @@
 
 #include "roast/lexical.hpp"
 
+//bracket
+
 namespace roast
 {
        namespace css
@@ -16,16 +18,51 @@ namespace roast
                        using namespace ::roast::lexical;
                        using namespace ::roast::lexical::rule;
                        using namespace ::roast::lexical::rule::chars;
-
-                       typedef seq<
-                               unichar<'/'>,
-                               unichar<'*'>,
+                       
+                       typedef unichar< '{' > left_brace, lbrace;
+                       typedef unichar< '}' > right_brace, rbrace;
+                       
+                       //////////////////////////////////////////////////
+                       
+                       //      comment_str
+                       typedef get_string comment_str;
+                       
+                       //      comment
+                       template <typename _CommentStr=comment_str>
+                       struct comment : seq<
+                               slash,aster,
+                               
+                               _CommentStr,
                                
-                               unichar<'*'>,
-                               unichar<'/'>
-                       > comment;
+                               aster,slash
+                       > {};
+                       
+                       //      block ({ ... })
+                       template <typename _BlockInner=block_inner>
+                       struct block : seq<
+                               lbrace,
+                               
+                               _BlockInner,
+                               
+                               rbrace
+                       > {};
+                       
+                       //      property
+                       typedef get_string property;
+                       
+                       //      declaration (xxx:aaa)
+                       template <typename _PropertyName=property, typename _Value=value>
+                       struct declaration : seq< _PropertyName, colon, _Value >
+                       
+                       //      selector
+                       typedef get_string selector;
+                       
+                       //      ruleset (xxx{ ... })
+                       template <typename _BlockInner>
+                       struct ruleset : seq<selector, block<_BlockInner> >{};
                        
-                       typedef rule;
+                       //      total rule
+                       typedef optional_repeat<ruleset> rule;
                }
        }
 }