Browse Source

easymesh : Added SplitTriangles function to multiply triangles for triangle MADNESS !

legacy
Benjamin ‘Touky’ Huet touky 12 years ago
parent
commit
3ea6d93e95
8 changed files with 438 additions and 363 deletions
  1. +2
    -1
      src/easymesh/easymesh-parser.y
  2. +1
    -0
      src/easymesh/easymesh-scanner.l
  3. +51
    -6
      src/easymesh/easymesh.cpp
  4. +4
    -1
      src/easymesh/easymesh.h
  5. +225
    -208
      src/generated/easymesh-parser.cpp
  6. +24
    -23
      src/generated/easymesh-parser.h
  7. +129
    -122
      src/generated/easymesh-scanner.cpp
  8. +2
    -2
      test/MeshViewerBuffer.txt

+ 2
- 1
src/easymesh/easymesh-parser.y View File

@@ -47,7 +47,7 @@
%token T_TRANSLATEX T_ROTATEX T_TAPERX T_TWISTX T_SHEARX T_STRETCHX T_BENDXY T_BENDXZ T_SCALEX T_MIRRORX %token T_TRANSLATEX T_ROTATEX T_TAPERX T_TWISTX T_SHEARX T_STRETCHX T_BENDXY T_BENDXZ T_SCALEX T_MIRRORX
%token T_TRANSLATEY T_ROTATEY T_TAPERY T_TWISTY T_SHEARY T_STRETCHY T_BENDYX T_BENDYZ T_SCALEY T_MIRRORY %token T_TRANSLATEY T_ROTATEY T_TAPERY T_TWISTY T_SHEARY T_STRETCHY T_BENDYX T_BENDYZ T_SCALEY T_MIRRORY
%token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_TWISTZ T_SHEARZ T_STRETCHZ T_BENDZX T_BENDZY T_SCALEZ T_MIRRORZ %token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_TWISTZ T_SHEARZ T_STRETCHZ T_BENDZX T_BENDZY T_SCALEZ T_MIRRORZ
%token T_TRANSLATE T_SCALE T_TOGGLESCALEWINDING T_RADIALJITTER
%token T_TRANSLATE T_SCALE T_TOGGLESCALEWINDING T_RADIALJITTER T_SPLITTRIANGLE
%token T_CSGUNION T_CSGSUBSTRACT T_CSGSUBSTRACTLOSS T_CSGAND T_CSGXOR %token T_CSGUNION T_CSGSUBSTRACT T_CSGSUBSTRACTLOSS T_CSGAND T_CSGXOR
%token T_CHAMFER %token T_CHAMFER


@@ -157,6 +157,7 @@ transform_command:
| T_MIRRORY { mc.m_mesh.MirrorY(); } | T_MIRRORY { mc.m_mesh.MirrorY(); }
| T_MIRRORZ { mc.m_mesh.MirrorZ(); } | T_MIRRORZ { mc.m_mesh.MirrorZ(); }
| T_RADIALJITTER args1 { mc.m_mesh.RadialJitter($2.f0); } | T_RADIALJITTER args1 { mc.m_mesh.RadialJitter($2.f0); }
| T_SPLITTRIANGLE args1 { mc.m_mesh.SplitTriangles($2.f0); }
| T_TOGGLESCALEWINDING { mc.m_mesh.ToggleScaleWinding(); } | T_TOGGLESCALEWINDING { mc.m_mesh.ToggleScaleWinding(); }
| T_CSGUNION { mc.m_mesh.CsgUnion(); } | T_CSGUNION { mc.m_mesh.CsgUnion(); }
| T_CSGSUBSTRACT { mc.m_mesh.CsgSubstract(); } | T_CSGSUBSTRACT { mc.m_mesh.CsgSubstract(); }


+ 1
- 0
src/easymesh/easymesh-scanner.l View File

@@ -86,6 +86,7 @@ mx { return token::T_MIRRORX; }
my { return token::T_MIRRORY; } my { return token::T_MIRRORY; }
mz { return token::T_MIRRORZ; } mz { return token::T_MIRRORZ; }
rj { return token::T_RADIALJITTER; } rj { return token::T_RADIALJITTER; }
splt { return token::T_SPLITTRIANGLE; }


csgu { return token::T_CSGUNION; } csgu { return token::T_CSGUNION; }
csgs { return token::T_CSGSUBSTRACT; } csgs { return token::T_CSGSUBSTRACT; }


+ 51
- 6
src/easymesh/easymesh.cpp View File

@@ -568,16 +568,18 @@ void EasyMesh::SetCurColor2(vec4 const &color)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void EasyMesh::AddVertex(vec3 const &coord) void EasyMesh::AddVertex(vec3 const &coord)
{ {
#if VERTEX_USEAGE == VU_BONES
m_vert.Push(
coord, vec3(0.f, 1.f, 0.f), m_color
#if VERTEX_USEAGE == VU_VANILLA
//-- VANILLA --
#elif VERTEX_USEAGE == VU_BONES
//TODO : -- BONE SUPPORT -- //TODO : -- BONE SUPPORT --
m_vert.Push(coord, vec3(0.f, 1.f, 0.f), m_color, ivec2(0), vec2(0));
, ivec2(0), vec2(0)
#elif VERTEX_USEAGE == VU_TEX_UV #elif VERTEX_USEAGE == VU_TEX_UV
//-- UV SUPPORT -- //-- UV SUPPORT --
m_vert.Push(coord, vec3(0.f, 1.f, 0.f), m_color, vec2(-1));
#else
//-- VANILLA --
m_vert.Push(coord, vec3(0.f, 1.f, 0.f), m_color);
, vec2(-1)
#endif #endif
);
} }


//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -586,6 +588,26 @@ void EasyMesh::AddDuplicateVertex(int i)
m_vert << m_vert[i]; m_vert << m_vert[i];
} }


//-----------------------------------------------------------------------------
void EasyMesh::AddLerpVertex(int i, int j, float alpha)
{
m_vert.Push(
lol::lerp(m_vert[i].m1, m_vert[j].m1, alpha),
lol::lerp(m_vert[i].m2, m_vert[j].m2, alpha),
lol::lerp(m_vert[i].m3, m_vert[j].m3, alpha)
#if VERTEX_USEAGE == VU_VANILLA
//-- VANILLA --
#elif VERTEX_USEAGE == VU_BONES
//TODO : -- BONE SUPPORT --
, lol::lerp(m_vert[i].m4, m_vert[j].m4, alpha),
lol::lerp(m_vert[i].m5, m_vert[j].m5, alpha)
#elif VERTEX_USEAGE == VU_TEX_UV
//-- UV SUPPORT --
, lol::lerp(m_vert[i].m4, m_vert[j].m4, alpha)
#endif
);
}

//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void EasyMesh::AppendQuad(int i1, int i2, int i3, int i4, int base) void EasyMesh::AppendQuad(int i1, int i2, int i3, int i4, int base)
{ {
@@ -1049,6 +1071,29 @@ void EasyMesh::DupAndScale(vec3 const &s)
m_cursors.Last().m2 -= tlen; m_cursors.Last().m2 -= tlen;
} }


