Rebuilt again!
[deliverable/binutils-gdb.git] / binutils / rclex.l
index b414210d0ae98116908e7e56b73ff19ac2c702d2..50ef185d8ed8f32c2045e5085b8d6b13f5b29462 100644 (file)
@@ -1,5 +1,5 @@
 %{ /* rclex.l -- lexer for Windows rc files parser  */
-/* Copyright 1997 Free Software Foundation, Inc.
+/* Copyright 1997, 1998 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of GNU Binutils.
@@ -58,7 +58,9 @@ static char *get_string PARAMS ((int));
 %%
 
 "BEGIN"                        { return BEG; }
+"{"                    { return BEG; }
 "END"                  { return END; }
+"}"                    { return END; }
 "ACCELERATORS"         { return ACCELERATORS; }
 "VIRTKEY"              { return VIRTKEY; }
 "ASCII"                        { return ASCII; }
@@ -195,9 +197,15 @@ static char *get_string PARAMS ((int));
                            }
                        }
 
-[A-Za-z][^ \t\r\n]*    {
+[A-Za-z][^ ,\t\r\n]*   {
                          char *s;
 
+                         /* I rejected comma in a string in order to
+                            handle VIRTKEY, CONTROL in an accelerator
+                            resource.  This means that an unquoted
+                            file name can not contain a comma.  I
+                            don't know what rc permits.  */
+
                          s = get_string (strlen (yytext) + 1);
                          strcpy (s, yytext);
                          yylval.s = s;
@@ -291,6 +299,41 @@ handle_quotes (input, len)
              rcparse_warning ("use \"\" to put \" in a string");
              break;
 
+           case 'a':
+             *s++ = ESCAPE_A;
+             ++t;
+             break;
+
+           case 'b':
+             *s++ = ESCAPE_B;
+             ++t;
+             break;
+
+           case 'f':
+             *s++ = ESCAPE_F;
+             ++t;
+             break;
+
+           case 'n':
+             *s++ = ESCAPE_N;
+             ++t;
+             break;
+
+           case 'r':
+             *s++ = ESCAPE_R;
+             ++t;
+             break;
+
+           case 't':
+             *s++ = ESCAPE_T;
+             ++t;
+             break;
+
+           case 'v':
+             *s++ = ESCAPE_V;
+             ++t;
+             break;
+
            case '\\':
              *s++ = *t++;
              break;
@@ -329,6 +372,12 @@ handle_quotes (input, len)
                }
              *s++ = ch;
              break;
+
+           default:
+             rcparse_warning ("unrecognized escape sequence");
+             *s++ = '\\';
+             *s++ = *t++;
+             break;
            }
        }
       else if (*t != '"')
This page took 0.023538 seconds and 4 git commands to generate.