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