ec.gp.ge
Class GrammarParser

java.lang.Object
  extended by ec.gp.ge.GrammarParser
All Implemented Interfaces:
Prototype, Setup, java.io.Serializable, java.lang.Cloneable

public class GrammarParser
extends java.lang.Object
implements Prototype

A GrammarParser is the basic class for parsing a GE ruleset into a parse graph of GrammarNodes. This parse graph is then later used to produce a GPIndividual from a GEIndividual in GESpecies. It is assumed that the root will represent the first rule given in the grammar.

See Also:
Serialized Form

Field Summary
protected static int BOOLEAN_CONSTANT
           
protected static int COMMENT
           
static java.lang.String[] DEFAULT_REGEXES
          The default regular expressions for tokens in the parser.
protected static int EQUALS
           
protected static int FUNCTION
           
protected static int LPAREN
           
protected static int NUMERIC_CONSTANT
           
static java.lang.String P_PARSER
           
protected static int PIPE
           
protected static int RPAREN
           
protected static int RULE
           
protected static int STRING_CONSTANT
           
 
Constructor Summary
GrammarParser()
           
 
Method Summary
 java.lang.Object clone()
          Creates a new individual cloned from a prototype, and suitable to begin use in its own evolutionary context.
 Parameter defaultBase()
          Returns the default base for this prototype.
 java.lang.String[] getRegexes()
          Returns the regular expressions to use for tokenizing these rules.
static void main(java.lang.String[] args)
          A simple testing fcility.
 GrammarRuleNode parseRules(EvolutionState state, java.io.BufferedReader reader, GPFunctionSet gpfs)
          Parses the rules from a grammar and returns the resulting GrammarRuleNode root.
 void setup(EvolutionState state, Parameter base)
          Sets up the object by reading it from the parameters stored in state, built off of the parameter base base.
 java.lang.String toString()
           
 boolean validateRules()
          Checks that all grammar rules in ruleshashmap have at least one possible production
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

P_PARSER

public static final java.lang.String P_PARSER
See Also:
Constant Field Values

DEFAULT_REGEXES

public static final java.lang.String[] DEFAULT_REGEXES
The default regular expressions for tokens in the parser. If you'd like to change minor features of the regular expressions, override the getRegexes() method in a subclass to return a different array. Note that if you INSERT a new regular expression into the middle of these, the values of the various token constants ("LPAREN", "RULE", etc.) will be wrong, so you will need to override or modify the methods which use them.


COMMENT

protected static final int COMMENT
See Also:
Constant Field Values

LPAREN

protected static final int LPAREN
See Also:
Constant Field Values

RPAREN

protected static final int RPAREN
See Also:
Constant Field Values

RULE

protected static final int RULE
See Also:
Constant Field Values

PIPE

protected static final int PIPE
See Also:
Constant Field Values

EQUALS

protected static final int EQUALS
See Also:
Constant Field Values

NUMERIC_CONSTANT

protected static final int NUMERIC_CONSTANT
See Also:
Constant Field Values

BOOLEAN_CONSTANT

protected static final int BOOLEAN_CONSTANT
See Also:
Constant Field Values

STRING_CONSTANT

protected static final int STRING_CONSTANT
See Also:
Constant Field Values

FUNCTION

protected static final int FUNCTION
See Also:
Constant Field Values
Constructor Detail

GrammarParser

public GrammarParser()
Method Detail

getRegexes

public java.lang.String[] getRegexes()
Returns the regular expressions to use for tokenizing these rules. By default DEFAULT_REGEXES are returned.


defaultBase

public Parameter defaultBase()
Description copied from interface: Prototype
Returns the default base for this prototype. This should generally be implemented by building off of the static base() method on the DefaultsForm object for the prototype's package. This should be callable during setup(...).

Specified by:
defaultBase in interface Prototype

setup

public void setup(EvolutionState state,
                  Parameter base)
Description copied from interface: Prototype
Sets up the object by reading it from the parameters stored in state, built off of the parameter base base. If an ancestor implements this method, be sure to call super.setup(state,base); before you do anything else.

For prototypes, setup(...) is typically called once for the prototype instance; cloned instances do not receive the setup(...) call. setup(...) may be called more than once; the only guarantee is that it will get called at least once on an instance or some "parent" object from which it was ultimately cloned.

Specified by:
setup in interface Prototype
Specified by:
setup in interface Setup

clone

public java.lang.Object clone()
Description copied from interface: Prototype
Creates a new individual cloned from a prototype, and suitable to begin use in its own evolutionary context.

Typically this should be a full "deep" clone. However, you may share certain elements with other objects rather than clone hem, depending on the situation:

Implementations.

Specified by:
clone in interface Prototype
Overrides:
clone in class java.lang.Object

parseRules

public GrammarRuleNode parseRules(EvolutionState state,
                                  java.io.BufferedReader reader,
                                  GPFunctionSet gpfs)
Parses the rules from a grammar and returns the resulting GrammarRuleNode root.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

validateRules

public boolean validateRules()
Checks that all grammar rules in ruleshashmap have at least one possible production

Returns:
true if grammar rules are properly defined, false otherwise

main

public static void main(java.lang.String[] args)
                 throws java.io.FileNotFoundException
A simple testing fcility.

Throws:
java.io.FileNotFoundException