<div dir="ltr"><div dir="ltr">Here's the beginning of an HAnimHumanoid, for example:<div><br></div><div><div>('DEF' xs:ID)? 'HAnimHumanoid' '{'</div><div>(</div><div> 'bboxCenter' SFVec3f</div><div>| 'bboxDisplay' SFBool</div><div>| 'bboxSize' bboxSizeType</div><div>| 'center' SFVec3f</div><div>| 'description' SFString</div><div>| 'info' MFString</div><div>| 'IS' (IS)</div><div>| 'jointBindingPositions' MFVec3f</div><div>| 'jointBindingRotations' MFRotation</div><div>| 'jointBindingScales' MFVec3f</div><div>| 'joints' (HAnimJoint)*</div><div>| 'loa' loaType</div><div>| 'metadata' (X3DMetadataObject)</div><div>| 'motions' (HAnimMotion)*</div><div>| 'motionsEnabled' MFBool</div><div>| 'name' xs:NMTOKEN</div><div>| 'rotation' SFRotation</div><div>| 'scale' SFVec3f</div><div>| 'scaleOrientation' SFRotation</div><div>| 'segments' (HAnimSegment)*</div><div>| 'sites' (HAnimSite)*</div><div>| 'skeletalConfiguration' SFString</div><div>| 'skeleton' (HAnimJoint|HAnimSite)*</div><div>| 'skin' (Group|Transform|Shape|IndexedFaceSet)*</div><div>| 'skinBindingCoords' (Coordinate|CoordinateDouble)</div><div>| 'skinBindingNormals' (X3DNormalNode)</div><div>| 'skinCoord' (Coordinate|CoordinateDouble)</div><div>| 'skinNormal' (X3DNormalNode)</div><div>| 'translation' SFVec3f</div><div>| 'version' xs:NMTOKEN</div><div>| 'viewpoints' (HAnimSite)*</div><div>| 'visible' SFBool</div><div>| 'class' xs:NMTOKENS</div><div>| 'id' xs:NMTOKEN</div><div>| 'style' SFString</div><div>)*</div><div>'}'</div><div>| 'USE' xs:IDREF;</div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 23, 2023 at 10:43 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hmm. Looks good. I am riffing off of:<div><br></div><div><a href="https://github.com/ingowald/antlr-vrml/blob/master/vrml.g4" target="_blank">https://github.com/ingowald/antlr-vrml/blob/master/vrml.g4</a><br></div><div><br></div><div>I don't know if X3DUOM supports ordering, which probably has combinatorial explosion if employed, so I'll probably go for something simpler in the long run.</div><div><br></div><div>This is interesting, I'm not only targeting Java or Python: <a href="https://github.com/antlr/antlr4/blob/master/doc/targets.md" target="_blank">https://github.com/antlr/antlr4/blob/master/doc/targets.md</a></div><div><br></div><div>Hmm!</div><div><br></div><div>John</div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 23, 2023 at 9:19 AM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p class="MsoNormal">tangentially related, may relate to importer for x3d.py:</p><p class="MsoNormal">vrml input<span></span></p>
<p class="MsoNormal"><a href="https://sourceforge.net/projects/pyvrml97/" target="_blank">https://sourceforge.net/projects/pyvrml97/</a>
<span></span></p>
<p class="MsoNormal">which uses:<br></p><p class="MsoNormal"><span></span></p>
<p class="MsoNormal">from simpleparse.parser import Parser <span></span></p>
<p class="MsoNormal"><a href="https://pypi.org/project/SimpleParse/" target="_blank">https://pypi.org/project/SimpleParse/</a>
<span></span></p>
<p class="MsoNormal">- EBNF single pass for largely deterministic grammars<span></span></p><p class="MsoNormal">parser.py snippet:</p><p class="MsoNormal">grammar = r'''</p><p class="MsoNormal">header := headerStatement,profileStatement,componentStatement*,metaStatement*</p><p class="MsoNormal">headerStatement := ('#X3D',ts,SFNumber,ts,'utf8',ts,headerComment?,newLine)/('#',headerComment?,newLine)</p><p class="MsoNormal">headerComment := -newLine+</p><p class="MsoNormal">profileStatement := 'PROFILE', ts, profileName,newLine</p><p class="MsoNormal">profileName := name</p><p class="MsoNormal"><newLine> := ('\r\n'/'\r'/'\n')</p><div>...</div><div><br></div><p class="MsoNormal"><br></p></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 23, 2023 at 7:47 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hmm.<div><br></div><div>I'm thinking about generating a Classic VRML grammar from X3DUOM using Python, and then using ANTLR4 to generate Java code for inclusion in various experiments with GraalVM's Polyglot, Truffle, etc.</div><div><br></div><div>Hmm.</div><div><br></div><div>Hmm.</div><div><br></div><div>Hmm.</div><div><br>Maybe in another life.</div><div><br></div><div>John</div></div>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>