//-----------------------------------------------------------------------------
void EasyMesh::SplitTriangles(int pass)
{
while (pass--)
{
int trimax = m_indices.Count();
for (int i = m_cursors.Last().m2; i < trimax; i += 3)
{
int vbase = m_vert.Count();
int j = -1;
while (++j < 3)
AddLerpVertex(m_indices[i + j], m_indices[i + (j + 1) % 3], .5f);
//Add new triangles
AppendTriangle(vbase, m_indices[i + 1], vbase + 1, 0);
AppendTriangle(vbase + 2, vbase + 1, m_indices[i + 2], 0);
AppendTriangle(vbase, vbase + 1, vbase + 2, 0);
//Change current triangle
m_indices[i + 1] = vbase;
m_indices[i + 2] = vbase + 2;
}
}
ComputeNormals(m_cursors.Last().m2, m_indices.Count() - m_cursors.Last().m2);
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void EasyMesh::AppendCylinder(int nsides, float h, float d1, float d2, void EasyMesh::AppendCylinder(int nsides, float h, float d1, float d2,
int dualside, int smooth, int close) int dualside, int smooth, int close)


+ 4
- 1
src/easymesh/easymesh.h View File

@@ -156,6 +156,7 @@ private:
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
void AddVertex(vec3 const &coord); void AddVertex(vec3 const &coord);
void AddDuplicateVertex(int i); void AddDuplicateVertex(int i);
void AddLerpVertex(int i, int j, float alpha);
void AppendQuad(int i1, int i2, int i3, int i4, int base); void AppendQuad(int i1, int i2, int i3, int i4, int base);
void AppendQuadDuplicateVerts(int i1, int i2, int i3, int i4, int base); void AppendQuadDuplicateVerts(int i1, int i2, int i3, int i4, int base);
void AppendTriangle(int i1, int i2, int i3, int base); void AppendTriangle(int i1, int i2, int i3, int base);
@@ -270,7 +271,6 @@ private:
inline MeshTransform(Value v) : m_value(v) {} inline MeshTransform(Value v) : m_value(v) {}
inline operator Value() { return m_value; } inline operator Value() { return m_value; }
}; };

void DoMeshTransform(MeshTransform ct, Axis axis0, Axis axis1, float n0, float n1, float noff, int absolute); void DoMeshTransform(MeshTransform ct, Axis axis0, Axis axis1, float n0, float n1, float noff, int absolute);
public: public:
/* [cmd:s/sx/sy/sz] Scale vertices /* [cmd:s/sx/sy/sz] Scale vertices
@@ -302,6 +302,9 @@ public:
//Mesh shape operations //Mesh shape operations
//------------------------------------------------------------------------- //-------------------------------------------------------------------------


/*
*/
void SplitTriangles(int pass);
/* [cmd:ac] Cylinder centered on (0,0,0) with BBox [-.5*max(d1, d2), -.5*h, -.5*max(d1, d2)] /* [cmd:ac] Cylinder centered on (0,0,0) with BBox [-.5*max(d1, d2), -.5*h, -.5*max(d1, d2)]
- nbsides : Number of sides. [+.5*max(d1, d2), +.5*h, +.5*max(d1, d2)] - nbsides : Number of sides. [+.5*max(d1, d2), +.5*h, +.5*max(d1, d2)]
- h : Height of the cylinder. - h : Height of the cylinder.


+ 225
- 208
src/generated/easymesh-parser.cpp View File

@@ -763,240 +763,247 @@ namespace lol {


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 160 "easymesh/easymesh-parser.y" #line 160 "easymesh/easymesh-parser.y"
{ mc.m_mesh.ToggleScaleWinding(); }
{ mc.m_mesh.SplitTriangles((yysemantic_stack_[(2) - (2)].args).f0); }
break; break;


case 59: case 59:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 161 "easymesh/easymesh-parser.y" #line 161 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgUnion(); }
{ mc.m_mesh.ToggleScaleWinding(); }
break; break;


case 60: case 60:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 162 "easymesh/easymesh-parser.y" #line 162 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgSubstract(); }
{ mc.m_mesh.CsgUnion(); }
break; break;


case 61: case 61:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 163 "easymesh/easymesh-parser.y" #line 163 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgSubstractLoss(); }
{ mc.m_mesh.CsgSubstract(); }
break; break;


case 62: case 62:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 164 "easymesh/easymesh-parser.y" #line 164 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgAnd(); }
{ mc.m_mesh.CsgSubstractLoss(); }
break; break;


case 63: case 63:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 165 "easymesh/easymesh-parser.y" #line 165 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgXor(); }
{ mc.m_mesh.CsgAnd(); }
break; break;


case 64: case 64:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 169 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
(int)(yysemantic_stack_[(2) - (2)].args).f4, (int)(yysemantic_stack_[(2) - (2)].args).f5, 0); }
#line 166 "easymesh/easymesh-parser.y"
{ mc.m_mesh.CsgXor(); }
break; break;


case 65: case 65:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 172 "easymesh/easymesh-parser.y"
#line 170 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, { mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
(int)(yysemantic_stack_[(2) - (2)].args).f4, (int)(yysemantic_stack_[(2) - (2)].args).f5, (int)(yysemantic_stack_[(2) - (2)].args).f6); }
(int)(yysemantic_stack_[(2) - (2)].args).f4, (int)(yysemantic_stack_[(2) - (2)].args).f5, 0); }
break; break;


case 66: case 66:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 175 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
#line 173 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
(int)(yysemantic_stack_[(2) - (2)].args).f4, (int)(yysemantic_stack_[(2) - (2)].args).f5, (int)(yysemantic_stack_[(2) - (2)].args).f6); }
break; break;


case 67: case 67:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 176 "easymesh/easymesh-parser.y" #line 176 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
{ mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
break; break;


case 68: case 68:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 178 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
#line 177 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
break; break;


case 69: case 69:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 180 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSphere((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
#line 179 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
break; break;


case 70: case 70:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 181 "easymesh/easymesh-parser.y" #line 181 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCapsule((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
{ mc.m_mesh.AppendSphere((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
break; break;


case 71: case 71:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 182 "easymesh/easymesh-parser.y" #line 182 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendTorus((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
{ mc.m_mesh.AppendCapsule((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break; break;


case 72: case 72:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 183 "easymesh/easymesh-parser.y" #line 183 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2,
(int)(yysemantic_stack_[(2) - (2)].args).f3, (int)(yysemantic_stack_[(2) - (2)].args).f4); }
{ mc.m_mesh.AppendTorus((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
break; break;


case 73: case 73:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 185 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendExpandedStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
#line 184 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2,
(int)(yysemantic_stack_[(2) - (2)].args).f3, (int)(yysemantic_stack_[(2) - (2)].args).f4); }
break; break;


case 74: case 74:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 187 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendDisc((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (int)(yysemantic_stack_[(2) - (2)].args).f2); }
#line 186 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendExpandedStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
break; break;


case 75: case 75:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 188 "easymesh/easymesh-parser.y" #line 188 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
{ mc.m_mesh.AppendDisc((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (int)(yysemantic_stack_[(2) - (2)].args).f2); }
break; break;


case 76: case 76:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 189 "easymesh/easymesh-parser.y" #line 189 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
{ mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
break; break;


case 77: case 77:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 190 "easymesh/easymesh-parser.y" #line 190 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCog((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3, (yysemantic_stack_[(2) - (2)].args).f4, (yysemantic_stack_[(2) - (2)].args).f5, (yysemantic_stack_[(2) - (2)].args).f6,
(yysemantic_stack_[(2) - (2)].args).f7, (yysemantic_stack_[(2) - (2)].args).f8, (int)(yysemantic_stack_[(2) - (2)].args).f9); }
{ mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
break; break;


case 78: case 78:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 195 "easymesh/easymesh-parser.y"
{ (yyval.args).f0 = (yysemantic_stack_[(1) - (1)].fval); }
#line 191 "easymesh/easymesh-parser.y"
{ mc.m_mesh.AppendCog((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
(yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3, (yysemantic_stack_[(2) - (2)].args).f4, (yysemantic_stack_[(2) - (2)].args).f5, (yysemantic_stack_[(2) - (2)].args).f6,
(yysemantic_stack_[(2) - (2)].args).f7, (yysemantic_stack_[(2) - (2)].args).f8, (int)(yysemantic_stack_[(2) - (2)].args).f9); }
break; break;


case 79: case 79:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 196 "easymesh/easymesh-parser.y" #line 196 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f1 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args).f0 = (yysemantic_stack_[(1) - (1)].fval); }
break; break;


case 80: case 80:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 197 "easymesh/easymesh-parser.y" #line 197 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f2 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f1 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 81: case 81:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 198 "easymesh/easymesh-parser.y" #line 198 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f3 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f2 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 82: case 82:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 199 "easymesh/easymesh-parser.y" #line 199 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f4 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f3 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 83: case 83:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 200 "easymesh/easymesh-parser.y" #line 200 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f5 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f4 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 84: case 84:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 201 "easymesh/easymesh-parser.y" #line 201 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f6 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f5 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 85: case 85:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 202 "easymesh/easymesh-parser.y" #line 202 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f7 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f6 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 86: case 86:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 203 "easymesh/easymesh-parser.y" #line 203 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f8 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f7 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 87: case 87:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 204 "easymesh/easymesh-parser.y" #line 204 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f9 = (yysemantic_stack_[(2) - (2)].fval); }
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f8 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 88: case 88:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 207 "easymesh/easymesh-parser.y"
{ (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); }
#line 205 "easymesh/easymesh-parser.y"
{ (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f9 = (yysemantic_stack_[(2) - (2)].fval); }
break; break;


case 89: case 89:


/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 208 "easymesh/easymesh-parser.y" #line 208 "easymesh/easymesh-parser.y"
{ (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); }
break;

case 90:

/* Line 677 of lalr1.cc */
#line 209 "easymesh/easymesh-parser.y"
{ (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); } { (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); }
break; break;






