BNF: rule layout is lhs = { rhs1, rhs2, ..., fields }; add compile test