Developing a Web Browser with Haskell

Selector Project


Selector Project

Selector is a project written in Haskell, I am developing this project as a part of a web browser in Haskell, the objective’s project is to test the CSS selectors.

Selector draw an html tree in which each html tag is a box.

If a tag is selected by some selector, it is brushed with yellow color
and is specified with the corresponding number in the list of selector that was applied.

Download and Install


  • 07/2010: Fixed Combined Selectors; now we can use any operator (descendant, child or sibling selector) with a list of two or more selectors.
  • 05/2010: Support style tag in an html file and remove dependency with uu-parsinglib.

To Fix

Please, if you know some error, send a mail to: carliros.g at gmail dot com.

  • There are errors when we try to select long list of simple
    selectors [fixed]

To Implement

  • Implement the cascading style sheet (author, user, user agent
    style sheet definition)
  • Implement the specificity of a selector
  • Implement the cascading algorithm

Type of css selectors implemented

  • Typed Selector: simple name selector,examples:  p {display: block}big {display: none}
  • Universal Selector: simple selector represented by ‘*’,example: * {display: block}
  • Descendant Selector: Two or more simple selectors separated with
    space,examples: body p big {display: inline} 

    p small {display: inline}

  • Child Selector: Two or more simple selectors separated with
    ‘>’,examples: body > p > big {display: inline} 

    p > small display: inline}

  • Sibling Selector: Two or more simple selectors separated with ‘+’,examples: body + p + big {display: inline}p + small {display: inline}

Html Tags implemented

The following tags are reconised by the parser: style, html, head,
body, h1, h2, …, h6, p, big, small


Blog at

%d bloggers like this: