对文件进行语法分析
Do grammar subparse on a file
假设您只想使用 Perl 6 语法解析大文件的开头。为了避免把整个文件读成一个字符串,然后在这个字符串上调用subparse
。读取文件时是否可以进行子解析?
我在Grammar
class中找不到任何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
}
这不是最快的方法,但它不必读取内存中的整个文件。
假设您只想使用 Perl 6 语法解析大文件的开头。为了避免把整个文件读成一个字符串,然后在这个字符串上调用subparse
。读取文件时是否可以进行子解析?
我在Grammar
class中找不到任何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
}
这不是最快的方法,但它不必读取内存中的整个文件。