/* Line 677 of lalr1.cc */ /* Line 677 of lalr1.cc */
#line 1000 "generated/easymesh-parser.cpp"
#line 1007 "generated/easymesh-parser.cpp"
default: default:
break; break;
} }
@@ -1201,25 +1208,26 @@ namespace lol {


/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */ STATE-NUM. */
const signed char EasyMeshParser::yypact_ninf_ = -69;
const signed char EasyMeshParser::yypact_ninf_ = -70;
const signed char const signed char
EasyMeshParser::yypact_[] = EasyMeshParser::yypact_[] =
{ {
60, -40, -23, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -69, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -69, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -69, -47, -47, -69, -47, -69, -69, -69,
-69, -69, -47, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -47, -47, -47, -47, -69, 4, 6, 60,
60, 119, -69, -69, -69, -69, -69, -69, -47, -47,
-47, -47, -69, -69, -69, -69, -69, -69, -47, -69,
-69, -47, -69, -69, -69, -69, -69, -69, -69, -47,
-69, -69, -47, -69, -69, -69, -69, -69, -69, -69,
-47, -69, -69, -47, -69, -69, -69, -69, -69, -69,
-69, -69, -69, -47, -47, -47, -69, -69, -69, -69,
-69, -69, -69, -69, -69, -69, -69, -47, -47, -47,
-47, -69, -69, -69, -69, -69, -53, -69, -69, -69,
-69, -69, -69, -69, -69, -69, -69, -69, -69, -69
61, -41, -24, -48, -48, -48, -48, -48, -48, -48,
-48, -48, -70, -48, -48, -48, -48, -48, -48, -48,
-48, -48, -70, -48, -48, -48, -48, -48, -48, -48,
-48, -48, -70, -48, -48, -70, -48, -48, -70, -70,
-70, -70, -70, -48, -48, -48, -48, -48, -48, -48,
-48, -48, -48, -48, -48, -48, -48, -70, 4, 6,
61, 61, 121, -70, -70, -70, -70, -70, -70, -48,
-48, -48, -48, -70, -70, -70, -70, -70, -70, -48,
-70, -70, -48, -70, -70, -70, -70, -70, -70, -70,
-48, -70, -70, -48, -70, -70, -70, -70, -70, -70,
-70, -48, -70, -70, -48, -70, -70, -70, -70, -70,
-70, -70, -70, -70, -70, -48, -48, -48, -70, -70,
-70, -70, -70, -70, -70, -70, -70, -70, -70, -48,
-48, -48, -48, -70, -70, -70, -70, -70, -54, -70,
-70, -70, -70, -70, -70, -70, -70, -70, -70, -70,
-70, -70
}; };


/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
@@ -1231,36 +1239,37 @@ namespace lol {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0,
0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 58, 0, 59, 60, 61,
62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 7, 0, 0, 3,
0, 5, 9, 11, 12, 13, 88, 15, 0, 0,
0, 0, 14, 78, 17, 16, 19, 23, 26, 27,
32, 35, 36, 41, 44, 45, 50, 20, 24, 28,
29, 33, 37, 38, 42, 46, 47, 51, 21, 25,
30, 31, 34, 39, 40, 43, 48, 49, 52, 22,
53, 57, 18, 0, 0, 64, 65, 66, 67, 68,
69, 70, 72, 73, 74, 75, 76, 0, 0, 0,
0, 77, 71, 1, 2, 4, 0, 10, 89, 79,
80, 81, 82, 83, 84, 85, 86, 87, 8, 6
0, 0, 56, 0, 0, 59, 0, 0, 60, 61,
62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
3, 0, 5, 9, 11, 12, 13, 89, 15, 0,
0, 0, 0, 14, 79, 17, 16, 19, 23, 26,
27, 32, 35, 36, 41, 44, 45, 50, 20, 24,
28, 29, 33, 37, 38, 42, 46, 47, 51, 21,
25, 30, 31, 34, 39, 40, 43, 48, 49, 52,
22, 53, 57, 58, 18, 0, 0, 65, 66, 67,
68, 69, 70, 71, 73, 74, 75, 76, 77, 0,
0, 0, 0, 78, 72, 1, 2, 4, 0, 10,
90, 80, 81, 82, 83, 84, 85, 86, 87, 88,
8, 6
}; };


/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
const short int const short int
EasyMeshParser::yypgoto_[] = EasyMeshParser::yypgoto_[] =
{ {
-69, -69, -30, -69, -69, -69, -69, -50, -69, -69,
-69, 224, 178, 0, 176, -35, -32, -28, -69, -69,
-69, -68
-70, -70, -31, -70, -70, -70, -70, -51, -70, -70,
-70, 228, 181, 0, 179, -36, -33, -29, -70, -70,
-70, -69
}; };


/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
const short int const short int
EasyMeshParser::yydefgoto_[] = EasyMeshParser::yydefgoto_[] =
{ {
-1, 57, 58, 59, 60, 149, 61, 62, 63, 64,
65, 69, 70, 71, 113, 114, 115, 116, 129, 130,
131, 73
-1, 58, 59, 60, 61, 151, 62, 63, 64, 65,
66, 70, 71, 72, 115, 116, 117, 118, 131, 132,
133, 74
}; };


