【发布时间】:2012-07-05 19:06:00
【问题描述】:
我正在尝试使用Parse::RecDescent 制作一个可以解析括号表达式和一元运算符? 的解析器。
到目前为止,我创建解析器时失败了,因为规则 expression 是左递归的:
use strict;
use warnings;
use Parse::RecDescent;
my $test = <<END;
((foo)? bar)
END
my $grammar = q(
parse: expression(s)
expression: string | parend | expression(s)
parend : "(" (string | expression) ")" /\??/
string : /\w+/ /\??/
);
my $parser = Parse::RecDescent->new($grammar);
my $result = $parser->parse($test);
if($result){
print $result;
}else{
print STDERR "Invalid grammar\n";
}
【问题讨论】:
标签: perl parsing parentheses parse-recdescent