<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>