#!/usr/local/bin/ulpc
which will cause all subsequent occurances of 'identifier' to be replaced with the replacement string.
Define also has the capability to use arguments, thus a line like
would cause identifer to be a macro. All occurances of 'identifier(something1,something2d)' would be replaced with the replacement string. And in the replacement string, arg1 and arg2 will be replaced with something1 and something2.
Expressions given to #if, #elif or #endif are special, all identifiers evaluate to zero unless they are defined to something else. Integers, strings and floats are the only types that can be used, but all lpc operators can be used on these types.
Also, two special functions can be used, defined() and efun(). defined(<identifer>) expands to '1' if the identifier is defined, '0' otherwise. efun(<identifier>) expands to '1' if identifer is an efun, '0' otherwise.
#if defined(FOO)
#if !efun(write_file)
inherit "simulate.lpc"
#endif
This can also be used when generating lpc from something else, to tell teh compiler where the code originally originated from.