yacc
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 34
byacc 1.9.1
Berkeley Yacc is an LALR(1) parser generator. more>>
Berkeley Yacc is an LALR(1) parser generator. Berkeley Yacc has been made as compatible as possible with AT&T Yacc. Berkeley Yacc can accept any input specification that conforms to the AT&T Yacc documentation. Specifications that take advantage of undocumented features of AT&T Yacc will probably be rejected.
Berkeley Yacc is distributed with no warranty whatever. The code is certain to contain errors. Neither the author nor any contributor takes responsibility for any consequences of its use.
Berkeley Yacc is in the public domain. The data structures and algorithms used in Berkeley Yacc are all either taken from documents available to the general public or are inventions of the author. Anyone may freely distribute
source or binary forms of Berkeley Yacc whether unchanged or modified. Distributers may charge whatever fees they can obtain for Berkeley Yacc. Programs generated by Berkeley Yacc may be distributed freely.
<<lessBerkeley Yacc is distributed with no warranty whatever. The code is certain to contain errors. Neither the author nor any contributor takes responsibility for any consequences of its use.
Berkeley Yacc is in the public domain. The data structures and algorithms used in Berkeley Yacc are all either taken from documents available to the general public or are inventions of the author. Anyone may freely distribute
source or binary forms of Berkeley Yacc whether unchanged or modified. Distributers may charge whatever fees they can obtain for Berkeley Yacc. Programs generated by Berkeley Yacc may be distributed freely.
Download (0.063MB)
Added: 2007-02-15 License: GPL (GNU General Public License) Price:
986 downloads
Berkeley Yacc
Berkeley Yacc is a high-quality yacc variant. more>>
Berkeley Yacc (byacc) is generally conceded to be the best yacc variant available. In contrast to bison, it is written to avoid dependencies upon a particular compiler.
Byacc was written around 1990 by Robert Corbett who is the original author of bison. Originally written in K&R C, I have modified it to conform to ANSI C, and made other improvements.
Enhancements:
- configure.in: add AC_ARG_PROGRAM to make --program-prefix, etc., work.
- makefile.in: first cut of script to support --program-prefix
- configure.in: reorder AC_INIT/AC_CONFIG_HEADER to make this "work" with autoconf 2.52
- makefile.in: modify so DESTDIR works
- makefile.in: use EXEEXT and OBJEXT
- configure.in: use CF_PROG_EXT generate a config.h
- defs.h: make this use the generated config.h
- skeleton.c: add a forward-reference for yyparse()
- aclocal.m4: add CF_CHECK_CACHE, needed for CF_PROG_EXT
- yacc.1: remove the discussion of TMPDIR since it is obsolete
- skeleton.c: fix a couple of minor compiler-warnings in the skeleton
- defs.h: remove action_file_name, etc., since we use tmpfile() now.
- main.c: use tmpfile() for opening the working files. This quiets an idiot-warning advertising the use of mkstemp().
- output.c: Do not close temporary-files here, since they are opened with tmpfile(). Just rewind them, and theyre ready to read back the data stored in them.
- test/grammar.output, test/grammar.tab.c, test/grammar.tab.h: RCS_BASE
- makefile.in: turn on "make check" rule
- test/calc.output, test/run_test.sh, test/calc.tab.h: RCS_BASE
- test/ftp.tab.c: yyparse() is now yyparse(void)
- test/calc.tab.c: RCS_BASE
- test/error.tab.c: yyparse() is now yyparse(void)
- test/README: RCS_BASE
- yacc.1: various typography fixes prompted by Debian #100947
- aclocal.m4, makefile.in, configure.in: RCS_BASE
- README: updated to note that this is not the original
<<lessByacc was written around 1990 by Robert Corbett who is the original author of bison. Originally written in K&R C, I have modified it to conform to ANSI C, and made other improvements.
Enhancements:
- configure.in: add AC_ARG_PROGRAM to make --program-prefix, etc., work.
- makefile.in: first cut of script to support --program-prefix
- configure.in: reorder AC_INIT/AC_CONFIG_HEADER to make this "work" with autoconf 2.52
- makefile.in: modify so DESTDIR works
- makefile.in: use EXEEXT and OBJEXT
- configure.in: use CF_PROG_EXT generate a config.h
- defs.h: make this use the generated config.h
- skeleton.c: add a forward-reference for yyparse()
- aclocal.m4: add CF_CHECK_CACHE, needed for CF_PROG_EXT
- yacc.1: remove the discussion of TMPDIR since it is obsolete
- skeleton.c: fix a couple of minor compiler-warnings in the skeleton
- defs.h: remove action_file_name, etc., since we use tmpfile() now.
- main.c: use tmpfile() for opening the working files. This quiets an idiot-warning advertising the use of mkstemp().
- output.c: Do not close temporary-files here, since they are opened with tmpfile(). Just rewind them, and theyre ready to read back the data stored in them.
- test/grammar.output, test/grammar.tab.c, test/grammar.tab.h: RCS_BASE
- makefile.in: turn on "make check" rule
- test/calc.output, test/run_test.sh, test/calc.tab.h: RCS_BASE
- test/ftp.tab.c: yyparse() is now yyparse(void)
- test/calc.tab.c: RCS_BASE
- test/error.tab.c: yyparse() is now yyparse(void)
- test/README: RCS_BASE
- yacc.1: various typography fixes prompted by Debian #100947
- aclocal.m4, makefile.in, configure.in: RCS_BASE
- README: updated to note that this is not the original
Download (0.12MB)
Added: 2005-04-13 License: Freely Distributable Price:
1679 downloads
Delphi Yacc & Lex 1.4
Delphi Yacc & Lex is a parser generator toolset for Delphi and Kylix, based on Turbo Pascal Lex and Yacc version 4.1. more>>
Delphi Yacc & Lex is a parser generator toolset for Delphi and Kylix, based on Turbo Pascal Lex and Yacc version 4.1.
The primary goal of Delphi Yacc & Lex is to clean up the code, and improve compatibility and maintainability.
The project started because the original Turbo Pascal Lex and Yacc did not compile well in Delphi 5+ or Kylix, the sourcecode was messy, and the last release or activity dates back to early 2000.
<<lessThe primary goal of Delphi Yacc & Lex is to clean up the code, and improve compatibility and maintainability.
The project started because the original Turbo Pascal Lex and Yacc did not compile well in Delphi 5+ or Kylix, the sourcecode was messy, and the last release or activity dates back to early 2000.
Download (0.21MB)
Added: 2005-12-22 License: GPL (GNU General Public License) Price:
837 downloads
XCC 0.6.1
XCC is a tool for building XML format parsers. more>>
XCC is a tool for building XML format parsers. One way to describe what XCC does is by analogy with a generic parser generator, e.g. yacc or bison.
Yacc needs a lexical analyzer to function properly, and that lexical analyzer is usually built with (f)lex. In the XML world, there are a few packages which fill in the role of lex (expat and libxml are the most known), but the high-level grammar parsing is usually done by a hand-written code; writing such a parser is a tedious and error-prone task.
XCC project was created to help developers in writing reliable easy-to-understood parsers for handling complex XML-based grammars.
Enhancements:
- The build process has been fixed.
<<lessYacc needs a lexical analyzer to function properly, and that lexical analyzer is usually built with (f)lex. In the XML world, there are a few packages which fill in the role of lex (expat and libxml are the most known), but the high-level grammar parsing is usually done by a hand-written code; writing such a parser is a tedious and error-prone task.
XCC project was created to help developers in writing reliable easy-to-understood parsers for handling complex XML-based grammars.
Enhancements:
- The build process has been fixed.
Download (0.33MB)
Added: 2007-01-27 License: GPL (GNU General Public License) Price:
1002 downloads
Yasm 0.6.1
Yasm is a complete rewrite of NASM. more>>
Yasm is a complete rewrite of the NASM assembler under the "new" BSD License (some portions are under other licenses, see COPYING for details).
Yasm project is designed from the ground up to allow for multiple assembler syntaxes to be supported (eg, TASM, GAS, NASM etc.) in addition to multiple output object formats and even multiple instruction sets. Another primary module of the overall design is an optimizer module.
The core focus of Yasm is not the "yasm" commandline frontend; rather, it is the Libyasm library and associated LoadableModules? (see the ProgrammerReferences for documentation).
Libyasm and the modules are intended for reuse in other sorts of programs dealing with code at the assembly level (compilers, debuggers, etc). Someday, libyasm may be packaged separately from the rest of Yasm.
Key Current User-Visible Yasm major features:>
- Nearly feature-complete lexing and parsing of (preprocessed) NASM syntax?.
- AMD64 support (enabled using "BITS 64" and "-m amd64" option)
- 64-bit (and larger) integer constants allowed (including math operations).
- Internationalization support via GNU gettext.
- A simple 2-pass optimizer (its a bit better than the NASM one).
- The "real" NASM preprocessor (imported from NASMs source tree).
- Binary object file? output (NASM style).
- COFF object file? output, for use with DJGPP.
- Win32 object file? output (including Win64/AMD64 support).
- STABS debug format?.
- ELF32 and ELF64 object file output. No debugging information included at this point.
- Portability; currently compilable on:
- UNIX and compatibles (FreeBSD and Linux tested, GNU configure based autoconfiguration)
- DOS (using DJGPP)
- Windows (using Visual C++ or CygWin).
Key Internal Main features:>
- A NASM syntax parser written in yacc. This simplifies the source code and increases performance: yacc-generated parsers are almost always faster than hand-written ones. Also, yacc (and its GNU implementation, bison) is an extremely well-tested and well-documented tool.
- Architecture-specific instruction parsers hand-written for simplicity and size, as well as to make it easy to add additional architectures while retaining the same front-end syntax. The blend of yacc for syntax and a hand-written parser for instructions strikes a great balance between the strengths and weaknesses of each approach.
- A NASM syntax? lexer written in re2c. A highly efficient scanner generator (almost always faster than lex/flex), its also very embeddable due to its code generation methodology, allowing a number of re2c scanners to be used in various places in yasm without any worries about naming conflicts.
- Many of the modular interfaces at least superficially finished. This is still an area that needs a lot of work.
- A small set of portable equivalants of useful functions that are standard on some systems (detected via configure), such as the queue(3) set of functions, strdup, strcasecmp, and mergesort.
- A decent (and growing) set of assembler test input files to test the entire assembler as well as specific modules.
Important Differences from NASM:
- Yasm defaults to reading from standard input if no files are specified. When an input file is specified, Yasm behaves like NASM.
- A number of command line options are different. Run "yasm --help" for a quick command line option summary, or read the full yasm(1) manpage for detailed descriptions of all command line options.
Enhancements:
- This release adds SSE4.1 and SSE4.2 instruction support, a .set directive in the GAS parser, and allowing Mach-O custom sections.
- Bugfixes include fixes to AMD Pacifica (SVM) instructions, absolute section handling, RIP-relative cross-section references in bin output, and many others.
<<lessYasm project is designed from the ground up to allow for multiple assembler syntaxes to be supported (eg, TASM, GAS, NASM etc.) in addition to multiple output object formats and even multiple instruction sets. Another primary module of the overall design is an optimizer module.
The core focus of Yasm is not the "yasm" commandline frontend; rather, it is the Libyasm library and associated LoadableModules? (see the ProgrammerReferences for documentation).
Libyasm and the modules are intended for reuse in other sorts of programs dealing with code at the assembly level (compilers, debuggers, etc). Someday, libyasm may be packaged separately from the rest of Yasm.
Key Current User-Visible Yasm major features:>
- Nearly feature-complete lexing and parsing of (preprocessed) NASM syntax?.
- AMD64 support (enabled using "BITS 64" and "-m amd64" option)
- 64-bit (and larger) integer constants allowed (including math operations).
- Internationalization support via GNU gettext.
- A simple 2-pass optimizer (its a bit better than the NASM one).
- The "real" NASM preprocessor (imported from NASMs source tree).
- Binary object file? output (NASM style).
- COFF object file? output, for use with DJGPP.
- Win32 object file? output (including Win64/AMD64 support).
- STABS debug format?.
- ELF32 and ELF64 object file output. No debugging information included at this point.
- Portability; currently compilable on:
- UNIX and compatibles (FreeBSD and Linux tested, GNU configure based autoconfiguration)
- DOS (using DJGPP)
- Windows (using Visual C++ or CygWin).
Key Internal Main features:>
- A NASM syntax parser written in yacc. This simplifies the source code and increases performance: yacc-generated parsers are almost always faster than hand-written ones. Also, yacc (and its GNU implementation, bison) is an extremely well-tested and well-documented tool.
- Architecture-specific instruction parsers hand-written for simplicity and size, as well as to make it easy to add additional architectures while retaining the same front-end syntax. The blend of yacc for syntax and a hand-written parser for instructions strikes a great balance between the strengths and weaknesses of each approach.
- A NASM syntax? lexer written in re2c. A highly efficient scanner generator (almost always faster than lex/flex), its also very embeddable due to its code generation methodology, allowing a number of re2c scanners to be used in various places in yasm without any worries about naming conflicts.
- Many of the modular interfaces at least superficially finished. This is still an area that needs a lot of work.
- A small set of portable equivalants of useful functions that are standard on some systems (detected via configure), such as the queue(3) set of functions, strdup, strcasecmp, and mergesort.
- A decent (and growing) set of assembler test input files to test the entire assembler as well as specific modules.
Important Differences from NASM:
- Yasm defaults to reading from standard input if no files are specified. When an input file is specified, Yasm behaves like NASM.
- A number of command line options are different. Run "yasm --help" for a quick command line option summary, or read the full yasm(1) manpage for detailed descriptions of all command line options.
Enhancements:
- This release adds SSE4.1 and SSE4.2 instruction support, a .set directive in the GAS parser, and allowing Mach-O custom sections.
- Bugfixes include fixes to AMD Pacifica (SVM) instructions, absolute section handling, RIP-relative cross-section references in bin output, and many others.
Download (1.1MB)
Added: 2007-06-16 License: BSD License Price:
876 downloads
yagg 1.4001
yagg, given YACC-like and LEX-like input files, generates a C++ program that generates all strings of a user-specified length. more>>
yagg, given YACC-like and LEX-like input files, generates a C++ program that generates all strings of a user-specified length. yagg can then be used to generate inputs for testing, or to validate that a grammar accepts the strings that you think it does.
The grammar file provides the grammar productions for string generation, along with optional action blocks that can perform context-sensitive checks in order to limit the generated strings. The LEX-like terminal generator file provides specifications that instruct the program how to generate strings for terminals in the grammar.
Enhancements:
- Added a section to the tutorial on controlling output formatting. (Thanks to Casiano Rodriguez Leon for the question.)
- Fixed a misspelling in the hexadecimal examples README.
- Updated the makefile version
- Fixed an assert failure that would occur if (1) a rule list has more than one nonterminal, (2) some nonterminal in the list except the last one had no strings for a given allocation, and (3) the last nonterminal had strings for the given allocation.
- Updated the Makefiles
- Updated the test cases for the pass-by-reference updates in 1.3000.
- Make it possible to call Print_Strings from anywhere in the program for debugging. Maybe Ill add a flag for it later.
- Added RBD example
<<lessThe grammar file provides the grammar productions for string generation, along with optional action blocks that can perform context-sensitive checks in order to limit the generated strings. The LEX-like terminal generator file provides specifications that instruct the program how to generate strings for terminals in the grammar.
Enhancements:
- Added a section to the tutorial on controlling output formatting. (Thanks to Casiano Rodriguez Leon for the question.)
- Fixed a misspelling in the hexadecimal examples README.
- Updated the makefile version
- Fixed an assert failure that would occur if (1) a rule list has more than one nonterminal, (2) some nonterminal in the list except the last one had no strings for a given allocation, and (3) the last nonterminal had strings for the given allocation.
- Updated the Makefiles
- Updated the test cases for the pass-by-reference updates in 1.3000.
- Make it possible to call Print_Strings from anywhere in the program for debugging. Maybe Ill add a flag for it later.
- Added RBD example
Download (0.19MB)
Added: 2007-04-01 License: GPL (GNU General Public License) Price:
938 downloads
Cocom 0.995
Cocom can create compilers, cross-compilers, interpreters, and other language processors. more>>
Cocom project is a toolset that is oriented towards the creation of compilers, cross-compilers, interpreters, and other language processors.
It consists of reusable packages (collection and memory management framework), a Sprut internal representation description (AST-to-AST) translator, a Nona code selector description translator (generator generator similiar to BEG, Twig, Burg, and Iburg), an MSTA syntax description translator (yacc-compatible parser with better error reporting), an OKA pipeline hazards description translator, and SHILKA keywords description translator (similiar to gperf but faster).
Enhancements:
- Ammunition.
- Package arithm works with numbers with bases upto 35. New tests.
- Earley parser is able to use rules costs to chose the translation with minimal cost. Some bugs are fixed. New tests.
- MSTA has an additional error recovery with minimal cost. New tests.
- Dino.
- Minor changes in the language (few new operators and special method `destroy).
- New functions.
- New package to work with sockets.
- Many fixed bugs.
- The sped up interpreter (upto 50%).
- Comparison tests with perl, python, tcl, awk.
- Many new tests.
- Improved documentation.
- OKA. The problem of possible incorrect automata generation because of wrong distribution of units to automata and the construction `exclusion has been fixed.
- Cocom and Dino have an additional distribution format `rpm.
<<lessIt consists of reusable packages (collection and memory management framework), a Sprut internal representation description (AST-to-AST) translator, a Nona code selector description translator (generator generator similiar to BEG, Twig, Burg, and Iburg), an MSTA syntax description translator (yacc-compatible parser with better error reporting), an OKA pipeline hazards description translator, and SHILKA keywords description translator (similiar to gperf but faster).
Enhancements:
- Ammunition.
- Package arithm works with numbers with bases upto 35. New tests.
- Earley parser is able to use rules costs to chose the translation with minimal cost. Some bugs are fixed. New tests.
- MSTA has an additional error recovery with minimal cost. New tests.
- Dino.
- Minor changes in the language (few new operators and special method `destroy).
- New functions.
- New package to work with sockets.
- Many fixed bugs.
- The sped up interpreter (upto 50%).
- Comparison tests with perl, python, tcl, awk.
- Many new tests.
- Improved documentation.
- OKA. The problem of possible incorrect automata generation because of wrong distribution of units to automata and the construction `exclusion has been fixed.
- Cocom and Dino have an additional distribution format `rpm.
Download (3.0MB)
Added: 2006-11-01 License: LGPL (GNU Lesser General Public License) Price:
1088 downloads
Radstock 0.66
Radstock is a tool to analyse RADIUS traffic on high volume radius servers. more>>
Radstock is a tool to analyse RADIUS traffic on high volume radius servers. It has the ability to fully decode each packet, and also has extensive filters capabilities to allow you to selectively match RADIUS packets.
It provides the ability to fully decode each packet. Here is some sample output.
The key feature of radstock is its ability to filter the packets shown based on any attribute. It will also listen out for responses to matched packets and display these as well. An example filter would be (all on one line):
radstock -e "(user-name = paul or user-name = bob) and exists nas-port-id"
To compile radstock you need the following libraries:
libpcap
flex or lex
bison/yacc
Once you have these, the following three commands should do just about
all you need.
/configure
make
make install
It has been successfully compiled on Linux and Solaris
platforms. Whether it works on them is a completely different story.
<<lessIt provides the ability to fully decode each packet. Here is some sample output.
The key feature of radstock is its ability to filter the packets shown based on any attribute. It will also listen out for responses to matched packets and display these as well. An example filter would be (all on one line):
radstock -e "(user-name = paul or user-name = bob) and exists nas-port-id"
To compile radstock you need the following libraries:
libpcap
flex or lex
bison/yacc
Once you have these, the following three commands should do just about
all you need.
/configure
make
make install
It has been successfully compiled on Linux and Solaris
platforms. Whether it works on them is a completely different story.
Download (0.060MB)
Added: 2006-07-04 License: GPL (GNU General Public License) Price:
1207 downloads
Parse::RecDescent 1.94
Parse::RecDescent is a Perl module to generate Recursive-Descent Parsers. more>>
Parse::RecDescent is a Perl module to generate Recursive-Descent Parsers.
SYNOPSIS
use Parse::RecDescent;
# Generate a parser from the specification in $grammar:
$parser = new Parse::RecDescent ($grammar);
# Generate a parser from the specification in $othergrammar
$anotherparser = new Parse::RecDescent ($othergrammar);
# Parse $text using rule startrule (which must be
# defined in $grammar):
$parser->startrule($text);
# Parse $text using rule otherrule (which must also
# be defined in $grammar):
$parser->otherrule($text);
# Change the universal token prefix pattern
# (the default is: s*):
$Parse::RecDescent::skip = [ t]+;
# Replace productions of existing rules (or create new ones)
# with the productions defined in $newgrammar:
$parser->Replace($newgrammar);
# Extend existing rules (or create new ones)
# by adding extra productions defined in $moregrammar:
$parser->Extend($moregrammar);
# Global flags (useful as command line arguments under -s):
$::RD_ERRORS # unless undefined, report fatal errors
$::RD_WARN # unless undefined, also report non-fatal problems
$::RD_HINT # if defined, also suggestion remedies
$::RD_TRACE # if defined, also trace parsers behaviour
$::RD_AUTOSTUB # if defined, generates "stubs" for undefined rules
$::RD_AUTOACTION # if defined, appends specified action to productions
Parse::RecDescent incrementally generates top-down recursive-descent text parsers from simple yacc-like grammar specifications.
Main features:
- Regular expressions or literal strings as terminals (tokens),
- Multiple (non-contiguous) productions for any rule,
- Repeated and optional subrules within productions,
- Full access to Perl within actions specified as part of the grammar,
- Simple automated error reporting during parser generation and parsing,
- The ability to commit to, uncommit to, or reject particular productions during a parse,
- The ability to pass data up and down the parse tree ("down" via subrule argument lists, "up" via subrule return values)
- Incremental extension of the parsing grammar (even during a parse),
- Precompilation of parser objects,
- User-definable reduce-reduce conflict resolution via "scoring" of matching productions.
<<lessSYNOPSIS
use Parse::RecDescent;
# Generate a parser from the specification in $grammar:
$parser = new Parse::RecDescent ($grammar);
# Generate a parser from the specification in $othergrammar
$anotherparser = new Parse::RecDescent ($othergrammar);
# Parse $text using rule startrule (which must be
# defined in $grammar):
$parser->startrule($text);
# Parse $text using rule otherrule (which must also
# be defined in $grammar):
$parser->otherrule($text);
# Change the universal token prefix pattern
# (the default is: s*):
$Parse::RecDescent::skip = [ t]+;
# Replace productions of existing rules (or create new ones)
# with the productions defined in $newgrammar:
$parser->Replace($newgrammar);
# Extend existing rules (or create new ones)
# by adding extra productions defined in $moregrammar:
$parser->Extend($moregrammar);
# Global flags (useful as command line arguments under -s):
$::RD_ERRORS # unless undefined, report fatal errors
$::RD_WARN # unless undefined, also report non-fatal problems
$::RD_HINT # if defined, also suggestion remedies
$::RD_TRACE # if defined, also trace parsers behaviour
$::RD_AUTOSTUB # if defined, generates "stubs" for undefined rules
$::RD_AUTOACTION # if defined, appends specified action to productions
Parse::RecDescent incrementally generates top-down recursive-descent text parsers from simple yacc-like grammar specifications.
Main features:
- Regular expressions or literal strings as terminals (tokens),
- Multiple (non-contiguous) productions for any rule,
- Repeated and optional subrules within productions,
- Full access to Perl within actions specified as part of the grammar,
- Simple automated error reporting during parser generation and parsing,
- The ability to commit to, uncommit to, or reject particular productions during a parse,
- The ability to pass data up and down the parse tree ("down" via subrule argument lists, "up" via subrule return values)
- Incremental extension of the parsing grammar (even during a parse),
- Precompilation of parser objects,
- User-definable reduce-reduce conflict resolution via "scoring" of matching productions.
Download (0.12MB)
Added: 2006-09-23 License: Perl Artistic License Price:
1131 downloads
Styx 1.7
Styx is a scanner/parser generator addressing some shortcomings of lex/yacc. more>>
Styx is a scanner and parser generator designed to address some shortcomings of the traditional lex/yacc combination.
It has unique features like automatic derivation of depth grammar, production of the derivation tree including its C interface which provides access to the abstract syntax tree, preservation of full source information and pretty printing to faciliate source-source translation, persistence to aid rapid interpreter writing.
For application in contemporary computing environments, it supports unicode, reentrancy and offers thread-safeness.
Last but not least, Styx works well under many different OSes, among them dos, windows, and serveral unixes.
It has been successfully used in many applications and is known to provide rapid compiler development. Both from our practical experience as well as from the amount of written code, the gain in development time for realistic languages versus lex/yacc is a factor of about 5-10.
Enhancements:
- fixes panic mode error recovery
- fixes token buffer restriction. The token length is now of type long.
- hopefully fixes some configure problems on freeBSD (concerning libdl)
- adds parsing support for binary files
<<lessIt has unique features like automatic derivation of depth grammar, production of the derivation tree including its C interface which provides access to the abstract syntax tree, preservation of full source information and pretty printing to faciliate source-source translation, persistence to aid rapid interpreter writing.
For application in contemporary computing environments, it supports unicode, reentrancy and offers thread-safeness.
Last but not least, Styx works well under many different OSes, among them dos, windows, and serveral unixes.
It has been successfully used in many applications and is known to provide rapid compiler development. Both from our practical experience as well as from the amount of written code, the gain in development time for realistic languages versus lex/yacc is a factor of about 5-10.
Enhancements:
- fixes panic mode error recovery
- fixes token buffer restriction. The token length is now of type long.
- hopefully fixes some configure problems on freeBSD (concerning libdl)
- adds parsing support for binary files
Download (2.0MB)
Added: 2005-04-22 License: LGPL (GNU Lesser General Public License) Price:
1647 downloads
yagg::Tutorial 1.4001
yagg::Tutorial is a Perl module that contains a tutorial for yagg. more>>
yagg::Tutorial is a Perl module that contains a tutorial for yagg.
SYNOPSIS
# To use the generator
./yagg -m nonterminals.yg terminals.lg
./output/progs/generate 5
This tutorial will show you how to use yagg, by way of two examples. In the first example, we create a simple logical expression generator from scratch. In the second example, we create a more sophisticated logical expression generator from existing parser/lexer input files, such as those used by YACC/Bison and LEX/FLEX. These examples, plus another more sophisticated fault tree generator are included with the distribution in the examples/ directory.
It is assumed that the reader knows a little about formal grammars. Ideally, the reader would have some experience writing grammars for input to parser generators like YACC and Bison.
<<lessSYNOPSIS
# To use the generator
./yagg -m nonterminals.yg terminals.lg
./output/progs/generate 5
This tutorial will show you how to use yagg, by way of two examples. In the first example, we create a simple logical expression generator from scratch. In the second example, we create a more sophisticated logical expression generator from existing parser/lexer input files, such as those used by YACC/Bison and LEX/FLEX. These examples, plus another more sophisticated fault tree generator are included with the distribution in the examples/ directory.
It is assumed that the reader knows a little about formal grammars. Ideally, the reader would have some experience writing grammars for input to parser generators like YACC and Bison.
Download (0.21MB)
Added: 2007-07-05 License: Perl Artistic License Price:
845 downloads
A practical lambda-calculator 2.2
A practical lambda-calculator is a Lambda-calculator with convenient commands and shortcuts. more>>
A practical lambda-calculator is a normal-order evaluator for the untyped lambda-calculus, extended with convenient commands and shortcuts to make programming in it more productive.
Shortcuts are distinguished constants that represent terms. Commands define new shortcuts, activate tracing of all reductions, compare terms modulo alpha-conversion, print all defined shortcuts and evaluation flags, etc.
Terms to evaluate and commands are entered at a read-eval-print-loop (REPL) "prompt" or "included" from a file by a special command. A Haskell branch is an embedding of the lambda calculator (as a domain-specific language) into Haskell. The calculator can be used interactively within Hugs or GHCi.
The present calculator implements what seems to be an efficient and elegant algorithm of normal order reductions. The algorithm is "more functional" than the traditionally used approach.
The algorithm seems identical to that employed by yacc sans one critical difference. The calculator also takes a more "functional" approach to the hygiene of beta-substitutions, which is achieved by coloring of identifiers where absolutely necessary. This approach is "more functional" because it avoids a global counter or the threading of the paint bucket through the whole the process. The integration of the calculator with Haskell lets us store terms in variables and easily and intuitively combine them.
The traditional recipe for normal-order reductions includes an unpleasant phrase "cook until done". The phrase makes it necessary to keep track of reduction attempts, and implies an ugly iterative algorithm. Were proposing what seems to be an efficient and elegant technique that can be implemented through intuitive re-writing rules.
Our calculator, like yacc, possesses a stack and works by doing a sequence of shift and reduce steps. The only significant difference from yacc is that the lambda-calculator "reparses" the result after the successful reduce step. The source and the target languages of our "parser" (lambda-calculator) are the same; therefore, the parser can indeed apply itself.
The parsing stack can be made implicit. In that case, the algorithm can be used for normalization of typed lambda-terms in Twelf.
The following examples show that lambda-calculus becomes a domain-specific language embedded into Haskell:
> c0 = f ^ x ^ x -- Church numeral 0
> succ = c ^ f ^ x ^ f # (c # f # x) -- Successor
> c1 = eval $ succ # c0 -- pre-evaluate other numerals
> c2 = eval $ succ # c1
> c3 = eval $ succ # c2
> c4 = eval $ succ # c3
It is indeed convenient to store terms in Haskell variables and pre-evaluate (i.e., normalize) them. They are indeed terms. We can always ask the interpreter to show the term. For example, show c4 yields (f. (x. f (f (f (f x))))).
let mul = a ^ b ^ f ^ a # (b # f) -- multiplication
eval $ mul # c1 ---> (b. b), the identity function
eval $ mul # c0 ---> (b. (f. (x. x))), which is "const 0"
These are algebraic results: multiplying any number by zero always gives zero. We can see now how lambda-calculus can be useful for theorem proving, even over universally-quantified formulas.
The calculator implements Dr. Fairbairns suggestion to limit the depth of printed terms. This makes it possible to evaluate and print some divergent terms (so-called tail-divergent terms):
Lambda_calc> let y_comb = f^((p^p#p) # (c ^ f#(c#c))) in eval $ y_comb#c
c (c (c (c (c (c (c (c (c (c (...))))))))))
It is amazing how well lambda-calculus and Haskell play together.
<<lessShortcuts are distinguished constants that represent terms. Commands define new shortcuts, activate tracing of all reductions, compare terms modulo alpha-conversion, print all defined shortcuts and evaluation flags, etc.
Terms to evaluate and commands are entered at a read-eval-print-loop (REPL) "prompt" or "included" from a file by a special command. A Haskell branch is an embedding of the lambda calculator (as a domain-specific language) into Haskell. The calculator can be used interactively within Hugs or GHCi.
The present calculator implements what seems to be an efficient and elegant algorithm of normal order reductions. The algorithm is "more functional" than the traditionally used approach.
The algorithm seems identical to that employed by yacc sans one critical difference. The calculator also takes a more "functional" approach to the hygiene of beta-substitutions, which is achieved by coloring of identifiers where absolutely necessary. This approach is "more functional" because it avoids a global counter or the threading of the paint bucket through the whole the process. The integration of the calculator with Haskell lets us store terms in variables and easily and intuitively combine them.
The traditional recipe for normal-order reductions includes an unpleasant phrase "cook until done". The phrase makes it necessary to keep track of reduction attempts, and implies an ugly iterative algorithm. Were proposing what seems to be an efficient and elegant technique that can be implemented through intuitive re-writing rules.
Our calculator, like yacc, possesses a stack and works by doing a sequence of shift and reduce steps. The only significant difference from yacc is that the lambda-calculator "reparses" the result after the successful reduce step. The source and the target languages of our "parser" (lambda-calculator) are the same; therefore, the parser can indeed apply itself.
The parsing stack can be made implicit. In that case, the algorithm can be used for normalization of typed lambda-terms in Twelf.
The following examples show that lambda-calculus becomes a domain-specific language embedded into Haskell:
> c0 = f ^ x ^ x -- Church numeral 0
> succ = c ^ f ^ x ^ f # (c # f # x) -- Successor
> c1 = eval $ succ # c0 -- pre-evaluate other numerals
> c2 = eval $ succ # c1
> c3 = eval $ succ # c2
> c4 = eval $ succ # c3
It is indeed convenient to store terms in Haskell variables and pre-evaluate (i.e., normalize) them. They are indeed terms. We can always ask the interpreter to show the term. For example, show c4 yields (f. (x. f (f (f (f x))))).
let mul = a ^ b ^ f ^ a # (b # f) -- multiplication
eval $ mul # c1 ---> (b. b), the identity function
eval $ mul # c0 ---> (b. (f. (x. x))), which is "const 0"
These are algebraic results: multiplying any number by zero always gives zero. We can see now how lambda-calculus can be useful for theorem proving, even over universally-quantified formulas.
The calculator implements Dr. Fairbairns suggestion to limit the depth of printed terms. This makes it possible to evaluate and print some divergent terms (so-called tail-divergent terms):
Lambda_calc> let y_comb = f^((p^p#p) # (c ^ f#(c#c))) in eval $ y_comb#c
c (c (c (c (c (c (c (c (c (c (...))))))))))
It is amazing how well lambda-calculus and Haskell play together.
Download (0.021MB)
Added: 2005-04-01 License: Public Domain Price:
1672 downloads
Hoc 9.1.2
Hoc is an interpreted language for floating-point calculations. more>>
Hoc (short from High Order Calculator) is an interpreted language for floating-point calculations. Its most basic use is as a powerful and convenient calculator, interactively evaluating expressions such as 1+2*sin(0.7). But hoc is no ordinary calculator: It also lets you assign values to variables, define your own functions, and use loops, conditionals, and everything else youd expect in a programming language.
The Hoc language was introduced and developed in the book The Unix Programming Environment, by Brian Kernighan and Rob Pike (Addison-Wesley, 1984). Countless people are indebted to this book, and its author, for introducing them to Unix and its fantastic programming tools like the shell, C, and Yacc. Some of these people were strongly impressed by Kernighan and Pikes feat of building an interpreter so easily (something which, before the advent of Yacc, was to be attempted only by experts).
One of these people was Nadav HarEl, the author of this package, who in 1986, as an 11 year old boy, typed in the source code of "Hoc 6" from the book, and started using it and once in a while added to it features that he wished for. This package is the result of almost a decade of such slow evolution of Hoc. It has numerous improvements over the books version, which are described below. The code was also modernized, to compile and run on a large variety of machines and compilers that appeared since 1984, and most importantly on ANSI C compilers (although the code should still work on a K&R C compiler, if you can find one in a museum).
Compiling and Installing:
First run configure, to generate the Makefile.
Then, compile and install hoc:
make
make install
<<lessThe Hoc language was introduced and developed in the book The Unix Programming Environment, by Brian Kernighan and Rob Pike (Addison-Wesley, 1984). Countless people are indebted to this book, and its author, for introducing them to Unix and its fantastic programming tools like the shell, C, and Yacc. Some of these people were strongly impressed by Kernighan and Pikes feat of building an interpreter so easily (something which, before the advent of Yacc, was to be attempted only by experts).
One of these people was Nadav HarEl, the author of this package, who in 1986, as an 11 year old boy, typed in the source code of "Hoc 6" from the book, and started using it and once in a while added to it features that he wished for. This package is the result of almost a decade of such slow evolution of Hoc. It has numerous improvements over the books version, which are described below. The code was also modernized, to compile and run on a large variety of machines and compilers that appeared since 1984, and most importantly on ANSI C compilers (although the code should still work on a K&R C compiler, if you can find one in a museum).
Compiling and Installing:
First run configure, to generate the Makefile.
Then, compile and install hoc:
make
make install
Download (0.060MB)
Added: 2007-08-20 License: BSD License Price:
796 downloads
Nasal 1.0
Nasal is a simple, small, yet full-featured embeddable scripting language. more>>
Nasal is a language that I wrote for use in a personal project. Ostensibly it was because I was frustrated with the dearth of small-but-complete embeddable scripting languages, but of course I really wrote it because it was fun.
It is still young and incomplete in a few places, but is under active development and has been integrated as the extension language for the FlightGear simulator.
Documentation is still sparse. There is a design document available, which talks at length about the "whys" behind the design of Nasal and includes documentation for the built-in library functions.
More useful to the experienced programmer is the tutorial-style sample code, which explains and demonstrates all the syntax features of the language.
Like perl, python and javascript, nasal uses vectors (expandable arrays) and hash tables as its native data format. This is a well-understood idiom, and it works very well. I felt no need to rock the boat here.
Like perl, and unlike everything else, nasal combines numbers and strings into a single "scalar" datatype. No conversion needs to happen in user code, which simplifies common string handling tasks.
Like perl, but unlike python, hash keys must by scalars in nasal. Python supports a "tuple" constant type that can be used as well, but there is no equivalent in nasal (you cant use vectors as keys because they might change after the insertion).
Like perl and python, nasal uses a # character to indicate and end-of-line comment. There is no multiline begin/end comment syntax as in Javascript.
Like perl, nasal functions do not have named parameters. They get their arguments in a vector named "arg", and can extract them however they like. Unlike perl, Nasal takes advantage of this feature to do away with function "declaration" entirly; see below.
Like python, there is no hidden local object scope in a function call. The object on which a method was called is available to a function as a local variable named "me" (python calls this "self" by convention, but because nasal has no declared function arguments, there is no opportunity to change it).
Like perl, "objects" in nasal are simply hash tables. Looking an item up by name in a hash table and extracting a symbol for an object are just different syntax for the same operation (but read on for an important exception):
a["b"] = 1 means the same thing as: a.b = 1
The above paragraph is a minor lie. The "dot" syntax is also the clue to the interpreter to "save" the left hand side as the "me" reference if the expression is used as a function/method call. That is, these expressions are not equivalent (one is a plain function call, the other a method invocation on the object "a"):
a["b"](arg1, arg2) isnt the same as: a.b(arg1, arg2)
Like javascript, nasal lacks a specific "class" syntax for OOP programming. Instead, classes are simply objects. Each object supports a "parents" member array; symbol lookup on the object at runtime bounces to the parents (and the parents parents) if the symbol is not found in the hash. The parents field is just like any other object field, you can set it however you like and even change it at runtime if you are feeling especially perverse.
Like lisp, javascript and perl, nasal supports lexical closures. This means that the local symbol namespace available to your function when it is assigned remain constant over time. If you dont know what this means, you dont need to care. It is this feature that allows functions to use variables declared in the outer scope when it is defined (e.g. seeing "module" variables).
Like all other scripting languages, functions are just symbols in a namespace, but unlike all other scripting languages, there is no function "declaration" syntax. A function is always an anonymous object (a "lambda," in the parlance), which you assign to a variable in order to use. Like so:
myfunction = func { arg[0] + 1 }
myfunction(1); # returns 2
One annoyance of this feature is that Nasal functions dont have unique internal "names". So a debugging or exception stack trace can only give you a source line number, and not a function name as reference.
Nasal has a straightforward, readable syntax which is closest to javascript among other scripting languages. Like later versions of javascript, it includes has a hash lookup syntax as well as an object field accessor syntax (that is, you can do both a.b and a["b"]).
Unlike python, nasal has a grammar which is not whitespace-sensitive. This doesnt make python hard to write, and it arguably makes it easier to read. But it is different from the way the rest of the world works, and makes python distinctly unsuitable for "inline" environments (consider PHP, Javascript, ASP or in-configuration-file scripts) where it needs to live as a plain old string inside of another programs code or data file.
Nasal garbage collects runtime storage, so the programmer need not worry about manual allocation, or even circular references. The current implementation is a simple mark/sweep collector, which should be acceptable for most applications. Future enhancements will include a "return early" capability for latency-critical applications. The collector can be instructred to return after a certain maximum delay, and be restarted later. Fancy items like generational collectors fail the "small and simple" criteria and are not likely to be included.
Like python, nasal supports exception handling as a first-class language feature, with built-in runtime-inspectable stack trace. Rather like perl, however, there is no special "try" syntax for exception handling, nor inheritance-based catching semantics. Instead, you call a "try" function on another function, and inspect the return value on your own. Code simply calls die with an argument list, which is returned from the closest enclosing try() invocation. Elaborate exception handling isnt really appropriate for embedded scripting languages. [NOTE: this isnt finished yet]
Nasal tries to be stricter than perl. Operations like converting a non-numeric string value to a number, reading or writing past the end of an array or operating on a nil reference, which are generally legal in perl, throw exceptions in nasal. Perl sometimes bends over backwards to do something "reasonable" with your instructions (e.g. whats the boolean truth value of a hash reference?); nasal doesnt try ("error: non-scalar used in boolean context at line 92")
Nasal is very small, very simple, written in ANSI C, and generally an excellent choice for embedded applications. It uses a simple and transparent syntax interpretable by a simple "bracket matching and operator precedence" parser. It does not depend on any third party libraries other than the standard C library. It does not depend on third party tools like (f)lex and yacc/bison. It builds simply and easily, supports a reasonably simple extension API and cohabitates well with other code.
Nasal makes no use of the processor stack when running recursive code. This is important for embedded languages as it provides the ability to "exit early" from a Nasal context. An outside application may have realtime constraints, and Nasal can be instructed to run for only a certain number of "cycles" before returning. Later calls will automatically pick up the interpreter state where it left off.
Nasal provides "minimal threadsafety". Multithreaded operations on Nasal objects are safe in the sense that they cannot crash or corrupt the interpreter. They are not guaranteed to be atomic. In particular, poorly synchronized insertions into containers can "drop" objects into oblivion (which is OK from an interpreter stability standpoint, since the GC will clean them up normally). Race conditions have to be the programmers problem anyway, this is just another symptom. Garbage collection will block all threads before running. [NOTE: this part is still unimplemented.]
Enhancements:
- This release contains the updates that have been available in SimGear for some time now.
- Important new functionality includes bugfixes, many performance enhancements, a declared function argument syntax, a ternary (?:) operator, indexable and mutable string objects, interpreter thread safety features, and much work to the "standard" library (including stdio, bitfields, Unix system calls, and PCRE regular expressions).
<<lessIt is still young and incomplete in a few places, but is under active development and has been integrated as the extension language for the FlightGear simulator.
Documentation is still sparse. There is a design document available, which talks at length about the "whys" behind the design of Nasal and includes documentation for the built-in library functions.
More useful to the experienced programmer is the tutorial-style sample code, which explains and demonstrates all the syntax features of the language.
Like perl, python and javascript, nasal uses vectors (expandable arrays) and hash tables as its native data format. This is a well-understood idiom, and it works very well. I felt no need to rock the boat here.
Like perl, and unlike everything else, nasal combines numbers and strings into a single "scalar" datatype. No conversion needs to happen in user code, which simplifies common string handling tasks.
Like perl, but unlike python, hash keys must by scalars in nasal. Python supports a "tuple" constant type that can be used as well, but there is no equivalent in nasal (you cant use vectors as keys because they might change after the insertion).
Like perl and python, nasal uses a # character to indicate and end-of-line comment. There is no multiline begin/end comment syntax as in Javascript.
Like perl, nasal functions do not have named parameters. They get their arguments in a vector named "arg", and can extract them however they like. Unlike perl, Nasal takes advantage of this feature to do away with function "declaration" entirly; see below.
Like python, there is no hidden local object scope in a function call. The object on which a method was called is available to a function as a local variable named "me" (python calls this "self" by convention, but because nasal has no declared function arguments, there is no opportunity to change it).
Like perl, "objects" in nasal are simply hash tables. Looking an item up by name in a hash table and extracting a symbol for an object are just different syntax for the same operation (but read on for an important exception):
a["b"] = 1 means the same thing as: a.b = 1
The above paragraph is a minor lie. The "dot" syntax is also the clue to the interpreter to "save" the left hand side as the "me" reference if the expression is used as a function/method call. That is, these expressions are not equivalent (one is a plain function call, the other a method invocation on the object "a"):
a["b"](arg1, arg2) isnt the same as: a.b(arg1, arg2)
Like javascript, nasal lacks a specific "class" syntax for OOP programming. Instead, classes are simply objects. Each object supports a "parents" member array; symbol lookup on the object at runtime bounces to the parents (and the parents parents) if the symbol is not found in the hash. The parents field is just like any other object field, you can set it however you like and even change it at runtime if you are feeling especially perverse.
Like lisp, javascript and perl, nasal supports lexical closures. This means that the local symbol namespace available to your function when it is assigned remain constant over time. If you dont know what this means, you dont need to care. It is this feature that allows functions to use variables declared in the outer scope when it is defined (e.g. seeing "module" variables).
Like all other scripting languages, functions are just symbols in a namespace, but unlike all other scripting languages, there is no function "declaration" syntax. A function is always an anonymous object (a "lambda," in the parlance), which you assign to a variable in order to use. Like so:
myfunction = func { arg[0] + 1 }
myfunction(1); # returns 2
One annoyance of this feature is that Nasal functions dont have unique internal "names". So a debugging or exception stack trace can only give you a source line number, and not a function name as reference.
Nasal has a straightforward, readable syntax which is closest to javascript among other scripting languages. Like later versions of javascript, it includes has a hash lookup syntax as well as an object field accessor syntax (that is, you can do both a.b and a["b"]).
Unlike python, nasal has a grammar which is not whitespace-sensitive. This doesnt make python hard to write, and it arguably makes it easier to read. But it is different from the way the rest of the world works, and makes python distinctly unsuitable for "inline" environments (consider PHP, Javascript, ASP or in-configuration-file scripts) where it needs to live as a plain old string inside of another programs code or data file.
Nasal garbage collects runtime storage, so the programmer need not worry about manual allocation, or even circular references. The current implementation is a simple mark/sweep collector, which should be acceptable for most applications. Future enhancements will include a "return early" capability for latency-critical applications. The collector can be instructred to return after a certain maximum delay, and be restarted later. Fancy items like generational collectors fail the "small and simple" criteria and are not likely to be included.
Like python, nasal supports exception handling as a first-class language feature, with built-in runtime-inspectable stack trace. Rather like perl, however, there is no special "try" syntax for exception handling, nor inheritance-based catching semantics. Instead, you call a "try" function on another function, and inspect the return value on your own. Code simply calls die with an argument list, which is returned from the closest enclosing try() invocation. Elaborate exception handling isnt really appropriate for embedded scripting languages. [NOTE: this isnt finished yet]
Nasal tries to be stricter than perl. Operations like converting a non-numeric string value to a number, reading or writing past the end of an array or operating on a nil reference, which are generally legal in perl, throw exceptions in nasal. Perl sometimes bends over backwards to do something "reasonable" with your instructions (e.g. whats the boolean truth value of a hash reference?); nasal doesnt try ("error: non-scalar used in boolean context at line 92")
Nasal is very small, very simple, written in ANSI C, and generally an excellent choice for embedded applications. It uses a simple and transparent syntax interpretable by a simple "bracket matching and operator precedence" parser. It does not depend on any third party libraries other than the standard C library. It does not depend on third party tools like (f)lex and yacc/bison. It builds simply and easily, supports a reasonably simple extension API and cohabitates well with other code.
Nasal makes no use of the processor stack when running recursive code. This is important for embedded languages as it provides the ability to "exit early" from a Nasal context. An outside application may have realtime constraints, and Nasal can be instructed to run for only a certain number of "cycles" before returning. Later calls will automatically pick up the interpreter state where it left off.
Nasal provides "minimal threadsafety". Multithreaded operations on Nasal objects are safe in the sense that they cannot crash or corrupt the interpreter. They are not guaranteed to be atomic. In particular, poorly synchronized insertions into containers can "drop" objects into oblivion (which is OK from an interpreter stability standpoint, since the GC will clean them up normally). Race conditions have to be the programmers problem anyway, this is just another symptom. Garbage collection will block all threads before running. [NOTE: this part is still unimplemented.]
Enhancements:
- This release contains the updates that have been available in SimGear for some time now.
- Important new functionality includes bugfixes, many performance enhancements, a declared function argument syntax, a ternary (?:) operator, indexable and mutable string objects, interpreter thread safety features, and much work to the "standard" library (including stdio, bitfields, Unix system calls, and PCRE regular expressions).
Download (0.10MB)
Added: 2006-07-04 License: LGPL (GNU Lesser General Public License) Price:
1209 downloads
y2l 1.1.1.1
y2l project is a acc to LaTeX grammar pretty printer. more>>
y2l project is a acc to LaTeX grammar pretty printer.
y2l takes a yacc(1) grammar description file and generates an EBNF (Extended Backus-Naur Form) grammar from it.
By default, the output will be a LaTeX(1) longtable environment, that can be input{} into any LaTeX document.
Automatic substitution of symbolic terminals can also be taken care of.
Options control whether any optimization should be done on the grammar, and whether plain ASCII output should be generated instead.
<<lessy2l takes a yacc(1) grammar description file and generates an EBNF (Extended Backus-Naur Form) grammar from it.
By default, the output will be a LaTeX(1) longtable environment, that can be input{} into any LaTeX document.
Automatic substitution of symbolic terminals can also be taken care of.
Options control whether any optimization should be done on the grammar, and whether plain ASCII output should be generated instead.
Download (0.012MB)
Added: 2006-10-05 License: Artistic License Price:
1114 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above yacc search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed