对文件进行语法分析

Do grammar subparse on a file

假设您只想使用 Perl 6 语法解析大文件的开头。为了避免把整个文件读成一个字符串,然后在这个字符串上调用subparse。读取文件时是否可以进行子解析?

我在Grammarclass中找不到任何subparsefile()方法,所以我想这很难实现。但理论上应该是可能的,例如

目前你不能。目前解析任何内容都需要整个字符串存在于内存中。

话虽如此,如果您知道您的模式可能扩展的最大行数,您可以这样做:

my $max = 3; # maximum number of lines
for "textfile".IO.lines(:!chomp).rotor( $max => -$max + 1 ) -> @lines {
    @lines.join.subparse( $grammar)
    # and whatever you would like to do
}

这不是最快的方法,但它不必读取内存中的整个文件。