Merge 13511:13830 from trunk
[reactos.git] / reactos / tools / wrc / y.tab.c
index 0d3a230..3246401 100644 (file)
@@ -634,7 +634,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   674
+#define YYLAST   692
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  96
@@ -643,7 +643,7 @@ union yyalloc
 /* YYNRULES -- Number of rules. */
 #define YYNRULES  258
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  570
+#define YYNSTATES  572
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -766,7 +766,7 @@ static const short yyrhs[] =
       93,   176,    93,   176,    -1,    21,   176,    93,     6,    -1,
       -1,    93,   131,    -1,    -1,    93,   131,    -1,    93,   131,
       93,   131,    -1,   131,    83,   131,    -1,    94,   131,    95,
-      -1,   178,    -1,    91,   178,    -1,   176,    -1,     6,    -1,
+      -1,   177,    -1,    91,   177,    -1,   176,    -1,     6,    -1,
       14,   165,   176,    93,   176,    93,   176,    93,   176,   140,
      134,    80,   135,    81,    -1,    -1,   134,    62,   131,    -1,
      134,    61,   131,    -1,   134,    59,     6,    -1,   134,   128,
@@ -1020,29 +1020,30 @@ static const unsigned short yydefact[] =
      242,     0,   177,   188,   189,     0,    53,    13,    67,    12,
        0,    15,    14,    66,    64,     0,     0,    63,   106,    62,
        0,     0,     0,     0,     0,     0,     0,   122,   115,   116,
