Компилятор конечного автомата Ragel

Ragel компилирует декларативный синтаксис машинного описания в файл исходного кода на Java, Ruby или на нескольких языках типа C. Кроме того, Ragel может сгенерировать файл.dot graphviz, содержащий диаграмму состояний и взаимодействия машины ввода.

Ragel может использоваться для генерации конечных автоматов общего назначения (FSM), которые обычно используются во встроенных системах и в управляемых протоколами приложениях, таких как телефония и интернет-серверы.

Ragel также может использоваться для создания "лексера" (или "сканера") - фрагмента кода, который сканирует вводимый текст и делит его на "токены". Этот лексический анализ традиционно является первым шагом в интерпретации или компиляции компьютерных языков:

input ->  lexer  ->  parser  ->  AST  ->  execution or code generation

Ссылки