/[james]/factorcss/Parser.y
ViewVC logotype

Diff of /factorcss/Parser.y

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 63 by james, Mon Dec 27 19:45:02 2004 UTC revision 65 by james, Tue Dec 28 14:23:12 2004 UTC
# Line 15  import CSS Line 15  import CSS
15  }  }
16    
17  %name parser  %name parser
18  %tokentype { Token }  %tokentype { TokenPosn }
19  %token  %token
20          INCLUDES        { INCLUDES      }          INCLUDES        { (INCLUDES     , _) }
21          DASHMATCH       { DASHMATCH     }          DASHMATCH       { (DASHMATCH    , _) }
22          LBRACE          { LBRACE        }          LBRACE          { (LBRACE       , _) }
23          PLUS            { PLUS          }          PLUS            { (PLUS         , _) }
24          GREATER         { GREATER       }          GREATER         { (GREATER      , _) }
25          COMMA           { COMMA         }          COMMA           { (COMMA        , _) }
26          STRING          { STRING $$     }          STRING          { (STRING $$    , _) }
27          IDENT           { IDENT $$      }          IDENT           { (IDENT $$     , _) }
28          HASH            { HASH $$       }          HASH            { (HASH $$      , _) }
29          IMPORT_SYM      { IMPORT_SYM    }          IMPORT_SYM      { (IMPORT_SYM   , _) }
30          PAGE_SYM        { PAGE_SYM      }          PAGE_SYM        { (PAGE_SYM     , _) }
31          MEDIA_SYM       { MEDIA_SYM     }          MEDIA_SYM       { (MEDIA_SYM    , _) }
32          CHARSET_SYM     { CHARSET_SYM   }          CHARSET_SYM     { (CHARSET_SYM  , _) }
33          IMPORTANT_SYM   { IMPORTANT_SYM }          IMPORTANT_SYM   { (IMPORTANT_SYM, _) }
34          EMS             { EMS $$        }          EMS             { (EMS $$       , _) }
35          EXS             { EXS $$        }          EXS             { (EXS $$       , _) }
36          LENGTH          { LENGTH $$     }          LENGTH          { (LENGTH $$    , _) }
37          ANGLE           { ANGLE $$      }          ANGLE           { (ANGLE $$     , _) }
38          TIME            { TIME $$       }          TIME            { (TIME $$      , _) }
39          FREQ            { FREQ $$       }          FREQ            { (FREQ $$      , _) }
40          DIMEN           { DIMEN $$      }          DIMEN           { (DIMEN $$     , _) }
41          PERCENTAGE      { PERCENTAGE $$ }          PERCENTAGE      { (PERCENTAGE $$, _) }
42          NUMBER          { NUMBER $$     }          NUMBER          { (NUMBER $$    , _) }
43          URI             { URI $$        }          URI             { (URI $$       , _) }
44          FUNCTION        { FUNCTION $$   }          FUNCTION        { (FUNCTION $$  , _) }
45          DELIM           { DELIM $$      }          DELIM           { (DELIM $$     , _) }
46          SEMI            { SEMI          }          SEMI            { (SEMI         , _) }
47          RBRACE          { RBRACE        }          RBRACE          { (RBRACE       , _) }
48          COLON           { COLON         }          COLON           { (COLON        , _) }
49          SLASH           { SLASH         }          SLASH           { (SLASH        , _) }
50          MINUS           { MINUS         }          MINUS           { (MINUS        , _) }
51          DOT             { DOT           }          DOT             { (DOT          , _) }
52          LBRAC           { LBRAC         }          LBRAC           { (LBRAC        , _) }
53          RBRAC           { RBRAC         }          RBRAC           { (RBRAC        , _) }
54          ASTERISK        { ASTERISK      }          ASTERISK        { (ASTERISK     , _) }
55          EQUALS          { EQUALS        }          EQUALS          { (EQUALS       , _) }
56          RPAREN          { RPAREN        }          RPAREN          { (RPAREN       , _) }
57    
58  %%  %%
59    
# Line 61  stylesheet     :: { Stylesheet } Line 61  stylesheet     :: { Stylesheet }
61                  : charset import_list statement_list    { Stylesheet $1 $2 $3 }                  : charset import_list statement_list    { Stylesheet $1 $2 $3 }
62    
63  charset         :: { Maybe String }  charset         :: { Maybe String }
64                  :                                       { Nothing }                  :                                       { Nothing }
65                  | CHARSET_SYM STRING SEMI               { Just $2 }                  | CHARSET_SYM STRING SEMI               { Just $2 }
66    
67  import_list     :: { [(String, [String])] }  import_list     :: { [(String, [String])] }
# Line 121  ruleset                :: { Statement } Line 121  ruleset                :: { Statement }
121    
122  selector_list_1 :: { [Selector] }  selector_list_1 :: { [Selector] }
123                  : selector                              { [$1] }                  : selector                              { [$1] }
124                  | selector_list_1 COMMA selector        { $3 : $1 }                  | selector_list_1 COMMA selector        { $3 : $1 }
125    
126  selector        :: { Selector }  selector        :: { Selector }
127                  : simple_selector                       { [($1, NoMore)] }                  : simple_selector                       { [($1, NoMore)] }
128                  | simple_selector combinator selector   { ($1, $2) : $3 }                  | simple_selector combinator selector   { ($1, $2) : $3 }
129    
130  combinator      :: { Combinator }  combinator      :: { Combinator }
131                  :                                       { Ancestor }                  :                                       { Ancestor }
# Line 204  value          :: { Value } Line 204  value          :: { Value }
204                  | FUNCTION value_list RPAREN            { Function $1 $2 }                  | FUNCTION value_list RPAREN            { Function $1 $2 }
205    
206  {  {
207  happyError :: [Token] -> a  happyError :: [TokenPosn] -> a
208  happyError _ = error "Parse error"  happyError tks = error ("Parse error at " ++ lcn)
209            where
210            lcn =   case tks of
211                      [] -> "end of file"
212                      tk:_ -> "line " ++ show l ++ ", column " ++ show c
213                            where
214                            AlexPn _ l c = snd tk
215  }  }

Legend:
Removed from v.63  
changed lines
  Added in v.65

  ViewVC Help
Powered by ViewVC 1.1.26