数据样本
[Lue, Fan]
[Lou, Man-Li]
[Tian, Mijie; Zhou, Lin; Zou, Xiao; Zheng, Qiaoji; Luo, Lingling; Jiang, Na; Lin, Dunmin]
Grrammar
grammar PairBracket {
token TOP {
^ <line>+ $
}
token line {
\[
<student>+ % <semicolon>
\]
\n # 换行 \n 是最容易被忽略的地方
}
token student {
<myname>+ % <comma> # 分隔符也可以是一个 subrule
}
token myname {
<[A..Za..z-]>+ # 字符类的写法 <[...]>
}
token comma {
',' \s+ # 逗号
}
token semicolon {
';' \s+
}
}
Action
class PairBracketAction {
...
}
提取数据
my $parse = Lines.parsefile('test.txt');
say $parse<line>;