NAME Soar::Production - REPRESENT SOAR PRODUCTIONS VERSION version 0.03 SYNOPSIS use Soar::Production qw(prods_from prods_from_file); my $prods = prods_from_file( '/path/to/file' ); for my $prod (@$prods){ print $prod->name . "\n"; } my $prod = 'sp{myName (state ) --> ( ^foo bar) }'; my $prod = Soar::Production->new($prod); DESCRIPTION This is a module for storing, manipulating, and querying Soar productions. There isn't much functionality implemented, yet. Currently there are functions for NAME Soar::Production- Store and manipulate Soar productions METHODS "new" Argument: text of a Soar production. Creates a new production object using the input text. "name" Optional argument: name to assign production. Sets the name of the current production if an argument is given. Returns the name of the production. EXPORTED FUNCTIONS The following functions may be exported: "prods_from_file" A shortcut for "prods_from(file =" $arg)>. "prods_from" This method extracts productions from a given text. It returns a reference to an array containing production objects. Note that all comments are removed as a preprocessing step to detecting and extracting productions. It takes a set of named arguments: "file"- the name of a file to read. "text"- the text to read. You must choose to export this function via the "use" function: use Soar::Production qw(prods_from); TODO "state_name" Set/get name of matched state "superstate_name" Set/get name of matched state's superstate "type" Does this production match a state or an impasse? "validate" Check this production against a datamap. check semantic correctness Soar::Production::Parser does not check semantic correctness. The following are good things to check: everything matched in RHS must be in LHS no empty RHS Only allowable non-operator preference is REJECT Check for existence of RHS function not connected disconnect from goal or impasses (no 'state' or 'impasse' keyword) AUTHOR Nathan Glenn COPYRIGHT AND LICENSE This software is copyright (c) 2012 by Nathan Glenn. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.