/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -1270,66 +1279,68 @@ namespace lol {
const unsigned char const unsigned char
EasyMeshParser::yytable_[] = EasyMeshParser::yytable_[] =
{ {
138, 139, 140, 141, 133, 78, 134, 81, 83, 148,
141, 137, 66, 141, 122, 89, 68, 92, 94, 66,
67, 141, 127, 68, 141, 100, 128, 103, 105, 135,
136, 0, 141, 109, 110, 141, 66, 74, 0, 0,
68, 0, 0, 0, 117, 142, 143, 144, 121, 0,
0, 124, 0, 0, 0, 132, 0, 0, 0, 144,
145, 146, 147, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 0, 0,
0, 56, 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 72, 75, 0,
0, 79, 0, 82, 80, 0, 0, 84, 85, 0,
0, 90, 0, 93, 91, 0, 0, 95, 96, 0,
0, 101, 0, 104, 102, 0, 0, 106, 107, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 118, 119, 0, 0, 120, 123, 76, 77, 0,
125, 126, 0, 0, 0, 86, 0, 87, 88, 0,
0, 0, 0, 0, 0, 97, 0, 98, 99, 0,
0, 0, 0, 0, 0, 108, 0, 0, 0, 0,
111, 0, 0, 0, 0, 0, 112
140, 141, 142, 143, 135, 79, 136, 82, 84, 150,
143, 139, 67, 143, 124, 90, 69, 93, 95, 67,
68, 143, 129, 69, 143, 101, 130, 104, 106, 137,
138, 0, 143, 110, 111, 143, 67, 75, 0, 0,
69, 0, 0, 0, 0, 119, 144, 145, 146, 123,
0, 0, 126, 0, 0, 0, 134, 0, 0, 0,
146, 147, 148, 149, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
0, 0, 0, 57, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
73, 76, 0, 0, 80, 0, 83, 81, 0, 0,
85, 86, 0, 0, 91, 0, 94, 92, 0, 0,
96, 97, 0, 0, 102, 0, 105, 103, 0, 0,
107, 108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 120, 121, 0, 0, 122,
125, 77, 78, 0, 127, 128, 0, 0, 0, 87,
0, 88, 89, 0, 0, 0, 0, 0, 0, 98,
0, 99, 100, 0, 0, 0, 0, 0, 0, 109,
0, 0, 0, 0, 112, 113, 0, 0, 0, 0,
0, 114
}; };


/* YYCHECK. */ /* YYCHECK. */
const short int const short int
EasyMeshParser::yycheck_[] = EasyMeshParser::yycheck_[] =
{ {
68, 69, 70, 71, 0, 5, 0, 7, 8, 62,
78, 61, 59, 81, 49, 15, 63, 17, 18, 59,
60, 89, 54, 63, 92, 25, 54, 27, 28, 59,
60, -1, 100, 33, 34, 103, 59, 60, -1, -1,
63, -1, -1, -1, 44, 113, 114, 115, 48, -1,
-1, 51, -1, -1, -1, 55, -1, -1, -1, 127,
128, 129, 130, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, -1,
-1, 61, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 1, 2, -1,
-1, 5, -1, 7, 6, -1, -1, 9, 10, -1,
-1, 15, -1, 17, 16, -1, -1, 19, 20, -1,
-1, 25, -1, 27, 26, -1, -1, 29, 30, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 45, 46, -1, -1, 47, 50, 3, 4, -1,
52, 53, -1, -1, -1, 11, -1, 13, 14, -1,
-1, -1, -1, -1, -1, 21, -1, 23, 24, -1,
-1, -1, -1, -1, -1, 31, -1, -1, -1, -1,
36, -1, -1, -1, -1, -1, 42
69, 70, 71, 72, 0, 5, 0, 7, 8, 63,
79, 62, 60, 82, 50, 15, 64, 17, 18, 60,
61, 90, 55, 64, 93, 25, 55, 27, 28, 60,
61, -1, 101, 33, 34, 104, 60, 61, -1, -1,
64, -1, -1, -1, -1, 45, 115, 116, 117, 49,
-1, -1, 52, -1, -1, -1, 56, -1, -1, -1,
129, 130, 131, 132, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
-1, -1, -1, 62, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1, 2, -1, -1, 5, -1, 7, 6, -1, -1,
9, 10, -1, -1, 15, -1, 17, 16, -1, -1,
19, 20, -1, -1, 25, -1, 27, 26, -1, -1,
29, 30, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 46, 47, -1, -1, 48,
51, 3, 4, -1, 53, 54, -1, -1, -1, 11,
-1, 13, 14, -1, -1, -1, -1, -1, -1, 21,
-1, 23, 24, -1, -1, -1, -1, -1, -1, 31,
-1, -1, -1, -1, 36, 37, -1, -1, -1, -1,
-1, 43
}; };


/* STOS_[STATE-NUM] -- The (internal number of the) accessing /* STOS_[STATE-NUM] -- The (internal number of the) accessing
@@ -1342,16 +1353,17 @@ namespace lol {
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 61, 65, 66, 67,
68, 70, 71, 72, 73, 74, 59, 60, 63, 75,
76, 77, 78, 85, 60, 78, 75, 75, 77, 78,
76, 77, 78, 77, 76, 76, 75, 75, 75, 77,
78, 76, 77, 78, 77, 76, 76, 75, 75, 75,
77, 78, 76, 77, 78, 77, 76, 76, 75, 77,
77, 75, 75, 78, 79, 80, 81, 77, 78, 78,
76, 77, 79, 78, 77, 76, 76, 80, 81, 82,
83, 84, 77, 0, 0, 66, 66, 71, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 62, 69
52, 53, 54, 55, 56, 57, 58, 62, 66, 67,
68, 69, 71, 72, 73, 74, 75, 60, 61, 64,
76, 77, 78, 79, 86, 61, 79, 76, 76, 78,
79, 77, 78, 79, 78, 77, 77, 76, 76, 76,
78, 79, 77, 78, 79, 78, 77, 77, 76, 76,
76, 78, 79, 77, 78, 79, 78, 77, 77, 76,
78, 78, 76, 76, 76, 79, 80, 81, 82, 78,
79, 79, 77, 78, 80, 79, 78, 77, 77, 81,
82, 83, 84, 85, 78, 0, 0, 67, 67, 72,
86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
63, 70
}; };


#if YYDEBUG #if YYDEBUG
@@ -1366,7 +1378,7 @@ namespace lol {
285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 91, 93, 45
315, 316, 91, 93, 45
}; };
#endif #endif


@@ -1374,15 +1386,16 @@ namespace lol {
const unsigned char const unsigned char
EasyMeshParser::yyr1_[] = EasyMeshParser::yyr1_[] =
{ {
0, 64, 65, 66, 66, 67, 67, 68, 69, 70,
70, 71, 71, 71, 72, 72, 72, 72, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 75, 76,
77, 78, 79, 80, 81, 82, 83, 84, 85, 85
0, 65, 66, 67, 67, 68, 68, 69, 70, 71,
71, 72, 72, 72, 73, 73, 73, 73, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 75, 75, 75, 75, 76,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
86
}; };


/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -1394,10 +1407,11 @@ namespace lol {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 1, 2,
2, 2, 2, 2, 2, 2, 2, 2, 1, 2
2, 2, 2, 2, 1, 1, 1, 2, 2, 1,
1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
2
}; };


#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
@@ -1413,12 +1427,12 @@ namespace lol {
"T_BENDYX", "T_BENDYZ", "T_SCALEY", "T_MIRRORY", "T_TRANSLATEZ", "T_BENDYX", "T_BENDYZ", "T_SCALEY", "T_MIRRORY", "T_TRANSLATEZ",
"T_ROTATEZ", "T_TAPERZ", "T_TWISTZ", "T_SHEARZ", "T_STRETCHZ", "T_ROTATEZ", "T_TAPERZ", "T_TWISTZ", "T_SHEARZ", "T_STRETCHZ",
"T_BENDZX", "T_BENDZY", "T_SCALEZ", "T_MIRRORZ", "T_TRANSLATE", "T_BENDZX", "T_BENDZY", "T_SCALEZ", "T_MIRRORZ", "T_TRANSLATE",
"T_SCALE", "T_TOGGLESCALEWINDING", "T_RADIALJITTER", "T_CSGUNION",
"T_CSGSUBSTRACT", "T_CSGSUBSTRACTLOSS", "T_CSGAND", "T_CSGXOR",
"T_CHAMFER", "T_CYLINDER", "T_BOX", "T_SMOOTHCHAMFBOX", "T_FLATCHAMFBOX",
"T_SPHERE", "T_CAPSULE", "T_STAR", "T_EXPANDEDSTAR", "T_DISC",
"T_TRIANGLE", "T_QUAD", "T_COG", "T_TORUS", "T_ERROR", "NUMBER", "COLOR",
"'['", "']'", "'-'", "$accept", "mesh_description",
"T_SCALE", "T_TOGGLESCALEWINDING", "T_RADIALJITTER", "T_SPLITTRIANGLE",
"T_CSGUNION", "T_CSGSUBSTRACT", "T_CSGSUBSTRACTLOSS", "T_CSGAND",
"T_CSGXOR", "T_CHAMFER", "T_CYLINDER", "T_BOX", "T_SMOOTHCHAMFBOX",
"T_FLATCHAMFBOX", "T_SPHERE", "T_CAPSULE", "T_STAR", "T_EXPANDEDSTAR",
"T_DISC", "T_TRIANGLE", "T_QUAD", "T_COG", "T_TORUS", "T_ERROR",
"NUMBER", "COLOR", "'['", "']'", "'-'", "$accept", "mesh_description",
"mesh_expression_list", "mesh_expression", "mesh_open", "mesh_close", "mesh_expression_list", "mesh_expression", "mesh_open", "mesh_close",
"mesh_command_list", "mesh_command", "color_command", "mesh_command_list", "mesh_command", "color_command",
"transform_command", "primitive_command", "args1", "args2", "args3", "transform_command", "primitive_command", "args1", "args2", "args3",
@@ -1431,31 +1445,32 @@ namespace lol {
const EasyMeshParser::rhs_number_type const EasyMeshParser::rhs_number_type
EasyMeshParser::yyrhs_[] = EasyMeshParser::yyrhs_[] =
{ {
65, 0, -1, 66, 0, -1, 67, -1, 67, 66,
-1, 70, -1, 68, 66, 69, -1, 61, -1, 62,
-1, 71, -1, 70, 71, -1, 72, -1, 73, -1,
74, -1, 3, 78, -1, 3, 60, -1, 4, 78,
-1, 4, 60, -1, 44, 75, -1, 5, 75, -1,
15, 75, -1, 25, 75, -1, 35, 77, -1, 6,
75, -1, 16, 75, -1, 26, 75, -1, 7, 77,
-1, 7, 78, -1, 17, 77, -1, 17, 78, -1,
27, 77, -1, 27, 78, -1, 8, 76, -1, 18,
76, -1, 28, 76, -1, 9, 77, -1, 9, 78,
-1, 19, 77, -1, 19, 78, -1, 29, 77, -1,
29, 78, -1, 10, 77, -1, 20, 77, -1, 30,
77, -1, 11, 76, -1, 12, 76, -1, 21, 76,
-1, 22, 76, -1, 31, 76, -1, 32, 76, -1,
13, 75, -1, 23, 75, -1, 33, 75, -1, 36,
77, -1, 14, -1, 24, -1, 34, -1, 38, 75,
-1, 37, -1, 39, -1, 40, -1, 41, -1, 42,
-1, 43, -1, 45, 80, -1, 45, 81, -1, 46,
77, -1, 47, 78, -1, 48, 78, -1, 49, 76,
-1, 50, 77, -1, 57, 77, -1, 51, 79, -1,
52, 78, -1, 53, 77, -1, 54, 76, -1, 55,
76, -1, 56, 84, -1, 85, -1, 75, 85, -1,
76, 85, -1, 77, 85, -1, 78, 85, -1, 79,
85, -1, 80, 85, -1, 81, 85, -1, 82, 85,
-1, 83, 85, -1, 59, -1, 63, 85, -1
66, 0, -1, 67, 0, -1, 68, -1, 68, 67,
-1, 71, -1, 69, 67, 70, -1, 62, -1, 63,
-1, 72, -1, 71, 72, -1, 73, -1, 74, -1,
75, -1, 3, 79, -1, 3, 61, -1, 4, 79,
-1, 4, 61, -1, 45, 76, -1, 5, 76, -1,
15, 76, -1, 25, 76, -1, 35, 78, -1, 6,
76, -1, 16, 76, -1, 26, 76, -1, 7, 78,
-1, 7, 79, -1, 17, 78, -1, 17, 79, -1,
27, 78, -1, 27, 79, -1, 8, 77, -1, 18,
77, -1, 28, 77, -1, 9, 78, -1, 9, 79,
-1, 19, 78, -1, 19, 79, -1, 29, 78, -1,
29, 79, -1, 10, 78, -1, 20, 78, -1, 30,
78, -1, 11, 77, -1, 12, 77, -1, 21, 77,
-1, 22, 77, -1, 31, 77, -1, 32, 77, -1,
13, 76, -1, 23, 76, -1, 33, 76, -1, 36,
78, -1, 14, -1, 24, -1, 34, -1, 38, 76,
-1, 39, 76, -1, 37, -1, 40, -1, 41, -1,
42, -1, 43, -1, 44, -1, 46, 81, -1, 46,
82, -1, 47, 78, -1, 48, 79, -1, 49, 79,
-1, 50, 77, -1, 51, 78, -1, 58, 78, -1,
52, 80, -1, 53, 79, -1, 54, 78, -1, 55,
77, -1, 56, 77, -1, 57, 85, -1, 86, -1,
76, 86, -1, 77, 86, -1, 78, 86, -1, 79,
86, -1, 80, 86, -1, 81, 86, -1, 82, 86,
-1, 83, 86, -1, 84, 86, -1, 60, -1, 64,
86, -1
}; };


/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
@@ -1468,10 +1483,11 @@ namespace lol {
50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77,
80, 83, 86, 89, 92, 95, 98, 101, 104, 107, 80, 83, 86, 89, 92, 95, 98, 101, 104, 107,
110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137,
140, 143, 146, 149, 152, 154, 156, 158, 161, 163,
165, 167, 169, 171, 173, 176, 179, 182, 185, 188,
191, 194, 197, 200, 203, 206, 209, 212, 215, 217,
220, 223, 226, 229, 232, 235, 238, 241, 244, 246
140, 143, 146, 149, 152, 154, 156, 158, 161, 164,
166, 168, 170, 172, 174, 176, 179, 182, 185, 188,
191, 194, 197, 200, 203, 206, 209, 212, 215, 218,
220, 223, 226, 229, 232, 235, 238, 241, 244, 247,
249
}; };


/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
@@ -1484,9 +1500,10 @@ namespace lol {
132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
162, 163, 164, 165, 169, 172, 175, 176, 178, 180,
181, 182, 183, 185, 187, 188, 189, 190, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 207, 208
162, 163, 164, 165, 166, 170, 173, 176, 177, 179,
181, 182, 183, 184, 186, 188, 189, 190, 191, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 208,
209
}; };


// Print the state stack on the debug stream. // Print the state stack on the debug stream.
@@ -1530,12 +1547,12 @@ namespace lol {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 63, 2, 2, 2, 2,
2, 2, 2, 2, 2, 64, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 61, 2, 62, 2, 2, 2, 2, 2, 2,
2, 62, 2, 63, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1557,7 +1574,7 @@ namespace lol {
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60
55, 56, 57, 58, 59, 60, 61
}; };
if ((unsigned int) t <= yyuser_token_number_max_) if ((unsigned int) t <= yyuser_token_number_max_)
return translate_table[t]; return translate_table[t];
@@ -1566,26 +1583,26 @@ namespace lol {
} }


const int EasyMeshParser::yyeof_ = 0; const int EasyMeshParser::yyeof_ = 0;
const int EasyMeshParser::yylast_ = 266;
const int EasyMeshParser::yylast_ = 271;
const int EasyMeshParser::yynnts_ = 22; const int EasyMeshParser::yynnts_ = 22;
const int EasyMeshParser::yyempty_ = -2; const int EasyMeshParser::yyempty_ = -2;
const int EasyMeshParser::yyfinal_ = 133;
const int EasyMeshParser::yyfinal_ = 135;
const int EasyMeshParser::yyterror_ = 1; const int EasyMeshParser::yyterror_ = 1;
const int EasyMeshParser::yyerrcode_ = 256; const int EasyMeshParser::yyerrcode_ = 256;
const int EasyMeshParser::yyntokens_ = 64;
const int EasyMeshParser::yyntokens_ = 65;


const unsigned int EasyMeshParser::yyuser_token_number_max_ = 315;
const unsigned int EasyMeshParser::yyuser_token_number_max_ = 316;
const EasyMeshParser::token_number_type EasyMeshParser::yyundef_token_ = 2; const EasyMeshParser::token_number_type EasyMeshParser::yyundef_token_ = 2;




} // lol } // lol


/* Line 1053 of lalr1.cc */ /* Line 1053 of lalr1.cc */
#line 1585 "generated/easymesh-parser.cpp"
#line 1602 "generated/easymesh-parser.cpp"




/* Line 1055 of lalr1.cc */ /* Line 1055 of lalr1.cc */
#line 211 "easymesh/easymesh-parser.y"
#line 212 "easymesh/easymesh-parser.y"




void lol::EasyMeshParser::error(const EasyMeshParser::location_type& l, void lol::EasyMeshParser::error(const EasyMeshParser::location_type& l,


+ 24
- 23
src/generated/easymesh-parser.h View File

@@ -168,28 +168,29 @@ namespace lol {
T_SCALE = 291, T_SCALE = 291,
T_TOGGLESCALEWINDING = 292, T_TOGGLESCALEWINDING = 292,
T_RADIALJITTER = 293, T_RADIALJITTER = 293,
T_CSGUNION = 294,
T_CSGSUBSTRACT = 295,
T_CSGSUBSTRACTLOSS = 296,
T_CSGAND = 297,
T_CSGXOR = 298,
T_CHAMFER = 299,
T_CYLINDER = 300,
T_BOX = 301,
T_SMOOTHCHAMFBOX = 302,
T_FLATCHAMFBOX = 303,
T_SPHERE = 304,
T_CAPSULE = 305,
T_STAR = 306,
T_EXPANDEDSTAR = 307,
T_DISC = 308,
T_TRIANGLE = 309,
T_QUAD = 310,
T_COG = 311,
T_TORUS = 312,
T_ERROR = 313,
NUMBER = 314,
COLOR = 315
T_SPLITTRIANGLE = 294,
T_CSGUNION = 295,
T_CSGSUBSTRACT = 296,
T_CSGSUBSTRACTLOSS = 297,
T_CSGAND = 298,
T_CSGXOR = 299,
T_CHAMFER = 300,
T_CYLINDER = 301,
T_BOX = 302,
T_SMOOTHCHAMFBOX = 303,
T_FLATCHAMFBOX = 304,
T_SPHERE = 305,
T_CAPSULE = 306,
T_STAR = 307,
T_EXPANDEDSTAR = 308,
T_DISC = 309,
T_TRIANGLE = 310,
T_QUAD = 311,
T_COG = 312,
T_TORUS = 313,
T_ERROR = 314,
NUMBER = 315,
COLOR = 316
}; };


}; };
@@ -363,7 +364,7 @@ namespace lol {
} // lol } // lol


