6.5.3 Intended undefined behaviours

  1. Integer over/underflows

    We do not devine the result of an integer overflow, or an integer underflow. Our integers are defined solely as signed integers on 64 bits.

    The minimum integer is defined as the maximum integer negated. In the C programming language, it is defined as being one less, but in our implementation of the negate sign “-”, we chose for parsing and lexing simplicity to use the negate solely as an operation. Take the example “-5”, we will not register it as the -5 number, but as the number 5 on whom we apply the negate operation. This explains the fact that our minimum integer is defined as the negated maximum integer.

    The maximum integer is defined as 2^63 - 1, or 9’223’372’036’854’775’807.

  2. Known caveats
    1. Lack of static analysis

      The FCC compilation step do not implement any static analysis.

      These are the direct cause of some – sadly – not implemented behavious:

      • We cannot check for direct division by zero. For example: (10 divisé par 0) will not result in an error at compile-time.
      • We cannot produce pre-computations. For example: (10 plus 10) will not result in the value 20 at compile-time, but in the computation of 10 plus 10 at run-time. It is highly inefficient.