5.16.7.16. Module Definition

Start data section to src/flx_parse.mly[23 /35 ] Next Prev First Last
  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: 
End data section to src/flx_parse.mly[23]