Browse Source

--- Merging r47820 into '.':
U packages/fcl-res/src/rclex.inc
U packages/fcl-res/src/rclex.l
U packages/fcl-res/src/rcparser.pas
U packages/fcl-res/src/rcparser.y
--- Recording mergeinfo for merge of r47820 into '.':
U .

# revisions: 47820
r47820 | marco | 2020-12-19 22:47:25 +0100 (Sat, 19 Dec 2020) | 6 lines
Changed paths:
M /trunk/packages/fcl-res/src/rclex.inc
M /trunk/packages/fcl-res/src/rclex.l
M /trunk/packages/fcl-res/src/rcparser.pas
M /trunk/packages/fcl-res/src/rcparser.y

- fix \ in filenames:
* copy long_string to long_stringfn and long_string.
* turn off interpretive I/O (escapes) for long_stringfn
* use long_stringfn for filenames.

* filenames also get unquoted production for Delphi compatibility using new non_whitespace_string. Regex for that is a bit t.b.d, but this made it work with my examples

git-svn-id: branches/fixes_3_2@47904 -

marco 4 years ago
parent
commit
7f5361f301
4 changed files with 1280 additions and 1116 deletions
  1. 866 768
      packages/fcl-res/src/rclex.inc
  2. 2 0
      packages/fcl-res/src/rclex.l
  3. 396 345
      packages/fcl-res/src/rcparser.pas
  4. 16 3
      packages/fcl-res/src/rcparser.y

+ 866 - 768
packages/fcl-res/src/rclex.inc

@@ -141,10 +141,12 @@ begin
                               return(_ID);
                          end;
   25:
-                        ;
+                  return(_NSWPSTR);
   26:
-                        returnc(yytext[1]);
+                        ;
   27:
+                        returnc(yytext[1]);
+  28:
                         return(_ILLEGAL);
   end;
 end(*yyaction*);
@@ -158,14 +160,16 @@ type YYTRec = record
 
 const
 
