The input should comply with the ISO level 0 Pascal definition. Two common Pascal extensions are also recognized: the keyword otherwise may be used for default entries in case-statements, the keyword external may be used in place of the forward directive to signify that a procedure or function is defined in a library. Furthermore, the translator does not require a complete Pascal program, a consistent subset of declarations can be translated. Thus a primitive module concept is supported.
a := b mod c
can be accurately translated into
a = b % c
but that may not be true if c is negative. A check on the characteristics of integer and float arithmetic is strongly recommended.
Some Pascal constructs are impossible to express in C. The translator will not object to:
type ptr = ^ ptr;
but a C-compiler may balk at the resulting:
typedef ptr * ptr;
The translator does not do complete typechecking so a Pascal program that isn't formally correct may cause malfunction.
Passing a procedure as parameter to an enclosing recursive procedure may produce erroneous code (see the implementation notes).