[BACK]Return to yyfix.sh CVS log [TXT][DIR] Up to [local] / src / usr.bin / yacc

Annotation of src/usr.bin/yacc/yyfix.sh, Revision 1.1

1.1     ! millert     1: #!/bin/sh -
        !             2: #
        !             3: #      $OpenBSD$
        !             4: # Copyright (c) 1990 The Regents of the University of California.
        !             5: # All rights reserved.
        !             6: #
        !             7: # Redistribution and use in source and binary forms, with or without
        !             8: # modification, are permitted provided that the following conditions
        !             9: # are met:
        !            10: # 1. Redistributions of source code must retain the above copyright
        !            11: #    notice, this list of conditions and the following disclaimer.
        !            12: # 2. Redistributions in binary form must reproduce the above copyright
        !            13: #    notice, this list of conditions and the following disclaimer in the
        !            14: #    documentation and/or other materials provided with the distribution.
        !            15: # 3. All advertising materials mentioning features or use of this software
        !            16: #    must display the following acknowledgement:
        !            17: #      This product includes software developed by the University of
        !            18: #      California, Berkeley and its contributors.
        !            19: # 4. Neither the name of the University nor the names of its contributors
        !            20: #    may be used to endorse or promote products derived from this software
        !            21: #    without specific prior written permission.
        !            22: #
        !            23: # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            24: # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            25: # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            26: # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            27: # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            28: # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            29: # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            30: # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            31: # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            32: # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            33: # SUCH DAMAGE.
        !            34: #
        !            35: #      from: @(#)yyfix.sh      5.2 (Berkeley) 5/12/90
        !            36: #
        !            37: OLDYACC="yyexca yyact yypact yypgo yyr1 yyr2 yychk yydef"
        !            38: NEWYACC="yylhs yylen yydefred yydgoto yysindex yyrindex yygindex \
        !            39:         yytable yycheck"
        !            40:
        !            41: if [ $# -eq 0 ]; then
        !            42:        echo "usage: $0 file [tables]" >&2
        !            43:        exit 1
        !            44: fi
        !            45:
        !            46: file=$1
        !            47: >$file
        !            48: shift
        !            49:
        !            50: if [ $# -eq 0 ] ; then
        !            51:        if grep yylhs y.tab.c > /dev/null ; then
        !            52:                if grep yyname y.tab.c > /dev/null ; then
        !            53:                        NEWYACC="$NEWYACC yyname"
        !            54:                fi
        !            55:                if grep yyrule y.tab.c > /dev/null ; then
        !            56:                        NEWYACC="$NEWYACC yyrule"
        !            57:                fi
        !            58:                set $NEWYACC
        !            59:        else
        !            60:                set $OLDYACC
        !            61:        fi
        !            62: fi
        !            63:
        !            64: for i
        !            65: do
        !            66: ed - y.tab.c << END
        !            67: /^\(.*\)$i[    ]*\[]/s//extern \1 $i[];\\
        !            68: \1 $i []/
        !            69: .ka
        !            70: /}/kb
        !            71: 'br $file
        !            72: 'a,.w $file
        !            73: 'a,.d
        !            74: w
        !            75: q
        !            76: END
        !            77: done