* test/ripper/depend: use --output option instead of redirect; nmake does not remove a target when the target file is created by redirect. [ruby-dev:26466]

* test/ripper/tools/preproc.rb: new option --output.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
aamine 2005-09-22 22:08:47 +00:00
parent 42d9ecc125
commit bafc88f1f1
3 changed files with 72 additions and 28 deletions

View File

@ -1,3 +1,11 @@
Fri Sep 23 07:07:47 2005 Minero Aoki <aamine@loveruby.net>
* test/ripper/depend: use --output option instead of redirect;
nmake does not remove a target when the target file is created by
redirect. [ruby-dev:26466]
* test/ripper/tools/preproc.rb: new option --output.
Fri Sep 23 06:57:52 2005 Minero Aoki <aamine@loveruby.net> Fri Sep 23 06:57:52 2005 Minero Aoki <aamine@loveruby.net>
* test/ripper/tools/generate.rb: check parser event arity. * test/ripper/tools/generate.rb: check parser event arity.

View File

@ -3,13 +3,13 @@ ripper.o: ripper.c eventids1.c $(srcdir)/eventids2.c $(hdrdir)/lex.c
.y.c: .y.c:
bison -t -v -o$@ $< bison -t -v -o$@ $<
ripper.y: $(hdrdir)/parse.y $(srcdir)/tools/preproc.rb ripper.y: $(srcdir)/tools/preproc.rb $(hdrdir)/parse.y
$(RUBY) $(srcdir)/tools/preproc.rb $(hdrdir)/parse.y > $@ $(RUBY) $(srcdir)/tools/preproc.rb $(hdrdir)/parse.y --output=$@
$(srcdir)/lib/ripper/core.rb: $(srcdir)/lib/ripper/core.rb.in $(srcdir)/tools/generate.rb $(srcdir)/lib/ripper/core.rb: $(srcdir)/tools/generate.rb $(srcdir)/lib/ripper/core.rb.in $(hdrdir)/parse.y $(hdrdir)/eventids2.c
$(RUBY) $(srcdir)/tools/generate.rb --mode=ripper/core --template=$@.in --output=$@ --ids1src=$(hdrdir)/parse.y --ids2src=$(srcdir)/eventids2.c $(RUBY) $(srcdir)/tools/generate.rb --mode=ripper/core --template=$@.in --output=$@ --ids1src=$(hdrdir)/parse.y --ids2src=$(srcdir)/eventids2.c
eventids1.c: $(hdrdir)/parse.y $(srcdir)/tools/generate.rb eventids1.c: $(srcdir)/tools/generate.rb $(hdrdir)/parse.y
$(RUBY) $(srcdir)/tools/generate.rb --mode=eventids1 --ids1src=$(hdrdir)/parse.y --output=$@ $(RUBY) $(srcdir)/tools/generate.rb --mode=eventids1 --ids1src=$(hdrdir)/parse.y --output=$@
# Entries for Ripper maintainer # Entries for Ripper maintainer

View File

@ -1,56 +1,92 @@
# $Id$
require 'stringio'
require 'optparse'
def main def main
prelude output = nil
grammar parser = OptionParser.new
usercode parser.banner = "Usage: #{File.basename($0)} [--output=PATH] <parse.y>"
parser.on('--output=PATH', 'An output file.') {|path|
output = path
}
parser.on('--help', 'Prints this message and quit.') {
puts parser.help
exit 0
}
begin
parser.parse!
rescue OptionParser::ParseError => err
$stderr.puts err.message
$stderr.puts parser.help
exit 1
end
unless ARGV.size == 1
$stderr.puts "wrong number of arguments (#{ARGV.size} for 1)"
exit 1
end
out = StringIO.new
File.open(ARGV[0]) {|f|
prelude f, out
grammar f, out
usercode f, out
}
if output
File.open(output, 'w') {|f|
f.write out.string
}
else
print out.string
end
end end
def prelude def prelude(f, out)
while line = ARGF.gets while line = f.gets
case line case line
when %r</\*%%%\*/> when %r</\*%%%\*/>
puts '/*' out.puts '/*'
when %r</\*%> when %r</\*%>
puts '*/' out.puts '*/'
when %r<%\*/> when %r<%\*/>
puts out.puts
when /\A%%/ when /\A%%/
puts '%%' out.puts '%%'
return return
when /\A%token/ when /\A%token/
puts line.sub(/<\w+>/, '<val>') out.puts line.sub(/<\w+>/, '<val>')
when /\A%type/ when /\A%type/
puts line.sub(/<\w+>/, '<val>') out.puts line.sub(/<\w+>/, '<val>')
else else
print line out.print line
end end
end end
end end
def grammar def grammar(f, out)
while line = ARGF.gets while line = f.gets
case line case line
when %r</\*%%%\*/> when %r</\*%%%\*/>
puts '#if 0' out.puts '#if 0'
when %r</\*%c%\*/> when %r</\*%c%\*/>
puts '/*' out.puts '/*'
when %r</\*%c> when %r</\*%c>
puts '*/' out.puts '*/'
when %r</\*%> when %r</\*%>
puts '#endif' out.puts '#endif'
when %r<%\*/> when %r<%\*/>
puts out.puts
when /\A%%/ when /\A%%/
puts '%%' out.puts '%%'
return return
else else
print line out.print line
end end
end end
end end
def usercode def usercode(f, out)
while line = ARGF.gets while line = f.gets
print line out.print line
end end
end end