# `Grammar.IR.CharClass`
[🔗](https://github.com/joetjen/ichor/blob/v0.3.0/lib/grammar/ir/char_class.ex#L1)

Character class, including unicode ranges: `[a-z0-9_]`.

Each range is an inclusive pair of unicode codepoints; a single character
is represented as `{cp, cp}`. Negated classes (`[^...]`) are a front-end
concern -- they desugar to `NotPred` wrapping this node, followed by
`Any`, before reaching the IR, so this node never carries a negation
flag itself.

# `range`

```elixir
@type range() :: {first :: non_neg_integer(), last :: non_neg_integer()}
```

# `t`

```elixir
@type t() :: %Grammar.IR.CharClass{meta: Grammar.IR.Meta.t(), ranges: [range()]}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
