module MyModule version "0.1"
{
    root = Ham(object leaf1, object leaf2)
         | Foo(object leaf)
           attributes(int foo, int bar)

    expr = SomeExpr(object n)
         | SomeOtherExpr(object n)
         | Bar(expr e1, expr? e2)
         | Product(myproduct p)

    -- test builtin types
    builtin = Expr(object o, string s, identifier id, int i, bool b)

    myproduct = (expr foo, int bar)
}