view libinterp/mk-pkg-add @ 16224:4a848eb52de2

use stack for tracking lexer start states * lex.h (octave_lexer::start_state_stack): New member variable. (octave_lexer::push_start_state, octave_lexer::pop_start_state, octave_lexer::clear_start_state, octave_lexer::start_state, octave_lexer::display_start_state): New functions. * lex.ll (INPUT_FILE_START): Rename from INPUT_FILE_BEGIN. Use push_start_state and pop_start_state instead of switching flex start states directly with the flex BEGIN macro. (octave_lexer::init, octave_lexer::reset): Clear start state stack. (octave_lexer::prep_for_file, octave_lexer::process_comment, octave_lexer::handle_close_bracket): Don't use OCTAVE_YYG macro. (octave_lexer::display_start_state): Rename from display_state. Eliminate argument. Display current start state.
author John W. Eaton <jwe@octave.org>
date Fri, 08 Mar 2013 10:46:13 -0500
parents 2fc554ffbc28
children 474e6d189de1
line wrap: on
line source

#! /bin/sh -e
#
# Copyright (C) 2005-2012 John W. Eaton
#
# This file is part of Octave.
# 
# Octave 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 3 of the License, or (at
# your option) any later version.
# 
# Octave 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 Octave; see the file COPYING.  If not, see
# <http://www.gnu.org/licenses/>.

SED=${SED:-'sed'}

for f in "$@"; do
  if [ -f $f ]; then

    ## Compute and print the autoloads.
  
    base=`basename $f | $SED 's/\.df$//'`
    fcns=`$SED -n -e 's/^ *XDEFUN_DLD_INTERNAL *( *\([^, ]*\)[, ].*$/\1/p' \
                  -e 's/^ *XDEFUNX_DLD_INTERNAL *( *"\([^"]*\)".*$/\1/p' $f | \
          sort -u`
    if [ -n "$fcns" ]; then
      for n in $fcns; do
        if [ "$n" = "$base" ]; then
          true
        else
          echo "autoload (\"$n\", \"$base.oct\");"
        fi
      done
    fi

    ## Process PKG_ADD directives after autoloads so that all
    ## necessary functions can be found before they are used.

    $SED -n -e 's,^//* *PKG_ADD: *,,p' \
            -e 's,^/\* *PKG_ADD: *\(.*\) *\*/ *$,\1,p' $f

  fi
done

exit $?