[BACK]Return to arparse.y CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / gpl3 / binutils / dist / binutils

Annotation of src/external/gpl3/binutils/dist/binutils/arparse.y, Revision 1.1.1.4

1.1       skrll       1: %{
                      2: /* arparse.y - Stange script language parser */
                      3:
1.1.1.4 ! christos    4: /* Copyright (C) 1992-2016 Free Software Foundation, Inc.
1.1       skrll       5:
                      6:    This file is part of GNU Binutils.
                      7:
                      8:    This program is free software; you can redistribute it and/or modify
                      9:    it under the terms of the GNU General Public License as published by
                     10:    the Free Software Foundation; either version 3 of the License, or
                     11:    (at your option) any later version.
                     12:
                     13:    This program is distributed in the hope that it will be useful,
                     14:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     15:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     16:    GNU General Public License for more details.
                     17:
                     18:    You should have received a copy of the GNU General Public License
                     19:    along with this program; if not, write to the Free Software
                     20:    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
                     21:    MA 02110-1301, USA.  */
                     22:
                     23:
                     24: /* Contributed by Steve Chamberlain
                     25:                  sac@cygnus.com
                     26:
                     27: */
                     28: #define DONTDECLARE_MALLOC
                     29: #include "sysdep.h"
                     30: #include "bfd.h"
                     31: #include "arsup.h"
                     32: extern int verbose;
                     33: extern int yylex (void);
                     34: static int yyerror (const char *);
                     35: %}
                     36:
                     37: %union {
                     38:   char *name;
                     39: struct list *list ;
                     40:
                     41: };
                     42:
                     43: %token NEWLINE
                     44: %token VERBOSE
                     45: %token <name> FILENAME
                     46: %token ADDLIB
                     47: %token LIST
                     48: %token ADDMOD
                     49: %token CLEAR
                     50: %token CREATE
                     51: %token DELETE
                     52: %token DIRECTORY
                     53: %token END
                     54: %token EXTRACT
                     55: %token FULLDIR
                     56: %token HELP
                     57: %token QUIT
                     58: %token REPLACE
                     59: %token SAVE
                     60: %token OPEN
                     61:
1.1.1.3   christos   62: %type <list> modulelist
1.1       skrll      63: %type <list> modulename
                     64: %type <name> optional_filename
                     65: %%
                     66:
                     67: start:
                     68:        { prompt(); } session
                     69:        ;
                     70:
                     71: session:
                     72:            session command_line
                     73:        |
                     74:        ;
                     75:
                     76: command_line:
                     77:                command NEWLINE { prompt(); }
                     78:        ;
                     79:
                     80: command:
1.1.1.3   christos   81:                open_command
                     82:        |       create_command
1.1       skrll      83:        |       verbose_command
                     84:        |       directory_command
                     85:        |       addlib_command
                     86:        |       clear_command
                     87:        |       addmod_command
                     88:        |       save_command
                     89:         |       extract_command
                     90:        |       replace_command
                     91:        |       delete_command
                     92:        |       list_command
                     93:        |       END      { ar_end(); return 0; }
                     94:        |       error
                     95:        |       FILENAME { yyerror("foo"); }
                     96:        |
                     97:        ;
                     98:
                     99:
                    100: extract_command:
                    101:                 EXTRACT modulename
                    102:                { ar_extract($2); }
                    103:        ;
                    104:
1.1.1.3   christos  105: replace_command:
1.1       skrll     106:                REPLACE modulename
                    107:                { ar_replace($2); }
                    108:        ;
1.1.1.3   christos  109:
1.1       skrll     110: clear_command:
                    111:                CLEAR
                    112:                { ar_clear(); }
                    113:        ;
                    114:
                    115: delete_command:
                    116:                DELETE modulename
                    117:                { ar_delete($2); }
                    118:        ;
                    119: addmod_command:
                    120:        ADDMOD modulename
                    121:                { ar_addmod($2); }
                    122:        ;
                    123:
1.1.1.3   christos  124: list_command:
1.1       skrll     125:                LIST
                    126:                { ar_list(); }
                    127:        ;
                    128:
1.1.1.3   christos  129: save_command:
1.1       skrll     130:                SAVE
                    131:                { ar_save(); }
                    132:        ;
                    133:
                    134:
                    135:
                    136: open_command:
1.1.1.3   christos  137:                OPEN FILENAME
1.1       skrll     138:                { ar_open($2,0); }
                    139:        ;
                    140:
                    141: create_command:
1.1.1.3   christos  142:                CREATE FILENAME
1.1       skrll     143:                { ar_open($2,1); }
                    144:        ;
                    145:
                    146:
                    147: addlib_command:
                    148:                ADDLIB FILENAME modulelist
                    149:                { ar_addlib($2,$3); }
                    150:        ;
                    151: directory_command:
                    152:                DIRECTORY FILENAME modulelist optional_filename
                    153:                { ar_directory($2, $3, $4); }
                    154:        ;
                    155:
                    156:
                    157:
                    158: optional_filename:
                    159:                FILENAME
                    160:                { $$ = $1; }
                    161:        |       { $$ = 0; }
                    162:        ;
                    163:
                    164: modulelist:
1.1.1.3   christos  165:        '(' modulename ')'
1.1       skrll     166:                { $$ = $2; }
                    167:        |
                    168:                { $$ = 0; }
                    169:        ;
                    170:
                    171: modulename:
                    172:                modulename optcomma FILENAME
                    173:                {       struct list *n  = (struct list *) malloc(sizeof(struct list));
1.1.1.3   christos  174:                        n->next = $1;
1.1       skrll     175:                        n->name = $3;
                    176:                        $$ = n;
                    177:                 }
                    178:        |       { $$ = 0; }
                    179:        ;
1.1.1.3   christos  180:
1.1       skrll     181:
                    182: optcomma:
                    183:                ','
                    184:        |
                    185:        ;
1.1.1.3   christos  186:
                    187:
1.1       skrll     188: verbose_command:
1.1.1.3   christos  189:        VERBOSE
1.1       skrll     190:                { verbose = !verbose; }
                    191:        ;
                    192:
                    193:
                    194: %%
                    195:
                    196: static int
                    197: yyerror (const char *x ATTRIBUTE_UNUSED)
                    198: {
                    199:   extern int linenumber;
                    200:
                    201:   printf (_("Syntax error in archive script, line %d\n"), linenumber + 1);
                    202:   return 0;
                    203: }

CVSweb <webmaster@jp.NetBSD.org>