l
The pawn does not support any "pointer". The pawn includes a "reference" argument to transfer
function parameters as a reference (see "Function arguments ("call-by-value" versus "call-by-
reference")" on page 228). The "placeholder" argument replaces some applications of the ZERO
pointer (see "Standard values of function arguments" on page 230).
l
Numbers can be specified in a hexadecimal, decimal or binary format. The octal format is not
supported (see "Numerical constants" on page 214). Hexadecimal numbers must start with "0x" ("x" in
lower case). The prefix "0X" is invalid.
l
"Cases" in a "switch"-statement are not "fall through". At least one statement must follow the "case"
label. You must create a composite statement (with {}) to execute several statements (see "switch
(expression) {case list}" on page 226). The "switch" statement is a "conditional goto" in C/C++. The
"switch" statement is a structured "if" in the pawn.
l
A "break" statement only terminates loops. In C/C++, the "break" statement also terminates a "case" in
a "switch" statement.
l
The pawn supports "array assignments" with the limitation that both of the arrays must be the same
length. For example, if "a" and "b" arrays have six lines, the expression "a=b" is valid. In addition to
character strings, the pawn also supports literal arrays and thus expressions such as "a = {0,1,2,3,4,5}"
where "a" is an array variable with six elements.
l
"defined" is an operator and not a preprocessor directive. The "defined" operator in the pawn works
with constants (declared with "const"), global variables, local variables and functions.
l
The "sizeof" operator returns the size of the variables in "elements" and not in "bytes". An element is an
entry or sub-array. Further details are provided in the chapter "Other" on page 221.
l
An empty statement is an empty block (with {}) and not a semicolon (see "Composite statements" on
page 223). This change prevents frequent errors.
l
A division is completed in such a way that the remainder of the division has (or ought to have) the same
prefix as the denominator. Divisions (operator "/") are always rounded down to the smaller whole
number (whereby -2 is smaller than -1). For example, 5/2 = 2 (2.5 is rounded down to 2), -5/2 = -3 (-2.5
is rounded down to -3). The "%" operator always generates a positive result regardless of the prefix of
the numerator (see "Operators and expressions" on page 218).
l
There is no unary "+" operator as it is a "no-operation" operator anyway ("a = +1" is not valid; correct: "a
= 1").
l
Three bit by bit operators have different priorities than in C. The priority level of the "&", "^" and "|"
operator is higher than the relational operators. Dennis Ritchie explains that these operators were
assigned a low priority level in C as early C compilers did not yet include the logical "&&" and "| |"
operators so that bit by bit "&" and "|" were used instead.
l
The keyword "const" in the pawn implements the "enum" functionality of C.
232
Rev. 05
Summary of Contents for myDatalogEASY V3
Page 2: ......
Page 13: ...Chapter 2 Declaration of conformity Chapter 2 Declaration of conformity Rev 05 13 ...
Page 14: ......
Page 42: ......
Page 76: ......
Page 88: ......
Page 102: ......
Page 110: ......
Page 116: ......
Page 234: ......
Page 244: ......
Page 252: ......
Page 254: ......
Page 266: ......
Page 276: ......