From 3ea6d93e95bd5ec903d77406419b752702114f43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20=E2=80=98Touky=E2=80=99=20Huet?= Date: Thu, 14 Feb 2013 00:25:24 +0000 Subject: [PATCH] easymesh : Added SplitTriangles function to multiply triangles for triangle MADNESS ! --- src/easymesh/easymesh-parser.y | 3 +- src/easymesh/easymesh-scanner.l | 1 + src/easymesh/easymesh.cpp | 57 +++- src/easymesh/easymesh.h | 5 +- src/generated/easymesh-parser.cpp | 433 +++++++++++++++-------------- src/generated/easymesh-parser.h | 47 ++-- src/generated/easymesh-scanner.cpp | 251 +++++++++-------- test/MeshViewerBuffer.txt | 4 +- 8 files changed, 438 insertions(+), 363 deletions(-) diff --git a/src/easymesh/easymesh-parser.y b/src/easymesh/easymesh-parser.y index a41c5396..3a4ffad0 100644 --- a/src/easymesh/easymesh-parser.y +++ b/src/easymesh/easymesh-parser.y @@ -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_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_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_CHAMFER @@ -157,6 +157,7 @@ transform_command: | T_MIRRORY { mc.m_mesh.MirrorY(); } | T_MIRRORZ { mc.m_mesh.MirrorZ(); } | 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_CSGUNION { mc.m_mesh.CsgUnion(); } | T_CSGSUBSTRACT { mc.m_mesh.CsgSubstract(); } diff --git a/src/easymesh/easymesh-scanner.l b/src/easymesh/easymesh-scanner.l index d47230e7..cb9b1e7a 100644 --- a/src/easymesh/easymesh-scanner.l +++ b/src/easymesh/easymesh-scanner.l @@ -86,6 +86,7 @@ mx { return token::T_MIRRORX; } my { return token::T_MIRRORY; } mz { return token::T_MIRRORZ; } rj { return token::T_RADIALJITTER; } +splt { return token::T_SPLITTRIANGLE; } csgu { return token::T_CSGUNION; } csgs { return token::T_CSGSUBSTRACT; } diff --git a/src/easymesh/easymesh.cpp b/src/easymesh/easymesh.cpp index e0f8a491..c8a33f92 100644 --- a/src/easymesh/easymesh.cpp +++ b/src/easymesh/easymesh.cpp @@ -568,16 +568,18 @@ void EasyMesh::SetCurColor2(vec4 const &color) //----------------------------------------------------------------------------- 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 -- - 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 //-- 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 + ); } //----------------------------------------------------------------------------- @@ -586,6 +588,26 @@ void EasyMesh::AddDuplicateVertex(int 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) { @@ -1049,6 +1071,29 @@ void EasyMesh::DupAndScale(vec3 const &s) 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, int dualside, int smooth, int close) diff --git a/src/easymesh/easymesh.h b/src/easymesh/easymesh.h index 75a72d9e..c3744843 100644 --- a/src/easymesh/easymesh.h +++ b/src/easymesh/easymesh.h @@ -156,6 +156,7 @@ private: //------------------------------------------------------------------------- void AddVertex(vec3 const &coord); 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 AppendQuadDuplicateVerts(int i1, int i2, int i3, int i4, 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 operator Value() { return m_value; } }; - void DoMeshTransform(MeshTransform ct, Axis axis0, Axis axis1, float n0, float n1, float noff, int absolute); public: /* [cmd:s/sx/sy/sz] Scale vertices @@ -302,6 +302,9 @@ public: //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)] - nbsides : Number of sides. [+.5*max(d1, d2), +.5*h, +.5*max(d1, d2)] - h : Height of the cylinder. diff --git a/src/generated/easymesh-parser.cpp b/src/generated/easymesh-parser.cpp index 87aadac4..0cf1fcd2 100644 --- a/src/generated/easymesh-parser.cpp +++ b/src/generated/easymesh-parser.cpp @@ -763,240 +763,247 @@ namespace lol { /* Line 677 of lalr1.cc */ #line 160 "easymesh/easymesh-parser.y" - { mc.m_mesh.ToggleScaleWinding(); } + { mc.m_mesh.SplitTriangles((yysemantic_stack_[(2) - (2)].args).f0); } break; case 59: /* Line 677 of lalr1.cc */ #line 161 "easymesh/easymesh-parser.y" - { mc.m_mesh.CsgUnion(); } + { mc.m_mesh.ToggleScaleWinding(); } break; case 60: /* Line 677 of lalr1.cc */ #line 162 "easymesh/easymesh-parser.y" - { mc.m_mesh.CsgSubstract(); } + { mc.m_mesh.CsgUnion(); } break; case 61: /* Line 677 of lalr1.cc */ #line 163 "easymesh/easymesh-parser.y" - { mc.m_mesh.CsgSubstractLoss(); } + { mc.m_mesh.CsgSubstract(); } break; case 62: /* Line 677 of lalr1.cc */ #line 164 "easymesh/easymesh-parser.y" - { mc.m_mesh.CsgAnd(); } + { mc.m_mesh.CsgSubstractLoss(); } break; case 63: /* Line 677 of lalr1.cc */ #line 165 "easymesh/easymesh-parser.y" - { mc.m_mesh.CsgXor(); } + { mc.m_mesh.CsgAnd(); } break; case 64: /* 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; case 65: /* 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, (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; case 66: /* 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; case 67: /* Line 677 of lalr1.cc */ #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; case 68: /* 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; case 69: /* 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; case 70: /* Line 677 of lalr1.cc */ #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; case 71: /* Line 677 of lalr1.cc */ #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; case 72: /* Line 677 of lalr1.cc */ #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; case 73: /* 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; case 74: /* 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; case 75: /* Line 677 of lalr1.cc */ #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; case 76: /* Line 677 of lalr1.cc */ #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; case 77: /* Line 677 of lalr1.cc */ #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; case 78: /* 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; case 79: /* Line 677 of lalr1.cc */ #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; case 80: /* Line 677 of lalr1.cc */ #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; case 81: /* Line 677 of lalr1.cc */ #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; case 82: /* Line 677 of lalr1.cc */ #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; case 83: /* Line 677 of lalr1.cc */ #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; case 84: /* Line 677 of lalr1.cc */ #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; case 85: /* Line 677 of lalr1.cc */ #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; case 86: /* Line 677 of lalr1.cc */ #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; case 87: /* Line 677 of lalr1.cc */ #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; case 88: /* 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; case 89: /* Line 677 of lalr1.cc */ #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); } break; /* Line 677 of lalr1.cc */ -#line 1000 "generated/easymesh-parser.cpp" +#line 1007 "generated/easymesh-parser.cpp" default: break; } @@ -1201,25 +1208,26 @@ namespace lol { /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ - const signed char EasyMeshParser::yypact_ninf_ = -69; + const signed char EasyMeshParser::yypact_ninf_ = -70; const signed char 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 @@ -1231,36 +1239,37 @@ namespace lol { 0, 0, 0, 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, 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]. */ const short int 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]. */ const short int 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 @@ -1270,66 +1279,68 @@ namespace lol { const unsigned char 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. */ const short int 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 @@ -1342,16 +1353,17 @@ namespace lol { 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, 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 @@ -1366,7 +1378,7 @@ namespace lol { 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 91, 93, 45 + 315, 316, 91, 93, 45 }; #endif @@ -1374,15 +1386,16 @@ namespace lol { const unsigned char 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. */ @@ -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, 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 @@ -1413,12 +1427,12 @@ namespace lol { "T_BENDYX", "T_BENDYZ", "T_SCALEY", "T_MIRRORY", "T_TRANSLATEZ", "T_ROTATEZ", "T_TAPERZ", "T_TWISTZ", "T_SHEARZ", "T_STRETCHZ", "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_command_list", "mesh_command", "color_command", "transform_command", "primitive_command", "args1", "args2", "args3", @@ -1431,31 +1445,32 @@ namespace lol { const EasyMeshParser::rhs_number_type 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 @@ -1468,10 +1483,11 @@ namespace lol { 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104, 107, 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. */ @@ -1484,9 +1500,10 @@ namespace lol { 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 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. @@ -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, 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, 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, @@ -1557,7 +1574,7 @@ namespace lol { 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, 59, 60 + 55, 56, 57, 58, 59, 60, 61 }; if ((unsigned int) t <= yyuser_token_number_max_) return translate_table[t]; @@ -1566,26 +1583,26 @@ namespace lol { } const int EasyMeshParser::yyeof_ = 0; - const int EasyMeshParser::yylast_ = 266; + const int EasyMeshParser::yylast_ = 271; const int EasyMeshParser::yynnts_ = 22; const int EasyMeshParser::yyempty_ = -2; - const int EasyMeshParser::yyfinal_ = 133; + const int EasyMeshParser::yyfinal_ = 135; const int EasyMeshParser::yyterror_ = 1; 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; } // lol /* Line 1053 of lalr1.cc */ -#line 1585 "generated/easymesh-parser.cpp" +#line 1602 "generated/easymesh-parser.cpp" /* 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, diff --git a/src/generated/easymesh-parser.h b/src/generated/easymesh-parser.h index 75a83e9b..981302c8 100644 --- a/src/generated/easymesh-parser.h +++ b/src/generated/easymesh-parser.h @@ -168,28 +168,29 @@ namespace lol { T_SCALE = 291, T_TOGGLESCALEWINDING = 292, 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 /* Line 34 of lalr1.cc */ -#line 367 "generated/easymesh-parser.h" +#line 368 "generated/easymesh-parser.h" diff --git a/src/generated/easymesh-scanner.cpp b/src/generated/easymesh-scanner.cpp index e8c859a8..68c3ec9f 100644 --- a/src/generated/easymesh-scanner.cpp +++ b/src/generated/easymesh-scanner.cpp @@ -330,8 +330,8 @@ typedef unsigned char YY_CHAR; *yy_cp = '\0'; \ (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, but its presence is necessary. */ struct yy_trans_info @@ -339,20 +339,20 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[106] = +static yyconst flex_int16_t yy_accept[109] = { 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] = @@ -395,82 +395,84 @@ static yyconst flex_int32_t yy_meta[35] = 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[114] = +static yyconst flex_int16_t yy_base[117] = { 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, - 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, 4, 5, 6, 7, 8, 9, 10, 11, 4, 4, 12, 13, 14, 15, 16, 4, 4, 4, 4, 4, 4, 4, 17, 4, 4, 4, 18, 19, 20, 4, 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, 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, - 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 @@ -519,7 +521,7 @@ typedef lol::EasyMeshParser::token_type token_type; #define yyterminate() return token::T_END #define YY_NO_UNISTD_H #define YY_USER_ACTION yylloc->columns(yyleng); -#line 523 "generated/easymesh-scanner.cpp" +#line 525 "generated/easymesh-scanner.cpp" #define INITIAL 0 @@ -632,7 +634,7 @@ YY_DECL yylloc->step(); -#line 636 "generated/easymesh-scanner.cpp" +#line 638 "generated/easymesh-scanner.cpp" if ( !(yy_init) ) { @@ -685,13 +687,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != 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_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 105 ); + while ( yy_current_state != 108 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -898,97 +900,102 @@ YY_RULE_SETUP YY_BREAK case 38: 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 case 39: YY_RULE_SETUP #line 91 "easymesh/easymesh-scanner.l" -{ return token::T_CSGSUBSTRACT; } +{ return token::T_CSGUNION; } YY_BREAK case 40: YY_RULE_SETUP #line 92 "easymesh/easymesh-scanner.l" -{ return token::T_CSGSUBSTRACTLOSS; } +{ return token::T_CSGSUBSTRACT; } YY_BREAK case 41: YY_RULE_SETUP #line 93 "easymesh/easymesh-scanner.l" -{ return token::T_CSGAND; } +{ return token::T_CSGSUBSTRACTLOSS; } YY_BREAK case 42: YY_RULE_SETUP #line 94 "easymesh/easymesh-scanner.l" -{ return token::T_CSGXOR; } +{ return token::T_CSGAND; } YY_BREAK case 43: 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 case 44: YY_RULE_SETUP #line 97 "easymesh/easymesh-scanner.l" -{ return token::T_CYLINDER; } +{ return token::T_BOX; } YY_BREAK case 45: YY_RULE_SETUP #line 98 "easymesh/easymesh-scanner.l" -{ return token::T_CAPSULE; } +{ return token::T_CYLINDER; } YY_BREAK case 46: YY_RULE_SETUP #line 99 "easymesh/easymesh-scanner.l" -{ return token::T_COG; } +{ return token::T_CAPSULE; } YY_BREAK case 47: YY_RULE_SETUP #line 100 "easymesh/easymesh-scanner.l" -{ return token::T_DISC; } +{ return token::T_COG; } YY_BREAK case 48: YY_RULE_SETUP #line 101 "easymesh/easymesh-scanner.l" -{ return token::T_EXPANDEDSTAR; } +{ return token::T_DISC; } YY_BREAK case 49: YY_RULE_SETUP #line 102 "easymesh/easymesh-scanner.l" -{ return token::T_FLATCHAMFBOX; } +{ return token::T_EXPANDEDSTAR; } YY_BREAK case 50: YY_RULE_SETUP #line 103 "easymesh/easymesh-scanner.l" -{ return token::T_QUAD; } +{ return token::T_FLATCHAMFBOX; } YY_BREAK case 51: YY_RULE_SETUP #line 104 "easymesh/easymesh-scanner.l" -{ return token::T_STAR; } +{ return token::T_QUAD; } YY_BREAK case 52: YY_RULE_SETUP #line 105 "easymesh/easymesh-scanner.l" -{ return token::T_SMOOTHCHAMFBOX; } +{ return token::T_STAR; } YY_BREAK case 53: YY_RULE_SETUP #line 106 "easymesh/easymesh-scanner.l" -{ return token::T_SPHERE; } +{ return token::T_SMOOTHCHAMFBOX; } YY_BREAK case 54: YY_RULE_SETUP #line 107 "easymesh/easymesh-scanner.l" -{ return token::T_TRIANGLE; } +{ return token::T_SPHERE; } YY_BREAK case 55: YY_RULE_SETUP #line 108 "easymesh/easymesh-scanner.l" -{ return token::T_TORUS; } +{ return token::T_TRIANGLE; } YY_BREAK case 56: 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); yylval->u32val = 0x11000000u * (tmp >> 8) @@ -997,9 +1004,9 @@ YY_RULE_SETUP | 0x000000ffu; return token::COLOR; } YY_BREAK -case 57: +case 58: YY_RULE_SETUP -#line 117 "easymesh/easymesh-scanner.l" +#line 118 "easymesh/easymesh-scanner.l" { uint32_t tmp = std::strtol(yytext + 1, NULL, 16); yylval->u32val = 0x11000000u * (tmp >> 12) @@ -1008,64 +1015,64 @@ YY_RULE_SETUP | 0x00000011u * (tmp & 0xf); return token::COLOR; } YY_BREAK -case 58: +case 59: YY_RULE_SETUP -#line 124 "easymesh/easymesh-scanner.l" +#line 125 "easymesh/easymesh-scanner.l" { yylval->u32val = 0xffu | 0x100u * (uint32_t)std::strtol(yytext + 1, NULL, 16); return token::COLOR; } YY_BREAK -case 59: +case 60: 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); return token::COLOR; } YY_BREAK -case 60: +case 61: YY_RULE_SETUP -#line 131 "easymesh/easymesh-scanner.l" +#line 132 "easymesh/easymesh-scanner.l" { yylval->fval = std::atof(yytext); return token::NUMBER; } YY_BREAK -case 61: -YY_RULE_SETUP -#line 133 "easymesh/easymesh-scanner.l" -{ return token_type('-'); } - YY_BREAK case 62: YY_RULE_SETUP #line 134 "easymesh/easymesh-scanner.l" -{ return token_type('['); } +{ return token_type('-'); } YY_BREAK case 63: YY_RULE_SETUP #line 135 "easymesh/easymesh-scanner.l" -{ return token_type(']'); } +{ return token_type('['); } YY_BREAK case 64: YY_RULE_SETUP #line 136 "easymesh/easymesh-scanner.l" -{ /* ignore this */ } +{ return token_type(']'); } YY_BREAK case 65: -/* rule 65 can match eol */ YY_RULE_SETUP #line 137 "easymesh/easymesh-scanner.l" { /* ignore this */ } YY_BREAK case 66: +/* rule 66 can match eol */ YY_RULE_SETUP #line 138 "easymesh/easymesh-scanner.l" -{ return token::T_ERROR; } +{ /* ignore this */ } YY_BREAK case 67: 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; YY_BREAK -#line 1069 "generated/easymesh-scanner.cpp" +#line 1076 "generated/easymesh-scanner.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1447,7 +1454,7 @@ int yyFlexLexer::yy_get_next_buffer() while ( yy_chk[yy_base[yy_current_state] + yy_c] != 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_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 ) { 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_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; } @@ -1966,7 +1973,7 @@ void EasyMeshfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 140 "easymesh/easymesh-scanner.l" +#line 141 "easymesh/easymesh-scanner.l" diff --git a/test/MeshViewerBuffer.txt b/test/MeshViewerBuffer.txt index 3d24da80..3a44f738 100644 --- a/test/MeshViewerBuffer.txt +++ b/test/MeshViewerBuffer.txt @@ -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] //[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#ff2 asph 4 4 shx 0 0 0 0] //[sc#ff2 asph 4 4 tax .4 .4 0]