Code Search for Developers
 
 
  

arparse.y from Gdb at Krugle


Show arparse.y syntax highlighted

%{
/* arparse.y - Stange script language parser */

/*   Copyright 1992, 1993, 1995, 1997, 1999, 2002, 2003
     Free Software Foundation, Inc.

This file is part of GNU Binutils.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */


/* Contributed by Steve Chamberlain
   		  sac@cygnus.com

*/
#define DONTDECLARE_MALLOC
#include "bfd.h"
#include "bucomm.h"
#include "arsup.h"
extern int verbose;
extern int yylex (void);
static int yyerror (const char *);
%}

%union {
  char *name;
struct list *list ;

};

%token NEWLINE
%token VERBOSE
%token <name> FILENAME
%token ADDLIB
%token LIST
%token ADDMOD
%token CLEAR
%token CREATE
%token DELETE
%token DIRECTORY
%token END
%token EXTRACT
%token FULLDIR
%token HELP
%token QUIT
%token REPLACE
%token SAVE
%token OPEN

%type <list> modulelist 
%type <list> modulename
%type <name> optional_filename
%%

start:
	{ prompt(); } session
	;

session:
	    session command_line
	|
	;

command_line:
		command NEWLINE { prompt(); }
	;

command:
		open_command	
	|	create_command	
	| 	verbose_command
	|	directory_command
	|	addlib_command
	|	clear_command
	|	addmod_command
	| 	save_command
        |       extract_command
	|	replace_command
	|	delete_command
	|	list_command
	| 	END	 { ar_end(); return 0; }
	| 	error
	|       FILENAME { yyerror("foo"); }
	|
	;


extract_command:
                EXTRACT modulename
		{ ar_extract($2); }
	;

replace_command:	
		REPLACE modulename
		{ ar_replace($2); }
	;
	
clear_command:
		CLEAR
		{ ar_clear(); }
	;

delete_command:
		DELETE modulename
		{ ar_delete($2); }
	;
addmod_command:
	ADDMOD modulename
		{ ar_addmod($2); }
	;

list_command:	
		LIST
		{ ar_list(); }
	;

save_command:	
		SAVE
		{ ar_save(); }
	;



open_command:
		OPEN FILENAME 
		{ ar_open($2,0); }
	;

create_command:
		CREATE FILENAME 
		{ ar_open($2,1); }
	;


addlib_command:
		ADDLIB FILENAME modulelist
		{ ar_addlib($2,$3); }
	;
directory_command:
		DIRECTORY FILENAME modulelist optional_filename
		{ ar_directory($2, $3, $4); }
	;



optional_filename:
		FILENAME
		{ $$ = $1; }
	|	{ $$ = 0; }
	;

modulelist:
	'(' modulename ')' 
		{ $$ = $2; }
	|
		{ $$ = 0; }
	;

modulename:
		modulename optcomma FILENAME
		{ 	struct list *n  = (struct list *) malloc(sizeof(struct list));
			n->next = $1; 
			n->name = $3;
			$$ = n;
		 }
	|	{ $$ = 0; }
	;
	

optcomma:
		','
	|
	;
	
		
verbose_command:
	VERBOSE 
		{ verbose = !verbose; }
	;


%%

static int
yyerror (const char *x ATTRIBUTE_UNUSED)
{
  extern int linenumber;

  printf (_("Syntax error in archive script, line %d\n"), linenumber + 1);
  return 0;
}




See more files for this project here

Gdb

GDB, the GNU Project debugger, allows you to see what is going on `inside' another program while it executes -- or what another program was doing at the moment it crashed.

Project homepage: http://sources.redhat.com/gdb/
Programming language(s): Assembly,C,C++,Expect
License: other

  doc/
    Makefile.am
    Makefile.in
    binutils.texi
    fdl.texi
  po/
    Make-in
    POTFILES.in
    binutils.pot
    da.po
    es.po
    fi.po
    fr.po
    ja.po
    ro.po
    ru.po
    rw.po
    sv.po
    tr.po
    vi.po
    zh_CN.po
    zh_TW.po
  testsuite/
    binutils-all/
    config/
    lib/
    ChangeLog
    ChangeLog-9303
  BRANCHES
  ChangeLog
  ChangeLog-0001
  ChangeLog-0203
  ChangeLog-2004
  ChangeLog-2005
  ChangeLog-2006
  ChangeLog-9197
  ChangeLog-9899
  MAINTAINERS
  Makefile.am
  Makefile.in
  NEWS
  README
  acinclude.m4
  aclocal.m4
  addr2line.c
  ar.c
  arlex.l
  arparse.y
  arsup.c
  arsup.h
  binemul.c
  binemul.h
  bucomm.c
  bucomm.h
  budbg.h
  budemang.c
  budemang.h
  coffdump.c
  coffgrok.c
  coffgrok.h
  config.in
  configure
  configure.com
  configure.in
  configure.tgt
  cxxfilt.c
  debug.c
  debug.h
  deflex.l
  defparse.y
  dep-in.sed
  dlltool.c
  dlltool.h
  dllwrap.c
  dwarf.c
  dwarf.h
  embedspu.sh
  emul_aix.c
  emul_vanilla.c
  filemode.c
  ieee.c
  is-ranlib.c
  is-strip.c
  makefile.vms-in
  maybe-ranlib.c
  maybe-strip.c
  nlmconv.c
  nlmconv.h
  nlmheader.y
  nm.c
  not-ranlib.c
  not-strip.c
  objcopy.c
  objdump.c
  prdbg.c
  ranlib.sh
  rclex.l
  rcparse.y
  rdcoff.c
  rddbg.c
  readelf.c
  rename.c
  resbin.c
  rescoff.c
  resrc.c
  resres.c
  sanity.sh
  size.c
  srconv.c
  stabs.c
  stamp-h.in
  strings.c
  sysdump.c
  sysinfo.y
  syslex.l
  sysroff.info
  unwind-ia64.c
  unwind-ia64.h
  version.c
  windres.c
  windres.h
  winduni.c
  winduni.h
  wrstabs.c