Pārlūkot izejas kodu

fix floating-point parsing, error reporting

David Rose 17 gadi atpakaļ
vecāks
revīzija
edb684b709

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2171 - 2088
pandatool/src/vrml/vrmlLexer.cxx.prebuilt


+ 25 - 18
pandatool/src/vrml/vrmlLexer.lxx

@@ -27,7 +27,6 @@
 
 
 #include "vrmlNode.h"
 #include "vrmlNode.h"
 #include "vrmlParser.h"
 #include "vrmlParser.h"
-#include "indent.h"
 #include "pnotify.h"
 #include "pnotify.h"
 
 
 static int yyinput(void);        // declared by flex.
 static int yyinput(void);        // declared by flex.
@@ -37,10 +36,9 @@ extern "C" int vrmlyywrap();
 // Static variables
 // Static variables
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 
 
-// We'll increment line_number and col_number as we parse the file, so
+// We'll increment line_number as we parse the file, so
 // that we can report the position of an error.
 // that we can report the position of an error.
 static int line_number = 0;
 static int line_number = 0;
-static int col_number = 0;
 
 
 // current_line holds as much of the current line as will fit.  Its
 // current_line holds as much of the current line as will fit.  Its
 // only purpose is for printing it out to report an error to the user.
 // only purpose is for printing it out to report an error to the user.
@@ -81,7 +79,6 @@ vrml_init_lexer(istream &in, const string &filename) {
   inp = ∈
   inp = ∈
   vrml_filename = filename;
   vrml_filename = filename;
   line_number = 0;
   line_number = 0;
-  col_number = 0;
   error_count = 0;
   error_count = 0;
   warning_count = 0;
   warning_count = 0;
 }
 }
@@ -102,10 +99,8 @@ vrmlyyerror(const string &msg) {
     cerr << " in " << vrml_filename;
     cerr << " in " << vrml_filename;
   }
   }
   cerr 
   cerr 
-    << " at line " << line_number << ", column " << col_number << ":\n"
+    << " at line " << line_number << ":\n"
     << current_line << "\n";
     << current_line << "\n";
-  indent(cerr, col_number-1) 
-    << "^\n" << msg << "\n\n";
   
   
   error_count++;
   error_count++;
 }
 }
@@ -117,10 +112,8 @@ vrmlyywarning(const string &msg) {
     cerr << " in " << vrml_filename;
     cerr << " in " << vrml_filename;
   }
   }
   cerr 
   cerr 
-    << " at line " << line_number << ", column " << col_number << ":\n"
+    << " at line " << line_number << ":\n"
     << current_line << "\n";
     << current_line << "\n";
-  indent(cerr, col_number-1) 
-    << "^\n" << msg << "\n\n";
 
 
   warning_count++;
   warning_count++;
 }
 }
