将BibTeX作者字段拆分为多个部分

时间:2018-02-26 12:09:40

标签: perl6

我正在尝试使用以下语法解析BibTeX作者字段:

use v6;
use Grammar::Tracer;

# Extract BibTeX author parts from string. The parts are separated
# by a comma and optional space around the comma
grammar Author {
    token TOP {
        <all-text> 
    }
    token all-text {
        [<author-part> [[\s* ',' \s*] || [\s* $]]]+ 
    }
    token author-part { 
        [<-[\s,]> || [\s* <!before ','>]]+
    }
}

my $str = "Rockhold, Mark L";
my $result = Author.parse( $str );
say $result;

输出

TOP
|  all-text
|  |  author-part
|  |  * MATCH "Rockhold"
|  |  author-part

但是程序挂起(我必须按CTRL-C)才能中止。 我怀疑这个问题与负前瞻断言有关。我试图将其删除,然后程序不再挂起,但是我也无法使用内部空间提取最后一部分"Mark L"

请注意,出于调试目的,上面的Author语法是我实际程序中使用的语法的简化版本。

0 个答案:

没有答案