To Miguel, and all (see below),

I've had a look at Compiler.java, and looks like a nice parser... have you 
considered JavaCC for this? /me never used it before...

Anyway, since the Compiler.java was not that easy to read, I took the 
documentation for an overview of commands... As I said on email, I've never
written an consistent grammer yet, so it's just a one-to-one conversion, so 
please comment on the stupid bits with this first draft inherits from Chime 
scripts...

To all:

below is a first draft of a XML based scripting language. The examples below 
don't have any schema yet, but it will have one when things become a bit more 
solid. I intend to make all script command elements empty.

This is the time to make script command requests and post any issues you have
with other script languages.

animate X -> <animate command="X"/>
        e.g. <animate command="play"/>
background <color> -> <background color="colorExpression"/>
color {<object>} <color> -> <color object="X" color="colorExpression">
        where X = atoms|labels|bonds|axes
cpk <boolean> -> <set field="cpk" value="on"/>
        on|true|yes
cpk <value> ->  <cpk percentage="90"/> | <cpk rasmolUnit="50"/>
define <var> <expression> -> <define variable="X" expression="Y"/>
delay {<delaytime}} -> <delay/> | <delay seconds="5"/>
echo <string> -> <echo message="Hello Jmol user"/>
exit -> <exit/>
label <boolean> -> <set field="label" value="on"/>
        see cpk <boolean>
label <string> -> <label expression="%a"/>
load {<format>} <filename> -> <load file="some.pdb"/> 
load {<format>} <url> -> <load format="pdb" url="http://sf.net/stream.cgi"/>
loop {<delaytime>} -> <loop/> | <loop seconds="5"/>
monitor <number> <number> -> <monitor distance="num1 num2"/>
monitor <num> <num> <num> -> <monitor angle="num1 num2 num3"/>
monitor <num> <num> <num> <num> -> <monitor dihedral="num1 num2 num3 num4"/>
move  <xRot> <yRot> <zRot> <zoom> <xTrans> <yTrans> <zTrans> <slab> <time> 
{<FPS>} {<MaxAccel>} -> <move rotateX="60" zoomFactor="200" translateX="5" 
time="3"/>
        this might better be done differently, by using loops? see also rotate
quit -> <quit/>
refresh -> <refresh/>
reset -> <reset/>
rotate <axis> <value> -> <rotate axis="x" angle="60"/>
script <filename|url> -> <script format="chime" url="http://some.where/"/>
select {<expression>} -> <select expression="*"/>
set <parameter> <value> -> <set field="param" value="value"/>
        see also label and cpk
slab <boolean> -> <set field="slab" value="on"/>
slab <percentage> -> <slab percentage="56"/>
spacefill -> <set field="cpk" value="on"/>
translate <axis> <value> -> translate axis="x" angle="6"/>
wireframe <boolean> -> <set field="wireframe" value="on"/>
wireframe <value> -> <wireframe value="40"/>
zap -> <zap/>
zoom <boolean> -> <set field="zoom" value="on"/>
zoom <value> -> zoom value="40"/>

Because an XML doc needs a root element, commands are wrapped in a <script>
element:

<script xmlns="http://jmol.sf.net/schema/jmolscript";>
  <zap/>
  <load url="http://www.matrix.org/aceticAcid.cml"/>
  <set field="cpk" value="true"/>
  <monitor angle="1 2 3"/>
</script>

Note that expressions are not XML-ized... is that worth doing it? Would it be 
required in the first version of the scripting language?

Nothing is fixed in this draft, especially element names. I was not feeling 
very creative at the moment... Comments appreciated. But, as coined in the 
example above, JmolScript might be a nice name...

Egon


-- 
PhD Molecular Representation in Chemometrics
Laboratory of Analytical Chemistry
http://www-cac.sci.kun.nl/people/egonw.html


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?   SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
Jmol-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to