# File lib/rexical/rexcmd.rb, line 33
  def run
    @status  =  1
    usage 'no grammar file given'    if ARGV.empty?
    usage 'too many grammar files given'    if ARGV.size > 1
    filename  =  ARGV[0]

    rex  =  Rexical::Generator.new(@opt)
    begin
      rex.grammar_file  =  filename
      rex.read_grammar
      rex.parse
      if @opt['--check-only']
        $stderr.puts "syntax ok"
        return  0
      end
      rex.write_scanner
      @status  =  0

    rescue Rexical::ParseError, Errno::ENOENT
      msg  =  $!.to_s
      unless /\A\d/ === msg
        msg[0,0]  =  ' '
      end
      $stderr.puts "#{@cmd}:#{rex.grammar_file}:#{rex.lineno}:#{msg}"

    ensure
      exit @status

    end
  end