【发布时间】:2010-08-19 09:08:14
【问题描述】:
我有一些合理的(未混淆的)Perl 源文件,我需要一个标记器,它将其拆分为标记,并返回每个标记的类型,例如对于脚本
print "Hello, World!\n";
它会返回如下内容:
- 关键字5字节
- 空白 1 个字节
- 双引号字符串 17 个字节
- 分号 1 个字节
- 空白 1 个字节
哪个是最好的库(最好用 Perl 编写)?它必须相当正确,即它应该能够解析像qq{{\}}} 这样的句法结构,但它不必知道像Lingua::Romana::Perligata 这样的特殊解析器。我知道解析 Perl 是图灵完备的,只有 Perl 本身才能做到正确,但我不需要绝对正确:分词器可能会失败或不兼容,或者在一些非常罕见的极端情况下假设某些默认值,但它应该可以工作大部分时间都是正确的。它必须比普通文本编辑器内置的语法高亮更好。
仅供参考,我在pygments 中尝试了 PerlLexer,这对于大多数结构来说都是合理的,除了它在这个中找不到第二个 print 关键字:
print length(<<"END"); print "\n";
String
END
【问题讨论】: