Perl 6 at a glance - Grammar 读书笔
2017-07-02 本文已影响62人
焉知非鱼
感谢和颜兄分享了 Perl 6 at a glance 一书。
Grammar这段是说 rule 和 rule 的定义之间是可以有任意空白的,例如 rule TOP 和 rule statements 之间。
use v6;
grammar Lang {
rule TOP {
^ <statements> $
}
rule statements {
<statement>+ %% ';'
}
rule statement {
| <assignment>
| <printout>
}
rule assignment {
<identifier> '=' <expression>
}
rule printout {
'print' <expression>
}
rule expression {
| <identifier>
| <value>
}
token identifier {
<:alpha>+
}
token value {
\d+
}
}
my $parsed = Lang.parsefile('test.lang');
say $parsed;
下面这个多余的垂直线是为了美观和易于维护:
rule expression {
| <identifier>
| <value>
}