diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 1999-04-18 20:41:47 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 1999-04-18 20:41:47 +0000 |
commit | 37e1aef2ad8f8293cf3a68c294e73199cf1b812d (patch) | |
tree | 0707089bf9800c8d4f8106589337f5e3de89de33 /usr.bin/yacc | |
parent | 57f2fdf10889771cbf43ce559f5ae80fdb6b066e (diff) |
Add yyfix, from 4.4BSD
Diffstat (limited to 'usr.bin/yacc')
-rw-r--r-- | usr.bin/yacc/Makefile | 7 | ||||
-rw-r--r-- | usr.bin/yacc/yyfix.1 | 113 | ||||
-rw-r--r-- | usr.bin/yacc/yyfix.sh | 77 |
3 files changed, 196 insertions, 1 deletions
diff --git a/usr.bin/yacc/Makefile b/usr.bin/yacc/Makefile index 07e3da18cd5..ce5f315e10d 100644 --- a/usr.bin/yacc/Makefile +++ b/usr.bin/yacc/Makefile @@ -1,7 +1,12 @@ -# $OpenBSD: Makefile,v 1.2 1996/04/21 23:45:02 deraadt Exp $ +# $OpenBSD: Makefile,v 1.3 1999/04/18 20:41:45 millert Exp $ PROG= yacc SRCS= closure.c error.c lalr.c lr0.c main.c mkpar.c output.c reader.c \ skeleton.c symtab.c verbose.c warshall.c +MAN= yacc.1 yyfix.1 + +beforeinstall: + ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + ${.CURDIR}/yyfix.sh ${DESTDIR}${BINDIR}/yyfix .include <bsd.prog.mk> diff --git a/usr.bin/yacc/yyfix.1 b/usr.bin/yacc/yyfix.1 new file mode 100644 index 00000000000..62327af3f8a --- /dev/null +++ b/usr.bin/yacc/yyfix.1 @@ -0,0 +1,113 @@ +.\" $OpenBSD: yyfix.1,v 1.1 1999/04/18 20:41:46 millert Exp $ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" from: @(#)yyfix.1 5.4 (Berkeley) 3/23/93 +.\" +.Dd March 23, 1993 +.Dt YYFIX 1 +.Os BSD 4.4 +.Sh NAME +.Nm yyfix +.Nd extract tables from y.tab.c +.Sh SYNOPSIS +.Nm yyfix +.Ar file +.Op Ar tables +.Sh DESCRIPTION +Programs have historically used a script (often named ``:yyfix'') to +extract tables from the +.Xr yacc 1 +generated file +.Pa y.tab.c . +As the names of the tables generated by the current version of +.Xr yacc +are different from those of historical versions of +.Xr yacc , +the shell script +.Nm yyfix +is provided to simplify the transition. +.Pp +The first (and required) argument to +.Nm yyfix +is the name of the file where the extracted tables should be stored. +.Pp +If further command line arguments are specified, they are taken as +the list of tables to be extracted. +Otherwise, +.Nm yyfix +attempts to determine if the +.Pa y.tab.c +file is from an old or new +.Xr yacc , +and extracts the appropriate tables. +.Pp +The tables +.Dq yyexca , +.Dq yyact , +.Dq yypact , +.Dq yypgo , +.Dq yyr1 , +.Dq yyr2 , +.Dq yychk , +and +.Dq yydef +are extracted +from historical versions of +.Xr yacc . +.Pp +The tables +.Dq yylhs , +.Dq yylen , +.Dq yydefred , +.Dq yydgoto , +.Dq yysindex , +.Dq yyrindex , +.Dq yygindex , +.Dq yytable , +.Dq yyname , +.Dq yyrule , +and +.Dq yycheck , +are extracted from the current version of +.Xr yacc . +.Sh FILES +.Bl -tag -width y.tab.c +.It Pa y.tab.c +File from which tables are extracted. +.El +.Sh SEE ALSO +.Xr yacc 1 +.Sh HISTORY +The +.Nm +command first appeared in +.Bx 4.4 . diff --git a/usr.bin/yacc/yyfix.sh b/usr.bin/yacc/yyfix.sh new file mode 100644 index 00000000000..e76bcdd8fb6 --- /dev/null +++ b/usr.bin/yacc/yyfix.sh @@ -0,0 +1,77 @@ +#!/bin/sh - +# +# $OpenBSD: yyfix.sh,v 1.1 1999/04/18 20:41:46 millert Exp $ +# Copyright (c) 1990 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# from: @(#)yyfix.sh 5.2 (Berkeley) 5/12/90 +# +OLDYACC="yyexca yyact yypact yypgo yyr1 yyr2 yychk yydef" +NEWYACC="yylhs yylen yydefred yydgoto yysindex yyrindex yygindex \ + yytable yycheck" + +if [ $# -eq 0 ]; then + echo "usage: $0 file [tables]" >&2 + exit 1 +fi + +file=$1 +>$file +shift + +if [ $# -eq 0 ] ; then + if grep yylhs y.tab.c > /dev/null ; then + if grep yyname y.tab.c > /dev/null ; then + NEWYACC="$NEWYACC yyname" + fi + if grep yyrule y.tab.c > /dev/null ; then + NEWYACC="$NEWYACC yyrule" + fi + set $NEWYACC + else + set $OLDYACC + fi +fi + +for i +do +ed - y.tab.c << END +/^\(.*\)$i[ ]*\[]/s//extern \1 $i[];\\ +\1 $i []/ +.ka +/}/kb +'br $file +'a,.w $file +'a,.d +w +q +END +done |