Элементы определенные на странице Парсер, Правила, Сублексеры – могут устанавливать или сбрасывать так называемые состояния.
Если элемент устанавливает состояние то оно будет установлено от этого элемента и до конца текста.
Если элемент требует(Проверка состояния) чтобы было установлено\сброшено какое-либо состояние, то он не будет определятся если требуемые состояния не будут установлены\сброшены.
Если элемент сбрасывает состояние, то если до элемента было установлено это состояние то после него в тексте оно уже будет сброшено.
Допустим есть некий язык в котором есть – комментарии, блоки и просто код. Также представим что в блоках запрещены комментарии, и блоки не могут быть вложенными.
Чтобы сделать лексер для этого языка:
я это выяснил «методом тыка», поэтому описание выше может быть неточно.
(автор: My-crack)
Состояния это целые (4 байта), если указано например "установить: 16", то это значит, что для состояния будет установлен один бит, соответствующий числу 16, и так же можно установить (сбросить) сразу много битов, например 3 бита числом 16+4+1.