<commit_before><commit_msg>doc: add grammar definition<commit_after># ASSS Grammar

```txt
*: 0 or more
+: 1 or more
?: 0 or 1
|: separates alternatives
[ ]: grouping

stylesheet
  : S* [ rule? S* ]*
  ;
rule
  : selectors '{' S* [ declarations | rule ]* '}' S*
  ;
selectors
  : selector [ ',' S* selector ]*
  ;
selector
  : simple_selector [ combinator selector | S+ [ combinator? selector ]? ]?
  ;
simple_selector
  : element_name [ HASH | class | attrib | pseudo ]* | [ HASH | class | attrib | pseudo ]+
  ;
element_name
  : AMPERSAND | CARET | IDENT | '*'
  ;
class
  : '.' IDENT
  ;
attrib
  : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ]? ']'
  ;
pseudo
  : ':' [ IDENT | FUNCTION S* [IDENT S*]? ')' ]
  ;
declarations
  : declaration? [ ';' S* declaration? ]*
  ;
declaration
  : property ':' S* expr prio?
  ;
prio
  : IMPORTANT_SYM S*
  ;
operator
  : '/' S* | ',' S*
  ;
combinator
  : '+' S* | '>' S*
  ;
unary_operator
  : '-' | '+'
  ;
property
  : IDENT S*
  ;
expr
  : term [ operator? term ]*
  ;
term
  : unary_operator? [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | TIME S* | FREQ S* ] | STRING S* | IDENT S* | URI S* | hexcolor | function
  ;
function
  : FUNCTION S* expr ')' S*
  ;
hexcolor
  : HASH S*
  ;
```

{'fraction_non_alphanumeric': 0.1820294345468629, 'fraction_numerical': 0.003098373353989156, 'mean_word_length': 2.7667638483965016, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5138779', 'n_tokens_mistral': 549, 'n_tokens_neox': 526, 'n_words': 132}