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 <s>) --> (<s> ^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 <s> not connected disconnect from goal or impasses (no 'state' or 'impasse' keyword) AUTHOR Nathan Glenn <garfieldnate@gmail.com> 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.