-yynmarks   = 62;
-yynmatches = 62;
-yyntrans   = 131;
-yynstates  = 94;
+yynmarks   = 88;
+yynmatches = 88;
+yyntrans   = 156;
+yynstates  = 96;
 
 yyk : array [1..yynmarks] of Integer = (
   { 0: }
+  25,
   { 1: }
+  25,
   { 2: }
   { 3: }
   { 4: }
@@ -175,132 +179,153 @@ yyk : array [1..yynmarks] of Integer = (
   { 8: }
   { 9: }
   { 10: }
-  26,
   27,
+  28,
   { 11: }
   8,
-  27,
+  25,
+  28,
   { 12: }
   8,
-  27,
+  25,
+  28,
   { 13: }
   24,
-  27,
+  25,
+  28,
   { 14: }
   12,
-  27,
+  28,
   { 15: }
   24,
-  27,
+  25,
+  28,
   { 16: }
   22,
-  27,
+  28,
   { 17: }
   24,
-  27,
+  25,
+  28,
   { 18: }
   23,
-  27,
+  28,
   { 19: }
   24,
-  27,
+  25,
+  28,
   { 20: }
   25,
+  28,
   { 21: }
   26,
-  27,
   { 22: }
-  25,
   27,
+  28,
   { 23: }
-  27,
+  26,
+  28,
   { 24: }
-  2,
+  28,
   { 25: }
-  3,
+  2,
   { 26: }
-  5,
+  3,
   { 27: }
   5,
   { 28: }
-  7,
+  5,
   { 29: }
-  14,
-  18,
+  7,
   { 30: }
+  14,
   18,
   { 31: }
-  17,
-  { 32: }
   18,
+  { 32: }
+  17,
   { 33: }
-  15,
   18,
   { 34: }
-  1,
+  15,
+  18,
   { 35: }
-  4,
+  1,
   { 36: }
-  8,
+  4,
   { 37: }
   8,
+  25,
   { 38: }
+  8,
+  25,
   { 39: }
+  25,
   { 40: }
-  11,
+  25,
   { 41: }
-  24,
+  25,
   { 42: }
+  11,
   { 43: }
+  24,
+  25,
   { 44: }
   { 45: }
-  24,
   { 46: }
-  24,
   { 47: }
-  6,
+  24,
+  25,
   { 48: }
-  13,
+  24,
+  25,
   { 49: }
-  16,
+  6,
   { 50: }
-  9,
+  13,
   { 51: }
-  10,
+  16,
   { 52: }
+  9,
+  25,
   { 53: }
-  24,
+  10,
+  25,
   { 54: }
-  23,
-  24,
   { 55: }
-  9,
   { 56: }
-  10,
   { 57: }
+  24,
+  25,
   { 58: }
+  23,
+  24,
+  25,
   { 59: }
+  9,
+  25,
   { 60: }
-  24,
+  10,
+  25,
   { 61: }
   { 62: }
-  22,
-  24,
   { 63: }
   { 64: }
+  24,
+  25,
   { 65: }
   { 66: }
   { 67: }
   { 68: }
+  22,
+  24,
+  25,
   { 69: }
   { 70: }
   { 71: }
   { 72: }
-  20,
   { 73: }
-  21,
   { 74: }
-  19
   { 75: }
   { 76: }
   { 77: }
@@ -318,13 +343,20 @@ yyk : array [1..yynmarks] of Integer = (
   { 89: }
   { 90: }
   { 91: }
+  20,
   { 92: }
+  21,
   { 93: }
+  { 94: }
+  { 95: }
+  19
 );
 
 yym : array [1..yynmatches] of Integer = (
 { 0: }
+  25,
 { 1: }
+  25,
 { 2: }
 { 3: }
 { 4: }
@@ -334,132 +366,153 @@ yym : array [1..yynmatches] of Integer = (
 { 8: }
 { 9: }
 { 10: }
-  26,
   27,
+  28,
 { 11: }
   8,
-  27,
+  25,
+  28,
 { 12: }
   8,
-  27,
+  25,
+  28,
 { 13: }
   24,
-  27,
+  25,
+  28,
 { 14: }
   12,
-  27,
+  28,
 { 15: }
   24,
-  27,
+  25,
+  28,
 { 16: }
   22,
-  27,
+  28,
 { 17: }
   24,
-  27,
+  25,
+  28,
 { 18: }
   23,
-  27,
+  28,
 { 19: }
   24,
-  27,
+  25,
+  28,
 { 20: }
   25,
+  28,
 { 21: }
   26,
-  27,
 { 22: }
-  25,
   27,
+  28,
 { 23: }
-  27,
+  26,
+  28,
 { 24: }
-  2,
+  28,
 { 25: }
-  3,
+  2,
 { 26: }
-  5,
+  3,
 { 27: }
   5,
 { 28: }
-  7,
+  5,
 { 29: }
-  14,
-  18,
+  7,
 { 30: }
+  14,
   18,
 { 31: }
-  17,
-{ 32: }
   18,
+{ 32: }
+  17,
 { 33: }
-  15,
   18,
 { 34: }
-  1,
+  15,
+  18,
 { 35: }
-  4,
+  1,
 { 36: }
-  8,
+  4,
 { 37: }
   8,
+  25,
 { 38: }
+  8,
+  25,
 { 39: }
+  25,
 { 40: }
-  11,
+  25,
 { 41: }
-  24,
+  25,
 { 42: }
+  11,
 { 43: }
+  24,
+  25,
 { 44: }
 { 45: }
-  24,
 { 46: }
-  24,
 { 47: }
-  6,
+  24,
+  25,
 { 48: }
-  13,
+  24,
+  25,
 { 49: }
-  16,
+  6,
 { 50: }
-  9,
+  13,
 { 51: }
-  10,
+  16,
 { 52: }
+  9,
+  25,
 { 53: }
-  24,
+  10,
+  25,
 { 54: }
-  23,
-  24,
 { 55: }
-  9,
 { 56: }
-  10,
 { 57: }
+  24,
+  25,
 { 58: }
+  23,
+  24,
+  25,
 { 59: }
+  9,
+  25,
 { 60: }
-  24,
+  10,
+  25,
 { 61: }
 { 62: }
-  22,
-  24,
 { 63: }
 { 64: }
+  24,
+  25,
 { 65: }
 { 66: }
 { 67: }
 { 68: }
+  22,
+  24,
+  25,
 { 69: }
 { 70: }
 { 71: }
 { 72: }
-  20,
 { 73: }
-  21,
 { 74: }
-  19
 { 75: }
 { 76: }
 { 77: }
@@ -477,18 +530,24 @@ yym : array [1..yynmatches] of Integer = (
 { 89: }
 { 90: }
 { 91: }
+  20,
 { 92: }
+  21,
 { 93: }
+{ 94: }
+{ 95: }
+  19
 );
 
 yyt : array [1..yyntrans] of YYTrec = (
 { 0: }
   ( cc: [ #1..#8,#11,#13..#31,'!','#','$','''','*','+',
-            '-','.',':'..'@','['..']','`',#127..#255 ]; s: 23),
-  ( cc: [ #9,#12,' ' ]; s: 22),
-  ( cc: [ #10 ]; s: 20),
+            '-',';'..'@','[',']','`',#127..#255 ]; s: 24),
+  ( cc: [ #9,#12,' ' ]; s: 23),
+  ( cc: [ #10 ]; s: 21),
   ( cc: [ '"' ]; s: 14),
-  ( cc: [ '%','&','(',')',',','^','|','~' ]; s: 21),
+  ( cc: [ '%','&','(',')',',','^','|','~' ]; s: 22),
+  ( cc: [ '.',':','\' ]; s: 20),
   ( cc: [ '/' ]; s: 10),
   ( cc: [ '0' ]; s: 12),
   ( cc: [ '1'..'9' ]; s: 11),
@@ -500,11 +559,12 @@ yyt : array [1..yyntrans] of YYTrec = (
   ( cc: [ '}' ]; s: 18),
 { 1: }
   ( cc: [ #1..#8,#11,#13..#31,'!','#','$','''','*','+',
-            '-','.',':'..'@','['..']','`',#127..#255 ]; s: 23),
-  ( cc: [ #9,#12,' ' ]; s: 22),
-  ( cc: [ #10 ]; s: 20),
+            '-',';'..'@','[',']','`',#127..#255 ]; s: 24),
+  ( cc: [ #9,#12,' ' ]; s: 23),
+  ( cc: [ #10 ]; s: 21),
   ( cc: [ '"' ]; s: 14),
-  ( cc: [ '%','&','(',')',',','^','|','~' ]; s: 21),
+  ( cc: [ '%','&','(',')',',','^','|','~' ]; s: 22),
+  ( cc: [ '.',':','\' ]; s: 20),
   ( cc: [ '/' ]; s: 10),
   ( cc: [ '0' ]; s: 12),
   ( cc: [ '1'..'9' ]; s: 11),
@@ -515,68 +575,76 @@ yyt : array [1..yyntrans] of YYTrec = (
   ( cc: [ '{' ]; s: 16),
   ( cc: [ '}' ]; s: 18),
 { 2: }
-  ( cc: [ #1..#9,#11..#255 ]; s: 25),
-  ( cc: [ #10 ]; s: 24),
+  ( cc: [ #1..#9,#11..#255 ]; s: 26),
+  ( cc: [ #10 ]; s: 25),
 { 3: }
-  ( cc: [ #1..#9,#11..#255 ]; s: 25),
-  ( cc: [ #10 ]; s: 24),
+  ( cc: [ #1..#9,#11..#255 ]; s: 26),
+  ( cc: [ #10 ]; s: 25),
 { 4: }
-  ( cc: [ #0 ]; s: 28),
-  ( cc: [ #1..#9,#11..')','+'..#255 ]; s: 26),
-  ( cc: [ '*' ]; s: 27),
+  ( cc: [ #0 ]; s: 29),
+  ( cc: [ #1..#9,#11..')','+'..#255 ]; s: 27),
+  ( cc: [ '*' ]; s: 28),
 { 5: }
-  ( cc: [ #0 ]; s: 28),
-  ( cc: [ #1..#9,#11..')','+'..#255 ]; s: 26),
-  ( cc: [ '*' ]; s: 27),
+  ( cc: [ #0 ]; s: 29),
+  ( cc: [ #1..#9,#11..')','+'..#255 ]; s: 27),
+  ( cc: [ '*' ]; s: 28),
 { 6: }
-  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 32),
-  ( cc: [ #10 ]; s: 31),
-  ( cc: [ '"' ]; s: 29),
-  ( cc: [ '\' ]; s: 30),
+  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 33),
+  ( cc: [ #10 ]; s: 32),
+  ( cc: [ '"' ]; s: 30),
+  ( cc: [ '\' ]; s: 31),
 { 7: }
-  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 32),
-  ( cc: [ #10 ]; s: 31),
-  ( cc: [ '"' ]; s: 29),
-  ( cc: [ '\' ]; s: 30),
+  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 33),
+  ( cc: [ #10 ]; s: 32),
+  ( cc: [ '"' ]; s: 30),
+  ( cc: [ '\' ]; s: 31),
 { 8: }
-  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 32),
-  ( cc: [ #10 ]; s: 31),
-  ( cc: [ '"' ]; s: 33),
-  ( cc: [ '\' ]; s: 30),
+  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 33),
+  ( cc: [ #10 ]; s: 32),
+  ( cc: [ '"' ]; s: 34),
+  ( cc: [ '\' ]; s: 31),
 { 9: }
-  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 32),
-  ( cc: [ #10 ]; s: 31),
-  ( cc: [ '"' ]; s: 33),
-  ( cc: [ '\' ]; s: 30),
+  ( cc: [ #1..#9,#11..'!','#'..'[',']'..#255 ]; s: 33),
+  ( cc: [ #10 ]; s: 32),
+  ( cc: [ '"' ]; s: 34),
+  ( cc: [ '\' ]; s: 31),
 { 10: }
-  ( cc: [ '*' ]; s: 35),
-  ( cc: [ '/' ]; s: 34),
+  ( cc: [ '*' ]; s: 36),
+  ( cc: [ '/' ]; s: 35),
 { 11: }
-  ( cc: [ '0'..'9' ]; s: 36),
-  ( cc: [ 'L' ]; s: 37),
+  ( cc: [ '.',':','A'..'K','M'..'Z','\','_','a'..'z' ]; s: 39),
+  ( cc: [ '0'..'9' ]; s: 37),
+  ( cc: [ 'L' ]; s: 38),
 { 12: }
-  ( cc: [ '0'..'9' ]; s: 36),
-  ( cc: [ 'L' ]; s: 37),
-  ( cc: [ 'o' ]; s: 39),
-  ( cc: [ 'x' ]; s: 38),
+  ( cc: [ '.',':','A'..'K','M'..'Z','\','_','a'..'n',
+            'p'..'w','y','z' ]; s: 39),
+  ( cc: [ '0'..'9' ]; s: 37),
+  ( cc: [ 'L' ]; s: 38),
+  ( cc: [ 'o' ]; s: 41),
+  ( cc: [ 'x' ]; s: 40),
 { 13: }
-  ( cc: [ '"' ]; s: 40),
-  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 41),
+  ( cc: [ '"' ]; s: 42),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 43),
 { 14: }
-  ( cc: [ 'S' ]; s: 42),
-  ( cc: [ 'T' ]; s: 44),
-  ( cc: [ 'V' ]; s: 43),
+  ( cc: [ 'S' ]; s: 44),
+  ( cc: [ 'T' ]; s: 46),
+  ( cc: [ 'V' ]; s: 45),
 { 15: }
-  ( cc: [ '0'..'9','A'..'D','F'..'Z','_','a'..'z' ]; s: 41),
-  ( cc: [ 'E' ]; s: 45),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'D','F'..'Z','_','a'..'z' ]; s: 43),
+  ( cc: [ 'E' ]; s: 47),
 { 16: }
 { 17: }
-  ( cc: [ '0'..'9','A'..'M','O'..'Z','_','a'..'z' ]; s: 41),
-  ( cc: [ 'N' ]; s: 46),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'M','O'..'Z','_','a'..'z' ]; s: 43),
+  ( cc: [ 'N' ]; s: 48),
 { 18: }
 { 19: }
-  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 41),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 43),
 { 20: }
+  ( cc: [ '.','0'..':','A'..'Z','\','_','a'..'z' ]; s: 39),
 { 21: }
 { 22: }
 { 23: }
@@ -584,713 +652,743 @@ yyt : array [1..yyntrans] of YYTrec = (
 { 25: }
 { 26: }
 { 27: }
-  ( cc: [ '/' ]; s: 47),
 { 28: }
+  ( cc: [ '/' ]; s: 49),
 { 29: }
-  ( cc: [ '"' ]; s: 48),
 { 30: }
-  ( cc: [ #10 ]; s: 49),
+  ( cc: [ '"' ]; s: 50),
 { 31: }
+  ( cc: [ #10 ]; s: 51),
 { 32: }
 { 33: }
-  ( cc: [ '"' ]; s: 48),
 { 34: }
+  ( cc: [ '"' ]; s: 50),
 { 35: }
 { 36: }
-  ( cc: [ '0'..'9' ]; s: 36),
-  ( cc: [ 'L' ]; s: 37),
 { 37: }
+  ( cc: [ '.',':','A'..'K','M'..'Z','\','_','a'..'z' ]; s: 39),
+  ( cc: [ '0'..'9' ]; s: 37),
+  ( cc: [ 'L' ]; s: 38),
 { 38: }
-  ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 50),
+  ( cc: [ '.','0'..':','A'..'Z','\','_','a'..'z' ]; s: 39),
 { 39: }
-  ( cc: [ '0'..'7' ]; s: 51),
+  ( cc: [ '.','0'..':','A'..'Z','\','_','a'..'z' ]; s: 39),
 { 40: }
+  ( cc: [ '.',':','G'..'Z','\','_','g'..'z' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 52),
 { 41: }
-  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 41),
+  ( cc: [ '.','8'..':','A'..'Z','\','_','a'..'z' ]; s: 39),
+  ( cc: [ '0'..'7' ]; s: 53),
 { 42: }
-  ( cc: [ 't' ]; s: 52),
 { 43: }
-  ( cc: [ 'a' ]; s: 77),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 43),
 { 44: }
-  ( cc: [ 'r' ]; s: 76),
+  ( cc: [ 't' ]; s: 54),
 { 45: }
-  ( cc: [ '0'..'9','A'..'F','H'..'Z','_','a'..'z' ]; s: 41),
-  ( cc: [ 'G' ]; s: 53),
+  ( cc: [ 'a' ]; s: 55),
 { 46: }
-  ( cc: [ '0'..'9','A'..'C','E'..'Z','_','a'..'z' ]; s: 41),
-  ( cc: [ 'D' ]; s: 54),
+  ( cc: [ 'r' ]; s: 56),
 { 47: }
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'F','H'..'Z','_','a'..'z' ]; s: 43),
+  ( cc: [ 'G' ]; s: 57),
 { 48: }
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'C','E'..'Z','_','a'..'z' ]; s: 43),
+  ( cc: [ 'D' ]; s: 58),
 { 49: }
 { 50: }
-  ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 50),
-  ( cc: [ 'L' ]; s: 55),
 { 51: }
-  ( cc: [ '0'..'7' ]; s: 51),
-  ( cc: [ 'L' ]; s: 56),
 { 52: }
-  ( cc: [ 'r' ]; s: 57),
+  ( cc: [ '.',':','G'..'K','M'..'Z','\','_','g'..'z' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 52),
+  ( cc: [ 'L' ]; s: 59),
 { 53: }
-  ( cc: [ '0'..'9','A'..'H','J'..'Z','_','a'..'z' ]; s: 41),
-  ( cc: [ 'I' ]; s: 60),
+  ( cc: [ '.','8'..':','A'..'K','M'..'Z','\','_','a'..'z' ]; s: 39),
+  ( cc: [ '0'..'7' ]; s: 53),
+  ( cc: [ 'L' ]; s: 60),
 { 54: }
-  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 41),
+  ( cc: [ 'r' ]; s: 61),
 { 55: }
+  ( cc: [ 'r' ]; s: 62),
 { 56: }
+  ( cc: [ 'a' ]; s: 63),
 { 57: }
-  ( cc: [ 'i' ]; s: 79),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'H','J'..'Z','_','a'..'z' ]; s: 43),
+  ( cc: [ 'I' ]; s: 64),
 { 58: }
-  ( cc: [ 'F' ]; s: 78),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 43),
 { 59: }
-  ( cc: [ 'n' ]; s: 61),
+  ( cc: [ '.','0'..':','A'..'Z','\','_','a'..'z' ]; s: 39),
 { 60: }
-  ( cc: [ '0'..'9','A'..'M','O'..'Z','_','a'..'z' ]; s: 41),
-  ( cc: [ 'N' ]; s: 62),
+  ( cc: [ '.','0'..':','A'..'Z','\','_','a'..'z' ]; s: 39),
 { 61: }
-  ( cc: [ 's' ]; s: 80),
+  ( cc: [ 'i' ]; s: 65),
 { 62: }
-  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 41),
+  ( cc: [ 'F' ]; s: 66),
 { 63: }
-  ( cc: [ 'g' ]; s: 93),
+  ( cc: [ 'n' ]; s: 67),
 { 64: }
-  ( cc: [ 'l' ]; s: 65),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'M','O'..'Z','_','a'..'z' ]; s: 43),
+  ( cc: [ 'N' ]; s: 68),
 { 65: }
-  ( cc: [ 'e' ]; s: 67),
+  ( cc: [ 'n' ]; s: 69),
 { 66: }
-  ( cc: [ 'a' ]; s: 75),
+  ( cc: [ 'i' ]; s: 70),
 { 67: }
-  ( cc: [ 'I' ]; s: 83),
+  ( cc: [ 's' ]; s: 71),
 { 68: }
-  ( cc: [ 'f' ]; s: 70),
+  ( cc: [ '.',':','\' ]; s: 39),
+  ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 43),
 { 69: }
-  ( cc: [ 'o' ]; s: 85),
+  ( cc: [ 'g' ]; s: 72),
 { 70: }
-  ( cc: [ 'o' ]; s: 71),
+  ( cc: [ 'l' ]; s: 73),
 { 71: }
-  ( cc: [ '"' ]; s: 72),
+  ( cc: [ 'l' ]; s: 74),
 { 72: }
+  ( cc: [ 'F' ]; s: 75),
 { 73: }
+  ( cc: [ 'e' ]; s: 76),
 { 74: }
+  ( cc: [ 'a' ]; s: 77),
 { 75: }
-  ( cc: [ 't' ]; s: 82),
+  ( cc: [ 'i' ]; s: 78),
 { 76: }
-  ( cc: [ 'a' ]; s: 59),
+  ( cc: [ 'I' ]; s: 79),
 { 77: }
-  ( cc: [ 'r' ]; s: 58),
+  ( cc: [ 't' ]; s: 80),
 { 78: }
-  ( cc: [ 'i' ]; s: 64),
+  ( cc: [ 'l' ]; s: 81),
 { 79: }
-  ( cc: [ 'n' ]; s: 63),
+  ( cc: [ 'n' ]; s: 82),
 { 80: }
-  ( cc: [ 'l' ]; s: 66),
+  ( cc: [ 'i' ]; s: 83),
 { 81: }
-  ( cc: [ '"' ]; s: 73),
+  ( cc: [ 'e' ]; s: 84),
 { 82: }
-  ( cc: [ 'i' ]; s: 69),
+  ( cc: [ 'f' ]; s: 85),
 { 83: }
-  ( cc: [ 'n' ]; s: 68),
+  ( cc: [ 'o' ]; s: 86),
 { 84: }
-  ( cc: [ '"' ]; s: 74),
+  ( cc: [ 'I' ]; s: 87),
 { 85: }
-  ( cc: [ 'n' ]; s: 81),
+  ( cc: [ 'o' ]; s: 88),
 { 86: }
-  ( cc: [ 'o' ]; s: 84),
+  ( cc: [ 'n' ]; s: 89),
 { 87: }
-  ( cc: [ 'f' ]; s: 86),
+  ( cc: [ 'n' ]; s: 90),
 { 88: }
-  ( cc: [ 'n' ]; s: 87),
+  ( cc: [ '"' ]; s: 91),
 { 89: }
-  ( cc: [ 'I' ]; s: 88),
+  ( cc: [ '"' ]; s: 92),
 { 90: }
-  ( cc: [ 'e' ]; s: 89),
+  ( cc: [ 'f' ]; s: 93),
 { 91: }
-  ( cc: [ 'l' ]; s: 90),
 { 92: }
-  ( cc: [ 'i' ]; s: 91),
 { 93: }
-  ( cc: [ 'F' ]; s: 92)
+  ( cc: [ 'o' ]; s: 94),
+{ 94: }
+  ( cc: [ '"' ]; s: 95)
+{ 95: }
 );
 
 yykl : array [0..yynstates-1] of Integer = (
 { 0: } 1,
-{ 1: } 1,
-{ 2: } 1,
-{ 3: } 1,
-{ 4: } 1,
-{ 5: } 1,
-{ 6: } 1,
-{ 7: } 1,
-{ 8: } 1,
-{ 9: } 1,
-{ 10: } 1,
-{ 11: } 3,
-{ 12: } 5,
-{ 13: } 7,
-{ 14: } 9,
-{ 15: } 11,
-{ 16: } 13,
-{ 17: } 15,
-{ 18: } 17,
-{ 19: } 19,
-{ 20: } 21,
-{ 21: } 22,
-{ 22: } 24,
-{ 23: } 26,
-{ 24: } 27,
-{ 25: } 28,
-{ 26: } 29,
-{ 27: } 30,
-{ 28: } 31,
-{ 29: } 32,
-{ 30: } 34,
-{ 31: } 35,
-{ 32: } 36,
-{ 33: } 37,
-{ 34: } 39,
-{ 35: } 40,
-{ 36: } 41,
-{ 37: } 42,
-{ 38: } 43,
-{ 39: } 43,
-{ 40: } 43,
-{ 41: } 44,
-{ 42: } 45,
-{ 43: } 45,
-{ 44: } 45,
-{ 45: } 45,
-{ 46: } 46,
-{ 47: } 47,
-{ 48: } 48,
-{ 49: } 49,
-{ 50: } 50,
-{ 51: } 51,
-{ 52: } 52,
-{ 53: } 52,
-{ 54: } 53,
-{ 55: } 55,
-{ 56: } 56,
-{ 57: } 57,
-{ 58: } 57,
-{ 59: } 57,
-{ 60: } 57,
-{ 61: } 58,
-{ 62: } 58,
-{ 63: } 60,
-{ 64: } 60,
-{ 65: } 60,
-{ 66: } 60,
-{ 67: } 60,
-{ 68: } 60,
-{ 69: } 60,
-{ 70: } 60,
-{ 71: } 60,
-{ 72: } 60,
-{ 73: } 61,
-{ 74: } 62,
-{ 75: } 63,
-{ 76: } 63,
-{ 77: } 63,
-{ 78: } 63,
-{ 79: } 63,
-{ 80: } 63,
-{ 81: } 63,
-{ 82: } 63,
-{ 83: } 63,
-{ 84: } 63,
-{ 85: } 63,
-{ 86: } 63,
-{ 87: } 63,
-{ 88: } 63,
-{ 89: } 63,
-{ 90: } 63,
-{ 91: } 63,
-{ 92: } 63,
-{ 93: } 63
+{ 1: } 2,
+{ 2: } 3,
+{ 3: } 3,
+{ 4: } 3,
+{ 5: } 3,
+{ 6: } 3,
+{ 7: } 3,
+{ 8: } 3,
+{ 9: } 3,
+{ 10: } 3,
+{ 11: } 5,
+{ 12: } 8,
+{ 13: } 11,
+{ 14: } 14,
+{ 15: } 16,
+{ 16: } 19,
+{ 17: } 21,
+{ 18: } 24,
+{ 19: } 26,
+{ 20: } 29,
+{ 21: } 31,
+{ 22: } 32,
+{ 23: } 34,
+{ 24: } 36,
+{ 25: } 37,
+{ 26: } 38,
+{ 27: } 39,
+{ 28: } 40,
+{ 29: } 41,
+{ 30: } 42,
+{ 31: } 44,
+{ 32: } 45,
+{ 33: } 46,
+{ 34: } 47,
+{ 35: } 49,
+{ 36: } 50,
+{ 37: } 51,
+{ 38: } 53,
+{ 39: } 55,
+{ 40: } 56,
+{ 41: } 57,
+{ 42: } 58,
+{ 43: } 59,
+{ 44: } 61,
+{ 45: } 61,
+{ 46: } 61,
+{ 47: } 61,
+{ 48: } 63,
+{ 49: } 65,
+{ 50: } 66,
+{ 51: } 67,
+{ 52: } 68,
+{ 53: } 70,
+{ 54: } 72,
+{ 55: } 72,
+{ 56: } 72,
+{ 57: } 72,
+{ 58: } 74,
+{ 59: } 77,
+{ 60: } 79,
+{ 61: } 81,
+{ 62: } 81,
+{ 63: } 81,
+{ 64: } 81,
+{ 65: } 83,
+{ 66: } 83,
+{ 67: } 83,
+{ 68: } 83,
+{ 69: } 86,
+{ 70: } 86,
+{ 71: } 86,
+{ 72: } 86,
+{ 73: } 86,
+{ 74: } 86,
+{ 75: } 86,
+{ 76: } 86,
+{ 77: } 86,
+{ 78: } 86,
+{ 79: } 86,
+{ 80: } 86,
+{ 81: } 86,
+{ 82: } 86,
+{ 83: } 86,
+{ 84: } 86,
+{ 85: } 86,
+{ 86: } 86,
+{ 87: } 86,
+{ 88: } 86,
+{ 89: } 86,
+{ 90: } 86,
+{ 91: } 86,
+{ 92: } 87,
+{ 93: } 88,
+{ 94: } 88,
+{ 95: } 88
 );
 
 yykh : array [0..yynstates-1] of Integer = (
-{ 0: } 0,
-{ 1: } 0,
-{ 2: } 0,
-{ 3: } 0,
-{ 4: } 0,
-{ 5: } 0,
-{ 6: } 0,
-{ 7: } 0,
-{ 8: } 0,
-{ 9: } 0,
-{ 10: } 2,
-{ 11: } 4,
-{ 12: } 6,
-{ 13: } 8,
-{ 14: } 10,
-{ 15: } 12,
-{ 16: } 14,
-{ 17: } 16,
-{ 18: } 18,
-{ 19: } 20,
-{ 20: } 21,
-{ 21: } 23,
-{ 22: } 25,
-{ 23: } 26,
-{ 24: } 27,
-{ 25: } 28,
-{ 26: } 29,
-{ 27: } 30,
-{ 28: } 31,
-{ 29: } 33,
-{ 30: } 34,
-{ 31: } 35,
-{ 32: } 36,
-{ 33: } 38,
-{ 34: } 39,
-{ 35: } 40,
-{ 36: } 41,
-{ 37: } 42,
-{ 38: } 42,
-{ 39: } 42,
-{ 40: } 43,
-{ 41: } 44,
-{ 42: } 44,
-{ 43: } 44,
-{ 44: } 44,
-{ 45: } 45,
-{ 46: } 46,
-{ 47: } 47,
-{ 48: } 48,
-{ 49: } 49,
-{ 50: } 50,
-{ 51: } 51,
-{ 52: } 51,
-{ 53: } 52,
-{ 54: } 54,
-{ 55: } 55,
-{ 56: } 56,
-{ 57: } 56,
-{ 58: } 56,
-{ 59: } 56,
-{ 60: } 57,
-{ 61: } 57,
-{ 62: } 59,
-{ 63: } 59,
-{ 64: } 59,
-{ 65: } 59,
-{ 66: } 59,
-{ 67: } 59,
-{ 68: } 59,
-{ 69: } 59,
-{ 70: } 59,
-{ 71: } 59,
-{ 72: } 60,
-{ 73: } 61,
-{ 74: } 62,
-{ 75: } 62,
-{ 76: } 62,
-{ 77: } 62,
-{ 78: } 62,
-{ 79: } 62,
-{ 80: } 62,
-{ 81: } 62,
-{ 82: } 62,
-{ 83: } 62,
-{ 84: } 62,
-{ 85: } 62,
-{ 86: } 62,
-{ 87: } 62,
-{ 88: } 62,
-{ 89: } 62,
-{ 90: } 62,
-{ 91: } 62,
-{ 92: } 62,
-{ 93: } 62
+{ 0: } 1,
+{ 1: } 2,
+{ 2: } 2,
+{ 3: } 2,
+{ 4: } 2,
+{ 5: } 2,
+{ 6: } 2,
+{ 7: } 2,
+{ 8: } 2,
+{ 9: } 2,
+{ 10: } 4,
+{ 11: } 7,
+{ 12: } 10,
+{ 13: } 13,
+{ 14: } 15,
+{ 15: } 18,
+{ 16: } 20,
+{ 17: } 23,
+{ 18: } 25,
+{ 19: } 28,
+{ 20: } 30,
+{ 21: } 31,
+{ 22: } 33,
+{ 23: } 35,
+{ 24: } 36,
+{ 25: } 37,
+{ 26: } 38,
+{ 27: } 39,
+{ 28: } 40,
+{ 29: } 41,
+{ 30: } 43,
+{ 31: } 44,
+{ 32: } 45,
+{ 33: } 46,
+{ 34: } 48,
+{ 35: } 49,
+{ 36: } 50,
+{ 37: } 52,
+{ 38: } 54,
+{ 39: } 55,
+{ 40: } 56,
+{ 41: } 57,
+{ 42: } 58,
+{ 43: } 60,
+{ 44: } 60,
+{ 45: } 60,
+{ 46: } 60,
+{ 47: } 62,
+{ 48: } 64,
+{ 49: } 65,
+{ 50: } 66,
+{ 51: } 67,
+{ 52: } 69,
+{ 53: } 71,
+{ 54: } 71,
+{ 55: } 71,
+{ 56: } 71,
+{ 57: } 73,
+{ 58: } 76,
+{ 59: } 78,
+{ 60: } 80,
+{ 61: } 80,
+{ 62: } 80,
+{ 63: } 80,
+{ 64: } 82,
+{ 65: } 82,
+{ 66: } 82,
+{ 67: } 82,
+{ 68: } 85,
+{ 69: } 85,
+{ 70: } 85,
+{ 71: } 85,
+{ 72: } 85,
+{ 73: } 85,
+{ 74: } 85,
+{ 75: } 85,
+{ 76: } 85,
+{ 77: } 85,
+{ 78: } 85,
+{ 79: } 85,
+{ 80: } 85,
+{ 81: } 85,
+{ 82: } 85,
+{ 83: } 85,
+{ 84: } 85,
+{ 85: } 85,
+{ 86: } 85,
+{ 87: } 85,
+{ 88: } 85,
+{ 89: } 85,
+{ 90: } 85,
+{ 91: } 86,
+{ 92: } 87,
+{ 93: } 87,
+{ 94: } 87,
+{ 95: } 88
 );
 
 yyml : array [0..yynstates-1] of Integer = (
 { 0: } 1,
-{ 1: } 1,
-{ 2: } 1,
-{ 3: } 1,
-{ 4: } 1,
-{ 5: } 1,
-{ 6: } 1,
-{ 7: } 1,
-{ 8: } 1,
-{ 9: } 1,
-{ 10: } 1,
-{ 11: } 3,
-{ 12: } 5,
-{ 13: } 7,
-{ 14: } 9,
-{ 15: } 11,
-{ 16: } 13,
-{ 17: } 15,
-{ 18: } 17,
-{ 19: } 19,
-{ 20: } 21,
-{ 21: } 22,
-{ 22: } 24,
-{ 23: } 26,
-{ 24: } 27,
-{ 25: } 28,
-{ 26: } 29,
-{ 27: } 30,
-{ 28: } 31,
-{ 29: } 32,
-{ 30: } 34,
-{ 31: } 35,
-{ 32: } 36,
-{ 33: } 37,
-{ 34: } 39,
-{ 35: } 40,
-{ 36: } 41,
-{ 37: } 42,
-{ 38: } 43,
-{ 39: } 43,
-{ 40: } 43,
-{ 41: } 44,
-{ 42: } 45,
-{ 43: } 45,
-{ 44: } 45,
-{ 45: } 45,
-{ 46: } 46,
-{ 47: } 47,
-{ 48: } 48,
-{ 49: } 49,
-{ 50: } 50,
-{ 51: } 51,
-{ 52: } 52,
-{ 53: } 52,
-{ 54: } 53,
-{ 55: } 55,
-{ 56: } 56,
-{ 57: } 57,
-{ 58: } 57,
-{ 59: } 57,
-{ 60: } 57,
-{ 61: } 58,
-{ 62: } 58,
-{ 63: } 60,
-{ 64: } 60,
-{ 65: } 60,
-{ 66: } 60,
-{ 67: } 60,
-{ 68: } 60,
-{ 69: } 60,
-{ 70: } 60,
-{ 71: } 60,
-{ 72: } 60,
-{ 73: } 61,
-{ 74: } 62,
-{ 75: } 63,
-{ 76: } 63,
-{ 77: } 63,
-{ 78: } 63,
-{ 79: } 63,
-{ 80: } 63,
-{ 81: } 63,
-{ 82: } 63,
-{ 83: } 63,
-{ 84: } 63,
-{ 85: } 63,
-{ 86: } 63,
-{ 87: } 63,
-{ 88: } 63,
-{ 89: } 63,
-{ 90: } 63,
-{ 91: } 63,
-{ 92: } 63,
-{ 93: } 63
+{ 1: } 2,
+{ 2: } 3,
+{ 3: } 3,
+{ 4: } 3,
+{ 5: } 3,
+{ 6: } 3,
+{ 7: } 3,
+{ 8: } 3,
+{ 9: } 3,
+{ 10: } 3,
+{ 11: } 5,
+{ 12: } 8,
+{ 13: } 11,
+{ 14: } 14,
+{ 15: } 16,
+{ 16: } 19,
+{ 17: } 21,
+{ 18: } 24,
+{ 19: } 26,
+{ 20: } 29,
+{ 21: } 31,
+{ 22: } 32,
+{ 23: } 34,
+{ 24: } 36,
+{ 25: } 37,
+{ 26: } 38,
+{ 27: } 39,
+{ 28: } 40,
+{ 29: } 41,
+{ 30: } 42,
+{ 31: } 44,
+{ 32: } 45,
+{ 33: } 46,
+{ 34: } 47,
+{ 35: } 49,
+{ 36: } 50,
+{ 37: } 51,
+{ 38: } 53,
+{ 39: } 55,
+{ 40: } 56,
+{ 41: } 57,
+{ 42: } 58,
+{ 43: } 59,
+{ 44: } 61,
+{ 45: } 61,
+{ 46: } 61,
+{ 47: } 61,
+{ 48: } 63,
+{ 49: } 65,
+{ 50: } 66,
+{ 51: } 67,
+{ 52: } 68,
+{ 53: } 70,
+{ 54: } 72,
+{ 55: } 72,
+{ 56: } 72,
+{ 57: } 72,
+{ 58: } 74,
+{ 59: } 77,
+{ 60: } 79,
+{ 61: } 81,
+{ 62: } 81,
+{ 63: } 81,
+{ 64: } 81,
+{ 65: } 83,
+{ 66: } 83,
+{ 67: } 83,
+{ 68: } 83,
+{ 69: } 86,
+{ 70: } 86,
+{ 71: } 86,
+{ 72: } 86,
+{ 73: } 86,
+{ 74: } 86,
+{ 75: } 86,
+{ 76: } 86,
+{ 77: } 86,
+{ 78: } 86,
+{ 79: } 86,
+{ 80: } 86,
+{ 81: } 86,
+{ 82: } 86,
+{ 83: } 86,
+{ 84: } 86,
+{ 85: } 86,
+{ 86: } 86,
+{ 87: } 86,
+{ 88: } 86,
+{ 89: } 86,
+{ 90: } 86,
+{ 91: } 86,
+{ 92: } 87,
+{ 93: } 88,
+{ 94: } 88,
+{ 95: } 88
 );
 
 yymh : array [0..yynstates-1] of Integer = (
-{ 0: } 0,
-{ 1: } 0,
-{ 2: } 0,
-{ 3: } 0,
-{ 4: } 0,
-{ 5: } 0,
-{ 6: } 0,
-{ 7: } 0,
-{ 8: } 0,
-{ 9: } 0,
-{ 10: } 2,
-{ 11: } 4,
-{ 12: } 6,
-{ 13: } 8,
-{ 14: } 10,
-{ 15: } 12,
-{ 16: } 14,
-{ 17: } 16,
-{ 18: } 18,
-{ 19: } 20,
-{ 20: } 21,
-{ 21: } 23,
-{ 22: } 25,
-{ 23: } 26,
-{ 24: } 27,
-{ 25: } 28,
-{ 26: } 29,
-{ 27: } 30,
-{ 28: } 31,
-{ 29: } 33,
-{ 30: } 34,
-{ 31: } 35,
-{ 32: } 36,
-{ 33: } 38,
-{ 34: } 39,
-{ 35: } 40,
-{ 36: } 41,
-{ 37: } 42,
-{ 38: } 42,
-{ 39: } 42,
-{ 40: } 43,
-{ 41: } 44,
-{ 42: } 44,
-{ 43: } 44,
-{ 44: } 44,
-{ 45: } 45,
-{ 46: } 46,
-{ 47: } 47,
-{ 48: } 48,
-{ 49: } 49,
-{ 50: } 50,
-{ 51: } 51,
-{ 52: } 51,
-{ 53: } 52,
-{ 54: } 54,
-{ 55: } 55,
-{ 56: } 56,
-{ 57: } 56,
-{ 58: } 56,
-{ 59: } 56,
-{ 60: } 57,
-{ 61: } 57,
-{ 62: } 59,
-{ 63: } 59,
-{ 64: } 59,
-{ 65: } 59,
-{ 66: } 59,
-{ 67: } 59,
-{ 68: } 59,
-{ 69: } 59,
-{ 70: } 59,
-{ 71: } 59,
-{ 72: } 60,
-{ 73: } 61,
-{ 74: } 62,
-{ 75: } 62,
-{ 76: } 62,
-{ 77: } 62,
-{ 78: } 62,
-{ 79: } 62,
-{ 80: } 62,
-{ 81: } 62,
-{ 82: } 62,
-{ 83: } 62,
-{ 84: } 62,
-{ 85: } 62,
-{ 86: } 62,
-{ 87: } 62,
-{ 88: } 62,
-{ 89: } 62,
-{ 90: } 62,
-{ 91: } 62,
-{ 92: } 62,
-{ 93: } 62
+{ 0: } 1,
+{ 1: } 2,
+{ 2: } 2,
+{ 3: } 2,
+{ 4: } 2,
+{ 5: } 2,
+{ 6: } 2,
+{ 7: } 2,
+{ 8: } 2,
+{ 9: } 2,
+{ 10: } 4,
+{ 11: } 7,
+{ 12: } 10,
+{ 13: } 13,
+{ 14: } 15,
+{ 15: } 18,
+{ 16: } 20,
+{ 17: } 23,
+{ 18: } 25,
+{ 19: } 28,
+{ 20: } 30,
+{ 21: } 31,
+{ 22: } 33,
+{ 23: } 35,
+{ 24: } 36,
+{ 25: } 37,
+{ 26: } 38,
+{ 27: } 39,
+{ 28: } 40,
+{ 29: } 41,
+{ 30: } 43,
+{ 31: } 44,
+{ 32: } 45,
+{ 33: } 46,
+{ 34: } 48,
+{ 35: } 49,
+{ 36: } 50,
+{ 37: } 52,
+{ 38: } 54,
+{ 39: } 55,
+{ 40: } 56,
+{ 41: } 57,
+{ 42: } 58,
+{ 43: } 60,
+{ 44: } 60,
+{ 45: } 60,
+{ 46: } 60,
+{ 47: } 62,
+{ 48: } 64,
+{ 49: } 65,
+{ 50: } 66,
+{ 51: } 67,
+{ 52: } 69,
+{ 53: } 71,
+{ 54: } 71,
+{ 55: } 71,
+{ 56: } 71,
+{ 57: } 73,
+{ 58: } 76,
+{ 59: } 78,
+{ 60: } 80,
+{ 61: } 80,
+{ 62: } 80,
+{ 63: } 80,
+{ 64: } 82,
+{ 65: } 82,
+{ 66: } 82,
+{ 67: } 82,
+{ 68: } 85,
+{ 69: } 85,
+{ 70: } 85,
+{ 71: } 85,
+{ 72: } 85,
+{ 73: } 85,
+{ 74: } 85,
+{ 75: } 85,
+{ 76: } 85,
+{ 77: } 85,
+{ 78: } 85,
+{ 79: } 85,
+{ 80: } 85,
+{ 81: } 85,
+{ 82: } 85,
+{ 83: } 85,
+{ 84: } 85,
+{ 85: } 85,
+{ 86: } 85,
+{ 87: } 85,
+{ 88: } 85,
+{ 89: } 85,
+{ 90: } 85,
+{ 91: } 86,
+{ 92: } 87,
+{ 93: } 87,
+{ 94: } 87,
+{ 95: } 88
 );
 
 yytl : array [0..yynstates-1] of Integer = (
 { 0: } 1,
-{ 1: } 15,
-{ 2: } 29,
-{ 3: } 31,
-{ 4: } 33,
-{ 5: } 36,
-{ 6: } 39,
-{ 7: } 43,
-{ 8: } 47,
-{ 9: } 51,
-{ 10: } 55,
-{ 11: } 57,
-{ 12: } 59,
-{ 13: } 63,
-{ 14: } 65,
-{ 15: } 68,
-{ 16: } 70,
-{ 17: } 70,
-{ 18: } 72,
-{ 19: } 72,
-{ 20: } 73,
-{ 21: } 73,
-{ 22: } 73,
-{ 23: } 73,
-{ 24: } 73,
-{ 25: } 73,
-{ 26: } 73,
-{ 27: } 73,
-{ 28: } 74,
-{ 29: } 74,
-{ 30: } 75,
-{ 31: } 76,
-{ 32: } 76,
-{ 33: } 76,
-{ 34: } 77,
-{ 35: } 77,
-{ 36: } 77,
-{ 37: } 79,
-{ 38: } 79,
-{ 39: } 80,
-{ 40: } 81,
-{ 41: } 81,
-{ 42: } 82,
-{ 43: } 83,
-{ 44: } 84,
-{ 45: } 85,
-{ 46: } 87,
-{ 47: } 89,
-{ 48: } 89,
-{ 49: } 89,
-{ 50: } 89,
-{ 51: } 91,
-{ 52: } 93,
-{ 53: } 94,
-{ 54: } 96,
-{ 55: } 97,
-{ 56: } 97,
-{ 57: } 97,
-{ 58: } 98,
-{ 59: } 99,
-{ 60: } 100,
-{ 61: } 102,
-{ 62: } 103,
-{ 63: } 104,
-{ 64: } 105,
-{ 65: } 106,
-{ 66: } 107,
-{ 67: } 108,
-{ 68: } 109,
-{ 69: } 110,
-{ 70: } 111,
-{ 71: } 112,
-{ 72: } 113,
-{ 73: } 113,
-{ 74: } 113,
-{ 75: } 113,
-{ 76: } 114,
-{ 77: } 115,
-{ 78: } 116,
-{ 79: } 117,
-{ 80: } 118,
-{ 81: } 119,
-{ 82: } 120,
-{ 83: } 121,
-{ 84: } 122,
-{ 85: } 123,
-{ 86: } 124,
-{ 87: } 125,
-{ 88: } 126,
-{ 89: } 127,
-{ 90: } 128,
-{ 91: } 129,
-{ 92: } 130,
-{ 93: } 131
-);
-
-yyth : array [0..yynstates-1] of Integer = (
-{ 0: } 14,
-{ 1: } 28,
-{ 2: } 30,
-{ 3: } 32,
+{ 1: } 16,
+{ 2: } 31,
+{ 3: } 33,
 { 4: } 35,
 { 5: } 38,
-{ 6: } 42,
-{ 7: } 46,
-{ 8: } 50,
-{ 9: } 54,
-{ 10: } 56,
-{ 11: } 58,
+{ 6: } 41,
+{ 7: } 45,
+{ 8: } 49,
+{ 9: } 53,
+{ 10: } 57,
+{ 11: } 59,
 { 12: } 62,
-{ 13: } 64,
-{ 14: } 67,
-{ 15: } 69,
-{ 16: } 69,
-{ 17: } 71,
-{ 18: } 71,
-{ 19: } 72,
-{ 20: } 72,
-{ 21: } 72,
-{ 22: } 72,
-{ 23: } 72,
-{ 24: } 72,
-{ 25: } 72,
-{ 26: } 72,
-{ 27: } 73,
-{ 28: } 73,
-{ 29: } 74,
-{ 30: } 75,
-{ 31: } 75,
-{ 32: } 75,
-{ 33: } 76,
-{ 34: } 76,
-{ 35: } 76,
-{ 36: } 78,
-{ 37: } 78,
-{ 38: } 79,
-{ 39: } 80,
-{ 40: } 80,
-{ 41: } 81,
-{ 42: } 82,
-{ 43: } 83,
-{ 44: } 84,
-{ 45: } 86,
-{ 46: } 88,
-{ 47: } 88,
-{ 48: } 88,
-{ 49: } 88,
-{ 50: } 90,
-{ 51: } 92,
-{ 52: } 93,
-{ 53: } 95,
-{ 54: } 96,
-{ 55: } 96,
-{ 56: } 96,
-{ 57: } 97,
-{ 58: } 98,
-{ 59: } 99,
-{ 60: } 101,
-{ 61: } 102,
-{ 62: } 103,
-{ 63: } 104,
-{ 64: } 105,
-{ 65: } 106,
-{ 66: } 107,
-{ 67: } 108,
-{ 68: } 109,
-{ 69: } 110,
-{ 70: } 111,
-{ 71: } 112,
-{ 72: } 112,
-{ 73: } 112,
-{ 74: } 112,
-{ 75: } 113,
-{ 76: } 114,
-{ 77: } 115,
-{ 78: } 116,
-{ 79: } 117,
-{ 80: } 118,
-{ 81: } 119,
-{ 82: } 120,
-{ 83: } 121,
-{ 84: } 122,
-{ 85: } 123,
-{ 86: } 124,
-{ 87: } 125,
-{ 88: } 126,
-{ 89: } 127,
-{ 90: } 128,
-{ 91: } 129,
-{ 92: } 130,
-{ 93: } 131
+{ 13: } 67,
+{ 14: } 70,
+{ 15: } 73,
+{ 16: } 76,
+{ 17: } 76,
+{ 18: } 79,
+{ 19: } 79,
+{ 20: } 81,
+{ 21: } 82,
+{ 22: } 82,
+{ 23: } 82,
+{ 24: } 82,
+{ 25: } 82,
+{ 26: } 82,
+{ 27: } 82,
+{ 28: } 82,
+{ 29: } 83,
+{ 30: } 83,
+{ 31: } 84,
+{ 32: } 85,
+{ 33: } 85,
+{ 34: } 85,
+{ 35: } 86,
+{ 36: } 86,
+{ 37: } 86,
+{ 38: } 89,
+{ 39: } 90,
+{ 40: } 91,
+{ 41: } 93,
+{ 42: } 95,
+{ 43: } 95,
+{ 44: } 97,
+{ 45: } 98,
+{ 46: } 99,
+{ 47: } 100,
+{ 48: } 103,
+{ 49: } 106,
+{ 50: } 106,
+{ 51: } 106,
+{ 52: } 106,
+{ 53: } 109,
+{ 54: } 112,
+{ 55: } 113,
+{ 56: } 114,
+{ 57: } 115,
+{ 58: } 118,
+{ 59: } 120,
+{ 60: } 121,
+{ 61: } 122,
+{ 62: } 123,
+{ 63: } 124,
+{ 64: } 125,
+{ 65: } 128,
+{ 66: } 129,
+{ 67: } 130,
+{ 68: } 131,
+{ 69: } 133,
+{ 70: } 134,
+{ 71: } 135,
+{ 72: } 136,
+{ 73: } 137,
+{ 74: } 138,
+{ 75: } 139,
+{ 76: } 140,
+{ 77: } 141,
+{ 78: } 142,
+{ 79: } 143,
+{ 80: } 144,
+{ 81: } 145,
+{ 82: } 146,
+{ 83: } 147,
+{ 84: } 148,
+{ 85: } 149,
+{ 86: } 150,
+{ 87: } 151,
+{ 88: } 152,
+{ 89: } 153,
+{ 90: } 154,
+{ 91: } 155,
+{ 92: } 155,
+{ 93: } 155,
+{ 94: } 156,
+{ 95: } 157
+);
+
+yyth : array [0..yynstates-1] of Integer = (
+{ 0: } 15,
+{ 1: } 30,
+{ 2: } 32,
+{ 3: } 34,
+{ 4: } 37,
+{ 5: } 40,
+{ 6: } 44,
+{ 7: } 48,
+{ 8: } 52,
+{ 9: } 56,
+{ 10: } 58,
+{ 11: } 61,
+{ 12: } 66,
+{ 13: } 69,
+{ 14: } 72,
+{ 15: } 75,
+{ 16: } 75,
+{ 17: } 78,
+{ 18: } 78,
+{ 19: } 80,
+{ 20: } 81,
+{ 21: } 81,
+{ 22: } 81,
+{ 23: } 81,
+{ 24: } 81,
+{ 25: } 81,
+{ 26: } 81,
+{ 27: } 81,
+{ 28: } 82,
+{ 29: } 82,
+{ 30: } 83,
+{ 31: } 84,
+{ 32: } 84,
+{ 33: } 84,
+{ 34: } 85,
+{ 35: } 85,
+{ 36: } 85,
+{ 37: } 88,
+{ 38: } 89,
+{ 39: } 90,
+{ 40: } 92,
+{ 41: } 94,
+{ 42: } 94,
+{ 43: } 96,
+{ 44: } 97,
+{ 45: } 98,
+{ 46: } 99,
+{ 47: } 102,
+{ 48: } 105,
+{ 49: } 105,
+{ 50: } 105,
+{ 51: } 105,
+{ 52: } 108,
+{ 53: } 111,
+{ 54: } 112,
+{ 55: } 113,
+{ 56: } 114,
+{ 57: } 117,
+{ 58: } 119,
+{ 59: } 120,
+{ 60: } 121,
+{ 61: } 122,
+{ 62: } 123,
+{ 63: } 124,
+{ 64: } 127,
+{ 65: } 128,
+{ 66: } 129,
+{ 67: } 130,
+{ 68: } 132,
+{ 69: } 133,
+{ 70: } 134,
+{ 71: } 135,
+{ 72: } 136,
+{ 73: } 137,
+{ 74: } 138,
+{ 75: } 139,
+{ 76: } 140,
+{ 77: } 141,
+{ 78: } 142,
+{ 79: } 143,
+{ 80: } 144,
+{ 81: } 145,
+{ 82: } 146,
+{ 83: } 147,
+{ 84: } 148,
+{ 85: } 149,
+{ 86: } 150,
+{ 87: } 151,
+{ 88: } 152,
+{ 89: } 153,
+{ 90: } 154,
+{ 91: } 154,
+{ 92: } 154,
+{ 93: } 155,
+{ 94: } 156,
+{ 95: } 156
 );
 
 

+ 2 - 0
packages/fcl-res/src/rclex.l

@@ -63,6 +63,7 @@ O [0-7]
 D [0-9]
 H [0-9a-fA-F]
 IDENT [a-zA-Z_]([a-zA-Z0-9_])*
+NSWPSTR ([a-zA-Z0-9_\:\.\\])*
 
 %%
 
@@ -108,6 +109,7 @@ END|}                   return(_END);
                             else
                               return(_ID);
                          end;
+{NSWPSTR}         return(_NSWPSTR);
 [ \t\n\f]               ;
 [,()|^&+-*/%~]          returnc(yytext[1]);
 .                       return(_ILLEGAL);

File diff suppressed because it is too large
+ 396 - 345
packages/fcl-res/src/rcparser.pas


+ 16 - 3
packages/fcl-res/src/rcparser.y

@@ -12,7 +12,7 @@ unit rcparser;
 %token _ILLEGAL
 %token _NUMBER _QUOTEDSTR _QUOTEDSTRL
 %token _STR_StringFileInfo _STR_VarFileInfo _STR_Translation
-%token _BEGIN _END _ID
+%token _BEGIN _END _ID _NSWPSTR
 %token _LANGUAGE _CHARACTERISTICS _VERSION _MOVEABLE _FIXED _PURE _IMPURE _PRELOAD _LOADONCALL _DISCARDABLE
 %token _BITMAP _CURSOR _ICON _STRINGTABLE _VERSIONINFO
 %token _ANICURSOR _ANIICON _DLGINCLUDE _DLGINIT _HTML _MANIFEST _MESSAGETABLE _PLUGPLAY _RCDATA _VXD
@@ -20,7 +20,7 @@ unit rcparser;
 %token _ACCELERATORS _DIALOG _DIALOGEX _MENU _MENUEX
 
 %type <rcnumtype> numpos numexpr numeral
-%type <rcstrtype> ident_string long_string
+%type <rcstrtype> ident_string long_string non_whitespace_string long_stringfn
 %type <TResourceDesc> resid rcdataid
 %type <TMemoryStream> raw_data raw_item
 %type <TFileStream> filename_string
@@ -188,8 +188,21 @@ ident_string
     | long_string
     ;
 
+non_whitespace_string
+    : _NSWPSTR                                     { string_new($$, yytext, opt_code_page); }
+    ;
+
 filename_string
-    : long_string                                  { $$:= TFileStream.Create($1.v^, fmOpenRead or fmShareDenyWrite); }
+    : long_stringfn                                { $$:= TFileStream.Create($1.v^, fmOpenRead or fmShareDenyWrite); }
+    | non_whitespace_string                        { $$:= TFileStream.Create($1.v^, fmOpenRead or fmShareDenyWrite); }
+    ;
+
+long_stringfn
+    : _QUOTEDSTR                                   { string_new_uni($$, @strbuf[0], strbuflen, opt_code_page, false); }
+    | _QUOTEDSTRL                                  { string_new_uni($$, @strbuf[0], strbuflen, CP_UTF16, false); }
+    | _STR_StringFileInfo                          { string_new($$, yytext, opt_code_page); }
+    | _STR_VarFileInfo                             { string_new($$, yytext, opt_code_page); }
+    | _STR_Translation                             { string_new($$, yytext, opt_code_page); }
     ;
 
 long_string

Some files were not shown because too many files changed in this diff