2 * Copyright (c) 2015, Facebook, Inc.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree.
12 * Hack for HipHop: type checker daemon code.
14 * See README for high level overview.
16 * Interesting files/directory:
17 * - hh_server.ml: contains mostly the ugly inotify code.
20 * The parser was written using yacc, now it's a recursive descent parser.
21 * The lexer still uses lex. It only supports a subset of PHP by design.
22 * - parsing/lexer_hack.mll: the lexer (lex)
23 * - parsing/parser_hack.ml: the recursive descent parser
26 * Naming consists in "solving" all the names (making sure every
27 * class/variable/etc. are bound).
29 * Named abstract syntax tree (the datastructure).
31 * Naming operations (takes an ast and returns a nast).
32 * - naming/nastInitCheck.ml:
33 * Checks that all the members in a class are always properly initialized.
36 * - typing/typing_defs.ml:
37 * The datastructures required for typing.
38 * - typing/typing_env.ml:
39 * All the operations on the typing environment (e.g. unifying types).
40 * - typing/typing_reasong.ml:
41 * Documents why something has a given type (witness system).
43 * Where everything happens, in two phases:
44 * 1. type declarations: we build the environment where we know the type of
45 * everything. (see make_env).
46 * 2. for every function and method definition, we check that their
47 * implementation matches their signature (assuming that all other
48 * signatures are correct).
51 let () = HhServerMonitor.start
()