正则表达式增量解析

时间:2013-04-19 23:08:58

标签: regex perl unix stream terminal

是否有支持在逐个字符的基础上解析正则表达式的语言或工具?

我认为这可能相当于“关于流的正则表达式”,这似乎是即将推出的Perl版本6的功能之一。

基本上我想这样做是因为我正在构建一个通过伪终端进行终端流转换的工具,并且我发现应该可以实现的最终灵活性是允许指定正则表达式替换表达式。

用例是我想让我的鼠标滚动事件传递给一个天真的程序,例如less寻呼机,这意味着我的工具(通过PTY产生less)将发布代码\x1b[?1000h,开启鼠标报告,然后随后翻译之后收到的每个鼠标滚轮转义码,例如\x1b[M!!(最后几个字符编码终端内的鼠标位置,应该被忽略但也被剥离到\x1b[A向上箭头代码中。

正如您所看到的那样,能够指定一个在stdin终端读取流上工作的正则表达式,以生成要发送到slave pty的已转换流,这将是理想的选择。

我是否需要等待Perl 6才能实现这一目标?为什么正则表达式引擎通常需要整个字符串可用?

很明显,我不需要这里正则表达式的全部功能。我可以推测,例如,支持回溯可能会使流解析正则表达式变得不可能。

因为我不需要回溯,可能会有一些轻量级的正则表达式引擎,提供流API。看起来好像利用某种形式的解析系统(如果存在一个合适的解析系统)比构建任意的东西更聪明。

1 个答案:

答案 0 :(得分:0)

看起来s2p是我可以使用的一个例子。

特别是,能够将$|设置为不进行行缓冲。

实际上,我认为这不会起作用。它似乎是围绕行构建的,并使用s运算符来运行正则表达式。

相关问题