|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectrita.RiObject
rita.RiGrammarX
public class RiGrammarX
Implementation of a (probabilistic) context-free grammar (with specific literary extensions) that performs generation from user-specified grammars.
RiGrammar rg = new RiGrammar(this, "mygrammar.g");
String result = rg.expand();
System.out.println(result);
RiTa grammar files are plain text files (generally ending with the '.g'
extension and residing in the 'data' folder) that follow the format below
(< and > are optional):
<start> => <rule1> | <rule2> | <rule3>
<rule2> => terminal1 | terminal2 | <rule1>
<rule3> => terminal3 | terminal4 \
terminal5 | terminal6
# this is a comment
}
...
Primary methods of interest:
expand() which simply begins at the <start> state and
generates a string of terminals from the grammar.
expandFrom(String) which begins with the argument
String (which can consist of both non-terminals and terminals,)
and expands from there. Notice that expand() is simply
a convenient version of expandFrom("<start>");.
expandWith(String, String) takes 2 String arguments, the 1st
(a terminal) is guaranteed to be substituted for the 2nd (a non-terminal). Once this
substitution is made, the algorithm then works backwards (up the tree from the leaf)
ensuring that the terminal (terminal1) appears in the output string.
For example, with the grammar fragment above, one might call:
grammar.expandWith(terminal1, "<rule2>");
assuring not only that <rule2>will be used at least
once in the generation process, but that when it is, it will be replaced
by the terminal "hello".
<start> => <rule1> [0.5] | <rule2> | <rule3>
<rule2> => \
The cat ran after the `getRhyme("cat");` | \
The <noun> ran after the `pluralize(<noun>);`
}
Any number of arguments may be passed in a callback, but for each call,
there must be a corresponding method (with the same number and type or
arguments) in the sketch, e.g.,
String pluralize(String s) {
...
}
| Field Summary | |
|---|---|
RiGrammarEditor |
editor
|
static java.lang.String |
ENCODING
|
static java.lang.String |
EXEC_CHAR
|
static java.lang.String |
EXEC_POST
|
int |
maxIterations
|
static java.lang.String |
PROB_PATTERN
|
java.util.regex.Pattern |
probabilityPattern
|
RuleList |
rules
|
static java.lang.String |
START
|
java.lang.String |
startRule
|
| Fields inherited from interface processing.core.PConstants |
|---|
A, AB, ADD, AG, ALPHA, ALPHA_MASK, ALT, AMBIENT, AR, ARC, ARGB, ARROW, B, BACKSPACE, BASELINE, BEEN_LIT, BEVEL, BLEND, BLUE_MASK, BLUR, BOTTOM, BOX, BURN, CENTER, CENTER_DIAMETER, CENTER_RADIUS, CHATTER, CLOSE, CMYK, CODED, COMPLAINT, CONTROL, CORNER, CORNERS, CROSS, CUSTOM, DA, DARKEST, DB, DEG_TO_RAD, DELETE, DG, DIAMETER, DIFFERENCE, DILATE, DIRECTIONAL, DISABLE_ACCURATE_TEXTURES, DISABLE_DEPTH_SORT, DISABLE_DEPTH_TEST, DISABLE_OPENGL_2X_SMOOTH, DISABLE_OPENGL_ERROR_REPORT, DODGE, DOWN, DR, DXF, EB, EDGE, EG, ELLIPSE, ENABLE_ACCURATE_TEXTURES, ENABLE_DEPTH_SORT, ENABLE_DEPTH_TEST, ENABLE_NATIVE_FONTS, ENABLE_OPENGL_2X_SMOOTH, ENABLE_OPENGL_4X_SMOOTH, ENABLE_OPENGL_ERROR_REPORT, ENTER, EPSILON, ER, ERODE, ERROR_BACKGROUND_IMAGE_FORMAT, ERROR_BACKGROUND_IMAGE_SIZE, ERROR_PUSHMATRIX_OVERFLOW, ERROR_PUSHMATRIX_UNDERFLOW, ERROR_TEXTFONT_NULL_PFONT, ESC, EXCLUSION, G, GIF, GRAY, GREEN_MASK, HALF_PI, HAND, HARD_LIGHT, HINT_COUNT, HSB, IMAGE, INVERT, JAVA2D, JPEG, LEFT, LIGHTEST, LINE, LINES, LINUX, MACOSX, MAX_FLOAT, MAX_INT, MIN_FLOAT, MIN_INT, MITER, MODEL, MULTIPLY, NORMAL, NORMALIZED, NX, NY, NZ, OPAQUE, OPEN, OPENGL, ORTHOGRAPHIC, OTHER, OVERLAY, P2D, P3D, PATH, PDF, PERSPECTIVE, PI, platformNames, POINT, POINTS, POLYGON, POSTERIZE, PROBLEM, PROJECT, QUAD, QUAD_STRIP, QUADS, QUARTER_PI, R, RAD_TO_DEG, RADIUS, RECT, RED_MASK, REPLACE, RETURN, RGB, RIGHT, ROUND, SA, SB, SCREEN, SG, SHAPE, SHIFT, SHINE, SOFT_LIGHT, SPB, SPG, SPHERE, SPOT, SPR, SQUARE, SR, SUBTRACT, SW, TAB, TARGA, THIRD_PI, THRESHOLD, TIFF, TOP, TRIANGLE, TRIANGLE_FAN, TRIANGLE_STRIP, TRIANGLES, TWO_PI, TX, TY, TZ, U, UP, V, VERTEX_FIELD_COUNT, VW, VX, VY, VZ, WAIT, WHITESPACE, WINDOWS, X, Y, Z |
| Constructor Summary | |
|---|---|
RiGrammarX(processing.core.PApplet parent)
New/experimental version of RiGrammar with simpler syntax... |
|
RiGrammarX(processing.core.PApplet parent,
java.lang.String grammarFileName)
|
|
| Method Summary | |
|---|---|
void |
addRule(java.lang.String name,
java.lang.String rule)
|
void |
addRule(java.lang.String key,
java.lang.String rule,
float prob)
|
java.lang.String |
expand()
|
java.lang.String |
expandFrom(java.lang.String rule)
|
java.lang.String |
expandWith(java.lang.String literalString,
java.lang.String ruleName)
|
java.lang.String |
getGrammarFileName()
|
java.lang.String |
getRule(java.lang.String name)
|
boolean |
hasRule(java.lang.String name)
|
static void |
main(java.lang.String[] args)
|
static void |
mainLSys(java.lang.String[] args)
|
RiGrammarEditor |
openGrammarEditor()
Provides a live, editable view of a RiGrammar text file that can be dynamically loaded into a sketch without stopping and restarting it. |
RiGrammarEditor |
openGrammarEditor(int width,
int height)
Provides a live, editable view of a RiGrammar text file that can be dynamically loaded into a sketch without stopping and restarting it. |
void |
reset()
|
void |
setCallbackHandler(java.lang.Object handler)
|
void |
setGrammarFromProperties(java.util.Properties grammarRules)
|
void |
setGrammarFromProps(MultiMap grammarRules)
|
void |
setGrammarFromString(java.lang.String grammarRulesAsString)
|
java.lang.String |
toString()
|
| Methods inherited from class rita.RiObject |
|---|
dispose, getId, getPApplet, nextId |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String PROB_PATTERN
public static final java.lang.String EXEC_CHAR
public static final java.lang.String EXEC_POST
public static final java.lang.String ENCODING
public static final java.lang.String START
public RuleList rules
public int maxIterations
public java.lang.String startRule
public java.util.regex.Pattern probabilityPattern
public RiGrammarEditor editor
| Constructor Detail |
|---|
public RiGrammarX(processing.core.PApplet parent)
public RiGrammarX(processing.core.PApplet parent,
java.lang.String grammarFileName)
| Method Detail |
|---|
public java.lang.String expandWith(java.lang.String literalString,
java.lang.String ruleName)
expandWith in interface RiGrammarIFpublic RiGrammarEditor openGrammarEditor()
public RiGrammarEditor openGrammarEditor(int width, int height)
public void addRule(java.lang.String name,
java.lang.String rule)
public java.lang.String getRule(java.lang.String name)
public boolean hasRule(java.lang.String name)
public java.lang.String expandFrom(java.lang.String rule)
expandFrom in interface RiGrammarIFpublic void setCallbackHandler(java.lang.Object handler)
public java.lang.String expand()
expand in interface RiGrammarIFpublic void reset()
public java.lang.String toString()
toString in class java.lang.Objectpublic void setGrammarFromString(java.lang.String grammarRulesAsString)
setGrammarFromString in interface RiGrammarIFpublic void setGrammarFromProps(MultiMap grammarRules)
public void addRule(java.lang.String key,
java.lang.String rule,
float prob)
public void setGrammarFromProperties(java.util.Properties grammarRules)
public java.lang.String getGrammarFileName()
getGrammarFileName in interface RiGrammarIFpublic static void mainLSys(java.lang.String[] args)
public static void main(java.lang.String[] args)
throws java.io.IOException
java.io.IOException
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||