我正在使用 MARPA::R2 实现解析器。
我有一个G1 rule
喜欢:
PARAM ::= STRING | REGEX_STRING
喜欢L0 rule
:
STRING ~ [^ \/\(\),&:\"~]+ -----> works fine
REGEX_STRING ~ [\"([^:]*?)\"] -----> doesn't work
使用REGEX_STRING
,我试图解析用双引号括起来的字符串,但是正则表达式有问题。另外,我想删除双引号,只保留引号之间的内容。
所以,如果我使用下面的代码输入:
my $recce = Marpa::R2::Scanless::R->new({grammar => $grammar});
my $input = "\"foo\""; --> here, it should parse "foo" and give me foo.
print "Trying to parse:\n$input\n\n";
$recce->read(\$input);
my $value_ref = ${$recce->value};
print "Output:\n".Dumper($value_ref);
其他示例:“bar123”、“foo(123)”等。