@@ -146,7 +139,6 @@ input_chars(char *buffer, int &result, int max_size) {
       strncpy(current_line, vrmlyytext, max_error_width);
       strncpy(current_line, vrmlyytext, max_error_width);
       current_line[max_error_width] = '\0';
       current_line[max_error_width] = '\0';
       line_number++;
       line_number++;
-      col_number = 0;
 
 
       // Truncate it at the newline.
       // Truncate it at the newline.
       char *end = strchr(current_line, '\n');
       char *end = strchr(current_line, '\n');
@@ -192,7 +184,7 @@ void extract_vec(double vec[], int num_elements) {
 %x IN_SFS IN_MFS IN_SFIMG
 %x IN_SFS IN_MFS IN_SFIMG
 
 
     /* Big hairy expression for floating point numbers: */
     /* Big hairy expression for floating point numbers: */
-float (-?(([0-9]+)|([0-9]*\.[0-9]+)([eE][+\-]?[0-9]+)?))
+float (-?((([0-9]+)|([0-9]*\.[0-9]+))([eE][+\-]?[0-9]+)?))
 
 
     /* Ints are decimal or hex (0x##): */
     /* Ints are decimal or hex (0x##): */
 int (-?([0-9]+)|(0[xX][0-9a-fA-F]*))
 int (-?([0-9]+)|(0[xX][0-9a-fA-F]*))
@@ -204,6 +196,8 @@ int (-?([0-9]+)|(0[xX][0-9a-fA-F]*))
 ws ([ \t\r\n,]|(#.*))+
 ws ([ \t\r\n,]|(#.*))+
     /* And the same pattern without the newline */
     /* And the same pattern without the newline */
 wsnnl ([ \t\r,]|(#.*))
 wsnnl ([ \t\r,]|(#.*))
+    /* Here's a pattern that matches a single newline character. */
+nl ((\n)|(\n\r)|(\r\n)|(\r))
 
 
     /* Legal characters to start an identifier */
     /* Legal characters to start an identifier */
 idStartChar ([^\x30-\x39\x00-\x20\x22\x23\x27\x2b-\x2e\x5b-\x5d\x7b\x7d])
 idStartChar ([^\x30-\x39\x00-\x20\x22\x23\x27\x2b-\x2e\x5b-\x5d\x7b\x7d])
@@ -259,7 +253,7 @@ idRestChar  ([^\x00-\x20\x22\x23\x27\x2b-\x2c\x2e\x5b-\x5d\x7b\x7d])
 
 
     /* This is more complicated than they really need to be because */
     /* This is more complicated than they really need to be because */
     /* I was ambitious and made the whitespace-matching rule aggressive */
     /* I was ambitious and made the whitespace-matching rule aggressive */
-<INITIAL>"#VRML V2.0 utf8".*\n{wsnnl}* {
+<INITIAL>"#VRML V2.0 utf8".*{nl}{wsnnl}* {
   BEGIN NODE; 
   BEGIN NODE; 
 }
 }
 
 
@@ -549,17 +543,30 @@ idRestChar  ([^\x00-\x20\x22\x23\x27\x2b-\x2c\x2e\x5b-\x5d\x7b\x7d])
                         }
                         }
 <IN_SFIMG>{int}         { ++sfImageIntsParsed;
 <IN_SFIMG>{int}         { ++sfImageIntsParsed;
                           if (sfImageIntsParsed == sfImageIntsExpected) {
                           if (sfImageIntsParsed == sfImageIntsExpected) {
-                              BEGIN NODE; expectToken = 0; return SFIMAGE;
+                            BEGIN NODE; expectToken = 0; return SFIMAGE;
                           }
                           }
                         }
                         }
 
 
     /* Whitespace and catch-all rules apply to all start states: */
     /* Whitespace and catch-all rules apply to all start states: */
-<*>{wsnnl}+     ;
-    /* This is also whitespace, but we'll keep track of line number */
+<*>{wsnnl}+ ;
+
+    /* A newline is also whitespace, but we'll keep track of line number */
     /* to report in errors: */
     /* to report in errors: */
-<*>{wsnnl}*\n{wsnnl}*   ;
+<*>\n.* {
+  // Save a copy of the line so we can print it out for the benefit of
+  // the user in case we get an error.
+  strncpy(current_line, yytext+1, max_error_width);
+  current_line[max_error_width] = '\0';
+  line_number++;
+
+  // Return the whole line to the lexer, except the newline character,
+  // which we eat.
+  yyless(1);
+}
 
 
     /* This catch-all rule catches anything not covered by any of */
     /* This catch-all rule catches anything not covered by any of */
     /* the above: */
     /* the above: */
-<*>.            { return yytext[0]; }
+<*>. { 
+  return yytext[0]; 
+}
 
 

+ 51 - 51
pandatool/src/vrml/vrmlParser.cxx.prebuilt

@@ -132,7 +132,7 @@
 
 
 
 
 /* Copy the first part of user declarations.  */
 /* Copy the first part of user declarations.  */
-#line 27 "vrmlParser.yxx"
+#line 23 "vrmlParser.yxx"
 
 
 
 
 //
 //
@@ -240,7 +240,7 @@ vrml_cleanup_parser() {
 #endif
 #endif
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 120 "vrmlParser.yxx"
+#line 116 "vrmlParser.yxx"
 typedef union YYSTYPE {
 typedef union YYSTYPE {
   char *string;
   char *string;
   VrmlFieldValue fv;
   VrmlFieldValue fv;
@@ -460,14 +460,14 @@ static const yysigned_char yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 static const unsigned short int yyrline[] =
 {
 {
-       0,   151,   151,   159,   162,   169,   170,   174,   180,   186,
-     195,   196,   200,   200,   206,   208,   206,   211,   213,   217,
-     219,   222,   221,   233,   232,   245,   247,   251,   253,   255,
-     257,   262,   267,   267,   271,   273,   277,   277,   284,   285,
-     288,   289,   290,   290,   294,   296,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   319,   320,   326,   327,   331,   335,   346,
-     349
+       0,   147,   147,   155,   158,   165,   166,   170,   176,   182,
+     191,   192,   196,   196,   202,   204,   202,   207,   209,   213,
+     215,   218,   217,   229,   228,   241,   243,   247,   249,   251,
+     253,   258,   263,   263,   267,   269,   273,   273,   280,   281,
+     284,   285,   286,   286,   290,   292,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   315,   316,   322,   323,   327,   331,   342,
+     345
 };
 };
 #endif
 #endif
 
 
@@ -1281,21 +1281,21 @@ yyreduce:
   switch (yyn)
   switch (yyn)
     {
     {
         case 2:
         case 2:
-#line 152 "vrmlParser.yxx"
+#line 148 "vrmlParser.yxx"
     {
     {
   parsed_scene = (yyvsp[0].scene);
   parsed_scene = (yyvsp[0].scene);
 }
 }
     break;
     break;
 
 
   case 3:
   case 3:
-#line 159 "vrmlParser.yxx"
+#line 155 "vrmlParser.yxx"
     {
     {
   (yyval.scene) = new VrmlScene;
   (yyval.scene) = new VrmlScene;
 }
 }
     break;
     break;
 
 
   case 4:
   case 4:
-#line 163 "vrmlParser.yxx"
+#line 159 "vrmlParser.yxx"
     {
     {
   Declaration d;
   Declaration d;
   d._node = (yyvsp[0].nodeRef);
   d._node = (yyvsp[0].nodeRef);
@@ -1305,7 +1305,7 @@ yyreduce:
     break;
     break;
 
 
   case 7:
   case 7:
-#line 175 "vrmlParser.yxx"
+#line 171 "vrmlParser.yxx"
     {
     {
   (yyval.nodeRef)._p = (yyvsp[0].node);
   (yyval.nodeRef)._p = (yyvsp[0].node);
   (yyval.nodeRef)._type = SFNodeRef::T_unnamed;
   (yyval.nodeRef)._type = SFNodeRef::T_unnamed;
@@ -1314,7 +1314,7 @@ yyreduce:
     break;
     break;
 
 
   case 8:
   case 8:
-#line 181 "vrmlParser.yxx"
+#line 177 "vrmlParser.yxx"
     {
     {
   (yyval.nodeRef)._p = (yyvsp[0].node);
   (yyval.nodeRef)._p = (yyvsp[0].node);
   (yyval.nodeRef)._type = SFNodeRef::T_def;
   (yyval.nodeRef)._type = SFNodeRef::T_def;
@@ -1323,7 +1323,7 @@ yyreduce:
     break;
     break;
 
 
   case 9:
   case 9:
-#line 187 "vrmlParser.yxx"
+#line 183 "vrmlParser.yxx"
     {
     {
   (yyval.nodeRef)._p = NULL;
   (yyval.nodeRef)._p = NULL;
   (yyval.nodeRef)._type = SFNodeRef::T_use;
   (yyval.nodeRef)._type = SFNodeRef::T_use;
@@ -1332,44 +1332,44 @@ yyreduce:
     break;
     break;
 
 
   case 12:
   case 12:
-#line 200 "vrmlParser.yxx"
+#line 196 "vrmlParser.yxx"
     { beginProto((yyvsp[0].string)); }
     { beginProto((yyvsp[0].string)); }
     break;
     break;
 
 
   case 13:
   case 13:
-#line 202 "vrmlParser.yxx"
+#line 198 "vrmlParser.yxx"
     { endProto();  free((yyvsp[-7].string));}
     { endProto();  free((yyvsp[-7].string));}
     break;
     break;
 
 
   case 14:
   case 14:
-#line 206 "vrmlParser.yxx"
+#line 202 "vrmlParser.yxx"
     { beginProto((yyvsp[0].string)); }
     { beginProto((yyvsp[0].string)); }
     break;
     break;
 
 
   case 15:
   case 15:
-#line 208 "vrmlParser.yxx"
+#line 204 "vrmlParser.yxx"
     { expect(MFSTRING); }
     { expect(MFSTRING); }
     break;
     break;
 
 
   case 16:
   case 16:
-#line 209 "vrmlParser.yxx"
+#line 205 "vrmlParser.yxx"
     { endProto();  free((yyvsp[-6].string)); }
     { endProto();  free((yyvsp[-6].string)); }
     break;
     break;
 
 
   case 19:
   case 19:
-#line 217 "vrmlParser.yxx"
+#line 213 "vrmlParser.yxx"
     { addEventIn((yyvsp[-1].string), (yyvsp[0].string));
     { addEventIn((yyvsp[-1].string), (yyvsp[0].string));
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 20:
   case 20:
-#line 219 "vrmlParser.yxx"
+#line 215 "vrmlParser.yxx"
     { addEventOut((yyvsp[-1].string), (yyvsp[0].string));
     { addEventOut((yyvsp[-1].string), (yyvsp[0].string));
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 21:
   case 21:
-#line 222 "vrmlParser.yxx"
+#line 218 "vrmlParser.yxx"
     {
     {
   int type = fieldType((yyvsp[-1].string));
   int type = fieldType((yyvsp[-1].string));
   expect(type); 
   expect(type); 
@@ -1377,7 +1377,7 @@ yyreduce:
     break;
     break;
 
 
   case 22:
   case 22:
-#line 227 "vrmlParser.yxx"
+#line 223 "vrmlParser.yxx"
     {
     {
   addField((yyvsp[-3].string), (yyvsp[-2].string), &((yyvsp[0].fv)));
   addField((yyvsp[-3].string), (yyvsp[-2].string), &((yyvsp[0].fv)));
   free((yyvsp[-3].string)); 
   free((yyvsp[-3].string)); 
@@ -1386,7 +1386,7 @@ yyreduce:
     break;
     break;
 
 
   case 23:
   case 23:
-#line 233 "vrmlParser.yxx"
+#line 229 "vrmlParser.yxx"
     { 
     { 
   int type = fieldType((yyvsp[-1].string));
   int type = fieldType((yyvsp[-1].string));
   expect(type); 
   expect(type); 
@@ -1394,7 +1394,7 @@ yyreduce:
     break;
     break;
 
 
   case 24:
   case 24:
-#line 238 "vrmlParser.yxx"
+#line 234 "vrmlParser.yxx"
     { 
     { 
   addExposedField((yyvsp[-3].string), (yyvsp[-2].string), &((yyvsp[0].fv)));
   addExposedField((yyvsp[-3].string), (yyvsp[-2].string), &((yyvsp[0].fv)));
   free((yyvsp[-3].string)); 
   free((yyvsp[-3].string)); 
@@ -1403,51 +1403,51 @@ yyreduce:
     break;
     break;
 
 
   case 27:
   case 27:
-#line 251 "vrmlParser.yxx"
+#line 247 "vrmlParser.yxx"
     { addEventIn((yyvsp[-1].string), (yyvsp[0].string));
     { addEventIn((yyvsp[-1].string), (yyvsp[0].string));
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 28:
   case 28:
-#line 253 "vrmlParser.yxx"
+#line 249 "vrmlParser.yxx"
     { addEventOut((yyvsp[-1].string), (yyvsp[0].string));
     { addEventOut((yyvsp[-1].string), (yyvsp[0].string));
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 29:
   case 29:
-#line 255 "vrmlParser.yxx"
+#line 251 "vrmlParser.yxx"
     { addField((yyvsp[-1].string), (yyvsp[0].string));
     { addField((yyvsp[-1].string), (yyvsp[0].string));
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 30:
   case 30:
-#line 257 "vrmlParser.yxx"
+#line 253 "vrmlParser.yxx"
     { addExposedField((yyvsp[-1].string), (yyvsp[0].string));
     { addExposedField((yyvsp[-1].string), (yyvsp[0].string));
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
                                               free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 31:
   case 31:
-#line 263 "vrmlParser.yxx"
+#line 259 "vrmlParser.yxx"
     { free((yyvsp[-6].string)); free((yyvsp[-4].string)); free((yyvsp[-2].string)); free((yyvsp[0].string)); }
     { free((yyvsp[-6].string)); free((yyvsp[-4].string)); free((yyvsp[-2].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 32:
   case 32:
-#line 267 "vrmlParser.yxx"
+#line 263 "vrmlParser.yxx"
     { enterNode((yyvsp[0].string)); }
     { enterNode((yyvsp[0].string)); }
     break;
     break;
 
 
   case 33:
   case 33:
-#line 268 "vrmlParser.yxx"
+#line 264 "vrmlParser.yxx"
     { (yyval.node) = exitNode(); free((yyvsp[-4].string));}
     { (yyval.node) = exitNode(); free((yyvsp[-4].string));}
     break;
     break;
 
 
   case 36:
   case 36:
-#line 277 "vrmlParser.yxx"
+#line 273 "vrmlParser.yxx"
     { enterField((yyvsp[0].string)); }
     { enterField((yyvsp[0].string)); }
     break;
     break;
 
 
   case 37:
   case 37:
-#line 279 "vrmlParser.yxx"
+#line 275 "vrmlParser.yxx"
     {
     {
   storeField((yyvsp[0].fv));
   storeField((yyvsp[0].fv));
   exitField(); 
   exitField(); 
@@ -1456,44 +1456,44 @@ yyreduce:
     break;
     break;
 
 
   case 40:
   case 40:
-#line 288 "vrmlParser.yxx"
+#line 284 "vrmlParser.yxx"
     { inScript(); free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     { inScript(); free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 41:
   case 41:
-#line 289 "vrmlParser.yxx"
+#line 285 "vrmlParser.yxx"
     { inScript(); free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     { inScript(); free((yyvsp[-1].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 42:
   case 42:
-#line 290 "vrmlParser.yxx"
+#line 286 "vrmlParser.yxx"
     { inScript(); 
     { inScript(); 
                                               int type = fieldType((yyvsp[-1].string));
                                               int type = fieldType((yyvsp[-1].string));
                                               expect(type); }
                                               expect(type); }
     break;
     break;
 
 
   case 43:
   case 43:
-#line 293 "vrmlParser.yxx"
+#line 289 "vrmlParser.yxx"
     { free((yyvsp[-3].string)); free((yyvsp[-2].string)); }
     { free((yyvsp[-3].string)); free((yyvsp[-2].string)); }
     break;
     break;
 
 
   case 44:
   case 44:
-#line 295 "vrmlParser.yxx"
+#line 291 "vrmlParser.yxx"
     { inScript(); free((yyvsp[-3].string)); free((yyvsp[-2].string)); free((yyvsp[0].string)); }
     { inScript(); free((yyvsp[-3].string)); free((yyvsp[-2].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 45:
   case 45:
-#line 297 "vrmlParser.yxx"
+#line 293 "vrmlParser.yxx"
     { inScript(); free((yyvsp[-3].string)); free((yyvsp[-2].string)); free((yyvsp[0].string)); }
     { inScript(); free((yyvsp[-3].string)); free((yyvsp[-2].string)); free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 63:
   case 63:
-#line 319 "vrmlParser.yxx"
+#line 315 "vrmlParser.yxx"
     { (yyval.fv)._sfnode = (yyvsp[0].nodeRef); }
     { (yyval.fv)._sfnode = (yyvsp[0].nodeRef); }
     break;
     break;
 
 
   case 64:
   case 64:
-#line 321 "vrmlParser.yxx"
+#line 317 "vrmlParser.yxx"
     { 
     { 
   (yyval.fv)._sfnode._p = NULL;
   (yyval.fv)._sfnode._p = NULL;
   (yyval.fv)._sfnode._type = SFNodeRef::T_null;
   (yyval.fv)._sfnode._type = SFNodeRef::T_null;
@@ -1502,24 +1502,24 @@ yyreduce:
     break;
     break;
 
 
   case 65:
   case 65:
-#line 326 "vrmlParser.yxx"
+#line 322 "vrmlParser.yxx"
     { (yyval.fv)._mf = (yyvsp[0].mfarray); }
     { (yyval.fv)._mf = (yyvsp[0].mfarray); }
     break;
     break;
 
 
   case 66:
   case 66:
-#line 327 "vrmlParser.yxx"
+#line 323 "vrmlParser.yxx"
     { free((yyvsp[0].string)); }
     { free((yyvsp[0].string)); }
     break;
     break;
 
 
   case 67:
   case 67:
-#line 332 "vrmlParser.yxx"
+#line 328 "vrmlParser.yxx"
     {
     {
   (yyval.mfarray) = (yyvsp[-1].mfarray); 
   (yyval.mfarray) = (yyvsp[-1].mfarray); 
 }
 }
     break;
     break;
 
 
   case 68:
   case 68:
-#line 336 "vrmlParser.yxx"
+#line 332 "vrmlParser.yxx"
     {
     {
   (yyval.mfarray) = new MFArray;
   (yyval.mfarray) = new MFArray;
   VrmlFieldValue v;
   VrmlFieldValue v;
@@ -1529,14 +1529,14 @@ yyreduce:
     break;
     break;
 
 
   case 69:
   case 69:
-#line 346 "vrmlParser.yxx"
+#line 342 "vrmlParser.yxx"
     {
     {
   (yyval.mfarray) = new MFArray;
   (yyval.mfarray) = new MFArray;
 }
 }
     break;
     break;
 
 
   case 70:
   case 70:
-#line 350 "vrmlParser.yxx"
+#line 346 "vrmlParser.yxx"
     {
     {
   VrmlFieldValue v;
   VrmlFieldValue v;
   v._sfnode = (yyvsp[0].nodeRef);
   v._sfnode = (yyvsp[0].nodeRef);
@@ -1777,7 +1777,7 @@ yyreturn:
 }
 }
 
 
 
 
-#line 358 "vrmlParser.yxx"
+#line 354 "vrmlParser.yxx"
 
 
 
 
 static void
 static void

+ 1 - 1
pandatool/src/vrml/vrmlParser.h.prebuilt

@@ -100,7 +100,7 @@
 
 
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 120 "vrmlParser.yxx"
+#line 116 "vrmlParser.yxx"
 typedef union YYSTYPE {
 typedef union YYSTYPE {
   char *string;
   char *string;
   VrmlFieldValue fv;
   VrmlFieldValue fv;

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels