this flag now fails negative number strings directly
rather than relying on strtoimax() to choke on "--".
The yacc parser (only place where PN_NONNEG is used) currently never
does this so it makes no difference, but this is now visible from unit
tests, so...
I realized "whether we are unit-testing or not" really works better as
part of the configuration. This removes a need to assign to CPPFLAGS
that might otherwise make life difficult later.
N.B. Even though unit test sources need to show up directly in build
directories, they are NOT meant to live in this repository:(we want to
be able to do checkouts and switch between branches without having the
tests change out from under us, in order to, e.g., verify that
something *was* a bug and that a particular change fixed it), hence
the reservation of the uT-* prefix so that we can have these files
appear as needed but be invisible to (this) git repository.
Also, NOMAIN (as in '#ifndef NOMAIN') was violating
my 'double-negative' rule, so that is deprecated.
rather than only letting the first one do it. This way, the last one
wins. And then we can allow the ALL_XT_* file lists to be expanded
immediately (because they'll get overwritten if they change later),
which looks more straightforward in the MOO_XT_DUMP_EVERYTHING view.
Not that this makes any real difference now, but it may be better for
futureproofing (i.e., if the epilogue ends up doing more later on).
(originally was not going to allow this, but it's useful):
We now include values directly in the m4_pushdef() so that they expand
when you'd expect, but we also have to chop the value ENTIRELY out of
the corresponding m4_popdef() call so that any side effects do not get
repeated, which means m4_car() is no longer good enough (since it
expands all of the list elements (which are expected to be quoted
anyway) even though they all get ignored).
which is tricky
(For "Break the Fewest Things")
This version parses everything that the non-bitop server parses
including
9.&&x
9.||x
p ? 9.|x
and otherwise preserves the behavior of the original bitop
implementation, except in the following cases
2.|.5
p ? 2.|.5
p ? 2.|.5 | x
which are no-win situations (non-bitop server inevitably
allows the 2nd as a conditional but must fail the other two,
while the original implementation bitop server does the opposite).
Essentially, you have to introduce spaces
2 .|. 5
if you want to be sure of this being read as a bitwise inclusive or.
Since the unparser automatically puts spaces around bitops, this will
not be an issue for any saved databases, only for cases where code is
being parsed on the fly and particular syntax errors are expected (or not).
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
rewrote to use the handlers differently,
to rearrange memory usage so that MAXCONCAT limits are honored
and so that text from multiple consecutive chardata handler calls
gets consolidated even in the xml_parse_document case.
Uses current expat / shared lib by default
(meaning no more ./expat directory; you can still configure
--with-expatpath=... if you really want, but that version was really
old (1.2, circa 2000). --with-expatpath should also work with a
modern expat dist (latest is 2.5 now) if you need a static lib for
some reason)
no API changes (yet).