/* Line 34 of lalr1.cc */ /* Line 34 of lalr1.cc */
#line 367 "generated/easymesh-parser.h"
#line 368 "generated/easymesh-parser.h"








+ 129
- 122
src/generated/easymesh-scanner.cpp View File

@@ -330,8 +330,8 @@ typedef unsigned char YY_CHAR;
*yy_cp = '\0'; \ *yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp; (yy_c_buf_p) = yy_cp;


#define YY_NUM_RULES 67
#define YY_END_OF_BUFFER 68
#define YY_NUM_RULES 68
#define YY_END_OF_BUFFER 69
/* This struct is not used in this scanner, /* This struct is not used in this scanner,
but its presence is necessary. */ but its presence is necessary. */
struct yy_trans_info struct yy_trans_info
@@ -339,20 +339,20 @@ struct yy_trans_info
flex_int32_t yy_verify; flex_int32_t yy_verify;
flex_int32_t yy_nxt; flex_int32_t yy_nxt;
}; };
static yyconst flex_int16_t yy_accept[106] =
static yyconst flex_int16_t yy_accept[109] =
{ 0, { 0,
0, 0, 68, 66, 65, 64, 66, 66, 61, 66,
60, 62, 63, 66, 66, 66, 66, 66, 32, 7,
0, 0, 60, 60, 0, 43, 44, 47, 0, 0,
50, 51, 54, 0, 3, 0, 34, 35, 36, 37,
8, 9, 10, 1, 0, 0, 29, 30, 31, 0,
0, 0, 4, 5, 6, 0, 0, 60, 0, 46,
48, 0, 0, 0, 55, 0, 0, 0, 0, 2,
17, 18, 19, 20, 21, 22, 11, 12, 13, 33,
14, 15, 16, 56, 45, 49, 52, 53, 23, 24,
25, 26, 27, 28, 41, 39, 38, 42, 57, 40,
0, 58, 0, 59, 0
0, 0, 69, 67, 66, 65, 67, 67, 62, 67,
61, 63, 64, 67, 67, 67, 67, 67, 32, 7,
0, 0, 61, 61, 0, 44, 45, 48, 0, 0,
51, 52, 55, 0, 3, 0, 34, 35, 36, 37,
8, 9, 10, 1, 0, 0, 0, 29, 30, 31,
0, 0, 0, 4, 5, 6, 0, 0, 61, 0,
47, 49, 0, 0, 0, 56, 0, 0, 0, 0,
2, 17, 18, 19, 0, 20, 21, 22, 11, 12,
13, 33, 14, 15, 16, 57, 46, 50, 53, 54,
23, 24, 25, 26, 27, 28, 42, 40, 39, 43,
38, 58, 41, 0, 59, 0, 60, 0
} ; } ;


