Terms and Definitions

May 30, 2017 ยท View on GitHub

For the purposes of this document, the following terms and definitions apply:

  argument:
    a value passed to a function, that is intended to map to a
    corresponding parameter.
      
  behavior:
    external appearance or action.

  behavior, implementation-defined:
    behavior specific to an implementation, where that implementation
    must document that behavior.

  behavior, undefined:
    behavior which is not guaranteed to
    produce any specific result. Usually follows an erroneous program
    construct or data.

  behavior, unspecified:
    behavior for which this specification provides no requirements.

  case-preserved:
    a construct which is case-insensitive upon declaration, but
    case-sensitive upon subsequent usage.

  constraint:
    restriction, either syntactic or semantic, on how language elements
    can be used.

  error, fatal:
    a translation or runtime condition from which the translator or
    engine cannot recover.

  error, fatal, catchable:
    a fatal error that can be caught by a user-defined handler.

  error, non-fatal:
    an error that is not fatal.

  lvalue:
    an expression that designates a memory location having a type.

  lvalue, modifiable:
    an lvalue whose value can be changed.

  lvalue, non-modifiable:
    an lvalue whose value cannot be changed.

  parameter:
    a variable declared in the parameter list of a function that is
    intended to map to a corresponding argument in a call to that
    function.

  Hack Run-Time Engine:
    the machinery that executes a Hack program. Referred to as *the
    Engine* throughout this specification.

  value:
    precise meaning of the contents of a memory location when
    interpreted as having a specific type.

Other terms are defined throughout this specification, as needed, with the first usage being typeset like this.