-     119,   120,   121,     0,   173,   241,     0,     0,   107,     0,
+     119,   120,   121,     0,   173,   241,     0,     0,   107,   255,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    60,
-     118,     0,   117,   114,   113,   112,     0,   174,     0,   178,
-     201,   202,   203,    98,   105,   104,   184,   184,    82,    84,
-      85,    77,    78,    80,    81,    83,    79,    75,     0,    74,
-      76,   184,    72,    73,    88,    87,    86,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   110,     0,     0,     0,
-       0,     0,     0,    98,   184,   184,   133,   135,   136,   128,
-     129,   131,   132,   134,   130,   126,     0,   125,   127,   184,
-     123,   124,   139,   138,   137,   179,   204,     0,     0,     0,
+       0,    60,   118,     0,   117,   114,   113,   112,     0,   174,
+       0,   178,   201,   202,   203,    98,   105,   104,   184,   184,
+      82,    84,    85,    77,    78,    80,    81,    83,    79,    75,
+       0,    74,    76,   184,    72,    73,    88,    87,    86,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   109,     0,
-     108,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     150,     0,     0,     0,     0,    92,     0,     0,     0,     0,
-     149,     0,     0,     0,     0,     0,    89,     0,     0,     0,
-     151,    92,     0,     0,     0,     0,     0,    99,     0,   140,
-       0,     0,     0,     0,     0,     0,    91,     0,     0,   101,
-       0,    93,    99,   100,     0,     0,     0,   147,     0,     0,
-      90,     0,   101,   102,   145,     0,    94,     0,   147,     0,
-     144,   146,     0,     0,     0,   145,   103,     0,    95,    97,
-     143,     0,     0,   145,    96,     0,   142,   147,   145,   141
+       0,     0,     0,     0,     0,     0,     0,     0,   110,     0,
+       0,     0,     0,     0,     0,    98,   184,   184,   133,   135,
+     136,   128,   129,   131,   132,   134,   130,   126,     0,   125,
+     127,   184,   123,   124,   139,   138,   137,   179,   204,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     109,     0,   108,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   150,     0,     0,     0,     0,    92,     0,     0,
+       0,     0,   149,     0,     0,     0,     0,     0,    89,     0,
+       0,     0,   151,    92,     0,     0,     0,     0,     0,    99,
+       0,   140,     0,     0,     0,     0,     0,     0,    91,     0,
+       0,   101,     0,    93,    99,   100,     0,     0,     0,   147,
+       0,     0,    90,     0,   101,   102,   145,     0,    94,     0,
+     147,     0,   144,   146,     0,     0,     0,   145,   103,     0,
+      95,    97,   143,     0,     0,   145,    96,     0,   142,   147,
+     145,   141
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
@@ -1050,91 +1051,92 @@ static const short yydefgoto[] =
 {
       -1,     1,     2,    15,    23,    21,   322,   323,    55,   123,
       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,   166,   245,   274,   275,    67,   276,   330,   388,   397,
-     506,   402,   303,   526,   537,   327,   479,    68,   308,   376,
-     450,   436,   445,   550,   278,   339,   500,    69,   152,   175,
+      66,   166,   245,   274,   275,    67,   276,   330,   390,   399,
+     508,   404,   303,   528,   539,   327,   481,    68,   308,   378,
+     452,   438,   447,   552,   278,   339,   502,    69,   152,   175,
      235,    70,   154,   176,   237,   239,    16,    17,    85,   146,
-      71,   134,   184,   206,   264,   293,   381,    72,   243,    22,
+      71,   134,   184,   206,   264,   293,   383,    72,   243,    22,
       80,    81,   124,   113,   114,   115,   125,   172,   126,   257,
      319,    19,    20
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -492
+#define YYPACT_NINF -435
 static const short yypact[] =
 {
-    -492,    13,     3,  -492,  -492,  -492,  -492,  -492,  -492,  -492,
-     238,   238,   238,    64,   238,  -492,  -492,   -56,  -492,   405,
-    -492,   363,   617,   238,  -492,  -492,  -492,  -492,   556,  -492,
-     363,   238,   238,   238,   238,   238,   238,   238,  -492,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,
-    -492,  -492,   -45,   -53,  -492,    82,  -492,   232,   368,   309,
-     134,   134,  -492,  -492,   617,   282,   282,    80,    80,   617,
-     617,   282,   282,   617,   282,   282,   282,    80,   282,   282,
-     238,   238,   238,  -492,  -492,  -492,   238,  -492,   -44,   -38,
-    -492,  -492,  -492,  -492,    18,  -492,  -492,  -492,   -23,    11,
-     199,   289,  -492,  -492,   407,  -492,  -492,  -492,    34,  -492,
-    -492,  -492,  -492,    95,  -492,  -492,    67,  -492,    41,   238,
-     238,  -492,  -492,  -492,  -492,   238,   238,   238,   238,   238,
-     238,   238,  -492,   238,   238,  -492,    26,  -492,  -492,  -492,
-    -492,   241,   -52,    97,   103,   128,   175,   112,   115,  -492,
-    -492,  -492,  -492,  -492,   -27,  -492,  -492,   121,  -492,   123,
-    -492,  -492,  -492,    57,   238,   238,    -5,    86,  -492,    -1,
-     109,  -492,   238,   238,   139,  -492,  -492,   359,   238,   238,
-    -492,  -492,  -492,  -492,   278,   131,   144,   -44,  -492,   148,
-     161,  -492,   174,   181,   185,   192,  -492,   198,   198,  -492,
-    -492,   238,   238,   238,   204,   214,   238,  -492,   238,   218,
-     238,   238,  -492,   179,   498,  -492,  -492,  -492,   211,   148,
-     148,   148,   148,   148,   148,   148,  -492,   217,   220,   233,
-     220,  -492,   234,   247,   -30,  -492,   238,  -492,  -492,  -492,
-    -492,  -492,  -492,  -492,   253,  -492,   330,   238,  -492,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,   238,   238,   238,   238,
-     169,  -492,  -492,  -492,  -492,   498,   206,   238,    32,   293,
-      12,    12,  -492,  -492,  -492,  -492,  -492,  -492,   341,   261,
-    -492,   271,   220,  -492,  -492,   272,  -492,  -492,  -492,  -492,
-     273,  -492,  -492,  -492,  -492,    64,    12,   231,  -492,   231,
-     565,   206,   238,    32,   297,    12,    12,  -492,  -492,  -492,
-    -492,  -492,  -492,    52,  -492,   238,   215,   362,  -492,    -7,
-      12,    32,   365,   365,   365,   365,   365,   365,   365,   365,
-     365,   238,   238,   238,    32,   238,   365,   365,   365,  -492,
-    -492,   290,  -492,  -492,   231,   231,   583,  -492,   294,   220,
-    -492,   313,  -492,  -492,  -492,  -492,   -44,   -44,  -492,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,   314,  -492,
-    -492,   -44,  -492,  -492,  -492,  -492,  -492,   402,    32,   403,
-     403,   403,   403,   403,   403,   403,   403,   403,   238,   238,
-     238,    32,   238,   403,   403,   403,  -492,   238,   238,   238,
-     238,   238,   238,   321,   -44,   -44,  -492,  -492,  -492,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,   331,  -492,  -492,   -44,
-    -492,  -492,  -492,  -492,  -492,  -492,  -492,   338,   347,   349,
-     350,   238,   238,   238,   238,   238,   238,   238,   238,   221,
-     351,   353,   354,   356,   357,   376,   377,   378,  -492,   409,
-    -492,   238,   238,   238,   238,   221,   238,   238,   238,    12,
-     415,   422,   430,   431,   434,   435,   436,   437,    47,   238,
-    -492,   238,   238,   238,    12,   238,  -492,   238,   238,   238,
-    -492,   435,   438,   439,    58,   442,   444,   445,   447,  -492,
-     238,   238,   238,   238,   238,    12,  -492,   238,   452,   453,
-     456,   458,   445,   231,   460,   238,    12,   211,   238,    12,
-    -492,   238,   453,    94,   388,   461,    96,   462,   211,    12,
-    -492,  -492,   238,    12,   238,   388,   231,   463,   231,   464,
-    -492,   238,    12,   135,   231,    12,  -492,   111,   388,  -492
+    -435,     7,    81,  -435,  -435,  -435,  -435,  -435,  -435,  -435,
+      93,    93,    93,    39,    93,  -435,  -435,   -58,  -435,   596,
+    -435,   393,   635,    93,  -435,  -435,  -435,  -435,   558,  -435,
+     393,    93,    93,    93,    93,    93,    93,    93,  -435,  -435,
+    -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,
+    -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,
+    -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,
+    -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,
+    -435,  -435,   230,   -80,  -435,   108,  -435,   371,   391,   356,
+     -37,   -37,  -435,  -435,   635,   382,   382,    87,    87,   635,
+     635,   382,   382,   635,   382,   382,   382,    87,   382,   382,
+      93,    93,    93,  -435,  -435,  -435,    93,  -435,   -64,    70,
+    -435,  -435,  -435,  -435,   177,  -435,  -435,  -435,   -56,   -29,
+     251,   296,  -435,  -435,   477,  -435,  -435,  -435,   -27,  -435,
+    -435,  -435,  -435,   -25,  -435,  -435,    29,  -435,     0,    93,
+      93,  -435,  -435,  -435,  -435,    93,    93,    93,    93,    93,
+      93,    93,  -435,    93,    93,  -435,    13,  -435,  -435,  -435,
+    -435,   113,   -66,   -22,    44,   184,   188,    53,    56,  -435,
+    -435,  -435,  -435,  -435,   -33,  -435,  -435,    58,  -435,    72,
+    -435,  -435,  -435,    19,    93,    93,    14,    68,  -435,    40,
+     109,  -435,    93,    93,   126,  -435,  -435,   321,    93,    93,
+    -435,  -435,  -435,  -435,   266,    76,    83,   -64,  -435,    92,
+      95,  -435,   103,   110,   118,   144,  -435,   142,   142,  -435,
+    -435,    93,    93,    93,   173,   176,    93,  -435,    93,   180,
+      93,    93,  -435,   147,   404,  -435,  -435,  -435,   181,    92,
+      92,    92,    92,    92,    92,    92,  -435,   185,   190,   204,
+     190,  -435,   213,   214,   -31,  -435,    93,  -435,  -435,  -435,
+    -435,  -435,  -435,  -435,   219,  -435,   240,    93,  -435,  -435,
+    -435,  -435,  -435,  -435,  -435,  -435,    93,    93,    93,    93,
+     310,  -435,  -435,  -435,  -435,   404,   122,    93,    34,   311,
+     186,   186,  -435,  -435,  -435,  -435,  -435,  -435,   431,   225,
+    -435,   226,   190,  -435,  -435,   228,  -435,  -435,  -435,  -435,
+     233,  -435,  -435,  -435,  -435,    93,   186,   244,   596,   244,
+     567,   122,    93,    34,   327,   186,   186,  -435,  -435,  -435,
+    -435,  -435,  -435,   305,  -435,    93,   238,   330,   371,  -435,
+     -13,   558,   186,    34,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,    93,    93,    93,    34,    93,   331,   331,
+     331,  -435,  -435,   247,  -435,  -435,   244,   244,   585,  -435,
+     252,   190,  -435,   253,  -435,  -435,  -435,  -435,   -64,   -64,
+    -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,
+     256,  -435,  -435,   -64,  -435,  -435,  -435,  -435,  -435,   344,
+      34,   345,   345,   345,   345,   345,   345,   345,   345,   345,
+      93,    93,    93,    34,    93,   345,   345,   345,  -435,    93,
+      93,    93,    93,    93,    93,   262,   -64,   -64,  -435,  -435,
+    -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,   271,  -435,
+    -435,   -64,  -435,  -435,  -435,  -435,  -435,  -435,  -435,   280,
+     282,   286,   287,    93,    93,    93,    93,    93,    93,    93,
+      93,   248,   290,   293,   294,   300,   301,   309,   320,   324,
+    -435,   358,  -435,    93,    93,    93,    93,   248,    93,    93,
+      93,   186,   360,   377,   379,   380,   381,   403,   405,   407,
+     -67,    93,  -435,    93,    93,    93,   186,    93,  -435,    93,
+      93,    93,  -435,   403,   411,   413,    77,   417,   419,   421,
+     422,  -435,    93,    93,    93,    93,    93,   186,  -435,    93,
+     423,   424,   425,   426,   421,   244,   432,    93,   186,   181,
+      93,   186,  -435,    93,   424,   121,   361,   433,   132,   436,
+     181,   186,  -435,  -435,    93,   186,    93,   361,   244,   437,
+     244,   438,  -435,    93,   186,     9,   244,   186,  -435,   134,
+     361,  -435
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short yypgoto[] =
 {
-    -492,  -492,  -492,  -492,  -492,   440,  -276,  -173,   465,  -492,
-    -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,  -492,
-    -492,  -492,   268,  -492,   203,  -492,  -492,  -492,   210,   -94,
-      49,  -492,   254,    40,    31,  -292,    89,  -492,  -492,  -492,
-    -492,   242,  -270,  -491,  -446,  -492,  -492,  -492,   344,  -492,
-     -69,  -492,   342,  -492,  -492,  -492,  -492,  -492,  -492,  -169,
-    -492,  -492,  -492,   316,  -492,  -492,  -492,  -492,  -492,   584,
-    -492,  -492,   -20,  -249,  -248,  -243,  -213,  -492,   408,  -234,
-      -2,   401,    22
+    -435,  -435,  -435,  -435,  -435,   479,  -282,  -288,   368,  -435,
+    -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,  -435,
+    -435,  -435,   195,  -435,   237,  -435,  -435,  -435,   210,  -116,
+      20,  -435,   229,     2,   -10,  -259,    52,  -435,  -435,  -435,
+    -435,   242,  -133,  -434,  -387,  -435,  -435,  -435,   315,  -435,
+     117,  -435,   312,  -435,  -435,  -435,  -435,  -435,  -435,  -170,
+    -435,  -435,  -435,   276,  -435,  -435,  -435,  -435,  -435,   586,
+    -435,  -435,   -19,  -246,  -245,  -197,  -360,  -435,   569,  -226,
+      -2,    22,   -12
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1144,146 +1146,150 @@ static const short yypgoto[] =
 #define YYTABLE_NINF -243
 static const short yytable[] =
 {
-      18,   217,    82,   193,   259,   220,     4,     5,     6,   329,
-       7,   204,   290,     3,   204,   110,     5,     6,   111,   112,
-     318,    83,   110,     8,    29,   111,   112,   304,   305,   192,
-       5,     6,   187,   306,   349,    27,     5,     6,   321,   317,
-     116,   145,   147,   374,   375,   167,   168,   169,   233,   145,
-     170,   291,   309,   311,   205,   370,     5,     6,   385,   340,
-     341,   210,   211,   212,   560,   342,   213,     9,     5,     6,
-     149,   218,   566,   165,   119,   221,   350,   569,   110,   130,
-     131,   111,   112,   118,     5,     6,     5,     6,   384,    10,
-      11,   544,   219,    12,    13,   128,   129,    14,   148,   250,
-     251,   252,   555,   325,   150,   138,   326,   188,   141,   142,
-     143,   378,    10,    11,   144,   222,    12,    13,    10,    11,
-      14,   568,    12,    13,   253,   254,    14,   163,   171,   255,
-     350,    73,    74,    75,    76,    77,    78,    79,    10,    11,
-     509,   350,    12,    13,   214,   225,    14,   173,   174,   447,
-     448,   522,   451,   177,   178,   179,   180,   181,   182,   183,
-     372,   185,   186,   117,   189,   207,    10,    11,    10,    11,
-      12,    13,    12,    13,    14,   315,    14,   350,   386,   350,
-     279,   280,   281,   282,   283,   284,   285,   549,   164,   553,
-     194,   401,   215,   216,   350,  -219,   195,   498,  -219,  -219,
-     223,   224,   196,   197,   277,   202,   227,   228,   203,   198,
-       5,     6,   514,   317,   208,  -219,   209,   429,   430,     5,
-       6,   380,    36,    37,   231,     5,     6,   478,   565,   247,
-     248,   249,   432,   533,   258,   434,   260,   232,   262,   263,
-     344,   234,     5,     6,   543,   190,   191,   546,   449,   199,
-     200,   250,   251,   252,   236,   265,   201,   556,   266,   110,
-     267,   558,   111,   112,   294,   462,   463,   238,   399,   400,
-     564,   403,   242,   567,   240,   307,   253,   254,   241,   151,
-     465,   255,   229,   230,   310,   312,   313,   314,   120,   121,
-     122,   244,    10,    11,   151,   320,    12,    13,   153,   324,
-      14,    10,    11,   373,   277,    12,    13,    10,    11,    14,
-     286,    12,    13,  -242,   350,    14,    32,    33,    34,    35,
-      36,    37,   328,   328,    10,    11,   287,   288,    12,    13,
-     371,   551,    14,    73,    74,    75,    76,    77,    78,    79,
-     289,   377,   551,   379,   382,   296,   295,   348,   328,   110,
-     551,   297,   111,   112,   343,   551,   331,   328,   328,   398,
-     398,   398,   332,   398,   345,   346,   347,    38,   383,   153,
-      39,   387,   328,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,   407,    50,    51,    52,   427,   298,   299,
-     110,   300,   301,   111,   112,    34,    35,    36,    37,   333,
-     334,   110,   335,   336,   111,   112,   428,   431,   433,   435,
-     302,    24,    25,    26,   461,    28,   446,   446,   446,   110,
-     446,   337,   111,   112,   464,   455,   456,   457,   458,   459,
-     460,   466,    87,    88,    89,    90,    91,    92,    93,   226,
-     467,    53,   468,   469,   481,    54,   482,   483,  -219,   484,
-     485,  -219,  -219,    33,    34,    35,    36,    37,    30,   470,
-     471,   472,   473,   474,   475,   476,   477,   480,  -219,   486,
-     487,   488,   155,   156,   157,   158,   159,   160,   161,   490,
-     491,   492,   493,   480,   495,   496,   497,   162,    31,    32,
-      33,    34,    35,    36,    37,    86,   246,   510,   316,   511,
-     512,   513,   489,   515,   127,   516,   517,   518,   499,   132,
-     133,   328,   135,   136,   137,   501,   139,   140,   528,   529,
-     530,   531,   532,   502,   503,   534,   328,   504,   505,   507,
-     508,   520,   521,   542,   268,   523,   545,   524,   525,   547,
-     527,   269,   270,   271,   272,   535,   536,   328,   273,   538,
-     557,   539,   559,   541,   552,   554,   561,   562,   328,   563,
-     519,   328,   338,   389,   390,   391,   392,   393,   394,   395,
-     396,   328,   540,   548,   494,   328,   404,   405,   406,   256,
-     292,   261,     0,     0,   328,     0,     0,   328,   351,   352,
+      18,    27,   193,    82,   167,   168,   169,     3,   204,   170,
+     204,   290,   259,   116,   318,   192,   352,     5,     6,   187,
+     217,    83,    29,   210,   211,   212,   511,   145,   213,   145,
+     304,   305,    24,    25,    26,   165,    28,   149,     5,     6,
+     321,   317,   329,     5,     6,   374,   220,   233,   205,   372,
+     291,    36,    37,    87,    88,    89,    90,    91,    92,    93,
+     309,   311,   340,   341,   150,   388,   163,   350,   164,  -219,
+     352,   194,  -219,  -219,   219,   119,   376,   377,   403,   306,
+     130,   131,   386,   118,     4,     5,     6,   171,     7,  -219,
+     218,     5,     6,   387,   188,   128,   129,     5,     6,    10,
+      11,     8,   567,    12,    13,   138,   214,    14,   141,   142,
+     143,   342,     5,     6,   144,   222,   221,   190,   191,   380,
+      10,    11,   436,   562,    12,    13,     5,     6,    14,   317,
+     110,   568,   225,   111,   112,   451,   571,   195,    73,    74,
+      75,    76,    77,    78,    79,     9,   202,   173,   174,   203,
+     147,   208,   546,   177,   178,   179,   180,   181,   182,   183,
+     352,   185,   186,   557,   189,   209,   207,    10,    11,   231,
+     524,    12,    13,    10,    11,    14,   232,    12,    13,    10,
+      11,    14,   570,    12,    13,   234,   553,    14,   236,   117,
+       5,     6,   215,   216,    10,    11,   238,   553,    12,    13,
+     223,   224,    14,   240,   352,   553,   227,   228,    10,    11,
+     553,   241,    12,    13,   551,   352,    14,   352,   431,   432,
+     250,   251,   252,   265,   242,   555,   266,   277,   267,   247,
+     248,   249,   500,   434,   258,   244,   260,   110,   262,   263,
+     111,   112,     5,     6,   382,   253,   254,   516,   401,   402,
+     255,   405,     5,     6,   480,   296,   151,   148,   196,   197,
+     153,   297,   199,   200,   294,   198,   464,   465,   535,   201,
+     229,   230,    10,    11,   277,   307,    12,   325,   286,   545,
+     326,   467,   548,  -242,   310,   312,   313,   314,   449,   450,
+     110,   453,   558,   111,   112,   320,   560,   287,   298,   299,
+     110,   300,   301,   111,   112,   566,   288,   289,   569,     5,
+       6,   110,   295,   349,   111,   112,   315,   324,   343,   345,
+     302,   346,   328,   328,    10,    11,   347,   352,    12,    13,
+     373,   151,    14,   375,    10,    11,   385,   389,    12,    13,
+     409,   379,    14,   381,   384,   429,   430,   348,   351,   433,
+     435,   437,   250,   251,   252,   463,   110,   328,   328,   111,
+     112,   400,   400,   400,   466,   400,   279,   280,   281,   282,
+     283,   284,   285,   468,   328,   469,   153,   253,   254,   470,
+     471,   110,   255,   483,   111,   112,   484,   485,   120,   121,
+     122,    10,    11,   486,   487,    12,    13,    38,    86,    14,
+      39,   226,   488,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,   489,    50,    51,    52,   490,   448,   448,
+     448,  -219,   448,   246,  -219,  -219,   344,   457,   458,   459,
+     460,   461,   462,    73,    74,    75,    76,    77,    78,    79,
+     268,  -219,    34,    35,    36,    37,   331,   269,   270,   271,
+     272,   491,   332,   501,   273,    32,    33,    34,    35,    36,
+      37,   472,   473,   474,   475,   476,   477,   478,   479,   482,
+     503,    53,   504,   505,   506,    54,    33,    34,    35,    36,
+      37,   492,   493,   494,   495,   482,   497,   498,   499,   333,
+     334,   110,   335,   336,   111,   112,   507,    30,   509,   512,
+     510,   513,   514,   515,   522,   517,   523,   518,   519,   520,
+     525,   337,   526,   328,   527,   529,   537,   538,   540,   541,
+     530,   531,   532,   533,   534,   543,   554,   536,   328,   556,
+     563,   564,   316,   521,   550,   544,   542,   338,   547,   496,
+     292,   549,   155,   156,   157,   158,   159,   160,   161,   328,
+     256,   261,   559,     0,   561,     0,     0,   162,     0,     0,
+     328,   565,     0,   328,     0,   391,   392,   393,   394,   395,
+     396,   397,   398,   328,     0,     0,     0,   328,   406,   407,
+     408,     0,     0,     0,     0,     0,   328,     0,     0,   328,
      353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
-     363,   364,   365,   366,   367,   368,   408,   409,   410,   411,
+     363,   364,   365,   366,   367,   368,   369,   370,   410,   411,
      412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
-     422,   423,   424,   425,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,    31,
-      32,    33,    34,    35,    36,    37,   369,     0,     0,   109,
-       0,    84,   437,   438,   439,   440,   441,   442,   443,   444,
-       0,     0,     0,     0,   426,   452,   453,   454,    73,    74,
-      75,    76,    77,    78,    79
+     422,   423,   424,   425,   426,   427,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,    31,    32,    33,    34,    35,    36,    37,   371,     0,
+       0,   109,     0,    84,   439,   440,   441,   442,   443,   444,
+     445,   446,     0,     0,     0,   127,   428,   454,   455,   456,
+     132,   133,     0,   135,   136,   137,     0,   139,   140,    31,
+      32,    33,    34,    35,    36,    37,    73,    74,    75,    76,
+      77,    78,    79
 };
 
 static const short yycheck[] =
 {
-       2,     6,    22,   172,   238,     6,     3,     4,     5,   301,
-       7,    41,    42,     0,    41,    60,     4,     5,    63,    64,
-     296,    23,    60,    20,    80,    63,    64,   276,   276,    81,
-       4,     5,     6,   276,   326,    13,     4,     5,     6,     7,
-      93,    93,    80,   335,   336,     4,     5,     6,   217,    93,
-       9,    81,   286,   287,    81,   331,     4,     5,   350,   308,
-     308,     4,     5,     6,   555,   308,     9,    64,     4,     5,
-      93,    76,   563,     6,    94,    76,    83,   568,    60,    99,
-     100,    63,    64,    85,     4,     5,     4,     5,    95,    86,
-      87,   537,     6,    90,    91,    97,    98,    94,    80,    47,
-      48,    49,   548,    91,    93,   107,    94,    81,   110,   111,
-     112,   345,    86,    87,   116,     6,    90,    91,    86,    87,
-      94,   567,    90,    91,    72,    73,    94,    93,    87,    77,
-      83,    51,    52,    53,    54,    55,    56,    57,    86,    87,
-      93,    83,    90,    91,    87,     6,    94,   149,   150,   419,
-     420,    93,   422,   155,   156,   157,   158,   159,   160,   161,
-     333,   163,   164,    81,   166,   185,    86,    87,    86,    87,
-      90,    91,    90,    91,    94,     6,    94,    83,   351,    83,
-     249,   250,   251,   252,   253,   254,   255,    93,    93,    93,
-      93,   364,   194,   195,    83,    60,    93,   489,    63,    64,
-     202,   203,    74,    75,    93,    93,   208,   209,    93,    81,
-       4,     5,   504,     7,    93,    80,    93,   386,   387,     4,
-       5,     6,    88,    89,    93,     4,     5,     6,    93,   231,
-     232,   233,   401,   525,   236,   408,   238,    93,   240,   241,
-     309,    93,     4,     5,   536,     4,     5,   539,   421,    74,
-      75,    47,    48,    49,    93,    76,    81,   549,    79,    60,
-      81,   553,    63,    64,   266,   434,   435,    93,   362,   363,
-     562,   365,    80,   565,    93,   277,    72,    73,    93,    80,
-     449,    77,     4,     5,   286,   287,   288,   289,     6,     7,
-       8,    93,    86,    87,    80,   297,    90,    91,    80,     6,
-      94,    86,    87,     6,    93,    90,    91,    86,    87,    94,
-      93,    90,    91,    93,    83,    94,    84,    85,    86,    87,
-      88,    89,   300,   301,    86,    87,    93,    93,    90,    91,
-     332,   544,    94,    51,    52,    53,    54,    55,    56,    57,
-      93,   343,   555,   345,   346,    15,    93,   325,   326,    60,
-     563,    21,    63,    64,    93,   568,    15,   335,   336,   361,
-     362,   363,    21,   365,    93,    93,    93,     4,     6,    80,
-       7,     6,   350,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    93,    21,    22,    23,    93,    58,    59,
-      60,    61,    62,    63,    64,    86,    87,    88,    89,    58,
-      59,    60,    61,    62,    63,    64,    93,    93,     6,     6,
-      80,    10,    11,    12,    93,    14,   418,   419,   420,    60,
-     422,    80,    63,    64,    93,   427,   428,   429,   430,   431,
-     432,    93,    31,    32,    33,    34,    35,    36,    37,    80,
-      93,    78,    93,    93,    93,    82,    93,    93,    60,    93,
-      93,    63,    64,    85,    86,    87,    88,    89,    18,   461,
-     462,   463,   464,   465,   466,   467,   468,   469,    80,    93,
-      93,    93,    65,    66,    67,    68,    69,    70,    71,   481,
-     482,   483,   484,   485,   486,   487,   488,    80,    83,    84,
-      85,    86,    87,    88,    89,    30,   228,   499,   295,   501,
-     502,   503,    93,   505,    96,   507,   508,   509,    93,   101,
-     102,   489,   104,   105,   106,    93,   108,   109,   520,   521,
-     522,   523,   524,    93,    93,   527,   504,    93,    93,    93,
-      93,    93,    93,   535,    36,    93,   538,    93,    93,   541,
-      93,    43,    44,    45,    46,    93,    93,   525,    50,    93,
-     552,    93,   554,    93,    93,    93,    93,    93,   536,   561,
-     511,   539,   308,   353,   354,   355,   356,   357,   358,   359,
-     360,   549,   532,   542,   485,   553,   366,   367,   368,   235,
-     264,   239,    -1,    -1,   562,    -1,    -1,   565,    23,    24,
+       2,    13,   172,    22,     4,     5,     6,     0,    41,     9,
+      41,    42,   238,    93,   296,    81,    83,     4,     5,     6,
+       6,    23,    80,     4,     5,     6,    93,    93,     9,    93,
+     276,   276,    10,    11,    12,     6,    14,    93,     4,     5,
+       6,     7,   301,     4,     5,   333,     6,   217,    81,   331,
+      81,    88,    89,    31,    32,    33,    34,    35,    36,    37,
+     286,   287,   308,   308,    93,   353,    93,   326,    93,    60,
+      83,    93,    63,    64,     6,    94,   335,   336,   366,   276,
+      99,   100,    95,    85,     3,     4,     5,    87,     7,    80,
+      76,     4,     5,   352,    81,    97,    98,     4,     5,    86,
+      87,    20,    93,    90,    91,   107,    87,    94,   110,   111,
+     112,   308,     4,     5,   116,     6,    76,     4,     5,   345,
+      86,    87,   410,   557,    90,    91,     4,     5,    94,     7,
+      60,   565,     6,    63,    64,   423,   570,    93,    51,    52,
+      53,    54,    55,    56,    57,    64,    93,   149,   150,    93,
+      80,    93,   539,   155,   156,   157,   158,   159,   160,   161,
+      83,   163,   164,   550,   166,    93,   185,    86,    87,    93,
+      93,    90,    91,    86,    87,    94,    93,    90,    91,    86,
+      87,    94,   569,    90,    91,    93,   546,    94,    93,    81,
+       4,     5,   194,   195,    86,    87,    93,   557,    90,    91,
+     202,   203,    94,    93,    83,   565,   208,   209,    86,    87,
+     570,    93,    90,    91,    93,    83,    94,    83,   388,   389,
+      47,    48,    49,    76,    80,    93,    79,    93,    81,   231,
+     232,   233,   491,   403,   236,    93,   238,    60,   240,   241,
+      63,    64,     4,     5,     6,    72,    73,   506,   364,   365,
+      77,   367,     4,     5,     6,    15,    80,    80,    74,    75,
+      80,    21,    74,    75,   266,    81,   436,   437,   527,    81,
+       4,     5,    86,    87,    93,   277,    90,    91,    93,   538,
+      94,   451,   541,    93,   286,   287,   288,   289,   421,   422,
+      60,   424,   551,    63,    64,   297,   555,    93,    58,    59,
+      60,    61,    62,    63,    64,   564,    93,    93,   567,     4,
+       5,    60,    93,   325,    63,    64,     6,     6,    93,    93,
+      80,    93,   300,   301,    86,    87,    93,    83,    90,    91,
+     332,    80,    94,     6,    86,    87,     6,     6,    90,    91,
+      93,   343,    94,   345,   346,    93,    93,   325,   326,    93,
+       6,     6,    47,    48,    49,    93,    60,   335,   336,    63,
+      64,   363,   364,   365,    93,   367,   249,   250,   251,   252,
+     253,   254,   255,    93,   352,    93,    80,    72,    73,    93,
+      93,    60,    77,    93,    63,    64,    93,    93,     6,     7,
+       8,    86,    87,    93,    93,    90,    91,     4,    30,    94,
+       7,    80,    93,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    93,    21,    22,    23,    93,   420,   421,
+     422,    60,   424,   228,    63,    64,   309,   429,   430,   431,
+     432,   433,   434,    51,    52,    53,    54,    55,    56,    57,
+      36,    80,    86,    87,    88,    89,    15,    43,    44,    45,
+      46,    93,    21,    93,    50,    84,    85,    86,    87,    88,
+      89,   463,   464,   465,   466,   467,   468,   469,   470,   471,
+      93,    78,    93,    93,    93,    82,    85,    86,    87,    88,
+      89,   483,   484,   485,   486,   487,   488,   489,   490,    58,
+      59,    60,    61,    62,    63,    64,    93,    18,    93,   501,
+      93,   503,   504,   505,    93,   507,    93,   509,   510,   511,
+      93,    80,    93,   491,    93,    93,    93,    93,    93,    93,
+     522,   523,   524,   525,   526,    93,    93,   529,   506,    93,
+      93,    93,   295,   513,   544,   537,   534,   308,   540,   487,
+     264,   543,    65,    66,    67,    68,    69,    70,    71,   527,
+     235,   239,   554,    -1,   556,    -1,    -1,    80,    -1,    -1,
+     538,   563,    -1,   541,    -1,   355,   356,   357,   358,   359,
+     360,   361,   362,   551,    -1,    -1,    -1,   555,   368,   369,
+     370,    -1,    -1,    -1,    -1,    -1,   564,    -1,    -1,   567,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    83,
-      84,    85,    86,    87,    88,    89,    81,    -1,    -1,    65,
-      -1,    95,   410,   411,   412,   413,   414,   415,   416,   417,
-      -1,    -1,    -1,    -1,    81,   423,   424,   425,    51,    52,
-      53,    54,    55,    56,    57
+      35,    36,    37,    38,    39,    40,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    83,    84,    85,    86,    87,    88,    89,    81,    -1,
+      -1,    65,    -1,    95,   412,   413,   414,   415,   416,   417,
+     418,   419,    -1,    -1,    -1,    96,    81,   425,   426,   427,
+     101,   102,    -1,   104,   105,   106,    -1,   108,   109,    83,
+      84,    85,    86,    87,    88,    89,    51,    52,    53,    54,
+      55,    56,    57
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1322,31 +1328,32 @@ static const unsigned char yystos[] =
       42,    81,   159,   161,   176,    93,    15,    21,    58,    59,
       61,    62,    80,   128,   169,   170,   171,   176,   134,   175,
      176,   175,   176,   176,   176,     6,   120,     7,   102,   176,
-     176,     6,   102,   103,     6,    91,    94,   131,   178,   131,
+     176,     6,   102,   103,     6,    91,    94,   131,   177,   131,
      123,    15,    21,    58,    59,    61,    62,    80,   128,   141,
-     169,   170,   171,    93,   146,    93,    93,    93,   178,   131,
-      83,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    81,
-     102,   176,   103,     6,   131,   131,   135,   176,   175,   176,
-       6,   162,   176,     6,    95,   131,   103,     6,   124,   124,
-     124,   124,   124,   124,   124,   124,   124,   125,   176,   125,
-     125,   103,   127,   125,   124,   124,   124,    93,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    81,    93,    93,   155,
-     155,    93,   155,     6,   103,     6,   137,   137,   137,   137,
-     137,   137,   137,   137,   137,   138,   176,   138,   138,   103,
-     136,   138,   137,   137,   137,   176,   176,   176,   176,   176,
-     176,    93,   155,   155,    93,   155,    93,    93,    93,    93,
-     176,   176,   176,   176,   176,   176,   176,   176,     6,   132,
-     176,    93,    93,    93,    93,    93,    93,    93,    93,    93,
-     176,   176,   176,   176,   132,   176,   176,   176,   131,    93,
-     142,    93,    93,    93,    93,    93,   126,    93,    93,    93,
-     176,   176,   176,   176,   131,   176,   176,   176,   176,   126,
-      93,    93,    93,    93,    93,    93,   129,    93,   176,   176,
-     176,   176,   176,   131,   176,    93,    93,   130,    93,    93,
-     129,    93,   176,   131,   140,   176,   131,   176,   130,    93,
-     139,   172,    93,    93,    93,   140,   131,   176,   131,   176,
-     139,    93,    93,   176,   131,    93,   139,   131,   140,   139
+     169,   170,   171,    93,   146,    93,    93,    93,   177,   178,
+     131,   177,    83,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    81,   102,   176,   103,     6,   131,   131,   135,   176,
+     175,   176,     6,   162,   176,     6,    95,   131,   103,     6,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   125,
+     176,   125,   125,   103,   127,   125,   124,   124,   124,    93,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    81,    93,
+      93,   155,   155,    93,   155,     6,   103,     6,   137,   137,
+     137,   137,   137,   137,   137,   137,   137,   138,   176,   138,
+     138,   103,   136,   138,   137,   137,   137,   176,   176,   176,
+     176,   176,   176,    93,   155,   155,    93,   155,    93,    93,
+      93,    93,   176,   176,   176,   176,   176,   176,   176,   176,
+       6,   132,   176,    93,    93,    93,    93,    93,    93,    93,
+      93,    93,   176,   176,   176,   176,   132,   176,   176,   176,
+     131,    93,   142,    93,    93,    93,    93,    93,   126,    93,
+      93,    93,   176,   176,   176,   176,   131,   176,   176,   176,
+     176,   126,    93,    93,    93,    93,    93,    93,   129,    93,
+     176,   176,   176,   176,   176,   131,   176,    93,    93,   130,
+      93,    93,   129,    93,   176,   131,   140,   176,   131,   176,
+     130,    93,   139,   172,    93,    93,    93,   140,   131,   176,
+     131,   176,   139,    93,    93,   176,   131,    93,   139,   131,
+     140,   139
 };
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -4125,7 +4132,7 @@ yyreduce:
     }
 
 /* Line 999 of yacc.c.  */
-#line 4129 "y.tab.c"
+#line 4136 "y.tab.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4739,27 +4746,32 @@ static event_t *add_event(int key, int id, int flags, event_t *prev)
 
 static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev)
 {
-       int keycode = 0;
+       int keycode = 0, keysym = 0;
        event_t *ev = new_event();
 
-       if(key->type != str_char)
-               yyerror("Key code must be an ascii string");
+       if(key->type == str_char)
+               keysym = key->str.cstr[0];
+       else
+               keysym = key->str.wstr[0];
 
-       if((flags & WRC_AF_VIRTKEY) && (!isupper(key->str.cstr[0] & 0xff) && !isdigit(key->str.cstr[0] & 0xff)))
+       if((flags & WRC_AF_VIRTKEY) && (!isupper(keysym & 0xff) && !isdigit(keysym & 0xff)))
                yyerror("VIRTKEY code is not equal to ascii value");
 
-       if(key->str.cstr[0] == '^' && (flags & WRC_AF_CONTROL) != 0)
+       if(keysym == '^' && (flags & WRC_AF_CONTROL) != 0)
        {
                yyerror("Cannot use both '^' and CONTROL modifier");
        }
-       else if(key->str.cstr[0] == '^')
+       else if(keysym == '^')
        {
-               keycode = toupper(key->str.cstr[1]) - '@';
+               if(key->type == str_char)
+                       keycode = toupper(key->str.cstr[1]) - '@';
+               else
+                       keycode = toupper(key->str.wstr[1]) - '@';
                if(keycode >= ' ')
                        yyerror("Control-code out of range");
        }
        else
-               keycode = key->str.cstr[0];
+               keycode = keysym;
        ev->key = keycode;
        ev->id = id;
        ev->flags = flags & ~WRC_AF_ASCII;