#! /usr/bin/env rakudo
grammar Calculator {
rule TOP {
<number> ',' <number> ',' <letter>
}
token number {
\d+
}
token letter {
\w
}
}
class CalculatorActions {
method TOP($/) {
$/.make($/.chunks.grep({.value ~~ Match}).map(*.value.made).join: "\n");
}
method number($/) {
$/.make("number: " ~ +$/);
}
method letter($/) {
$/.make("letter: " ~ $/.Str);
}
}
Calculator.parse('3, 4, x',
:actions(CalculatorActions)).made.say;