* tuiIO.c (_tuiHandleResizeDuringIO): Call tuiRefreshAll.
[deliverable/binutils-gdb.git] / ld / ldlex.l
index 09c89ad14351af5a827f2e5154c5195d909645be..eecb9022f1aab03657319cb629151db7c43292f3 100644 (file)
@@ -1,6 +1,6 @@
 %{
 
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998
+/* Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
    Free Software Foundation, Inc.
 
 This file is part of GLD, the Gnu Linker.
@@ -45,6 +45,7 @@ This was written by steve chamberlain
 #include "ldfile.h"
 #include "ldlex.h"
 #include "ldmain.h"
+#include "libiberty.h"
 
 /* The type of top-level parser input.
    yylex and yyparse (indirectly) both check this.  */
@@ -74,6 +75,7 @@ static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
 static const char *file_name_stack[MAX_INCLUDE_DEPTH];
 static unsigned int lineno_stack[MAX_INCLUDE_DEPTH];
 static unsigned int include_stack_ptr = 0;
+static int vers_node_nesting = 0;
 
 static YY_BUFFER_STATE yy_create_string_buffer PARAMS ((const char *string,
                                                        size_t size));
@@ -114,7 +116,7 @@ WHITE               [ \t\n\r]+
 NOCFILENAMECHAR        [_a-zA-Z0-9\/\.\-\_\+\$\:\[\]\\\~]
 
 V_TAG [.$_a-zA-Z][._a-zA-Z0-9]*
-V_IDENTIFIER [*?.$_a-zA-Z][*?_a-zA-Z0-9]*
+V_IDENTIFIER [*?.$_a-zA-Z]([*?.$_a-zA-Z0-9]|::)*
 
 %s SCRIPT
 %s EXPRESSION
@@ -146,7 +148,7 @@ V_IDENTIFIER [*?.$_a-zA-Z][*?_a-zA-Z0-9]*
 
 <DEFSYMEXP>"-"                  { RTOKEN('-');}
 <DEFSYMEXP>"+"                  { RTOKEN('+');}
-<DEFSYMEXP>{FILENAMECHAR1}{SYMBOLCHARN}*   { yylval.name = buystring(yytext); return NAME; }
+<DEFSYMEXP>{FILENAMECHAR1}{SYMBOLCHARN}*   { yylval.name = xstrdup(yytext); return NAME; }
 <DEFSYMEXP>"="                  { RTOKEN('='); }
 
 <MRI,EXPRESSION>"$"([0-9A-Fa-f])+ {
@@ -239,8 +241,9 @@ V_IDENTIFIER [*?.$_a-zA-Z][*?_a-zA-Z0-9]*
 <EXPRESSION,BOTH,SCRIPT>"ALIGN"                        { RTOKEN(ALIGN_K);}
 <EXPRESSION,BOTH,SCRIPT>"ADDR"                 { RTOKEN(ADDR);}
 <EXPRESSION,BOTH,SCRIPT>"LOADADDR"             { RTOKEN(LOADADDR);}
-<EXPRESSION,BOTH>"MAX"                 { RTOKEN(MAX); }
-<EXPRESSION,BOTH>"MIN"                 { RTOKEN(MIN); }
+<EXPRESSION,BOTH>"MAX"                 { RTOKEN(MAX_K); }
+<EXPRESSION,BOTH>"MIN"                 { RTOKEN(MIN_K); }
+<EXPRESSION,BOTH>"ASSERT"              { RTOKEN(ASSERT_K); }
 <BOTH,SCRIPT>"ENTRY"                   { RTOKEN(ENTRY);}
 <BOTH,SCRIPT,MRI>"EXTERN"              { RTOKEN(EXTERN);}
 <EXPRESSION,BOTH,SCRIPT>"NEXT"                 { RTOKEN(NEXT);}
@@ -288,6 +291,7 @@ V_IDENTIFIER [*?.$_a-zA-Z][*?_a-zA-Z0-9]*
 <EXPRESSION,BOTH,SCRIPT>"AT"                   { RTOKEN(AT);}
 <EXPRESSION,BOTH,SCRIPT>"PROVIDE"              { RTOKEN(PROVIDE); }
 <EXPRESSION,BOTH,SCRIPT>"KEEP"         { RTOKEN(KEEP); }
+<EXPRESSION,BOTH,SCRIPT>"EXCLUDE_FILE"        { RTOKEN(EXCLUDE_FILE); }
 <MRI>"#".*\n?                  { ++ lineno; }
 <MRI>"\n"                      { ++ lineno;  RTOKEN(NEWLINE); }
 <MRI>"*".*                     { /* Mri comment line */ }
@@ -330,17 +334,17 @@ V_IDENTIFIER [*?.$_a-zA-Z][*?_a-zA-Z0-9]*
 
 <MRI>{FILENAMECHAR1}{NOCFILENAMECHAR}* {
 /* Filename without commas, needed to parse mri stuff */
-                                yylval.name = buystring(yytext); 
+                                yylval.name = xstrdup(yytext); 
                                  return NAME;
                                }
 
 
 <BOTH,EXPRESSION>{FILENAMECHAR1}{FILENAMECHAR}*        {
-                                yylval.name = buystring(yytext); 
+                                yylval.name = xstrdup(yytext); 
                                  return NAME;
                                }
 <BOTH,EXPRESSION>"-l"{FILENAMECHAR}+ {
-                                 yylval.name = buystring (yytext + 2);
+                                 yylval.name = xstrdup (yytext + 2);
                                  return LNAME;
                                }
 <SCRIPT>{WILDCHAR}* {
@@ -355,15 +359,15 @@ V_IDENTIFIER [*?.$_a-zA-Z][*?_a-zA-Z0-9]*
                  }
                else
                  {
-                   yylval.name = buystring(yytext);
+                   yylval.name = xstrdup(yytext);
                    return NAME;
                  }
        }
 
-<EXPRESSION,BOTH,SCRIPT>"\""[^\"]*"\"" {
+<EXPRESSION,BOTH,SCRIPT,VERS_NODE>"\""[^\"]*"\"" {
                                        /* No matter the state, quotes
                                           give what's inside */
-                                       yylval.name = buystring(yytext+1);
+                                       yylval.name = xstrdup(yytext+1);
                                        yylval.name[yyleng-2] = 0;
                                        return NAME;
                                }
@@ -376,16 +380,26 @@ V_IDENTIFIER [*?.$_a-zA-Z][*?_a-zA-Z0-9]*
 
 <VERS_NODE>local               { RTOKEN(LOCAL); }
 
-<VERS_NODE>{V_IDENTIFIER}      { yylval.name = buystring (yytext);
+<VERS_NODE>extern              { RTOKEN(EXTERN); }
+
+<VERS_NODE>{V_IDENTIFIER}      { yylval.name = xstrdup (yytext);
                                  return VERS_IDENTIFIER; }
 
-<VERS_SCRIPT>{V_TAG}           { yylval.name = buystring (yytext);
+<VERS_SCRIPT>{V_TAG}           { yylval.name = xstrdup (yytext);
                                  return VERS_TAG; }
 
 <VERS_START>"{"                        { BEGIN(VERS_SCRIPT); return *yytext; }
 
-<VERS_SCRIPT>"{"               { BEGIN(VERS_NODE); return *yytext; }
-<VERS_SCRIPT,VERS_NODE>"}"     { BEGIN(VERS_SCRIPT); return *yytext; }
+<VERS_SCRIPT>"{"               { BEGIN(VERS_NODE); 
+                                 vers_node_nesting = 0;
+                                 return *yytext;
+                               }
+<VERS_SCRIPT>"}"               { return *yytext; }
+<VERS_NODE>"{"                 { vers_node_nesting++; return *yytext; }
+<VERS_NODE>"}"                 { if (--vers_node_nesting < 0)
+                                   BEGIN(VERS_SCRIPT);
+                                 return *yytext;
+                               }
 
 <VERS_START,VERS_NODE,VERS_SCRIPT>[\n]         { lineno++; }
 
@@ -466,6 +480,11 @@ yy_create_string_buffer (string, size)
   b->yy_n_chars = size+1;
   b->yy_buf_pos = &b->yy_ch_buf[1];
 
+  b->yy_is_our_buffer = 1;
+  b->yy_is_interactive = 0;
+  b->yy_at_bol = 1;
+  b->yy_fill_buffer = 0;
+
   /* flex 2.4.7 changed the interface.  FIXME: We should not be using
      a flex internal interface in the first place!  */
 #ifdef YY_BUFFER_NEW
This page took 0.029168 seconds and 4 git commands to generate.