To use, IC looks a lot like C. It has all the same operations (including autoincrement, op=, and ?: ), control structures (for, while, break, continue...), and much the same syntax. It uses the C convention of FALSE being NULL or 0, and TRUE being nonzero. Comments are supported, both traditional /* */ comments and the C++-style // comment. Though as an interpreter it has no preprocessor, there are several compiler directives. C- style conditional interpretation (#if etc.) is supported, including the #if, #else, #elseif, and #endif directives. While there is no #ifdef, there is a library defined(NAME) function which can be used as a condition in an #if to get a similar same result. (since there is no #define, this checks if a variable, function, or class with a given name exists.) In addition there are several other directives. #include is included, in addition to a couple that are not available in C: #debug and #eval. #debug is used by the debugger (see section HAS below) to signal to the debugger to break when the statement following the #debug directive is executed. (this facility has been used to write an interactive debugger) And, #eval causes the statement following it to be evaluated immediately when it is encountered in the parse phase of the execution. This also can be useful in debugging (print statements execute when they are first encountered), or to control interpret order. |
|