# `Ichor.Syntax.Node`
[🔗](https://github.com/joetjen/ichor_runtime/blob/v0.6.0/lib/ichor/syntax/node.ex#L1)

One grammar rule's match in a lossless tree (`Ichor.Syntax`): every
token and every rule it covers, in source order.

`offset` and `size` are in bytes, so the input this node covers is
`binary_part(input, node.offset, node.size)`. `line` and `column` are
where it starts, counted as the tokenizer counts them (1-based,
columns in codepoints). A rule that matched nothing is a node with no
children and a `size` of 0, at the place it sits in the tree.

# `t`

```elixir
@type t() :: %Ichor.Syntax.Node{
  children: [t() | Ichor.Syntax.Token.t()],
  column: pos_integer(),
  line: pos_integer(),
  offset: non_neg_integer(),
  rule: atom(),
  size: non_neg_integer()
}
```

---

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