v4.2
Restore possibilities for error handling.
Change Log
lexermodule:- Add the
tokenize()function with filters:- implement it;
- cover it with tests;
- use it in the example.
- Add the
tokenize_all()function:- implement it;
- cover it with tests;
- use it in the example.
- Add the
parsermodule:- Add the
parse()function:- implement it;
- cover it with tests;
- use it in the example.
- Add the
parse_all()function:- implement it;
- cover it with tests;
- in the example:
- use it;
- replace the
utilities::integral_infinityconstant to a code size in an exception.
- Add the
exceptionsmodule:- Add it.
- Add the
positional_exceptionclass:- implement it;
- use it in the example.
- Add the
unexpected_entity_exceptionclass:- implement it;
- use it in the example.
Возможности
- лексинг ASCII-текста:
- задание лексем посредством регулярных выражений;
- возможность исключения токенов из результирующего списка;
- парсинг ASCII-текста:
- описание грамматики на EBNF непосредственно в коде программы (посредством DSL);
- результат:
- представление в виде:
- CST;
- AST;
- задание имени ноды в дереве;
- представление в виде:
- парсеры:
- терминальные:
- пустота;
- определённые:
- текст;
- лексема;
- комбинаторы:
- альтернатива (упорядоченная);
- объединяющие:
- следование;
- повторение:
- 0 или 1 раз (опциональность);
- 0 или больше раз;
- 1 или больше раз;
- любое число раз в указанном диапазоне;
- проверяющие:
- исключение;
- просмотр вперёд:
- позитивный;
- негативный.
- терминальные:
Скриншоты
Лексический анализ
Синтаксический анализ

