Language Initial
This commit is contained in:
parent
73897f11df
commit
b8f2380c60
47 changed files with 831 additions and 14 deletions
428
.docs/Designs/Language.drawio
Normal file
428
.docs/Designs/Language.drawio
Normal file
|
|
@ -0,0 +1,428 @@
|
||||||
|
<mxfile host="Electron" modified="2023-10-29T20:02:24.324Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="26yH0Gc3erZ3uKcA6DFE" version="22.0.3" type="device">
|
||||||
|
<diagram name="Page-1" id="8edUMiMEU_fADqxzhr4b">
|
||||||
|
<mxGraphModel dx="1062" dy="-128" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="none" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-158" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-22" target="Knp0EVw5rfMEdcPhjhnq-141" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="User Regular Language Rulles" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-22">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="380" y="1237" width="179" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-157" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-53" target="Knp0EVw5rfMEdcPhjhnq-146" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="User Context Free Language Rulles" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-53">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="482" y="1610" width="179" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-116" value="Compiler API Rulles To parse Regular grammar Rulles" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;startSize=23;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="175" y="1351" width="384" height="158" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="RE Compiler API Rulles" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-124">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-116" vertex="1">
|
||||||
|
<mxGeometry x="24" y="37.5" width="332" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<UserObject label="CF Compiler API Rulles" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-125">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-116" vertex="1">
|
||||||
|
<mxGeometry x="24" y="98.5" width="336" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-126" value="CF Parser" style="swimlane;whiteSpace=wrap;html=1;startSize=23;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="2269" y="1405" width="999" height="823" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-13" value="Acceptor" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" parent="Knp0EVw5rfMEdcPhjhnq-126" vertex="1">
|
||||||
|
<mxGeometry x="416" y="171" width="293" height="203" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-34" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="Knp0EVw5rfMEdcPhjhnq-13" source="Knp0EVw5rfMEdcPhjhnq-14" target="Knp0EVw5rfMEdcPhjhnq-19" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-35" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="Knp0EVw5rfMEdcPhjhnq-13" source="Knp0EVw5rfMEdcPhjhnq-14" target="Knp0EVw5rfMEdcPhjhnq-18" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-36" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="Knp0EVw5rfMEdcPhjhnq-13" source="Knp0EVw5rfMEdcPhjhnq-14" target="Knp0EVw5rfMEdcPhjhnq-20" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="Automation" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-14">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-13" vertex="1">
|
||||||
|
<mxGeometry x="92" y="81.5" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-18" value="SymbolStream" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-13" vertex="1">
|
||||||
|
<mxGeometry x="103.5" y="42" width="97" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-19" value="AST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-13" vertex="1">
|
||||||
|
<mxGeometry x="131.5" y="159" width="41" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-20" value="Tables" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-13" vertex="1">
|
||||||
|
<mxGeometry x="15" y="98.5" width="53" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-54" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;" parent="Knp0EVw5rfMEdcPhjhnq-126" source="Knp0EVw5rfMEdcPhjhnq-37" target="Knp0EVw5rfMEdcPhjhnq-13" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-55" value="Get Symbol" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Knp0EVw5rfMEdcPhjhnq-54" vertex="1" connectable="0">
|
||||||
|
<mxGeometry x="-0.5956" y="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-137" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;" parent="Knp0EVw5rfMEdcPhjhnq-126" source="Knp0EVw5rfMEdcPhjhnq-37" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="953.4782608695655" y="398.6521739130435" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="563" y="733" />
|
||||||
|
<mxPoint x="919" y="733" />
|
||||||
|
<mxPoint x="919" y="399" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-37" value="Acceptor" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" parent="Knp0EVw5rfMEdcPhjhnq-126" vertex="1">
|
||||||
|
<mxGeometry x="416" y="490" width="293" height="203" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-38" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="Knp0EVw5rfMEdcPhjhnq-37" source="Knp0EVw5rfMEdcPhjhnq-41" target="Knp0EVw5rfMEdcPhjhnq-43" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-39" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="Knp0EVw5rfMEdcPhjhnq-37" source="Knp0EVw5rfMEdcPhjhnq-41" target="Knp0EVw5rfMEdcPhjhnq-42" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-40" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="Knp0EVw5rfMEdcPhjhnq-37" source="Knp0EVw5rfMEdcPhjhnq-41" target="Knp0EVw5rfMEdcPhjhnq-44" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="Automation" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-41">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-37" vertex="1">
|
||||||
|
<mxGeometry x="92" y="81.5" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-42" value="SymbolStream" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-37" vertex="1">
|
||||||
|
<mxGeometry x="103.5" y="42" width="97" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-43" value="AST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-37" vertex="1">
|
||||||
|
<mxGeometry x="131.5" y="159" width="41" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-44" value="Tables" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-37" vertex="1">
|
||||||
|
<mxGeometry x="15" y="98.5" width="53" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-59" value="Finate State Automation" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="Knp0EVw5rfMEdcPhjhnq-126" vertex="1">
|
||||||
|
<mxGeometry x="721" y="175.5" width="146" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-60" value="Push Down Automation" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="Knp0EVw5rfMEdcPhjhnq-126" vertex="1">
|
||||||
|
<mxGeometry x="726" y="490" width="143" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-131" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;" parent="Knp0EVw5rfMEdcPhjhnq-126" source="Knp0EVw5rfMEdcPhjhnq-82" target="Knp0EVw5rfMEdcPhjhnq-37" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-134" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;" parent="Knp0EVw5rfMEdcPhjhnq-126" source="Knp0EVw5rfMEdcPhjhnq-82" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="24.947368421052943" y="591.5" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-82" value="CFG Compiler" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" parent="Knp0EVw5rfMEdcPhjhnq-126" vertex="1">
|
||||||
|
<mxGeometry x="93" y="448.5" width="281" height="286" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-88" value="CF Comp Rules" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-82" vertex="1">
|
||||||
|
<mxGeometry x="7" y="130" width="103" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-90" value="Tables" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-82" vertex="1">
|
||||||
|
<mxGeometry x="210" y="132.5" width="53" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="LL" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-91">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-82" vertex="1">
|
||||||
|
<mxGeometry x="116" y="51.75" width="83" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<UserObject label="Canonical" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-92">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-82" vertex="1">
|
||||||
|
<mxGeometry x="116" y="119.75" width="83" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<UserObject label="LALR" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-93">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-82" vertex="1">
|
||||||
|
<mxGeometry x="116" y="187.75" width="83" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-132" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;" parent="Knp0EVw5rfMEdcPhjhnq-126" source="Knp0EVw5rfMEdcPhjhnq-94" target="Knp0EVw5rfMEdcPhjhnq-13" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-133" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;" parent="Knp0EVw5rfMEdcPhjhnq-126" source="Knp0EVw5rfMEdcPhjhnq-94" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="24.947368421052943" y="272.5" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-94" value="RE Compiler" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;startSize=23;" parent="Knp0EVw5rfMEdcPhjhnq-126" vertex="1">
|
||||||
|
<mxGeometry x="122" y="228.25" width="260" height="88.5" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-95" value="RE Compiler Rulles" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-94" vertex="1">
|
||||||
|
<mxGeometry x="13" y="33.75" width="123" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-96" value="Tables" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-94" vertex="1">
|
||||||
|
<mxGeometry x="187" y="39.5" width="53" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-154" value="Sentence" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="Knp0EVw5rfMEdcPhjhnq-126" vertex="1">
|
||||||
|
<mxGeometry x="21" y="149.5" width="69" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-56" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;" parent="Knp0EVw5rfMEdcPhjhnq-126" source="Knp0EVw5rfMEdcPhjhnq-13" target="Knp0EVw5rfMEdcPhjhnq-154" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="94" y="166" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="626" y="104" />
|
||||||
|
<mxPoint x="281" y="104" />
|
||||||
|
<mxPoint x="281" y="166" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-57" value="Get Symbol" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Knp0EVw5rfMEdcPhjhnq-56" vertex="1" connectable="0">
|
||||||
|
<mxGeometry x="-0.0483" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-127" value="Compiler API Rulles To parse Regular grammar Rulles" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;startSize=23;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="285" y="1720" width="385" height="158" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="RE Compiler API Rulles" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-128">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-127" vertex="1">
|
||||||
|
<mxGeometry x="24" y="37.5" width="340" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<UserObject label="CF Compiler API Rulles" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-129">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-127" vertex="1">
|
||||||
|
<mxGeometry x="24" y="98.5" width="340" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-162" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-130" target="Knp0EVw5rfMEdcPhjhnq-151" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="User Sentence" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-130">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="1063" y="1056" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-138" value="CF Parser" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="622" y="1273" width="337" height="173" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-139" value="CF AST Rulles for Tokenizer" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-138" vertex="1">
|
||||||
|
<mxGeometry x="19" y="80" width="168" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-140" value="CF AST Rulles for an acceptor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-138" vertex="1">
|
||||||
|
<mxGeometry x="19" y="125" width="180" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-141" value="CF Sentence" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-138" vertex="1">
|
||||||
|
<mxGeometry x="19" y="37" width="88" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-142" value="AST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-138" vertex="1">
|
||||||
|
<mxGeometry x="265" y="73.5" width="41" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-143" value="CF Parser" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="714" y="1645" width="337" height="173" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-144" value="CF AST Rulles for Tokenizer" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-143" vertex="1">
|
||||||
|
<mxGeometry x="19" y="80" width="168" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-145" value="CF AST Rulles for an acceptor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-143" vertex="1">
|
||||||
|
<mxGeometry x="19" y="125" width="180" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-146" value="CF Sentence" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-143" vertex="1">
|
||||||
|
<mxGeometry x="19" y="37" width="88" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-147" value="AST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-143" vertex="1">
|
||||||
|
<mxGeometry x="265" y="73.5" width="41" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-148" value="CF Parser" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="1391" y="1401" width="337" height="173" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-149" value="RE Compiler API Rulles for FSA" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-148" vertex="1">
|
||||||
|
<mxGeometry x="36" y="79.75" width="189" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-150" value="CF Compiler API Rulles for an PDA acceptor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-148" vertex="1">
|
||||||
|
<mxGeometry x="36" y="124" width="255" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-151" value="CF Sentence" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-148" vertex="1">
|
||||||
|
<mxGeometry x="19" y="37" width="88" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-152" value="Sentence AST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" parent="Knp0EVw5rfMEdcPhjhnq-148" vertex="1">
|
||||||
|
<mxGeometry x="229" y="35" width="95" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-155" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-129" target="Knp0EVw5rfMEdcPhjhnq-145" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-156" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-128" target="Knp0EVw5rfMEdcPhjhnq-144" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-159" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-124" target="Knp0EVw5rfMEdcPhjhnq-139" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-160" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-125" target="Knp0EVw5rfMEdcPhjhnq-140" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-165" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="B2JnEC1cqt8830IlIT0b-3" target="Knp0EVw5rfMEdcPhjhnq-149" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-166" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="B2JnEC1cqt8830IlIT0b-1" target="Knp0EVw5rfMEdcPhjhnq-150" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Knp0EVw5rfMEdcPhjhnq-167" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="Knp0EVw5rfMEdcPhjhnq-152" target="Knp0EVw5rfMEdcPhjhnq-168" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="1909.9999999999995" y="1483" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="User AST" treeRoot="1" id="Knp0EVw5rfMEdcPhjhnq-168">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="1977" y="1190" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-2" value="" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="Knp0EVw5rfMEdcPhjhnq-147" target="B2JnEC1cqt8830IlIT0b-1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="1020" y="1732" as="sourcePoint" />
|
||||||
|
<mxPoint x="1408" y="1535" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="AST to CF Compiler API" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-1">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="1117" y="1613" width="197" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-4" value="" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="Knp0EVw5rfMEdcPhjhnq-142" target="B2JnEC1cqt8830IlIT0b-3">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="1032" y="1311" as="sourcePoint" />
|
||||||
|
<mxPoint x="1408" y="1490" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="AST to RE Compiler API" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-3">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="1107" y="1470.5" width="197" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-41" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-42" target="B2JnEC1cqt8830IlIT0b-56">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="Language Grammar <br>(CF RE United Format)" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-42">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="422" y="2209" width="179" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-45" value="Grammar For CF RE United Grammar Format" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;startSize=23;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="253" y="2439" width="384" height="158" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="RE Compiler API Rulles" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-46">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-45">
|
||||||
|
<mxGeometry x="24" y="37.5" width="332" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<UserObject label="CF Compiler API Rulles" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-47">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-45">
|
||||||
|
<mxGeometry x="24" y="98.5" width="336" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-51" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-52" target="B2JnEC1cqt8830IlIT0b-66">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="User Sentence" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-52">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="422" y="2132" width="180" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-53" value="CF Parser" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="700" y="2361" width="337" height="173" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-54" value="CF AST Rulles for Tokenizer" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-53">
|
||||||
|
<mxGeometry x="19" y="80" width="168" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-55" value="CF AST Rulles for an acceptor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-53">
|
||||||
|
<mxGeometry x="19" y="125" width="180" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-56" value="CF Sentence" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-53">
|
||||||
|
<mxGeometry x="19" y="37" width="88" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-57" value="AST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-53">
|
||||||
|
<mxGeometry x="265" y="73.5" width="41" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-63" value="CF Parser" style="swimlane;rounded=0;swimlaneLine=0;fontColor=default;fontSize=14;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="1415" y="2271" width="337" height="173" as="geometry">
|
||||||
|
<mxRectangle x="453" y="256" width="50" height="44" as="alternateBounds" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-64" value="RE Compiler API Rulles for FSA" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-63">
|
||||||
|
<mxGeometry x="36" y="79.75" width="189" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-65" value="CF Compiler API Rulles for an PDA acceptor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-63">
|
||||||
|
<mxGeometry x="36" y="124" width="255" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-66" value="CF Sentence" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-63">
|
||||||
|
<mxGeometry x="19" y="37" width="88" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-67" value="Sentence AST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;rounded=0;" vertex="1" parent="B2JnEC1cqt8830IlIT0b-63">
|
||||||
|
<mxGeometry x="229" y="35" width="95" height="26" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-70" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-46" target="B2JnEC1cqt8830IlIT0b-54">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-71" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;endArrow=none;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-47" target="B2JnEC1cqt8830IlIT0b-55">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-72" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-79" target="B2JnEC1cqt8830IlIT0b-64">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-73" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-77" target="B2JnEC1cqt8830IlIT0b-65">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-74" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-67" target="B2JnEC1cqt8830IlIT0b-75">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="1933.9999999999995" y="2353" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="User AST" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-75">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="2001" y="2060" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-76" value="" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-57" target="B2JnEC1cqt8830IlIT0b-77">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="1044" y="2601.5" as="sourcePoint" />
|
||||||
|
<mxPoint x="1432" y="2405" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="AST to CF Compiler API" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-77">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="1141" y="2483" width="197" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
<mxCell id="B2JnEC1cqt8830IlIT0b-78" value="" style="edgeStyle=elbowEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="B2JnEC1cqt8830IlIT0b-57" target="B2JnEC1cqt8830IlIT0b-79">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="1056" y="2181" as="sourcePoint" />
|
||||||
|
<mxPoint x="1432" y="2360" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<UserObject label="AST to RE Compiler API" treeRoot="1" id="B2JnEC1cqt8830IlIT0b-79">
|
||||||
|
<mxCell style="whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};labelBackgroundColor=none;rounded=0;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="1151" y="2371" width="197" height="46.5" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</UserObject>
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -7,3 +7,5 @@ install
|
||||||
.vscode
|
.vscode
|
||||||
out
|
out
|
||||||
.vs
|
.vs
|
||||||
|
*.bkp
|
||||||
|
*.$*
|
||||||
15
Automatas/CMakeLists.txt
Normal file
15
Automatas/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
project(Automatas)
|
||||||
|
|
||||||
|
### ---------------------- Static Library --------------------- ###
|
||||||
|
file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp")
|
||||||
|
file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp")
|
||||||
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||||
|
target_include_directories(${PROJECT_NAME} PUBLIC public/)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PUBLIC Utils)
|
||||||
|
|
||||||
|
### -------------------------- Tests -------------------------- ###
|
||||||
|
enable_testing()
|
||||||
|
file(GLOB TEST_SOURCES "./tests/*.cpp")
|
||||||
|
add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES})
|
||||||
|
target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils)
|
||||||
|
add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests)
|
||||||
8
Automatas/private/AutomatasCommon.cpp
Normal file
8
Automatas/private/AutomatasCommon.cpp
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
#include "AutomatasCommon.hpp"
|
||||||
|
#include "Utils.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
|
|
||||||
|
static ModuleManifest* sModuleDependencies[] = { &gModuleUtils, nullptr };
|
||||||
|
ModuleManifest tp::gModuleAutomatas = ModuleManifest("Automatas", nullptr, nullptr, sModuleDependencies);
|
||||||
7
Automatas/public/AutomatasCommon.hpp
Normal file
7
Automatas/public/AutomatasCommon.hpp
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Module.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
extern ModuleManifest gModuleAutomatas;
|
||||||
|
}
|
||||||
14
Automatas/tests/Tests.cpp
Normal file
14
Automatas/tests/Tests.cpp
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#include "AutomatasCommon.hpp"
|
||||||
|
#include "Utils.hpp"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
|
||||||
|
tp::ModuleManifest* deps[] = { &tp::gModuleAutomatas, &tp::gModuleUtils, nullptr };
|
||||||
|
tp::ModuleManifest testModule("Test", nullptr, nullptr, deps);
|
||||||
|
|
||||||
|
if (!testModule.initialize()) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
testModule.deinitialize();
|
||||||
|
}
|
||||||
|
|
@ -16,9 +16,9 @@ add_subdirectory(Utils)
|
||||||
add_subdirectory(Containers)
|
add_subdirectory(Containers)
|
||||||
add_subdirectory(Math)
|
add_subdirectory(Math)
|
||||||
add_subdirectory(Allocators)
|
add_subdirectory(Allocators)
|
||||||
|
add_subdirectory(Automatas)
|
||||||
add_subdirectory(Strings)
|
add_subdirectory(Strings)
|
||||||
add_subdirectory(Tokenizer)
|
add_subdirectory(Language)
|
||||||
add_subdirectory(Parser)
|
|
||||||
add_subdirectory(CommandLine)
|
add_subdirectory(CommandLine)
|
||||||
add_subdirectory(Externals)
|
add_subdirectory(Externals)
|
||||||
add_subdirectory(Connection)
|
add_subdirectory(Connection)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ file(GLOB SOURCES "./private/*.cpp")
|
||||||
file(GLOB HEADERS "./public/*.hpp")
|
file(GLOB HEADERS "./public/*.hpp")
|
||||||
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC ./public/)
|
target_include_directories(${PROJECT_NAME} PUBLIC ./public/)
|
||||||
target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer Connection)
|
target_link_libraries(${PROJECT_NAME} PUBLIC Language Connection)
|
||||||
|
|
||||||
### -------------------------- Tests -------------------------- ###
|
### -------------------------- Tests -------------------------- ###
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
|
||||||
22
Language/CMakeLists.txt
Normal file
22
Language/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.2)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
|
|
||||||
|
project(Language)
|
||||||
|
|
||||||
|
### ---------------------- Static Library --------------------- ###
|
||||||
|
file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp")
|
||||||
|
file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp")
|
||||||
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||||
|
target_include_directories(${PROJECT_NAME} PUBLIC public/)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PUBLIC Strings Automatas)
|
||||||
|
|
||||||
|
### -------------------------- Tests -------------------------- ###
|
||||||
|
enable_testing()
|
||||||
|
file(GLOB TEST_SOURCES "./tests/*.cpp")
|
||||||
|
add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES})
|
||||||
|
target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils)
|
||||||
|
add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests)
|
||||||
|
|
||||||
|
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib)
|
||||||
79
Language/old/Acceptors.hpp
Normal file
79
Language/old/Acceptors.hpp
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file contains acceptors for each language
|
||||||
|
* Acceptor is managing an automation machine that can recognize whether this given sentence is in the language.
|
||||||
|
* Above that acceptors are responsible for defining those automations
|
||||||
|
* Some acceptors can supply additional information such as Abstract-Syntax-Tree or Sentence id
|
||||||
|
* */
|
||||||
|
|
||||||
|
#include "LanguageModule.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
|
||||||
|
template <typename tAlphabet>
|
||||||
|
class SymbolSupply {
|
||||||
|
public:
|
||||||
|
typedef ualni Cursor;
|
||||||
|
|
||||||
|
public:
|
||||||
|
SymbolSupply() = default;
|
||||||
|
virtual ~SymbolSupply() = 0;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual Cursor getCursor() = 0;
|
||||||
|
virtual void setCursor(Cursor) = 0;
|
||||||
|
|
||||||
|
virtual void getPrevCursor() = 0;
|
||||||
|
virtual ualni getSymbolLength() = 0;
|
||||||
|
|
||||||
|
virtual const tAlphabet& getNextSymbol() = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Cursor mCursor = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename tAlphabet, typename tSentenceId>
|
||||||
|
class RegularAcceptor {
|
||||||
|
typedef SymbolSupply<tAlphabet> Sentence;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RegularAcceptor() = default;
|
||||||
|
void build(const RegularGrammar<tSentenceId>& grammar);
|
||||||
|
tSentenceId recognize(Sentence& sentence);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Subset of CFG
|
||||||
|
template <typename tAlphabet>
|
||||||
|
class LL {
|
||||||
|
typedef SymbolSupply<tAlphabet> Sentence;
|
||||||
|
|
||||||
|
public:
|
||||||
|
LL() = default;
|
||||||
|
void build(const ContextFreeGrammar& grammar);
|
||||||
|
void recognize(Sentence& sentence);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Subset of CFG much larger than LL
|
||||||
|
template <typename tAlphabet>
|
||||||
|
class CLR {
|
||||||
|
typedef SymbolSupply<tAlphabet> Sentence;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CLR() = default;
|
||||||
|
void build(const ContextFreeGrammar& grammar);
|
||||||
|
void recognize(Sentence& sentence);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Subset of CFG CLR
|
||||||
|
template <typename tAlphabet>
|
||||||
|
class LALR {
|
||||||
|
typedef SymbolSupply<tAlphabet> Sentence;
|
||||||
|
|
||||||
|
public:
|
||||||
|
LALR() = default;
|
||||||
|
void build(const ContextFreeGrammar& grammar);
|
||||||
|
void recognize(Sentence& sentence);
|
||||||
|
};
|
||||||
|
}
|
||||||
4
Language/private/AST.cpp
Normal file
4
Language/private/AST.cpp
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
#include "AST.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
4
Language/private/Grammar.cpp
Normal file
4
Language/private/Grammar.cpp
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
#include "Grammar.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
4
Language/private/GrammarCompiler.cpp
Normal file
4
Language/private/GrammarCompiler.cpp
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
#include "GrammarCompiler.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
8
Language/private/LanguageCommon.cpp
Normal file
8
Language/private/LanguageCommon.cpp
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
#include "LanguageCommon.hpp"
|
||||||
|
#include "Strings.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
|
|
||||||
|
static ModuleManifest* sModuleDependencies[] = { &gModuleStrings, nullptr };
|
||||||
|
ModuleManifest tp::gModuleLanguage = ModuleManifest("Language", nullptr, nullptr, sModuleDependencies);
|
||||||
8
Language/private/Parser.cpp
Normal file
8
Language/private/Parser.cpp
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
#include "Parser.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
|
|
||||||
|
void Parser::compileTables(const ContextFreeGrammar& cfGrammar, const RegularGrammar& reGrammar) {}
|
||||||
|
|
||||||
|
void Parser::parse(const Sentence& sentence, AST& out) {}
|
||||||
4
Language/private/Sentence.cpp
Normal file
4
Language/private/Sentence.cpp
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
#include "Sentence.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
49
Language/private/SimpleParser.cpp
Normal file
49
Language/private/SimpleParser.cpp
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
|
||||||
|
#include "SimpleParser.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
|
|
||||||
|
SimpleParser::SimpleParser() {
|
||||||
|
// Grammar for unified grammar format sentence that tables compiled from
|
||||||
|
|
||||||
|
// Define Context-Free grammar
|
||||||
|
ContextFreeGrammar contextFreeGrammar;
|
||||||
|
{
|
||||||
|
auto term = contextFreeGrammar.createTerminal();
|
||||||
|
|
||||||
|
auto nonTerm = contextFreeGrammar.createNonTerminal();
|
||||||
|
auto nonTerm2 = contextFreeGrammar.createNonTerminal();
|
||||||
|
|
||||||
|
contextFreeGrammar.addRule(nonTerm, { term, nonTerm2 });
|
||||||
|
contextFreeGrammar.addRule();
|
||||||
|
|
||||||
|
contextFreeGrammar.setStart(nonTerm);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define Regular grammar
|
||||||
|
RegularGrammar regularGrammar;
|
||||||
|
{
|
||||||
|
regularGrammar.addRule(regularGrammar.alternate(regularGrammar.repeat(regularGrammar.symbols("asd")), regularGrammar.symbol("a")));
|
||||||
|
regularGrammar.addRule(regularGrammar.alternate(regularGrammar.repeat(regularGrammar.symbols("asd")), regularGrammar.symbol("a")));
|
||||||
|
}
|
||||||
|
|
||||||
|
mUnifiedGrammarParser.compileTables(contextFreeGrammar, regularGrammar);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SimpleParser::compileTables(const Sentence& grammar) {
|
||||||
|
AST unifiedGrammarAst;
|
||||||
|
mUnifiedGrammarParser.parse(grammar, unifiedGrammarAst);
|
||||||
|
|
||||||
|
// compile each ast into RegularGrammar and ContextFree Grammar api instructions
|
||||||
|
ContextFreeGrammar userContextFreeGrammar;
|
||||||
|
RegularGrammar userRegularGrammar;
|
||||||
|
// ...
|
||||||
|
// split ast into RE and CF part
|
||||||
|
// generate and execute grammar api commands
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// compile tables from user grammar
|
||||||
|
mUserParser.compileTables(userContextFreeGrammar, userRegularGrammar);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SimpleParser::parse(const Sentence& sentence, AST& out) { mUserParser.parse(sentence, out); }
|
||||||
8
Language/public/AST.hpp
Normal file
8
Language/public/AST.hpp
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "LanguageCommon.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
class AST {};
|
||||||
|
}
|
||||||
9
Language/public/Grammar.hpp
Normal file
9
Language/public/Grammar.hpp
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "LanguageCommon.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
class ContextFreeGrammar {};
|
||||||
|
class RegularGrammar {};
|
||||||
|
}
|
||||||
6
Language/public/GrammarCompiler.hpp
Normal file
6
Language/public/GrammarCompiler.hpp
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Grammar.hpp"
|
||||||
|
|
||||||
|
namespace tp {}
|
||||||
7
Language/public/LanguageCommon.hpp
Normal file
7
Language/public/LanguageCommon.hpp
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Module.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
extern ModuleManifest gModuleLanguage;
|
||||||
|
}
|
||||||
20
Language/public/Parser.hpp
Normal file
20
Language/public/Parser.hpp
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "AST.hpp"
|
||||||
|
#include "GrammarCompiler.hpp"
|
||||||
|
#include "Sentence.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
class Parser {
|
||||||
|
public:
|
||||||
|
Parser() = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void compileTables(const ContextFreeGrammar& cfGrammar, const RegularGrammar& reGrammar);
|
||||||
|
void parse(const Sentence& sentence, AST& out);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// save load compiled tables
|
||||||
|
};
|
||||||
|
}
|
||||||
13
Language/public/Sentence.hpp
Normal file
13
Language/public/Sentence.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "LanguageCommon.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
struct Sentence {
|
||||||
|
const int1* buffer = nullptr;
|
||||||
|
alni symbolSize = 1;
|
||||||
|
|
||||||
|
explicit Sentence(const char* buff) { buffer = buff; }
|
||||||
|
};
|
||||||
|
}
|
||||||
20
Language/public/SimpleParser.hpp
Normal file
20
Language/public/SimpleParser.hpp
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Parser.hpp"
|
||||||
|
|
||||||
|
namespace tp {
|
||||||
|
|
||||||
|
// Gives ability to express grammar in the Unified Format as sentence
|
||||||
|
class SimpleParser {
|
||||||
|
public:
|
||||||
|
SimpleParser();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void compileTables(const Sentence& grammar);
|
||||||
|
void parse(const Sentence& sentence, AST& out);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Parser mUnifiedGrammarParser;
|
||||||
|
Parser mUserParser;
|
||||||
|
};
|
||||||
|
}
|
||||||
43
Language/tests/Test.hpp
Normal file
43
Language/tests/Test.hpp
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "SimpleParser.hpp"
|
||||||
|
|
||||||
|
const char* gGrammar = R"(
|
||||||
|
# Grammar in the CF-RE United Format (Defined by language module)
|
||||||
|
|
||||||
|
Rules : {
|
||||||
|
ScopeList : ScopeList Scope | Scope ;
|
||||||
|
Scope : \ScopeBegin StatementList \ScopeEnd;
|
||||||
|
StatementList : StatementList Statement \StatementEnd;
|
||||||
|
StatementList : Statement \StatementEnd;
|
||||||
|
Statement : \StatementBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
Terminals : {
|
||||||
|
Space : " " | "\t" | "\n" | "\r";
|
||||||
|
ScopeBegin : "{";
|
||||||
|
ScopeEnd : "}";
|
||||||
|
StatementEnd : ";";
|
||||||
|
StatementBody : "a" | "b";
|
||||||
|
}
|
||||||
|
|
||||||
|
Start : Scope;
|
||||||
|
Ignore : Space;
|
||||||
|
)";
|
||||||
|
|
||||||
|
const char* gSentence = R"(
|
||||||
|
{}
|
||||||
|
|
||||||
|
{ }
|
||||||
|
|
||||||
|
{
|
||||||
|
a;
|
||||||
|
a ; a ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
a;
|
||||||
|
a;
|
||||||
|
}
|
||||||
|
)";
|
||||||
29
Language/tests/Tests.cpp
Normal file
29
Language/tests/Tests.cpp
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
#include "Test.hpp"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
|
|
||||||
|
void test() {
|
||||||
|
auto parser = SimpleParser();
|
||||||
|
auto grammar = Sentence(gGrammar);
|
||||||
|
|
||||||
|
auto sentence = Sentence(gSentence);
|
||||||
|
auto ast = AST();
|
||||||
|
|
||||||
|
parser.compileTables(grammar);
|
||||||
|
parser.parse(sentence, ast);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
|
||||||
|
tp::ModuleManifest* deps[] = { &tp::gModuleLanguage, nullptr };
|
||||||
|
tp::ModuleManifest testModule("Test", nullptr, nullptr, deps);
|
||||||
|
|
||||||
|
if (!testModule.initialize()) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
test();
|
||||||
|
|
||||||
|
testModule.deinitialize();
|
||||||
|
}
|
||||||
16
TODO
16
TODO
|
|
@ -1,10 +1,17 @@
|
||||||
Testing !!
|
All:
|
||||||
|
Testing
|
||||||
Change clang format and apply to all files!!!
|
|
||||||
rename Language module to FormalLanguage
|
|
||||||
make more general structure for feature renders
|
make more general structure for feature renders
|
||||||
|
|
||||||
|
Language:
|
||||||
|
rename Language module to FormalLanguage
|
||||||
Merge parser and tokenizer module into grammar module
|
Merge parser and tokenizer module into grammar module
|
||||||
|
|
||||||
|
Define grammars
|
||||||
|
Implement automations
|
||||||
|
Implement LL parsing using hardcoded rules in the code
|
||||||
|
Implement save and loading of automatas
|
||||||
|
Using LL parsing define grammar for
|
||||||
|
|
||||||
Make two grammars Regular and Context-free
|
Make two grammars Regular and Context-free
|
||||||
For each grammar make grammar rules parser, example sentence generation and sentence parsing
|
For each grammar make grammar rules parser, example sentence generation and sentence parsing
|
||||||
Make automations itself a universal tool - NFA DFA conversions
|
Make automations itself a universal tool - NFA DFA conversions
|
||||||
|
|
@ -12,7 +19,6 @@ Make automations itself a universal tool - NFA DFA conversions
|
||||||
Math:
|
Math:
|
||||||
FFT
|
FFT
|
||||||
|
|
||||||
|
|
||||||
RayTracer:
|
RayTracer:
|
||||||
Features:
|
Features:
|
||||||
Normals flag
|
Normals flag
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue