Add in bitwise AND ".&.", OR ".|.", and XOR ".^."
Add arithmetic left shift "<<", arithmetic right shift ">>",
and logical right shift operators ">>>"
This retains the original parsing of something like "9.^.5" to be
interpreted as "square root of 9" However, "9.^. 5" is interpreted as
"9 XOR 5".
( The number parsing code moving to parse_number() is the only
significant change in adapting this extension to the new server;
the original behavior of the extension is retained in this commit
--wrog )
Change-Id: I99291bed3d07d68ced204ea27bf684dc09a861fc
(phase 1 = changes having nothing to do with introducing [u]int*_t,
missing headers and adding/fixing function prototypes,
Num-introduction, float-unboxing, autoconf, or the new math builtins.
--wrog)
was:
- use C99-like macros for printf
- use [u]int*_t types (autoconf can verify they exist)
- abstract Num and Objid out
- default to 64 bit integers
- un-pointerify floating-point numbers (makes no sense on modern hardware)
into account what opcodes are running under try/catch protection and
prevents them from becoming PUSH_CLEAR operations which may result
in spurious undefined variable errors.