static yyconst flex_int32_t yy_ec[256] = static yyconst flex_int32_t yy_ec[256] =
@@ -395,82 +395,84 @@ static yyconst flex_int32_t yy_meta[35] =
1, 1, 1, 1 1, 1, 1, 1
} ; } ;


static yyconst flex_int16_t yy_base[114] =
static yyconst flex_int16_t yy_base[117] =
{ 0, { 0,
0, 0, 135, 136, 136, 136, 0, 28, 30, 126,
32, 136, 136, 36, 117, 27, 11, 25, 51, 73,
0, 124, 53, 59, 67, 136, 55, 136, 103, 115,
136, 62, 105, 56, 136, 109, 136, 136, 136, 136,
136, 136, 136, 113, 59, 62, 136, 136, 136, 65,
95, 76, 136, 136, 136, 0, 117, 116, 98, 136,
136, 107, 105, 97, 136, 45, 68, 49, 90, 136,
136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
136, 136, 136, 0, 136, 136, 136, 136, 136, 136,
136, 136, 136, 136, 136, 94, 136, 136, 0, 136,
0, 0, 0, 136, 136, 113, 112, 111, 110, 109,
54, 46, 39
0, 0, 138, 139, 139, 139, 0, 28, 30, 129,
32, 139, 139, 36, 120, 27, 11, 25, 51, 73,
0, 126, 53, 64, 82, 139, 54, 139, 104, 115,
139, 53, 105, 59, 139, 109, 139, 139, 139, 139,
139, 139, 139, 113, 62, 104, 65, 139, 139, 139,
76, 94, 79, 139, 139, 139, 0, 116, 115, 97,
139, 139, 107, 106, 99, 139, 69, 43, 82, 103,
139, 139, 139, 139, 89, 139, 139, 139, 139, 139,
139, 139, 139, 139, 139, 0, 139, 139, 139, 139,
139, 139, 139, 139, 139, 139, 139, 95, 139, 139,
139, 0, 139, 0, 0, 0, 139, 139, 98, 87,
80, 77, 67, 54, 46, 39
} ; } ;


