Tie::Hash::TwoWay will take a list of one-way associations and
transparently create their reverse. For instance, say you have a list
of machines, and a list of classes that each machine belongs to.
Tie::Hash::TwoWay will take the machines, one by one, with an associated
array reference of class names, and build the reverse mapping of classes
to machines. All the mappings are stored as hashes. You can access the
secondary mappings as if they were hash keys in their own right.
Someone asked on Perlmonks if a hash could do fuzzy matches on keys - this
is the result.
If there's no exact match on the key that you pass to the hash, then the
key is treated as a regex and the first matching key is returned. You can
force it to leap straight into the regex checking by passing a qr'ed regex
into the hash like this:
my $val = $h{qr/key/};
exists and delete also do regex matching. In the case of delete all values
matching your regex key will be deleted from the hash.
mem is a trivial pragma to either allow defining the module it is included from
as being defined so that later classes or packages in the same file can use the
package to pull in a reference to it, or to be able to call its import routine
from a different package in the same file.
With parameter assignments or other actions, it forces those assignments to be
done, immediately, at compile time instead of later at run time. It can be use,
for example, with Exporter, to export typed-sub's among other usages.
When you define a function, or import one, into a Perl package, it will
naturally also be available as a method. This does not per se cause
problems, but it can complicate subclassing and, for example, plugin
classes that are included via multiple inheritance by loading them as
base classes.
The "namespace::clean" pragma will remove all previously declared or
imported symbols at the end of the current package's compile cycle.
Functions called in the package itself will still be bound by their
name, but they won't show up as methods on your class or instances.
PCCTS - The Purdue Compiler Construction Tool Set
PCCTS is a set of public domain software tools designed to
facilitate the implementation of compilers and other
translation systems. These tools currently include antlr,
and dlg.
In many ways, PCCTS is similar to a highly integrated
version of YACC [Joh78] and LEX [Les75]; where antlr (ANother
Tool for Language Recognition) corresponds to YACC and dlg
(DFA-based Lexical analyzer Generator) functions like LEX.
However, PCCTS has many additional features which
make it easier to use for a wider range of translation
problems.
PCRE2 is the name used for a revised API for the PCRE library, which is
a set of functions, written in C, that implement regular expression
pattern matching using the same syntax and semantics as Perl, with just
a few differences. Some features that appeared in Python and the
original PCRE before they appeared in Perl are also available using the
Python syntax. There is also some support for one or two .NET and
Oniguruma syntax items, and there are options for requesting some minor
changes that give better ECMAScript (aka JavaScript) compatibility.
This library provides a collection of (macro-based) functions
for performing safe integer operations across platform and architecture
with a straightforward API.
It supports two modes of use: header-only and linked dynamic library.
The linked, dynamic library supplies a format-string based interface
which is in pre-alpha. The header-only mode supplies integer and sign
overflow and underflow pre-condition checks using checks derived from
the CERT secure coding guide. The checks do not rely on twos complement
arithmetic and should not at any point perform an arithmetic operations
that may overflow. It also performs basic type agreement checks to ensure
that the macros are being used (somewhat) correctly.
Blessings lifts several of curses' limiting assumptions, and it makes
your code pretty
Use styles, color, and maybe a little positioning without necessarily
clearing the whole screen first. Leave more than one screenful of
scrollback in the buffer after your program exits, like a well-behaved
command-line app should. Get rid of all those noisy, C-like calls to
tigetstr and tparm, so your code doesn't get crowded out by terminal
bookkeeping. Act intelligently when somebody redirects your output to a
file, omitting the terminal control codes the user doesn't want to see.
OcempGUI is a small toolkit, which comes with various modules suitable for
event management, user interfaces, 2D drawing and accessibility.
OcempGUI enables developers to enhance their python and/or pygame applications
and games easily with graphical UI elements such as buttons, entry boxes,
scrolling abilities and more as well as simple event brokers or features, which
enhance the program by adding accessibility to its objects.
It can save a developer much time by providing a broad range of drawing
routines and ready-to-use event capable object types. The developer can focus
on the main tasks instead of taking care about needed low-level components,
which are given to him with OcempGUI.
Ragel compiles finite state machines from regular languages into runnable C
code. Ragel state machines can not only recognize byte sequences as regular
expression machines do, but can also execute code at arbitrary points in the
recognition of a regular language.
When you wish to write down a regular language you start with some simple
regular language and build a bigger one using the regular language operators
union, concatenation, kleene star, intersection and subtraction. This is
precisely the way you describe to Ragel how to compile your finite state
machines. Ragel also understands operators that insert function calls into
machines and operators that control any non-determinism in machines.