数据样例
version=6.d
backend=MoarVM
disto=Rakudo Star
Grammar
grammar KeyValuePairs {
token TOP {
[<pair> \v+]*
}
token pair {
<key=.identifier> '=' <value=.identifier>
}
token identifier {
\w+
}
}
Action
class KeyValuePairsActions {
method pair ($/) {
$/.make: $<key>.made => $<value>.made
}
method identifier($/) {
# subroutine `make` is the same as calling .make on $/
make ~$/
}
method TOP ($match) {
# can use any variable name for parameter, not just $/
$match.make: $match<pair>».made
}
}