static yyconst flex_int16_t yy_def[114] =
static yyconst flex_int16_t yy_def[117] =
{ 0, { 0,
105, 1, 105, 105, 105, 105, 106, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
107, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 108, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 109, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 110, 105,
111, 112, 113, 105, 0, 105, 105, 105, 105, 105,
105, 105, 105
108, 1, 108, 108, 108, 108, 109, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
110, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 111, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 112, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 113, 108, 114, 115, 116, 108, 0, 108, 108,
108, 108, 108, 108, 108, 108
} ; } ;


static yyconst flex_int16_t yy_nxt[171] =
static yyconst flex_int16_t yy_nxt[174] =
{ 0, { 0,
4, 5, 6, 7, 8, 9, 10, 11, 4, 4, 4, 5, 6, 7, 8, 9, 10, 11, 4, 4,
12, 13, 14, 15, 16, 4, 4, 4, 4, 4, 12, 13, 14, 15, 16, 4, 4, 4, 4, 4,
4, 4, 17, 4, 4, 4, 18, 19, 20, 4, 4, 4, 17, 4, 4, 4, 18, 19, 20, 4,
4, 4, 4, 4, 22, 23, 22, 23, 22, 23, 4, 4, 4, 4, 22, 23, 22, 23, 22, 23,
104, 25, 37, 38, 39, 40, 35, 103, 25, 26,
27, 28, 29, 30, 36, 102, 41, 42, 43, 22,
23, 31, 25, 32, 33, 44, 24, 59, 25, 25,
45, 57, 57, 60, 58, 25, 63, 89, 90, 46,
93, 94, 47, 48, 49, 50, 64, 66, 67, 68,
71, 72, 73, 74, 75, 76, 77, 78, 79, 91,

51, 92, 95, 52, 53, 54, 55, 81, 82, 83,
101, 99, 84, 56, 21, 100, 88, 96, 87, 97,
86, 98, 85, 58, 58, 80, 70, 69, 65, 62,
61, 24, 34, 24, 105, 3, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105
107, 25, 37, 38, 39, 40, 35, 106, 25, 26,
27, 28, 29, 30, 36, 105, 41, 42, 43, 22,
23, 31, 25, 32, 33, 44, 60, 64, 104, 25,
45, 24, 61, 25, 93, 46, 94, 65, 102, 47,
25, 86, 48, 49, 50, 51, 58, 58, 57, 59,
67, 68, 69, 72, 73, 74, 76, 77, 78, 21,

52, 91, 92, 53, 54, 55, 56, 79, 80, 81,
83, 84, 85, 95, 96, 97, 103, 101, 90, 89,
88, 87, 59, 59, 82, 75, 71, 70, 66, 63,
98, 62, 99, 24, 100, 34, 24, 108, 3, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108
} ; } ;


static yyconst flex_int16_t yy_chk[171] =
static yyconst flex_int16_t yy_chk[174] =
{ 0, { 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 8, 8, 9, 9, 11, 11, 1, 1, 1, 1, 8, 8, 9, 9, 11, 11,
113, 11, 17, 17, 17, 18, 16, 112, 11, 14,
14, 14, 14, 14, 16, 111, 18, 18, 18, 23,
23, 14, 23, 14, 14, 19, 24, 27, 24, 23,
19, 25, 25, 27, 25, 24, 32, 66, 66, 19,
68, 68, 19, 19, 19, 20, 32, 34, 34, 34,
45, 45, 45, 46, 46, 46, 50, 50, 50, 67,

20, 67, 69, 20, 20, 20, 20, 52, 52, 52,
110, 109, 108, 107, 106, 96, 64, 69, 63, 69,
62, 69, 59, 58, 57, 51, 44, 36, 33, 30,
29, 22, 15, 10, 3, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105
116, 11, 17, 17, 17, 18, 16, 115, 11, 14,
14, 14, 14, 14, 16, 114, 18, 18, 18, 23,
23, 14, 23, 14, 14, 19, 27, 32, 113, 23,
19, 24, 27, 24, 68, 19, 68, 32, 112, 19,
24, 111, 19, 19, 19, 20, 25, 25, 110, 25,
34, 34, 34, 45, 45, 45, 47, 47, 47, 109,

20, 67, 67, 20, 20, 20, 20, 51, 51, 51,
53, 53, 53, 69, 69, 70, 98, 75, 65, 64,
63, 60, 59, 58, 52, 46, 44, 36, 33, 30,
70, 29, 70, 22, 70, 15, 10, 3, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108
} ; } ;


