parsing
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 1251
Parsing 1.3
Parsing module is a pure-Python module that implements an LR(1) parser generator, as well as CFSM and GLR parser drivers. more>> <<less
Download (0.081MB)
Added: 2007-08-14 License: MIT/X Consortium License Price:
805 downloads
SJPT: Simple Java Parsing Toolkit
SJPT: Simple Java Parsing Toolkit is a simple Java parser toolkit. more>>
SJPT is parsing toolkit that supports both top-down (LL(1) and Simple Precedence) and bottom-up parsing (LR(0), SLR(1), LR(1) and LALR(1)).
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.
<<lessThe 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.
Download (0.26MB)
Added: 2005-04-22 License: GPL (GNU General Public License) Price:
1650 downloads
Parse::RPN 2.34
Parse::RPN is a minimalist RPN parser/processor (a little like FORTH). more>>
Parse::RPN is a minimalist RPN parser/processor (a little like FORTH).
SYNOPSIS
use Parse::RPN;
$result=rpn(string ...);
@results=rpn(string ...);
$error=rpn_error();
string... is a list of RPN operator and value separated by a coma in scalar mode RPN return the result of the calculation (If the stack contain more then one element, you receive a warning and the top value on the stack) in array mode, you receive the content of the stack after evaluation
rpn() receive in entry a scalar of one or more elements coma separated and evaluate as an RPN (Reverse Polish Notation) command. The function split all elements and put in the stack. The operator are case sensitive. The operator are detect as is, if they are alone in the element of the stack. Extra space before or after are allowed (e.g "3,4,ADD" here ADD is an opeartor but it is not the case in "3,4,ADD 1") If element is not part of the predefined operator (dictionary), the element is push as a litteral.
If you would like to put a string which is part of the dictionary, put it between quote or double-quote (e.g "3,4,ADD" here ADD is a literal and the evaluation reurn ADD and a warning because the stack is not empty) If the string contain a coma, you need also to quote or double-quote the string. (be care to close your quoted or double-quoted string)
The evaluation follow the rule of RPN or FORTH or POSTCRIPT or pockect calcutor HP. Look on web for documentation about the use of RPN notation.
I use this module in a application where the final user need to create an maintain a configuration file with the possibility to do calculation on variable returned from application.
The idea of this module is comming from Math::RPN of Owen DeLong, owen@delong.com that I used for more then a year before some of my customer would like more ... I correct a bug (interversion of > and >=), add the STRING function, pattern search and some STACK functions.
rpn_error() return the last error from the evaluation (illegal division by 0, error from the PERL function execution...) each time that rpn() is call the rpn_error() is reinitianised.
<<lessSYNOPSIS
use Parse::RPN;
$result=rpn(string ...);
@results=rpn(string ...);
$error=rpn_error();
string... is a list of RPN operator and value separated by a coma in scalar mode RPN return the result of the calculation (If the stack contain more then one element, you receive a warning and the top value on the stack) in array mode, you receive the content of the stack after evaluation
rpn() receive in entry a scalar of one or more elements coma separated and evaluate as an RPN (Reverse Polish Notation) command. The function split all elements and put in the stack. The operator are case sensitive. The operator are detect as is, if they are alone in the element of the stack. Extra space before or after are allowed (e.g "3,4,ADD" here ADD is an opeartor but it is not the case in "3,4,ADD 1") If element is not part of the predefined operator (dictionary), the element is push as a litteral.
If you would like to put a string which is part of the dictionary, put it between quote or double-quote (e.g "3,4,ADD" here ADD is a literal and the evaluation reurn ADD and a warning because the stack is not empty) If the string contain a coma, you need also to quote or double-quote the string. (be care to close your quoted or double-quoted string)
The evaluation follow the rule of RPN or FORTH or POSTCRIPT or pockect calcutor HP. Look on web for documentation about the use of RPN notation.
I use this module in a application where the final user need to create an maintain a configuration file with the possibility to do calculation on variable returned from application.
The idea of this module is comming from Math::RPN of Owen DeLong, owen@delong.com that I used for more then a year before some of my customer would like more ... I correct a bug (interversion of > and >=), add the STRING function, pattern search and some STACK functions.
rpn_error() return the last error from the evaluation (illegal division by 0, error from the PERL function execution...) each time that rpn() is call the rpn_error() is reinitianised.
Download (0.025MB)
Added: 2007-06-27 License: Perl Artistic License Price:
851 downloads
DParser 1.15
DParser is an simple but powerful tool for parsing. more>>
DParser project is an simple but powerful tool for parsing. You can specify the form of the text to be parsed using a combination of regular expressions and grammar productions.
Because of the parsing technique (technically a scannerless GLR parser based on the Tomita algorithm) there are no restrictions.
The grammar can be ambiguous, right or left recursive, have any number of null productions, and because there is no seperate tokenizer, can include whitespace in terminals and have terminals which are prefixes of other terminals.
DParser handles not just well formed computer languages and data files, but just about any wacky situation that occurs in the real world.
Main features:
- Powerful GLR parsing
- Simple EBNF-style grammars and regular expression terminals
- Priorities and associativities for token and rules
- Built-in error recovery
- Speculative actions (for semantic disambiguation)
- Auto-building of parse tree (optionally)
- Final actions as you go, or on the complete parse tree
- Tree walkers and default actions (multi-pass compilation support)
- Symbol table built for ambiguous parsing
- Partial parses, recursive parsing, parsing starting with any non-terminal
- Whitespace can be specified as a subgrammar
- External (C call interface) tokenizers and external terminal scanners
- Good asymptotically efficiency
- Comes with ANSI-C, Python and Verilog grammars
- Comes with full source
- Portable C for easy compilation and linking
- BSD licence, so you can included it in your application without worrying about licensing
Enhancements:
- Removed call to exec in python interface (Brian Sabbey)
- Fix binary_op_left in python interface (Brian Sabbey)
<<lessBecause of the parsing technique (technically a scannerless GLR parser based on the Tomita algorithm) there are no restrictions.
The grammar can be ambiguous, right or left recursive, have any number of null productions, and because there is no seperate tokenizer, can include whitespace in terminals and have terminals which are prefixes of other terminals.
DParser handles not just well formed computer languages and data files, but just about any wacky situation that occurs in the real world.
Main features:
- Powerful GLR parsing
- Simple EBNF-style grammars and regular expression terminals
- Priorities and associativities for token and rules
- Built-in error recovery
- Speculative actions (for semantic disambiguation)
- Auto-building of parse tree (optionally)
- Final actions as you go, or on the complete parse tree
- Tree walkers and default actions (multi-pass compilation support)
- Symbol table built for ambiguous parsing
- Partial parses, recursive parsing, parsing starting with any non-terminal
- Whitespace can be specified as a subgrammar
- External (C call interface) tokenizers and external terminal scanners
- Good asymptotically efficiency
- Comes with ANSI-C, Python and Verilog grammars
- Comes with full source
- Portable C for easy compilation and linking
- BSD licence, so you can included it in your application without worrying about licensing
Enhancements:
- Removed call to exec in python interface (Brian Sabbey)
- Fix binary_op_left in python interface (Brian Sabbey)
Download (0.26MB)
Added: 2006-10-18 License: BSD License Price:
1103 downloads
DTDParse 2.00
DTDParse project is a tool for parsing SGML and XML DTDs. more>>
DTDParse project is a tool for parsing SGML and XML DTDs.
The primary motivation for writing it was to provide a framework for building documentation for DTDs, but other applications are easy to imagine.
<<lessThe primary motivation for writing it was to provide a framework for building documentation for DTDs, but other applications are easy to imagine.
Download (0.056MB)
Added: 2006-10-05 License: GPL (GNU General Public License) Price:
1114 downloads
Parse::Nibbler 1.10
Parse::Nibbler is Perl module to parse huge files using grammars written in pure perl. more>>
Parse::Nibbler is Perl module to parse huge files using grammars written in pure perl.
Create a parser object using the ->new method. This method is provided by the Parse::Nibbler module and should not be overridden.
The main functionality of the Parse::Nibbler module is the Register subroutine. This subroutine is used to define the rules of your grammar. The Register subroutine takes two parameters: A string and a code reference.
The string is the name of the rule (i.e. the name of the subroutine/method)
The code reference is a reference to the code to execute for this rule.
The Register subroutine will take the code reference, wrap it up in another subroutine that acts as a closure, and then installs that code reference as a subroutine with the name matching the given string.
The wrapper code (the closure) is the same for every rule. The wrapper code handles quantifiers, calls the rule, and decides what to do based on the rule passing or failing.
A rule is a code reference with a given string name that have been passed to Register. Here is an example of a rule:
Register ( Name, sub { my $p = shift; $p->AlternateValues( Jim, Scotty, Spock );
}
);
The parser object will always be passed in as the first parameter to your rule. You must pass this into any further rules or any Parse::Nibbler methods.
In the above example, the rule, "Name" is Registered. "Name" calls one of the builtin methods, AlternateValues, defined below. Once a rule is Registered, other rules can call it:
Register ( MedicalDiagnosis, sub { my $p = shift; $p->AlternateValues("Hes", "Shes"); $p->ValueIs("dead"); $p->ValueIs(","); $p->Name; $p->ValueIs("!"); } );
This code registers a rule called "MedicalDiagnosis". It uses some builtin methods, but it also calls the rule just registered, "Name".
Once a user defines a rule, they can use it in other rules by simply calling it as they would call a method.
Rules registered with the Parse::Nibbler module can be called with quantifiers. Quantifiers are passed into the Rule when you call it in your grammar by passing in a string that matches the format described here.
Quantifiers allow you to specify the quantity of rules present. Quantifiers also allow you to specify whether multiple rules have separators.
Quantifiers are specified using the following string format:
{quantifier}
This indicates that there are zero or one Name rules expected: $p->Name({?});
This indicates that there are zero or more Name rules expected: $p->Name({*});
This indicates that there are one or more Name rules expected: $p->Name({+});
This indicates that there are exactly three Name rules expected: $p->Name({3});
This indicates there are 1 to 3 Name rules expected: $p->Name({1:3});
This indicates there are at least 2 Name rules expected: $p->Name({2:);
Separators are specified using the following string format:
/separator/
This indicates 1 or more Name rules, each separated by a comma:
$p->Name({1:}/,/);
It is the job of the Register function to make sure this additional functionality is provided transparently and automagically to you.
If you call a rule with no quantifier and no separator, the rule will assume the quantifier is 1 and there is no separator.
Additional Parse::Nibbler methods are provided to simplify rule definition and to provide smart, automatic error handling, etc. You grammars should only call other rules that you defined, or these methods explained below.
(Note: these methods do not take quantifiers)
############### Method: ValueIs ###############
Parameters: One parameter, required. A string containing the expected value.
Example: $p->ValueIs( stringvalue );
Description:
This method will look at the next lexical and determine if its value matches that of the stringvalue given as a parameter. If it does not match, an exception is raised and the rule fails.
If the values do match, then the parser stores the lexical, and the rule continues.
####################### Method: AlternateValues #######################
Parameters: A list of string parameters, at least two values.
Example: $p-AlternateValues( value1, value2 );
Description:
This method behaves like the ValueIs method, except that it will recieve a list of allowed alternate expected values. The first match that succeeds causes the rule to pass and return.
If no match occurs, then an exception is raised and the rule aborts.
If a match does occur, the parser stores the lexical, and the rule continues.
############## Method: TypeIs ##############
Parameters: One parameter, required. A string containing the expected type.
Description:
This method will look at the next lexical item, and determine if the lexical type matches the type given as a parameter.
Valid type values depend on the Lexer that you use, but possible values may include "Identifier" and "Number", etc.
Use this in a case where your rule requires an identifier type, for example, but it does not care what the name of the identifier is for the rule.
If a match occurs, the parser stores the lexical and the rule continues.
If a match does not occur, an exception is raised, and the rule aborts.
###################### Method: AlternateRules ######################
Parameters: A list of string parameters, at least two.
Example: $p->AlternateRules( Rule1, Rule2 );
Description:
You can describe rule alternation in your rule by calling this method. The method takes a list of strings whose string values match the names of the valid alternate rule names.
In the above example, the McCoy rule is either a declaration of profession or a medical diagnosis. These are two rules that are defined in the same package. The AlternateRules method allows you to define multiple rules that may be valid at the same point in the text.
If a rule in the parameter list succeeds, the AlternateRule method succeeds, and returns immediately.
If no rule succeeds, an exception is thrown, and the rule aborts.
This rule expects either a "DeclareProfession" rule or a "MedicalDiagnosis" rule to be present.
Register ( McCoy, sub { my $p = shift; $p->AlternateRules( DeclareProfession, MedicalDiagnosis ); } );
You can specify quantifiers as part of the alternate rule strings.
$p->AlternateRules( DeclareProfession({+}), MedicalDiagnosis );
The above example indicates that you can have one or more DeclareProfession rules OR ALTERNATELY you can have exactly one MedicalDiagnosis rule.
EXPORT
Register, used to register the rules in your grammar.
<<lessCreate a parser object using the ->new method. This method is provided by the Parse::Nibbler module and should not be overridden.
The main functionality of the Parse::Nibbler module is the Register subroutine. This subroutine is used to define the rules of your grammar. The Register subroutine takes two parameters: A string and a code reference.
The string is the name of the rule (i.e. the name of the subroutine/method)
The code reference is a reference to the code to execute for this rule.
The Register subroutine will take the code reference, wrap it up in another subroutine that acts as a closure, and then installs that code reference as a subroutine with the name matching the given string.
The wrapper code (the closure) is the same for every rule. The wrapper code handles quantifiers, calls the rule, and decides what to do based on the rule passing or failing.
A rule is a code reference with a given string name that have been passed to Register. Here is an example of a rule:
Register ( Name, sub { my $p = shift; $p->AlternateValues( Jim, Scotty, Spock );
}
);
The parser object will always be passed in as the first parameter to your rule. You must pass this into any further rules or any Parse::Nibbler methods.
In the above example, the rule, "Name" is Registered. "Name" calls one of the builtin methods, AlternateValues, defined below. Once a rule is Registered, other rules can call it:
Register ( MedicalDiagnosis, sub { my $p = shift; $p->AlternateValues("Hes", "Shes"); $p->ValueIs("dead"); $p->ValueIs(","); $p->Name; $p->ValueIs("!"); } );
This code registers a rule called "MedicalDiagnosis". It uses some builtin methods, but it also calls the rule just registered, "Name".
Once a user defines a rule, they can use it in other rules by simply calling it as they would call a method.
Rules registered with the Parse::Nibbler module can be called with quantifiers. Quantifiers are passed into the Rule when you call it in your grammar by passing in a string that matches the format described here.
Quantifiers allow you to specify the quantity of rules present. Quantifiers also allow you to specify whether multiple rules have separators.
Quantifiers are specified using the following string format:
{quantifier}
This indicates that there are zero or one Name rules expected: $p->Name({?});
This indicates that there are zero or more Name rules expected: $p->Name({*});
This indicates that there are one or more Name rules expected: $p->Name({+});
This indicates that there are exactly three Name rules expected: $p->Name({3});
This indicates there are 1 to 3 Name rules expected: $p->Name({1:3});
This indicates there are at least 2 Name rules expected: $p->Name({2:);
Separators are specified using the following string format:
/separator/
This indicates 1 or more Name rules, each separated by a comma:
$p->Name({1:}/,/);
It is the job of the Register function to make sure this additional functionality is provided transparently and automagically to you.
If you call a rule with no quantifier and no separator, the rule will assume the quantifier is 1 and there is no separator.
Additional Parse::Nibbler methods are provided to simplify rule definition and to provide smart, automatic error handling, etc. You grammars should only call other rules that you defined, or these methods explained below.
(Note: these methods do not take quantifiers)
############### Method: ValueIs ###############
Parameters: One parameter, required. A string containing the expected value.
Example: $p->ValueIs( stringvalue );
Description:
This method will look at the next lexical and determine if its value matches that of the stringvalue given as a parameter. If it does not match, an exception is raised and the rule fails.
If the values do match, then the parser stores the lexical, and the rule continues.
####################### Method: AlternateValues #######################
Parameters: A list of string parameters, at least two values.
Example: $p-AlternateValues( value1, value2 );
Description:
This method behaves like the ValueIs method, except that it will recieve a list of allowed alternate expected values. The first match that succeeds causes the rule to pass and return.
If no match occurs, then an exception is raised and the rule aborts.
If a match does occur, the parser stores the lexical, and the rule continues.
############## Method: TypeIs ##############
Parameters: One parameter, required. A string containing the expected type.
Description:
This method will look at the next lexical item, and determine if the lexical type matches the type given as a parameter.
Valid type values depend on the Lexer that you use, but possible values may include "Identifier" and "Number", etc.
Use this in a case where your rule requires an identifier type, for example, but it does not care what the name of the identifier is for the rule.
If a match occurs, the parser stores the lexical and the rule continues.
If a match does not occur, an exception is raised, and the rule aborts.
###################### Method: AlternateRules ######################
Parameters: A list of string parameters, at least two.
Example: $p->AlternateRules( Rule1, Rule2 );
Description:
You can describe rule alternation in your rule by calling this method. The method takes a list of strings whose string values match the names of the valid alternate rule names.
In the above example, the McCoy rule is either a declaration of profession or a medical diagnosis. These are two rules that are defined in the same package. The AlternateRules method allows you to define multiple rules that may be valid at the same point in the text.
If a rule in the parameter list succeeds, the AlternateRule method succeeds, and returns immediately.
If no rule succeeds, an exception is thrown, and the rule aborts.
This rule expects either a "DeclareProfession" rule or a "MedicalDiagnosis" rule to be present.
Register ( McCoy, sub { my $p = shift; $p->AlternateRules( DeclareProfession, MedicalDiagnosis ); } );
You can specify quantifiers as part of the alternate rule strings.
$p->AlternateRules( DeclareProfession({+}), MedicalDiagnosis );
The above example indicates that you can have one or more DeclareProfession rules OR ALTERNATELY you can have exactly one MedicalDiagnosis rule.
EXPORT
Register, used to register the rules in your grammar.
Download (0.033MB)
Added: 2007-02-22 License: Perl Artistic License Price:
974 downloads
MRTG::Parse 0.03
MRTG::Parse is a Perl extension for parsing and utilizing the logfiles generated by the famous MRTG Tool. more>>
MRTG::Parse is a Perl extension for parsing and utilizing the logfiles generated by the famous MRTG Tool.
SYNOPSIS
use strict;
use MRTG::Parse;
my $mrtg_logfile = "/var/www/htdocs/mrtg/eth0.log";
my $period = "day";
my $desired_unit = "GB";
my ($traffic_incoming, $traffic_outgoing, $traffic_sum) = mrtg_parse($mrtg_logfile, $period, $desired_unit);
print "Incoming Traffic: $traffic_incomingn";
print "Outgoing Traffic: $traffic_outgoingn";
print "= Sum $traffic_sumn";
This perl extension enables its users to parse and utilize the logfiles that are generated by the famous MRTG (Multi Router Traffic Grapher) tool.
mrtg_parse() takes three argument:
1st: filename of the mrtg logfile
2nd: time period to genereate the output for
valid values are:
- individual time periods like: 20040821-20050130 (ISO 8601)
- static values: day, month, year
3rd: the desired unit (optional)
valid values are:
- B, KB, MB, GB, TB
- if missing mrtg_parse will chose an adequate one for you
mrtg_parse() returns three values:
1st: Incoming traffic
2nd: Outgoing traffic
3rd: Sum of incoming and outgoing
<<lessSYNOPSIS
use strict;
use MRTG::Parse;
my $mrtg_logfile = "/var/www/htdocs/mrtg/eth0.log";
my $period = "day";
my $desired_unit = "GB";
my ($traffic_incoming, $traffic_outgoing, $traffic_sum) = mrtg_parse($mrtg_logfile, $period, $desired_unit);
print "Incoming Traffic: $traffic_incomingn";
print "Outgoing Traffic: $traffic_outgoingn";
print "= Sum $traffic_sumn";
This perl extension enables its users to parse and utilize the logfiles that are generated by the famous MRTG (Multi Router Traffic Grapher) tool.
mrtg_parse() takes three argument:
1st: filename of the mrtg logfile
2nd: time period to genereate the output for
valid values are:
- individual time periods like: 20040821-20050130 (ISO 8601)
- static values: day, month, year
3rd: the desired unit (optional)
valid values are:
- B, KB, MB, GB, TB
- if missing mrtg_parse will chose an adequate one for you
mrtg_parse() returns three values:
1st: Incoming traffic
2nd: Outgoing traffic
3rd: Sum of incoming and outgoing
Download (0.005MB)
Added: 2007-04-03 License: Perl Artistic License Price:
938 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
iniParser 2.14
iniparser is a free stand-alone ini file parsing library. more>>
iniparser is a free stand-alone ini file parsing library.
iniParser is written in portable ANSI C and should compile anywhere.
This modules offers parsing of ini files from the C level. See a complete documentation in HTML format, from this directory open the file html/index.html with any HTML-capable browser.
Installation:
1. Modify the Makefile to suit your environment.
2. Type make to make the library.
3. Type make check to make the test program.
4. Type test/iniexample to launch the test program.
<<lessiniParser is written in portable ANSI C and should compile anywhere.
This modules offers parsing of ini files from the C level. See a complete documentation in HTML format, from this directory open the file html/index.html with any HTML-capable browser.
Installation:
1. Modify the Makefile to suit your environment.
2. Type make to make the library.
3. Type make check to make the test program.
4. Type test/iniexample to launch the test program.
Download (0.020MB)
Added: 2006-02-08 License: MIT/X Consortium License Price:
1357 downloads
XML Parse Library 0.50
XML-Parse library is a lightweight set of re-usable functions for general purpose parsing, checking, and creating xml files. more>>
XML-Parse library is a lightweight set of re-usable functions for general purpose parsing, checking, and creating xml files. It can support stream-oriented, SAX or DOM parsing styles, and includes an optional xsd schema validator and graphical schema generator.
It supports all valid XML, and includes checking for validity. This library has minimal dependencies, and is totally self-contained. XML Parse Library project is written in C and is both speed and memory efficient, and is simple to use. Primary core functions have been posted, and additional advanced and useful XML-related utilities will be added. Released under MIT License.
The XML-Parse library contains functions for parsing and/or creating xml files in a variety of ways. You should use whichever set makes sense for your needs. The functions support the following alternative ways of working with XML files:
- Read whole xml-files into a tokenized tree-structure in memory, and then operate on, traverse, access, or further decode values out of the tree. Your custom application code is usually required to access and operate on the tokenized-values.
- Read xml-files, parse and interpret them as they are being read. Your custom application-specific code can be interspersed with the re-usable parsing calls to interpret, convert, operate-on or store values immediately as input-stream is read, instead of storing in an intermediate tokenized-tree structure. This method reduce time and memory requirements, and supports streaming operations.
- Build xml-tree structures with convenient reusable routines from data in your application, and or modify values in read-in trees.
- Write-out valid xml-files automatically from xml-trees that were constructed or read-into memory by your application.
- Check xml-trees against an arbitrary xml schema definition (XSD).
<<lessIt supports all valid XML, and includes checking for validity. This library has minimal dependencies, and is totally self-contained. XML Parse Library project is written in C and is both speed and memory efficient, and is simple to use. Primary core functions have been posted, and additional advanced and useful XML-related utilities will be added. Released under MIT License.
The XML-Parse library contains functions for parsing and/or creating xml files in a variety of ways. You should use whichever set makes sense for your needs. The functions support the following alternative ways of working with XML files:
- Read whole xml-files into a tokenized tree-structure in memory, and then operate on, traverse, access, or further decode values out of the tree. Your custom application code is usually required to access and operate on the tokenized-values.
- Read xml-files, parse and interpret them as they are being read. Your custom application-specific code can be interspersed with the re-usable parsing calls to interpret, convert, operate-on or store values immediately as input-stream is read, instead of storing in an intermediate tokenized-tree structure. This method reduce time and memory requirements, and supports streaming operations.
- Build xml-tree structures with convenient reusable routines from data in your application, and or modify values in read-in trees.
- Write-out valid xml-files automatically from xml-trees that were constructed or read-into memory by your application.
- Check xml-trees against an arbitrary xml schema definition (XSD).
Download (0.011MB)
Added: 2007-03-23 License: MIT/X Consortium License Price:
947 downloads
Kismet Parse 0.2
Kismet Parse project can be used after kismet has sniffed 802.11 traffic and produced .network files. more>>
Kismet Parse project can be used after kismet has sniffed 802.11 traffic and produced .network files.
Kismet Parse is a Perl script that will parse these files to map the MAC addresses of the discovered wireless access point and clients to useful information. The information includes the hardware manufacturer of the device.
<<lessKismet Parse is a Perl script that will parse these files to map the MAC addresses of the discovered wireless access point and clients to useful information. The information includes the hardware manufacturer of the device.
Download (0.007MB)
Added: 2007-08-22 License: GPL (GNU General Public License) Price:
568 downloads
Parse::Java 0.01
Parse::Java is a Perl module that acts like a parser for Java code. more>>
Parse::Java is a Perl module that acts like a parser for Java code.
SYNOPSIS
use Parse::Java;
my $ast = Parse::Java->parse_file(MyClass.java);
Parse::Java parses Java code into an Abstract Syntax Tree which can be used for many things like writing compilers and stuff.
As this module is currently under development it isnt yet able to parse much Java. Whats in the t/*.t basically works but not much else.
The lexer should also more or less work fine except expansion of unicode escapes uNNNN.
INTERFACE
This module uses an object-oriented interface.
CLASS METHODS
parse_file ( $path )
Parses the contents of the file $path. Returns an AST representing the code.
parse_string
Parses the source in $string. Returns an AST representing the code.
detokenize ( $ast )
Walks the AST and replaces all Parse::Java::Token-objects with their stringified value.
INSTANCE METHODS
_set_input ( $source )
Sets the input to the lexer.
_next_token
Returns a list with the next token from the stream and its value.
<<lessSYNOPSIS
use Parse::Java;
my $ast = Parse::Java->parse_file(MyClass.java);
Parse::Java parses Java code into an Abstract Syntax Tree which can be used for many things like writing compilers and stuff.
As this module is currently under development it isnt yet able to parse much Java. Whats in the t/*.t basically works but not much else.
The lexer should also more or less work fine except expansion of unicode escapes uNNNN.
INTERFACE
This module uses an object-oriented interface.
CLASS METHODS
parse_file ( $path )
Parses the contents of the file $path. Returns an AST representing the code.
parse_string
Parses the source in $string. Returns an AST representing the code.
detokenize ( $ast )
Walks the AST and replaces all Parse::Java::Token-objects with their stringified value.
INSTANCE METHODS
_set_input ( $source )
Sets the input to the lexer.
_next_token
Returns a list with the next token from the stream and its value.
Download (0.018MB)
Added: 2007-01-16 License: Perl Artistic License Price:
1012 downloads
Parse::RandGen::Regexp 0.202
Parse::RandGen::Regexp is a Perl module for regular expression Condition element. more>>
Parse::RandGen::Regexp is a Perl module for regular expression Condition element.
Regexp is a Condition element that matches the given compiled regular expression. For picking random data, the regular expression is parsed into its component Subrules, Literals, CharClasses, etc.... Therefore, the pick functionality for a regular expression is ultimately the same as the pick functionality of a Rule (including the limitations w/r to greediness - see Rule).
Regexp is also useful as a standalone class. It supports captures (named and indexed), which can be referenced in a call to the pick() function to force the captures to match the specified data, while leaving the rest of the data to be generated randomly.
METHODS
new
Creates a new Regexp. The first argument (required) is the regular expression element (e.g. qr/foo(bar|baz)+d{1,10}/). All other arguments are named pairs.
element
Returns the Regexp element (i.e. the compiled regular expression itself).
numCaptures
Returns the number of captures (e.g. $1, $2, ...$n) in the regular expression.
nameCapture
Give names to capture numbers for the regular expression. The arguments to this function are capture# => "name" pairs (e.g. nameCapture(1=>"directory", 2=>"file", 3=>"extension")).
capture
Returns the Rule object that represents the specified capture. The capture can be specified by number or by name (the name is set by the nameCapture() function).
pick
Randomly generate data (text) that matches (or does not) this regular expression.
Takes a "match" boolean argument that specifies whether to match the regular expression or deliberately not match it.
Also takes a "captures" hash argument that has pairs of capture numbers (or names) and their desired value. This allows the generated data to have user-specified constraints while allowing the rest of the regular expression to choose random data. If "match" is false, the user-specified "captures" values are still used (which may cause the data to match even though it was not supposed to).
Example:
$re->pick(match=>1,
captures=>{ 1=>"http", 2=>"www", 3=>"yahoo", 4=>"com" });
<<lessRegexp is a Condition element that matches the given compiled regular expression. For picking random data, the regular expression is parsed into its component Subrules, Literals, CharClasses, etc.... Therefore, the pick functionality for a regular expression is ultimately the same as the pick functionality of a Rule (including the limitations w/r to greediness - see Rule).
Regexp is also useful as a standalone class. It supports captures (named and indexed), which can be referenced in a call to the pick() function to force the captures to match the specified data, while leaving the rest of the data to be generated randomly.
METHODS
new
Creates a new Regexp. The first argument (required) is the regular expression element (e.g. qr/foo(bar|baz)+d{1,10}/). All other arguments are named pairs.
element
Returns the Regexp element (i.e. the compiled regular expression itself).
numCaptures
Returns the number of captures (e.g. $1, $2, ...$n) in the regular expression.
nameCapture
Give names to capture numbers for the regular expression. The arguments to this function are capture# => "name" pairs (e.g. nameCapture(1=>"directory", 2=>"file", 3=>"extension")).
capture
Returns the Rule object that represents the specified capture. The capture can be specified by number or by name (the name is set by the nameCapture() function).
pick
Randomly generate data (text) that matches (or does not) this regular expression.
Takes a "match" boolean argument that specifies whether to match the regular expression or deliberately not match it.
Also takes a "captures" hash argument that has pairs of capture numbers (or names) and their desired value. This allows the generated data to have user-specified constraints while allowing the rest of the regular expression to choose random data. If "match" is false, the user-specified "captures" values are still used (which may cause the data to match even though it was not supposed to).
Example:
$re->pick(match=>1,
captures=>{ 1=>"http", 2=>"www", 3=>"yahoo", 4=>"com" });
Download (0.025MB)
Added: 2006-12-19 License: Perl Artistic License Price:
1039 downloads
uriparser 0.5.1
uriparser project is a strictly RFC 3986 compliant URI parsing library. more>>
uriparser project is a strictly RFC 3986 compliant URI parsing library. uriparser is cross-platform, fast, supports Unicode and is licensed under the New BSD license.
Main features:
- Cross-platform (Unix, Windows, Mac OS X, ...)
- Strictly compliant to RFC 3986 (latest RFC on URIs to date)
- Fast (linear input length time complexity)
- Unicode support
- No external dependencies
- Uses unit testing
- Licensed under the New BSD license
Enhancements:
- This release fixes several bugs revealed by test cases from 4Suite.
<<lessMain features:
- Cross-platform (Unix, Windows, Mac OS X, ...)
- Strictly compliant to RFC 3986 (latest RFC on URIs to date)
- Fast (linear input length time complexity)
- Unicode support
- No external dependencies
- Uses unit testing
- Licensed under the New BSD license
Enhancements:
- This release fixes several bugs revealed by test cases from 4Suite.
Download (0.19MB)
Added: 2007-08-09 License: BSD License Price:
807 downloads
amaroK Now-Webing 0.2
amaroK Now-Webing starts a webserver at an configurable port (Standard is 8080) which display the current song and artist. more>>
amaroK Now-Webing starts a webserver at an configurable port (Standard is 8080) which display the current song and artist.
Works great for parsing and displaying data on a webserver.
<<lessWorks great for parsing and displaying data on a webserver.
Download (MB)
Added: 2005-12-30 License: GPL (GNU General Public License) Price:
1393 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 parsing 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