com.turtle3d.formallanguage.grammar
Class Grammar

java.lang.Object
  extended by com.turtle3d.formallanguage.grammar.Grammar
Direct Known Subclasses:
ArrowHead, Branch, Bush, ChristmasTree, Dragon2D, Fern, Hilbert, Hilbert2D, IFSFern, KochFlake2D, OTitle, Peano2D, PeanoGosper2D, RowOfTrees2D, SierpinskiPyramid, SierpinskiTriangle2D, Sponge, Tree, Tree2, Tree3

public abstract class Grammar
extends java.lang.Object

Class generating symbol sequences, basing on productions and axiom.

Author:
Marek Paterczyk

Constructor Summary
Grammar()
           
 
Method Summary
 void addProduction(Production production)
          Add a defined Production to this grammar
 void define()
          Grammar definition goes here.
 java.util.ArrayList<Symbol> generateSymbolSequence(int iterations)
          Generate symbol sequence.
 java.util.ArrayList<Symbol> getAxiom()
          Get axiom.
 java.lang.String getName()
          Gives grammar's name.
 java.util.Hashtable<java.lang.String,java.lang.Float> getParameters()
          Get all defined paramters.
 Production getProduction(Symbol leftSide)
          Draws a production with a given left side symbol
 void init()
          Defines the grammar and resets SymbolFactory.
 java.util.ArrayList<Symbol> nextIteration(java.util.ArrayList<Symbol> symbolSequence, int iteration)
          This metod calculates next iteration for a given symbol sequence.
static java.lang.String printSymbolSequence(java.util.ArrayList<Symbol> symbolSequence, boolean showParameters)
          Formats symbol sequence for printing.
static java.lang.String printSymbolSequence(java.util.ArrayList<Symbol> symbolSequence, boolean showParameters, java.lang.String showOnlyThisSymbol)
          Formats only symbols of certain type for printing.
 void setAxiom(java.util.ArrayList<Symbol> axiom)
          Set axiom.
 void setAxiom(Symbol symbol)
          Set axiom
 void setRequiredParameter(java.lang.String name, java.lang.Float value)
          Method for setting a required paramter and it's value
 void setRequiredParameters()
          Define required parameters here
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Grammar

public Grammar()
Method Detail

generateSymbolSequence

public java.util.ArrayList<Symbol> generateSymbolSequence(int iterations)
Generate symbol sequence.

Parameters:
iterations - Number of iterations.
Returns:
ArrayList of Symbols

printSymbolSequence

public static java.lang.String printSymbolSequence(java.util.ArrayList<Symbol> symbolSequence,
                                                   boolean showParameters)
Formats symbol sequence for printing. Good for debbuging purposes.

Parameters:
symbolSequence - Symbol sequence that should be converted to String
showParameters - F or F(distance=0.2, radius=0.5, ...)
Returns:
String symbol sequence

printSymbolSequence

public static java.lang.String printSymbolSequence(java.util.ArrayList<Symbol> symbolSequence,
                                                   boolean showParameters,
                                                   java.lang.String showOnlyThisSymbol)
Formats only symbols of certain type for printing. Good for debbuging purposes.

Parameters:
symbolSequence - Symbol sequence that should be converted to String
showParameters - F or F(distance=0.2, radius=0.5, ...)
showOnlyThisSymbol - Only this symbols will be printed
Returns:
String symbol sequence

getProduction

public Production getProduction(Symbol leftSide)
Draws a production with a given left side symbol

Parameters:
leftSide - Left side symbol
Returns:
null if no production with given left side symbol

nextIteration

public java.util.ArrayList<Symbol> nextIteration(java.util.ArrayList<Symbol> symbolSequence,
                                                 int iteration)
This metod calculates next iteration for a given symbol sequence. Production defined for this Grammar object are used.

Parameters:
symbolSequence - Starting symbolSequence
iteration - This value is used to set birth iteration for new symbols
Returns:
New symbol sequence

addProduction

public void addProduction(Production production)
Add a defined Production to this grammar

Parameters:
production - Production to add

getName

public java.lang.String getName()
Gives grammar's name. It is the name of the class.

Returns:
grammar's name

setRequiredParameter

public void setRequiredParameter(java.lang.String name,
                                 java.lang.Float value)
Method for setting a required paramter and it's value

Parameters:
name - parameter name
value - parameter value

getParameters

public java.util.Hashtable<java.lang.String,java.lang.Float> getParameters()
Get all defined paramters.

Returns:
Hashtable with key-value paramter pairs

init

public final void init()
Defines the grammar and resets SymbolFactory.


define

public void define()
Grammar definition goes here. Call init() to define the grammar.


setRequiredParameters

public void setRequiredParameters()
Define required parameters here


getAxiom

public java.util.ArrayList<Symbol> getAxiom()
Get axiom.

Returns:
axiom

setAxiom

public void setAxiom(java.util.ArrayList<Symbol> axiom)
Set axiom.

Parameters:
axiom - axiom (sequence)

setAxiom

public void setAxiom(Symbol symbol)
Set axiom

Parameters:
symbol - axiom (one symbol)