/* The intent behind this definition is that it'll catch /* The intent behind this definition is that it'll catch
@@ -519,7 +521,7 @@ typedef lol::EasyMeshParser::token_type token_type;
#define yyterminate() return token::T_END #define yyterminate() return token::T_END
#define YY_NO_UNISTD_H #define YY_NO_UNISTD_H
#define YY_USER_ACTION yylloc->columns(yyleng); #define YY_USER_ACTION yylloc->columns(yyleng);
#line 523 "generated/easymesh-scanner.cpp"
#line 525 "generated/easymesh-scanner.cpp"


#define INITIAL 0 #define INITIAL 0


@@ -632,7 +634,7 @@ YY_DECL
yylloc->step(); yylloc->step();




#line 636 "generated/easymesh-scanner.cpp"
#line 638 "generated/easymesh-scanner.cpp"


if ( !(yy_init) ) if ( !(yy_init) )
{ {
@@ -685,13 +687,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 106 )
if ( yy_current_state >= 109 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp; ++yy_cp;
} }
while ( yy_current_state != 105 );
while ( yy_current_state != 108 );
yy_cp = (yy_last_accepting_cpos); yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state); yy_current_state = (yy_last_accepting_state);


@@ -898,97 +900,102 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
#line 90 "easymesh/easymesh-scanner.l"
{ return token::T_CSGUNION; }
#line 89 "easymesh/easymesh-scanner.l"
{ return token::T_SPLITTRIANGLE; }
YY_BREAK YY_BREAK
case 39: case 39:
YY_RULE_SETUP YY_RULE_SETUP
#line 91 "easymesh/easymesh-scanner.l" #line 91 "easymesh/easymesh-scanner.l"
{ return token::T_CSGSUBSTRACT; }
{ return token::T_CSGUNION; }
YY_BREAK YY_BREAK
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
#line 92 "easymesh/easymesh-scanner.l" #line 92 "easymesh/easymesh-scanner.l"
{ return token::T_CSGSUBSTRACTLOSS; }
{ return token::T_CSGSUBSTRACT; }
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 93 "easymesh/easymesh-scanner.l" #line 93 "easymesh/easymesh-scanner.l"
{ return token::T_CSGAND; }
{ return token::T_CSGSUBSTRACTLOSS; }
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 94 "easymesh/easymesh-scanner.l" #line 94 "easymesh/easymesh-scanner.l"
{ return token::T_CSGXOR; }
{ return token::T_CSGAND; }
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 96 "easymesh/easymesh-scanner.l"
{ return token::T_BOX; }
#line 95 "easymesh/easymesh-scanner.l"
{ return token::T_CSGXOR; }
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 97 "easymesh/easymesh-scanner.l" #line 97 "easymesh/easymesh-scanner.l"
{ return token::T_CYLINDER; }
{ return token::T_BOX; }
YY_BREAK YY_BREAK
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
#line 98 "easymesh/easymesh-scanner.l" #line 98 "easymesh/easymesh-scanner.l"
{ return token::T_CAPSULE; }
{ return token::T_CYLINDER; }
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 99 "easymesh/easymesh-scanner.l" #line 99 "easymesh/easymesh-scanner.l"
{ return token::T_COG; }
{ return token::T_CAPSULE; }
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 100 "easymesh/easymesh-scanner.l" #line 100 "easymesh/easymesh-scanner.l"
{ return token::T_DISC; }
{ return token::T_COG; }
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 101 "easymesh/easymesh-scanner.l" #line 101 "easymesh/easymesh-scanner.l"
{ return token::T_EXPANDEDSTAR; }
{ return token::T_DISC; }
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 102 "easymesh/easymesh-scanner.l" #line 102 "easymesh/easymesh-scanner.l"
{ return token::T_FLATCHAMFBOX; }
{ return token::T_EXPANDEDSTAR; }
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
#line 103 "easymesh/easymesh-scanner.l" #line 103 "easymesh/easymesh-scanner.l"
{ return token::T_QUAD; }
{ return token::T_FLATCHAMFBOX; }
YY_BREAK YY_BREAK
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
#line 104 "easymesh/easymesh-scanner.l" #line 104 "easymesh/easymesh-scanner.l"
{ return token::T_STAR; }
{ return token::T_QUAD; }
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
#line 105 "easymesh/easymesh-scanner.l" #line 105 "easymesh/easymesh-scanner.l"
{ return token::T_SMOOTHCHAMFBOX; }
{ return token::T_STAR; }
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 106 "easymesh/easymesh-scanner.l" #line 106 "easymesh/easymesh-scanner.l"
{ return token::T_SPHERE; }
{ return token::T_SMOOTHCHAMFBOX; }
YY_BREAK YY_BREAK
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
#line 107 "easymesh/easymesh-scanner.l" #line 107 "easymesh/easymesh-scanner.l"
{ return token::T_TRIANGLE; }
{ return token::T_SPHERE; }
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 108 "easymesh/easymesh-scanner.l" #line 108 "easymesh/easymesh-scanner.l"
{ return token::T_TORUS; }
{ return token::T_TRIANGLE; }
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 110 "easymesh/easymesh-scanner.l"
#line 109 "easymesh/easymesh-scanner.l"
{ return token::T_TORUS; }
YY_BREAK
case 57:
YY_RULE_SETUP
#line 111 "easymesh/easymesh-scanner.l"
{ {
uint32_t tmp = std::strtol(yytext + 1, NULL, 16); uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
yylval->u32val = 0x11000000u * (tmp >> 8) yylval->u32val = 0x11000000u * (tmp >> 8)
@@ -997,9 +1004,9 @@ YY_RULE_SETUP
| 0x000000ffu; | 0x000000ffu;
return token::COLOR; } return token::COLOR; }
YY_BREAK YY_BREAK
case 57:
case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 117 "easymesh/easymesh-scanner.l"
#line 118 "easymesh/easymesh-scanner.l"
{ {
uint32_t tmp = std::strtol(yytext + 1, NULL, 16); uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
yylval->u32val = 0x11000000u * (tmp >> 12) yylval->u32val = 0x11000000u * (tmp >> 12)
@@ -1008,64 +1015,64 @@ YY_RULE_SETUP
| 0x00000011u * (tmp & 0xf); | 0x00000011u * (tmp & 0xf);
return token::COLOR; } return token::COLOR; }
YY_BREAK YY_BREAK
case 58:
case 59:
YY_RULE_SETUP YY_RULE_SETUP
#line 124 "easymesh/easymesh-scanner.l"
#line 125 "easymesh/easymesh-scanner.l"
{ {
yylval->u32val = 0xffu yylval->u32val = 0xffu
| 0x100u * (uint32_t)std::strtol(yytext + 1, NULL, 16); | 0x100u * (uint32_t)std::strtol(yytext + 1, NULL, 16);
return token::COLOR; } return token::COLOR; }
YY_BREAK YY_BREAK
case 59:
case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 128 "easymesh/easymesh-scanner.l"
#line 129 "easymesh/easymesh-scanner.l"
{ {
yylval->u32val = (uint32_t)std::strtol(yytext + 1, NULL, 16); yylval->u32val = (uint32_t)std::strtol(yytext + 1, NULL, 16);
return token::COLOR; } return token::COLOR; }
YY_BREAK YY_BREAK
case 60:
case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 131 "easymesh/easymesh-scanner.l"
#line 132 "easymesh/easymesh-scanner.l"
{ {
yylval->fval = std::atof(yytext); return token::NUMBER; } yylval->fval = std::atof(yytext); return token::NUMBER; }
YY_BREAK YY_BREAK
case 61:
YY_RULE_SETUP
#line 133 "easymesh/easymesh-scanner.l"
{ return token_type('-'); }
YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
#line 134 "easymesh/easymesh-scanner.l" #line 134 "easymesh/easymesh-scanner.l"
{ return token_type('['); }
{ return token_type('-'); }
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
#line 135 "easymesh/easymesh-scanner.l" #line 135 "easymesh/easymesh-scanner.l"
{ return token_type(']'); }
{ return token_type('['); }
YY_BREAK YY_BREAK
case 64: case 64:
YY_RULE_SETUP YY_RULE_SETUP
#line 136 "easymesh/easymesh-scanner.l" #line 136 "easymesh/easymesh-scanner.l"
{ /* ignore this */ }
{ return token_type(']'); }
YY_BREAK YY_BREAK
case 65: case 65:
/* rule 65 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 137 "easymesh/easymesh-scanner.l" #line 137 "easymesh/easymesh-scanner.l"
{ /* ignore this */ } { /* ignore this */ }
YY_BREAK YY_BREAK
case 66: case 66:
/* rule 66 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 138 "easymesh/easymesh-scanner.l" #line 138 "easymesh/easymesh-scanner.l"
{ return token::T_ERROR; }
{ /* ignore this */ }
YY_BREAK YY_BREAK
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
#line 140 "easymesh/easymesh-scanner.l"
#line 139 "easymesh/easymesh-scanner.l"
{ return token::T_ERROR; }
YY_BREAK
case 68:
YY_RULE_SETUP
#line 141 "easymesh/easymesh-scanner.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
#line 1069 "generated/easymesh-scanner.cpp"
#line 1076 "generated/easymesh-scanner.cpp"
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
yyterminate(); yyterminate();


@@ -1447,7 +1454,7 @@ int yyFlexLexer::yy_get_next_buffer()
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 106 )
if ( yy_current_state >= 109 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1475,11 +1482,11 @@ int yyFlexLexer::yy_get_next_buffer()
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 106 )
if ( yy_current_state >= 109 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 105);
yy_is_jam = (yy_current_state == 108);


return yy_is_jam ? 0 : yy_current_state; return yy_is_jam ? 0 : yy_current_state;
} }
@@ -1966,7 +1973,7 @@ void EasyMeshfree (void * ptr )


#define YYTABLES_NAME "yytables" #define YYTABLES_NAME "yytables"


#line 140 "easymesh/easymesh-scanner.l"
#line 141 "easymesh/easymesh-scanner.l"








+ 2
- 2
test/MeshViewerBuffer.txt View File

@@ -1,7 +1,7 @@
[sc#88f ab 4 4 4 splt 5 tz 4 bdxy 90 0]//twy 45 0
//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 tax .4 .4 0] //[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 tax .4 .4 0]
//[sc#88f ab 4 4 4]
//[sc#88f ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .125 stx 10 0 0] //[sc#88f ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .125 stx 10 0 0]
[sc#ff2 scb#2ff acg 13 2 1 1 8 8 4 4 0 1 tax -2 0 0 0]
//[sc#ff2 scb#2ff acg 13 2 1 1 8 8 4 4 0 1 tax -2 0 0 0]
//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 shz 1 0 0 0] //[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 shz 1 0 0 0]
//[sc#ff2 asph 4 4 shx 0 0 0 0] //[sc#ff2 asph 4 4 shx 0 0 0 0]
//[sc#ff2 asph 4 4 tax .4 .4 0] //[sc#ff2 asph 4 4 tax .4 .4 0]


Loading…
Cancel
Save