1779: open_opt: 1780: | OPEN { `Open } 1781: | { `None } 1782: 1783: module_definition: 1784: | open_opt MODULE declname opt_equal compound 1785: { 1786: let name,vs = hd $3 in 1787: let sr = rsrange (slift $2) (fst $5) in 1788: let qn = `AST_name (sr,name,[]) in 1789: let stmt = 1790: let dcl = 1791: `AST_untyped_module ( sr, name, vs, snd $5) 1792: in match $1 with 1793: | `None -> dcl 1794: | `Open -> `AST_seq (sr,[dcl; `AST_open (sr,dfltvs,qn)]) 1795: in 1796: fold_left (fun stmt (name,vs) -> `AST_namespace (sr,name,vs,[stmt])) stmt (tl $3) 1797: 1798: } 1799: 1800: | open_opt NAMESPACE declname opt_equal compound 1801: { 1802: let name,vs = hd $3 in 1803: let sr = rsrange (slift $2) (fst $5) in 1804: let qn = `AST_name (sr,name,[]) in 1805: let stmt = 1806: let dcl = `AST_namespace ( sr, name, vs, snd $5) in 1807: match $1 with 1808: | `None -> dcl 1809: | `Open -> `AST_seq (sr,[dcl; `AST_open (sr,dfltvs,qn)]) 1810: in 1811: fold_left (fun stmt (name,vs) -> `AST_namespace (sr,name,vs,[stmt])) stmt (tl $3) 1812: } 1813: 1814: