
Supported C language subset:

    - Expressions:

        * binary operators, by decreasing priority order: '*' '/' '%',
          '+' '-', '>>' '<<', '<' '<=' '>' '>=', '==' '!=', '&',
          '^', '|', '=', '&&', '||'.

        * '&&' and '||' have the same semantics as C : left to right
          evaluation and early exit.

        * Parenthesis are supported.

        * Comma operator is supported.

        * Trinary operator (?:) is not supported.

        * Unary operators: '&', '*' (pointer indirection), '-'
          (negation), '+', '!', '~', '++' and '--'.

        * Pointer indirection ('*') is supported.

        * Square brackets can be used for pointer arithmetic.

        * '=' and <op>= are supported.

        * Function calls are supported with standard Linux calling
          convention. Function pointers are supported.
          Functions can be used before being declared.

        - sizeof() is not supported.

    - Types:
        + int, short, char, float, double
        + pointers
        + variables can be initialized in declarations.
        + Only ANSI-style function declarations are supported.
           - "..." is not supported.
        - short is not supported
        - const is not supported
        - arrays are not supported
        - long doubles are not supported
        - structs are not supported

    - Unknown functions and variables are bound at compile time by calling
      back to the caller. For the 'acc' command-line tool unknown functions
      and variables are looked up using dlsym, to allow using many libc
      functions and variables.

    - Instructions: blocks ('{' '}') are supported as in C. 'if' and
      'else' can be used for tests. The 'while' and 'for' C constructs
      are supported for loops. 'break' can be used to exit
      loops. 'return' is used for the return value of a function.

      - switch / case is not supported.
      - goto and labels are not supported.
      - continue is not supported.

    - Identifiers are parsed the same way as C. Local variables are
      handled, but there is no local name space (not a problem if
      different names are used for local and global variables).

    - Numbers can be entered in decimal, hexadecimal ('0x' or '0X'
      prefix), or octal ('0' prefix).

    - Float and double constants are supported.

    - '#define' is supported without function like arguments. No macro
      recursion is tolerated. Other preprocessor directives are
      ignored.

    - C Strings and C character constants are supported. All ANSI C
      character escapes are supported.

    - Both C comments ( /* */ ) and C++ comments ( // ... end-of-line ) are
      supported.

    - Some syntax errors are reported, others may cause a crash.

    - Memory: the code, data, and symbol sizes are limited to 100KB
      (it can be changed in the source code).

