Parse::Eyapp::TokenGenUser Contributed Perl DocumentaParse::Eyapp::TokenGen(3)NAMEParse::Eyapp::TokenGen - Support for Using Parse::Eyapp as a Data
Generator
INTRODUCTION
For a introduction to data generation using Parse::Eyapp see
Parse::Eyapp::datagenerationtut.
METHODS
set_tokengens
Receives the parser object and the pairs
token => generator
Sets the generator attribute of the tokens. Though not strictly
necessary, the generator is a Test::LectroTest::Generator object.
set_weights
Receives the parser object and the pairs
token => weight
Sets the weight attribute of the tokens. The weight is a floating
number.
set_tokenweightsandgenerators
Receives the parser object and the pairs
token => [weight, generator]
or
token => weight
and sets the weight and generator attributes of the tokens. An example
can be found in "examples/generator/GenSupport.pm":
$parser->set_tokenweightsandgenerators(
NUM => [ 2, Int(range=>[0, 9], sized=>0)],
VAR => [
0, # At the beginning, no variables are defined
Gen {
return Elements(keys %st)->generate if keys %st;
return Int(range=>[0, 9], sized=>0)->generate;
},
],
VARDEF => [
2,
String( length=>[1,2], charset=>"A-NP-Z", size => 100 )
],
'=' => 2, '-' => 1, '+' => 2,
'*' => 4, '/' => 2, '^' => 0.5,
';' => 1, '(' => 1, ')' => 2,
'' => 2, 'error' => 0,
);
token_weight
Receives the parser object and the token and returns the weight. If an
additional weight is provided the weight for the token is set.
token_generator
Receives the parser object and the token and returns the generator. If
an additional generator is provided the generator for the token is set.
deltaweight
Has the syntax:
$parser->deltaweight(TOKEN1 => deltaweight1, TOKEN2 => deltaweight2, ...)
increases the weight of the respective token by the associated amount.
pushdeltaweight
As "deltaweight" but the current weights of the involved tokens are
saved in a stack
popweight
Restores the weights of the tokens that were previously saved with
"pushdeltaweight"
SEE ALSO
· Parse::Eyapp::datagenerationtut
· Test::LectroTest::Generator by Tom Moertel
· The Design and Implementation of a Grammar-based Data Generator
(1992) by Peter M. Maurer, Software Practice and Experience
http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/./vol22/issue3/spe756pm.pdf
<http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/./vol22/issue3/spe756pm.pdf>
· yagg: an easy-to-use generator for structured test inputs by David
Coppit and Jiexin Lian. ASE '05: Proceedings of the 20th IEEE/ACM
international Conference on Automated software engineering. 2005,
pages 356-359.
· <http://search.cpan.org/perldoc?yagg::Tutorial>,
· <http://www.cs.wm.edu/~coppit/wiki/images/4/4e/yagg_short.pdf>,
· http://www.cs.wm.edu/~coppit/wiki/images/6/69/wm-cs-2005-13.pdf
<http://www.cs.wm.edu/~coppit/wiki/images/6/69/wm-cs-2005-13.pdf>
· Writing Randomly by Randall Schwartz. Linux Magazine Column 04
(Sep 1999). <http://www.stonehenge.com/merlyn/LinuxMag/col04.html>
· Generating Test Data with Enhanced Context Free Grammars by Peter
M. Maurer
http://cs.baylor.edu/~maurer/aida/dgl-source/documentation/gen_tst.pdf
<http://cs.baylor.edu/~maurer/aida/dgl-
source/documentation/gen_tst.pdf>
· Modules as Programs by Brian d Foy
<http://www252.pair.com/comdog/mastering_perl/Chapters/18.modulinos.html>
· How a Script Becomes a Module by Brian d Foy. On Perlmonks:
<http://www.perlmonks.org/index.pl?node_id=396759>.
CONTRIBUTORS
· Hal Finkel <http://www.halssoftware.com/>
· G. Williams <http://kasei.us/>
· Thomas L. Shinnick <http://search.cpan.org/~tshinnic/>
· Frank Leray
AUTHOR
Casiano Rodriguez-Leon (casiano@ull.es)
ACKNOWLEDGMENTS
This work has been supported by CEE (FEDER) and the Spanish Ministry of
Educacion y Ciencia through Plan Nacional I+D+I number
TIN2005-08818-C04-04 (ULL::OPLINK project <http://www.oplink.ull.es/>).
Support from Gobierno de Canarias was through GC02210601 (Grupos
Consolidados). The University of La Laguna has also supported my work
in many ways and for many years.
A large percentage of code is verbatim taken from Parse::Yapp 1.05.
The author of Parse::Yapp is Francois Desarmenien.
I wish to thank Francois Desarmenien for his Parse::Yapp module, to my
students at La Laguna and to the Perl Community. Thanks to the people
who have contributed to improve the module (see "CONTRIBUTORS" in
Parse::Eyapp). Thanks to Larry Wall for giving us Perl. Special
thanks to Juana.
LICENCE AND COPYRIGHT
Copyright (c) 2006-2008 Casiano Rodriguez-Leon (casiano@ull.es). All
rights reserved.
Parse::Yapp copyright is of Francois Desarmenien, all rights reserved.
1998-2001
These modules are free software; you can redistribute it and/or modify
it under the same terms as Perl itself. See perlartistic.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
perl v5.16.2 2012-03-23 Parse::Eyapp::TokenGen(3)