Tartrazine
These are Lexer actions. When a rule matches, it will perform a list of actions. These actions can emit tokens or change the state machine.
Constants
Shared empty result for rule misses (allocation cut, see patch 5). Never mutated: the only consumer iterates it into a deque.
Elements whose state attribute names a state of the same lexer.
Class methods
The custom lexer for a lowercased file base name (an exact
<filename> entry or a glob), or nil.
Whether lexer_by_name resolves name (lowercased), given the custom
lexer names in custom: a custom or bundled name, or a+b (a
delegating lexer, split at the first +) whose halves both resolve.
Parse one grammar file's XML. Returns the lowercased names it registers
under (<name> first, then each <alias>), its lowercased
<filename> globs, its template, warnings, and the lowercased
<using lexer> names that are neither bundled nor its own (the caller
checks them against the other custom grammars). Warnings cover what
only fails once tokenization reaches it, so the block then falls back
to plain: a <push>, <include> or <combined> naming a state the
grammar does not define (three bundled grammars have one, so these warn
rather than reject), a cycle of <include>s, a pattern-less rule that
emits a <token>, and a negative <pop depth>. A <filename> glob
File.match? would refuse is dropped with a warning. Raises with a
readable message on malformed XML, a missing <name> or root state,
an unknown action, or a regex PCRE2 refuses to compile.