1

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

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

基本上我想这样做是因为我正在构建一个在伪终端上转换终端流的工具,我想到应该实现的最终灵活性是允许规范 regex-replace表达式。

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

正如您所看到的,能够指定一个适用于标准输入终端读取流的正则表达式以生成要发送到从属 pty 的翻译流将是理想的。

我是否需要等待 Perl 6 才能实现这一点?为什么正则表达式引擎通常需要整个字符串可用,一定有特殊原因?

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

因此,由于我不需要回溯,因此可能存在某种提供流 API 的轻量级正则表达式引擎。似乎利用某种形式的解析系统(如果存在合适的解析系统)比构建任意东西更聪明。

4

1 回答 1

0

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

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

其实我不认为这会奏效。它似乎是围绕线条构建的,并使用s运算符来运行正则表达式。

于 2013-04-20T03:22:34.050 回答