Существуют ли языки или инструменты, которые поддерживают разбор регулярных выражений посимвольно?Регулярный разбор регулярного выражения
Я думаю, что это может быть эквивалентно «регулярных выражений на потоках», которая является то, что, кажется, одна из особенностей будущей версии Perl 6.
В основном я хочу, чтобы это сделать, потому что я строю инструмент, который выполняет трансляцию терминального потока по псевдотерминалу, и мне пришло в голову, что конечная гибкость, которая должна быть достигнута, заключается в том, чтобы разрешить спецификацию выражений, выражающих регулярное выражение.
Прецедент является то, что я хочу, чтобы мои мыши событие прокрутки, которые будут передано наивной программой, такие как less
пейджера, что означает мой инструмент (который порождает less
над PTY) будет делать что-то вроде выдачи коды \x1b[?1000h
, который включает в себя передачу сообщений мыши, а затем последует перевод каждого кода возврата мыши, полученного после этого, например \x1b[M!!
(последние несколько символов кодируют положение мыши в терминале и должны игнорироваться, но также разделяются) в код со стрелкой \x1b[A
.
Как вы можете видеть, было бы удобно указывать регулярное выражение, которое работает в потоке чтения терминалов stdin для генерации переведенного потока для отправки ведомому pty.
Нужно ли ждать, когда Perl 6 сможет это достичь? Должны быть особые причины, почему для двигателей регулярных выражений обычно требуется наличие всей строки?
Это довольно очевидно, мне не нужна полная мощность регулярного выражения здесь. Я могу предположить, например, что это может быть так, что поддержка обратного отслеживания делает регулярное выражение для анализа потока невозможным.
Так как мне не нужен обратный отсчет, возможно, есть какой-то легкий механизм регулярных выражений, который обеспечивает поток API. Похоже, что использование какой-либо формы синтаксической системы (если она существует, которая подходит) была бы умнее, чем создание чего-то произвольного.
Я думаю, что вы ищете конечный автомат, а не обработчик регулярных выражений потока. –
http://en.wikipedia.org/wiki/Sed? – FrankieTheKneeMan
Так, возможно, я могу использовать sed, вручную собрав в него поток? Звучит как план. Сед становится более мощным, чем больше вы его используете. –