toke.c: Remove redundant check

(and turn it into an assertion.)

PL_lex_repl can only be set here if we are parsing a substitution
(OP_SUBST) or transliteration (OP_TRANS).  I believe this check
has been unnecessary since perl 5.000, which it was added.
regcomp.c: Reinstate use of synthetic start class

This effectively reverts commit
a74bca75951b6a3b0ad03ba07eb31e2ca1227308, although the syntax has
changed.  This commit inadvertently caused a synthetic start class (SSC)
to not be generated in many cases where it previously was.  The
SSC is generated by the regex optimizer to hopefully speed up finding
where to start matching the target string against the regex pattern.  I
don't know if this is a valid data point, but in the 3 months that this
was in blead, there were no complaints of a slowdown that could be
attributed to this.

The commit that caused this was made after discussing it with Yves
Orton.  It just seemed (and still seems) wrong that doing what the code
indicates is a logical OR should actually restrict the possibilities.
The change essentially caused the result of OR'ing together the matches
of two nodes, one of which nominally could match a sub-string of zero
length, to also match a sub-string of zero length.  Previous to that
commit, and after this new one, the result of doing the OR excludes a
zero-length string, as if it were an AND.

The end result of the change was that the SSC could match a zero-length
string, and thus was discarded as not being useful.  Yves and I knew
that the change would not cause bugs; just potentially create more false
positives.  And we were right.

I believe that this is further indication that the optimizer could
benefit greatly from an overhaul.  It's clear from looking at the code
and commits that other people have been similarly fooled.
regcomp.c: Add comments
mktables: White-space only: wrap to 79 cols
mktables: Always strip off returned comments in tables

mktables generates (among other things) many perl .pl files which when
executed, return a string containing many lines.  Each line may end
with '#' comments.  Previously, it didn't always strip off those
comments to the caller, which it assumed uses a 'do' statement to
execute these, and the comments are automatically ignored.  However, it
turns out that the 'mkheader' script in Unicode::Normalize doesn't cope
with these comments.  This usually doesn't get called except once when
normally these comments aren't generated, but if it does, things don't
just compile.  So, just strip off the comments, rather than letting the
'do' handle it.
mktables: Fixup debugging info

The -annotate parameter generates extra information in the tables
created by mktables which is useful to me in understanding the Unicode
standard and debugging.  I doubt that anyone else has ever used it.  It
has been broken for some tables for some time.  This commit fixes those.
mktables: Tighten regex match to real data

The actual file has spaces, so use \s instead of the more dangerous dot.
Also, after processing the line, no need to look to see if it matches
something else.
mktables: Regenerate if called with different cmd line args

mktables acts pretty much like its own Makefile.  This is because the
rules for regenerating are complicated and too hard to keep in sync in a
Makefile with new versions of Unicode.  mktables itself already has
enough intelligence to automatically update the rules when it gets
modified to account for new files from Unicode.

However, prior to this commit, it didn't keep track of the options it
was called with, thus it wouldn't necessarily run when those options
changed to affect the desired outputs.
mktables: Add an advisory comment to generated files.
mktables: Further explain how things work in a comment
mktables: Stop generating most leading zeros

Leading zeros were generated to conform with Unicode usage, but these
are machine-read files so this just takes up some extra space and extra
parsing cycles at run-time.  It's a small matter, but we should design
our files to be the most efficient possible.  It is possible to get more
human-readable files by using the -annotate option to mktables.

Certain files whose existence has been published have their formats
unchanged, in case some application is reading them.  The files contain
comments that their use is deprecated, but there is no warning generated
if they are opened and read, nor is it really feasible to add such a
warning.  At some time in the future, we may feel it's ok to remove
these files, as their contents have been available since v5.16 through a
stable API in Unicode::UCD, but until we remove them, we shouldn't
change their formats.

Not all other leading zeros are removed; just the ones that were
convenient to remove.
Unicode/UCD.t: white-space, comments

Wrap to 79 columns; add a comment
mktables: Don't output trailing tabs in tables

This makes sure that the tabs aren't output unless there is a following
non-null value, saving some disk space
mktables, UCD.t: Fix nits in comments; add comment
mktables: Clarify overloaded variable name

The term 'full' is overloaded here in this small section of code.  In
some cases it refers to the full case mapping versus the simple case
mapping; in other cases it refers to the full name for a property as
opposed to the abbreviated name.  This commit expands each to indicate
which is meant.
Unicode::UCD: Remove access to some legacy-only properties

Five files are currently being kept around only because they existed
before Unicode::UCD gave access to the properties they define, and some
application programs may rely on their presence, and format.  More
compact files have supplanted the use of these files by the Perl core.

Mistakenly, Unicode::UCD gave access to these files via the made-up
property names that they are referred to by in mktables.  This was
undocumented.  This commit removes this access.
mktables: White-space only

Align a few lines to begin on same column which has been outdented so
nothing exceeds 79 columns
Unicode/UCD.t: Add missing 'next' statement

When a test fails, it should do a 'next' to stop processing the current
property.
lib/Unicode/UCD.t: Rename a $variable

This is in preparation for a future commit where the new name makes more
sense.
lib/Unicode/UCD.t: Clarify diagnostic

This diagnostic comes from either of 2 problems, so mention both of
them.