- array_map: documentation ( source)
- print_r: documentation ( source)
- explode: documentation ( source)
<?php
function grammar($description)
{
$g=array();
foreach(explode("\n",$description) as $line)
{
$sides = explode(" => ",$line);
$lhs = $sides[0];
$rhs = $sides[1];
$alternatives = explode(' | ',$rhs);
$g[$lhs] = array(array_map("explode",$alternatives,array(" ")));
}
return $g;
}
$des =<<<G
Exp => Term [+-] Exp | Term
G;
print_r(grammar($des));