Module

lexers.css_sm

Hand-written CSS lexer using state machine approach.

O(n) guaranteed, zero regex, thread-safe.

Language Support:

  • CSS3 syntax
  • Selectors (class, id, element, pseudo, attribute)
  • Properties and values
  • At-rules (@media,@import,@keyframes, etc.)
  • CSS custom properties (--var-name)
  • Color formats (#hex,rgb(),hsl(), etc.)
  • calc()and other functions
  • Comments (/* */)

Token Classification:

  • Selectors:.class→ NAME_CLASS,#id→ NAME_FUNCTION
  • Properties:color,font-size→ NAME_PROPERTY
  • Values:blue,12px,#fff→ various (STRING, NUMBER, etc.)
  • At-rules:@media→ NAME_DECORATOR
  • Variables:--custom-prop→ NAME_VARIABLE

Performance:

~50µs per 100-line file.

Thread-Safety:

Uses only local variables intokenize().

See Also:

  • rosettes.lexers.html_sm: HTML lexer (CSS in style tags)
  • rosettes.lexers.scss_sm: SCSS lexer (CSS preprocessor)

Classes

CssStateMachineLexer 1
CSS lexer with selector, property, and value parsing. Handles CSS3 syntax including at-rules, cust…

CSS lexer with selector, property, and value parsing.

Handles CSS3 syntax including at-rules, custom properties, and functions.

Methods

tokenize 2 Iterator[Token]
def tokenize(self, code: str, config: LexerConfig | None = None) -> Iterator[Token]
Parameters
Name Type Description
code
config Default:None
Returns
Iterator[Token]