|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcodesimian.CS<CSGeneric>
codesimian.DefaultCS
codesimian.Compile
codesimian.Compile.ParseObjectsByPriority
public static class Compile.ParseObjectsByPriority
Infix-syntax for CodeSimian language. Example: 2 + 3 * sin x
but there must be at least 1 space between each thing. 2+3 is not valid but 2 + 3 is.
There is no ( or ) when parsing by CS.parsePriority().
There are only names of things and the symbol # to define names.
Later I want to merge this language with the original CodeSimian language
(which includes ( and )) so you can type code like: sound( .2 * sine(.563 + count#c * sine c) )
There are 3 types of CSs that can be parsed this way, depending on if their minP() is 0, 1, or 2.
If 3 or higher, they cant be parsed by infix syntax.
Should it parse by minP() always?
or should it sometimes choose to put more Ps in than minP() but still lessEq than maxP()?
CSs whose minP()==0 should be parsed first, ==1 parsed next, ==2 parsed last.
start: a * b + c * - d //nothing parsed yet. dot (.) is parse position a . * b + c * - d //a is leaf a * . b + c * - d //* has minP()==2 a * b . + c * - d //shift/reduce conflict. Could reduce a*b to *(a b), but + could have higher priority. (a*b) + . c * - d //+ has less parse priority than *, so reduce a*b. (a*b) + c . * - d //dont know what c will become... shift. Leafs (like c) should have high priority. (a*b) + c * . - d (a*b) + c * - . d //- higher than * (a*b) + c * - d . //end of string should have less priority than d, so reduce (a*b) + c * (- d) //reduce again (a*b) + (c * (- d)) //reduce again end: ( (a*b) + (c * (- d)) )
Nested Class Summary |
---|
Field Summary |
---|
Fields inherited from class codesimian.Compile |
---|
LPAREN, MYFUEL, NAME, RPAREN, TEMPORARY_PARAM, WHITESPACE |
Fields inherited from class codesimian.CS |
---|
DESCRIPTION, END, EXECPROXY, HEAP, JAVACODE, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER, THIS |
Constructor Summary | |
---|---|
Compile.ParseObjectsByPriority()
|
Method Summary | |
---|---|
java.lang.String |
description()
a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for. |
double |
DForProxy()
Execute this CS and cast to double. |
int |
highestPri(CS list,
java.util.Set<CS> exclude)
returns the CS with highest parsePriority(), but it cant be in the Set. |
java.lang.String |
keyword()
For the CodeSimian language as a String. CodeSimian language keyword, like "+" "*" "max" ">" etc. Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add. Some CSs might never be intended to be used in the language by their keyword. The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()". |
Methods inherited from class codesimian.Compile |
---|
cost, javaCompile, javaCompileSelf, javaCompileSelfSaveJar, javaCompileZipBytes, minP |
Methods inherited from class codesimian.DefaultCS |
---|
B, C, countP, decrementMyFuel, deleteP, F, fuel, getExec, getObject, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertP, insertS, insertZ, J, javaCode, LForProxy, LForProxy, myFuel, name, newInstance, objectToCS, objectToCSArray, objectToCSArray, P, prevD, prevL, PType, S, setB, setC, setCountP, setD, setD, setExec, setF, setFuel, setI, setJ, setL, setL, setL, setL1, setMyFuel, setName, setObject, setP, setPrevExec, setPType, setS, setZ, start, toString, V, Z |
Methods inherited from class codesimian.CS |
---|
addB, addC, addD, addF, addI, addJ, addL, addP, addP, addP, addP, addP, addS, addZ, BForProxy, CForProxy, clone, D, deleteP, FForProxy, GETB, GETC, GETD, GETF, GETI, GETJ, GETL, GETS, GETZ, IForProxy, isIllusion, JForProxy, L, L, L, L, L, maxD, maxP, minD, overwrites, parent, parsePriority, PB, PC, PD, PF, PI, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, reflect6, setB, SETB, setC, SETC, setCost, SETD, setDescription, setF, SETF, setHeap, setI, SETI, setJ, SETJ, SETL, setL, setL, setParent, setParsePriority, setProxyOf, setS, SETS, setTester, setZ, SETZ, SForProxy, tester, toJavaCode, VForProxy, voidReflect, ZForProxy |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public Compile.ParseObjectsByPriority()
Method Detail |
---|
public double DForProxy()
CS
DForProxy
in class DefaultCS
public java.lang.String keyword()
DefaultCS
keyword
in class DefaultCS
CS.parent()
,
CS.newInstance()
,
CS.name()
public java.lang.String description()
CS
description
in class DefaultCS
public int highestPri(CS list, java.util.Set<CS> exclude)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |