Язык привел только для указания готовых инструментов, если имеются. Проблема глобальнее. Пишу (точнее, хочу написать) для саморазвития аудио плеер по типу mpd, с коллекцией, б. и ш. Встал вопрос - как парсить cue-файлы.
Допустим, вход такой: INDEX 00 13 : 56
Сейчас в пробном варианте написано абы как (примерный код):
(register-parser "INDEX" #'parse-index)
(defun parse-index (string)
(let ((first-part (split-1 string))
(second-part (split-2 string))) ....)
Короче, мы читаем строку, отрываем «слово», анализируем комманду, отдаем парсеру, который тоже рвет строку на части. А я хочу глобальней и надежней, типа такого:
(define-parser "INDEX" '(integer integer #\: integer) #'callback)
(defun callback (idx min sec)
;; idx, min, sec - числа, распарсенные из шаблона
())
Смысл - чтобы колбэк не сам возился со строками, а получал уже готовые значения по шаблону. При этом не желательно всяких регекспов, так как шаблоны простые, разные значения разделены пробелами.
Смотрю в гугль, а там какие-то яки, бизоны, флексы - нифига не понятно, что из этого брать и как им пользоваться. Посоветуйте.