【问题标题】:How to tokenize Perl source code?如何标记 Perl 源代码?
【发布时间】: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

【问题讨论】:

    标签: perl tokenize


    【解决方案1】:

    PPI

    【讨论】:

      【解决方案2】:

      use PPI;

      是的,只有 perl 可以解析 Perl,但是 PPI 是 95% 正确的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-31
        • 1970-01-01
        • 2010-09-26
        • 1970-01-01
        相关资源
        最近更新 更多