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.