5.16.7.12. Object

Start data section to src/flx_parse.mly[19 /35 ] Next Prev First Last
  1721: object_definition:
  1722:   | OBJECT declname fun_args compound
  1723:     {
  1724:       let name,vs = hd $2 in
  1725:       let sr = rsrange (slift $1) (fst $4) in
  1726:       let return_type = `TYP_none in
  1727:       let body = snd $4 in
  1728:       let args = List.map snd $3 (* elide srcref *) in
  1729:       let stmt = mkcurry sr name vs args (return_type,None) `Object body in
  1730:       fold_left (fun stmt (name,vs) -> `AST_namespace (sr,name,vs,[stmt])) stmt (tl $2)
  1731:     }
  1732: 
  1733: 
  1734: typeparameter_comma_list:
  1735:   | typeparameter COMMA typeparameter_comma_list { $1 :: $3 }
  1736:   | typeparameter { [$1] }
  1737:   | { [] }
  1738: typeparameter:
  1739:   | NAME COLON arrow { snd $1,typecode_of_expr $3 }
  1740:   | NAME { snd $1,`TYP_none }
  1741: 
  1742: parameter_comma_list:
  1743:   | parameter COMMA parameter_comma_list { $1 :: $3 }
  1744:   | parameter { [$1] }
  1745:   | { [] }
  1746: param_qual:
  1747:   | VAL { `PVal }
  1748:   | VAR { `PVar }
  1749:   | REF { `PRef }
  1750:   | FUNCTION { `PFun }
  1751:   | { `PVal }
  1752: 
  1753: parameter:
  1754:   | param_qual NAME COLON arrow { $1, snd $2,typecode_of_expr $4 }
  1755:   | param_qual NAME { $1, snd $2,`TYP_none }
  1756: 
End data section to src/flx_parse.mly[19]
Flx functions and procedures are first class citizens: the may both be passed as arguments to procedures, and they may both be be returned from functions. Only functions may be passed to functions.