# Usage:
#   util/compile_p6grammar.pl examples/langs.grammar > Langs.pm
#   perl -MLangs -e 'print My::VB->def("Dim a, b As double")->{"My::C.var_list"}, "\n"'
#   perl -MLangs -e 'print My::VB->def("Dim a, b As double")->{"My::C.var_list"}, "\n"'

grammar My::C;

token def {
    <type> <.ws> <var_list> <.ws>? ';'
}

token type { int | float | double | char }

token var_list {
    
<ident>**{1} <.ws>[ ',' <.ws><ident> ]*
}

grammar My::VB;

token def {
    
'Dim' <.ws> <My::C.var_list>
    
[ <.ws> 'As' <.ws> <My::C.type> ]?
}