ll
ll-toxic 0.7
ll-toxic helps to generate Oracle database functions. more>>
Enhancements:
- The API has changed so that encodings other than ISO-8859-1 are now supported.
LLgen 1.0
LLgen is a LL parser in the style of yacc. more>>
The Amsterdam Compiler Kit is fast, lightweight and retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, and was Minix native toolchain.
The ACK was originally closed-source software (that allowed binaries to be distributed for Minix as a special case), but in April 2003 it was released under a BSD open source license.
The ACK achieves maximum portability by using an intermediate byte-code language called EM. Each language front-end produces EM object files, which are then processed through a number of generic optimisers before being translated by a back-end into native machine code.
Unlike gccs intermediate language, EM is a real programming language and could be implemented in hardware; a number of the language front-ends have libraries implemented in EM assembly.
EM is a relatively high-level stack-based machine, and one of the tools supplied with ACK is an interpreter capable of executing EM binaries directly, with a high degree of safety checking. See the em document referenced below for more information.
ACK comes with a generic linker and librarian capable of manipulating files in the ACKs own a.out-based format; it will work on files containing EM code as well as native machine code. (You can not, however, link EM code to native machine code without translating the EM binary first.)
Enhancements:
- LLgen was previously part of the Amsterdam Compiler Kit, but has been split out into a standalone component.
- This version has been updated from its original 1991 vintage source and has a completely rewritten, much more streamlined build system.
LLg 1.07 Alpha
LLg is a recursive descent parser generator. more>>
SYNOPSIS
use LLg;
@tokens = (
ADDOP => [-+],
LEFTP => [(],
RIGHTP => [)],
INTEGER => 0|[1-9][0-9]*,
);
$reader = Lex->new(@tokens);
$ADDOP->debug;
$expr = And->new(($factor, Any->new($ADDOP, $factor)),
sub {
shift(@_);
my $result = shift(@_);
my ($op, $integer);
while ($#_ >= 0) {
($op, $integer) = (shift(@_), shift(@_));
if ($op eq +) {
$result += $integer;
} else {
$result -= $integer;
}
}
$result;
});
$factor = Or->new($INTEGER, $parexp);
$parexp = And->new($LEFTP, $expr, $RIGHTP,
sub { $_[2] });
print STDERR "Type your arithmetic expression: ";
print "Result: ", $expr->next, "n";
Creating parsers by hand is tedious even for simple languages. This activity can be automated by parser-generators - yacc is a well-known example. But using such tools is quite demanding and requires a reasonable knowlege of the principles of syntactic analysis.
LLg is a set of Perl5 packages which allow the generation of recursive descent parsers for context-free grammars.
LLg is provided with the packages Lex and Token which are object-based. The use of these packages presupposes that you know how to write a BNF grammar and that you know (just a little) about programming in Perl.
Specifying the parser does not require any extension to Perl syntax. The specification is carried out entirely in standard Perl, be it definition of tokens, syntactic rules or associated semantic actions. LLg allows the easy specification of translation schemes, that is parsers for which the semantic action is given by actions directly associated with each production.
The packages Token and LLg allow respectively the definition of objects corresponding to terminals (tokens) and non-terminals of the grammar. Lex handles the reading and "eating" of tokens in the input stream.
Before using these packages you need to define a BNF grammar without left recursion (an LL(1) grammar). Given this, making the parser consists in:
1. create a lexical analyser by specifying the terminals,
2. create a parser (syntactic analyser) by creating a LLg object (or, more precisely, one of the packages which inherits from LLg) for each non-terminal.
3. define the semantics by associating an anonymous function with each LLg object.
Take as an example arithmetic expressions having only + and - as operators. In the Camel book we find the following grammar:
expr ::= factor { ADDOP factor }
ADDOP ::= + | -
factor ::= NUMBER | ( expr )
Creating the parser for this language involves defining a lexical analyser and a syntactic analyser.
The lexical analyser is defined thusly:
@tokens = (
ADDOP => [-+],
LEFTP => [(],
RIGHTP => [)],
INTEGER => [1-9][0-9]*,
);
$reader = Lex->new(@tokens);
The argument of the method new() is a list of pairs: the identity of the terminal and the corresponding regular expression. Each such pair leads to the creation of a terminal of type Token.
The package LLg is the base package of a set : And, Any, Do, Hook, Opt, Or. These packages allow the creation of the different types of rules normally found in context-free grammars. We use a prefix notation with the following equivalences.
A | B Or->new($A, $B) symbol A or symbol B
A B And->new($A, $B) symbol A followed by symbol B
{ A } Any->new($A) arbitrary number of A
[ A ] Opt->new($A) zero or one occurrence of A
The rules in our example are given by creating the following objects:
$expr = And->new(($factor, Any->new($ADDOP, $factor));
$factor = Or->new($NUMBER, $parexp);
$parexp = And->new($LEFTP, $expr, $RIGHTP);
The arguments of the method new() are references to LLg or Token objects. (The written order of the rule has no significance, since scalars can be references before they are assigned a value. These references are resolved when each object is used. As the example shows, references can be obtained to the objects returned by a rule.)
The semantics is defined by putting an anonymous function at the end of the list of object references. The anonymous function uses information associated with the objects. This information is transmitted by positional parameters (the array @_). The nth argument designates the result of the nth parameter of the method new(). Information returned by the function is associated with the object and is transmitted by means of positional parameters wherever the object is used. In our example we will have:
$expr = And->new(($factor, Any->new($ADDOP, $factor)),
sub {
shift(@_);
my $result = shift(@_);
my ($op, $integer);
while ($#_ >= 0) {
($op, $integer) = (shift(@_), shift(@_));
if ($op eq +) {
$result += $integer;
} else {
$result -= $integer;
}
}
$result;
});
$factor = Or->new($INTEGER, $parexp);
$parexp = And->new($LEFTP, $expr, $RIGHTP,
sub { $_[2] });
print STDERR "Type your arithmetic expression: ";
print "Result: ", $expr->next, "n";
When an integer is recognised it is returned by the anonymous function associated with the object $factor. This returned information (or, more precisely, synthesised, since it comes from a a terminal and is transmitted to non-terminals) is also available in the anonymous function associated with the object $expr. The information returned by the following object is used to calculate the value of the arithmetical expression.
The analyser is started up by applying the method next() to the axiom of the grammar:
$expr->next;
By default the input for analysis is read from the standard input. The example parser analyses and interprets individual expressions typed in at the terminal. The example calculator.pl delivered with the LLg package shows how to create an input loop allowing reading and interpretation of arbitrary many expressions.
The parser generator can be used for other purposes than the analysis of a character stream. Given that the packages Lex, LLg and Token, it is perfectly possible to define terminals which are objects i.e. instances of a class other than Token. Each new package defining terminals ought at least to have the methods status() and next() - see vonkoch.pl as an example.
LLnextgen 0.5.0
LLnextgen is an Extended LL(1) parser generator. more>>
Like all parser generators, LLnextgen takes the description of the grammar with associated actions as input, and generates a parser routine for use in compilers and other text processing programs.
LLgen, and therefore LLnextgen, extends on the LL(1) class of parser generators by allowing FIRST/FIRST conflicts and FIRST/FOLLOW conflicts to be resolved with both static and dynamic conditions.
Enhancements:
- This release adds a new operator for specifying an optional-final repetition.
- This is useful for implementing grammar rules like C99/C++ enums where a comma after the last constant is allowed, but not required.
- An option was added to change the extensions of the generated files.
Text::NSP::Measures::2D::MI::ll 1.03
Text::NSP::Measures::2D::MI::ll is a Perl module that implements Loglikelihood measure of association for bigrams. more>>
SYNOPSIS
Basic Usage
use Text::NSP::Measures::2D::MI::ll;
my $npp = 60; my $n1p = 20; my $np1 = 20; my $n11 = 10;
$ll_value = calculateStatistic( n11=>$n11,
n1p=>$n1p,
np1=>$np1,
npp=>$npp);
if( ($errorCode = getErrorCode()))
{
print STDERR $errorCode." - ".getErrorMessage();
}
else
{
print getStatisticName."value for bigram is ".$ll_value;
}
Sys::Lastlog 1.5
Sys::Lastlog is a Perl module to provide a moderately Object Oreiented Interface to lastlog files on some Unix-like systems. more>>
SYNOPSIS
use Sys::Lastlog;
my $ll = Sys::Lastlog->new();
while(my $llent = $ll->getllent() )
{
print $llent->ll_line(),"n";
}
The lastlog file provided on most Unix-like systems stores information about when each user on the system last logged in. The file is sequential and indexed on the UID (that is to say a user with UID 500 will have the 500th record in the file). Most systems do not provide a C API to access this file and programs such as lastlog will provide their own methods of doing this.
This module provides an Object Oriented Perl API to access this file in order that programs like lastlog can written in Perl (for example the plastlog program in this distribution) or that programs can determine a users last login for their own purposes.
The module provides three methods for accessing lastlog sequentially, by UID or by login name. Each method returns an object of type Sys::Lastlog::Entry that itself provides methods for accessing the information for each record.
BeatrIX Linux 2005.1 FINAL
BeatrIX Linux - a compact (Less than 200 megs), Linux operating system more>>
It is a "get-the-job-done distribution of Linux and because of its design, will run on just about any personal computer made in the past 10 years with a minimum of 64 megabytes of RAM.
The programs chosen for BeatrIX are all "best-of-breed" meaning weve selected the best of the best of each type of program.
If you install it to hard drive, you can upgrade and add to the system using the Ubuntu and/or Debian file repositories, turning it into just about any type of operating system you want. You can install everything from Web servers to Wed editors. And ll of this from a mini-CD!
It is one of the fastest-growing Linuxes in the world, having been downloaded in more than 110 countries and more than 50,000 times since its release four months ago.
Lemonldap::Portal::Sslsso 0.03
Lemonldap::Portal::Sslsso is a Perl extension for the Lemonldap SSO system. more>>
SYNOPSIS
use Lemonldap::Portal::Sslsso;
my $message ;
my %params =Vars;
my $stack_user=Lemonldap::Portal::Ssslsso->new(formateUser => &my_method);
my $urlc;
my $urldc;
$retour=$stack_user->process(param => %params,
server => $ReverseProxyConfig::ldap_serveur,
port => $ReverseProxyConfig::ldap_port,
DnManager => $ReverseProxyConfig::ldap_admin_dn,
passwordManager => $ReverseProxyConfig::ldap_admin_pd,
branch => $ReverseProxyConfig::ldap_branch_people,
id_certif => $ENV{SSL_CLIENT_S_DN_Email} ,
field_certif=>mail
);
if ($retour) {
$message=$retour->message;
$erreur=$retour->error;
}
See in directory examples for more details
DESCRIPTION ^
Lemonldap is a SSO system under GPL.
In SSL environment all jobs are made by mod_ssl .
In this case params user and password are useless.
Sslsso.pm manages all the cycle of authentification : The users mail is in the client certificate then the module ll retrieve the ldap Entry.
The OCSP protocol is available with the last release of mod_ssl.
step 0 : setting configuration
step 1 : manage the source of request
step 2 : manage timeout
step 3 : control the input form of user and password
step 4 : formate the userid if needing
step 5 : build the filter for the search
step 6 : build subtree for the search ldap
step 7 : make socket upon ldap server
step 8 : bind operation
step 9 : make search
step 10 : confection of %session from ldap infos
step 11 : unbind
Any step can bee overload for include your custom method.
standards errors messages :
1 => Your connection has expired; You must to be authentified once again,
3 => Wrong directory manager account or password ,
4 => not found in directory,
SJPT: Simple Java Parsing Toolkit
SJPT: Simple Java Parsing Toolkit is a simple Java parser toolkit. more>>
The toolkit also supports generating Java parsers for all the bottom-up parsing methods, based on a CUP definition (similar to Yacc and CUP, but not restricted to LALR parsers only). I worked alone on this project for the laboratory on Compilers.
SJPT is free software under the terms of the GNU GPL.
Stat::lsMode 0.50
Stat::lsMode Perl module can format file modes like the ls -l command does. more>>
SYNOPSIS
use Stat::lsMode;
$mode = (stat $file)[2];
$permissions = format_mode($mode);
# $permissions is now something like `drwxr-xr-x
$permissions = file_mode($file); # Same as above
$permissions = format_perms(0644); # Produces just rw-r--r--
$permissions = format_perms(644); # This generates a warning message:
# mode 644 is very surprising. Perhaps you meant 0644...
Stat::lsMode->novice(0); # Disable warning messages
Stat::lsMode generates mode and permission strings that look like the ones generated by the Unix ls -l command. For example, a regular file that is readable by everyone and writable only by its owner has the mode string -rw-r--r--. Stat::lsMode will either examine the file and produce the right mode string for you, or you can pass it the mode that you get back from Perls stat call.
format_mode
Given a mode number (such as the third element of the list returned by stat), return the appopriate ten-character mode string as it would have been generated by ls -l. For example, consider a directory that is readable and searchable by everyone, and also writable by its owner. Such a directory will have mode 040755. When passed this value, format_mode will return the string drwxr-xr-x.
If format_mode is passed a permission number like 0755, it will return a nine-character string insted, with no leading character to say what the file type is. For example, format_mode(0755) will return just rwxr-xr-x, without the leading d.
file_mode
Given a filename, do lstat on the file to determine the mode, and return the mode, formatted as above.
Novice Operation Mode
A common mistake when dealing with permission modes is to use 644 where you meant to use 0644. Every permission has a numeric representation, but the representation only makes sense when you write the number in octal. The decimal number 644 corresponds to a permission setting, but not the one you think. If you write it in octal you get 01204, which corresponds to the unlikely permissions -w----r-T, not to rw-r--r--.
The appearance of the bizarre permission -w----r-T in a program is almost a sure sign that someone used 644 when they meant to use 0644. By default, this module will detect the use of such unlikely permissions and issue a warning if you try to format them. To disable these warnings, use
Stat::lsMode->novice(0); # disable novice mode
Stat::lsMode->novice(1); # enable novice mode again
The surprising permissions that are diagnosed by this mode are:
111 => --xr-xrwx
400 => rw--w----
440 => rw-rwx---
444 => rw-rwxr--
551 => ---r--rwt
600 => --x-wx--T
640 => -w------T
644 => -w----r-T
660 => -w--w-r-T
664 => -w--wx--T
666 => -w--wx-wT
700 => -w-rwxr-T
711 => -wx---rwt
750 => -wxr-xrwT
751 => -wxr-xrwt
751 => -wxr-xrwt
755 => -wxrw--wt
770 => r------wT
771 => r------wt
775 => r-----rwt
777 => r----x--t
Of these, only 400 is remotely plausible.
BUGS
As far as I know, the precise definition of the mode bits is portable between varieties of Unix. The module should, however, examine stat.h or use some other method to find out if there are any local variations, because Unix being Unix, someone somewhere probably does it differently.
Maybe it file_mode should have an option that says that if the file is a symlink, to format the mode of the pointed to file instead of the mode of the link itself, the way ls -Ll does.
La-Nai 1.2.14-patch
La-Nai is a CMS-like system that has basic modules, blocks, and templates. more>>
The project is ready to create a Web site, but it has a new way of development called "Generated Framework", which means that a developer can generate module and source code from a command line script called "La-Mud".
In just a few minutes, you can create your own module or database driven module.
Installation:
1. Download release version at sourceforge
2. Extract to your home directory
3. Browse to http://your-domain-name/lanai-dir/
4. It ll start web installation follow the instruction until finish
5. Delete install directory after finish.
Enhancements:
- Multiple SQL injection vulnerabilities were fixed in three modules.
Qnext (Linux) 3.0.4
Universal Instant Messenger with Instant Media Sharing: MSN-Yahoo!-AIM-ICQ-Gtalk-Jabber-IRC. Stream unlimited music and share photos/files with anyone, instantly, no uploading. Plus 4-way video & 8-wa more>>
Qnext is the world?s first Universal Instant Media Messenger: a messenger that makes sharing photos and files and streaming music with friends as easy as sending a message. Start by importing your accounts from MSN, Yahoo, AIM, ICQ, Google Talk, IRC and Jabber (multiple accounts per network supported).your Hotmail, Yahoo Mail, GMail, AIM Mail, and .mac address books. Once your buddy list is complete, you can send and receive messages and files like you?re used to. But messages and files are just the beginning. By simply dragging and dropping as many files or folders of your music or photos into an open conversation window you can instantly stream that content with your friends. They will automatically receive a web link in a message that will take them to a webpage where they can listen to you music and playlists, or run a slideshow and download your photos! And you didn?t have to do anything more than drag a folder into a window and click ?share?. Qnext has many features that you won?t find anywhere else, for example: multi-network group chat. That?s right, a Qnext user can host a chat with friends from multiple different networks, and they can even talk to each other! You, your MSN buddy, and your AIM friend can all share a single conversation. Try dropping some music or photos into the chat, everyone will get the link! Convince a couple friends to use Qnext as well and you?ll be amazed at what Qnext users can do with each other: 4-way video chat, 8-way audio chat, multiplayer games, and secure file transfers of any size! Qnext also has a built-in Remote PC Access and Application Sharing tool called Qnext MyPC: Access your desktop from anywhere in the world as if you were sitting right in front of your computer.
Requirements: 512MB+ RAM, 800MHz+ CPU
Whats new in this version: Google Talk, Jabber and file transfers to any network are now supported. Music, photos, and files can now be shared just by dragging content into any open IM window.
<<lessSpirit Parser library 1.8.2
Spirit Parser library is an object-oriented, recursive descent parser generator framework. more>>
Parser objects are composed through operator overloading and the result is a backtracking LL(inf) parser that is capable of parsing rather ambiguous grammars.
The Spirit framework enables a target grammar to be written exclusively in C++. Inline EBNF grammar specifications can mix freely with other C++ code and, thanks to the generative power of C++ templates, are immediately executable. In retrospect, conventional compiler-compilers or parser-generators have to perform an additional translation step from the source EBNF code to C or C++ code.
Spirit is part of Boost Libraries, a peer-reviewed, open collaborative development effort.
Enhancements:
- Fixed bug where a match is a variant.
- added Jamfile/Jamrules from CVS to spirit-1.8.1/
- added boost-build.jam from boost to spirit-1.8.1/
- disabled template multi-threading in libs/spirit/test/Jamfile
- added a boost-header-include rule (from spirit-header-include) pointing to miniboost in libs/spirit/test/Jamfile
- Fixed if_p inconsistency
C++ Foundation Classes 0.1.4
C++ Foundation Classes package contains a Fully Overloaded String object that works with other classes. more>>
Installation:
The simplest way to compile this package is:
1. `cd to the directory containing the packages source code and type `./configure to configure the package for your system. If youre using `csh on an old version of System V, you might need to type `sh ./configure instead to prevent `csh from trying to execute `configure itself.
Running `configure takes awhile. While running, it prints some messages telling which features it is checking for.
2. Type `make to compile the package.
3. Optionally, type `make check to run any self-tests that come with the package.
4. Type `make install to install the programs and any data files and documentation.
5. You can remove the program binaries and object files from the source code directory by typing `make clean. To also remove the files that `configure created (so you can compile the package for a different kind of computer), type `make distclean. There is also a `make maintainer-clean target, but that is intended mainly for the packages developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution.
Common Text Transformation Library 2.08
Common Text Transformation Library is a C++ parser generator library. more>>
Concept of a substring plays major role in design of the text transformation library. CTTL substring is an object that interacts with fragments of text encapsulated by STL std::basic_string template class.
Template classes cttl::const_edge and cttl::edge, designed for constant and mutable data access, respectively, represent CTTL substrings. Substrings may be compared, inserted, deleted, or replaced across multiple text inputs. If content of text mutates, the substrings adjust their positions accordingly to the change. CTTL guarantees that substrings remain stable with respect to a potentially mutable text.
Within CTTL framework, a substring may be parsed with EBNF-like grammar. CTTL lexical analysis engine generates a stream of substrings corresponding to the parsed symbols. BNF and EBNF grammars can be written directly in C++.
Template meta-programming and operator overloading offer features to write C++ expressions that describe grammar rules. No additional steps of parsing, compiling, or generating source code are required. Compiled CTTL program implements LL(INF)-parser, the recursive-descent parser with infinite lookahead.
Enhancements:
- This release focuses on documentation enhancements, which include multiple documentation improvements and revisions.
- An alphabetical index of all CTTL facilities was added: http://cttl.sourceforge.net/documentation_idx.html.