mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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:
parent
42d9ecc125
commit
bafc88f1f1
3 changed files with 72 additions and 28 deletions
|
@ -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>
|
||||
|
||||
* test/ripper/tools/generate.rb: check parser event arity.
|
||||
|
|
|
@ -3,13 +3,13 @@ ripper.o: ripper.c eventids1.c $(srcdir)/eventids2.c $(hdrdir)/lex.c
|
|||
.y.c:
|
||||
bison -t -v -o$@ $<
|
||||
|
||||
ripper.y: $(hdrdir)/parse.y $(srcdir)/tools/preproc.rb
|
||||
$(RUBY) $(srcdir)/tools/preproc.rb $(hdrdir)/parse.y > $@
|
||||
ripper.y: $(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
|
||||
|
||||
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=$@
|
||||
|
||||
# Entries for Ripper maintainer
|
||||
|
|
|
@ -1,56 +1,92 @@
|
|||
# $Id$
|
||||
|
||||
require 'stringio'
|
||||
require 'optparse'
|
||||
|
||||
def main
|
||||
prelude
|
||||
grammar
|
||||
usercode
|
||||
output = nil
|
||||
parser = OptionParser.new
|
||||
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
|
||||
|
||||
def prelude
|
||||
while line = ARGF.gets
|
||||
def prelude(f, out)
|
||||
while line = f.gets
|
||||
case line
|
||||
when %r</\*%%%\*/>
|
||||
puts '/*'
|
||||
out.puts '/*'
|
||||
when %r</\*%>
|
||||
puts '*/'
|
||||
out.puts '*/'
|
||||
when %r<%\*/>
|
||||
puts
|
||||
out.puts
|
||||
when /\A%%/
|
||||
puts '%%'
|
||||
out.puts '%%'
|
||||
return
|
||||
when /\A%token/
|
||||
puts line.sub(/<\w+>/, '<val>')
|
||||
out.puts line.sub(/<\w+>/, '<val>')
|
||||
when /\A%type/
|
||||
puts line.sub(/<\w+>/, '<val>')
|
||||
out.puts line.sub(/<\w+>/, '<val>')
|
||||
else
|
||||
print line
|
||||
out.print line
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def grammar
|
||||
while line = ARGF.gets
|
||||
def grammar(f, out)
|
||||
while line = f.gets
|
||||
case line
|
||||
when %r</\*%%%\*/>
|
||||
puts '#if 0'
|
||||
out.puts '#if 0'
|
||||
when %r</\*%c%\*/>
|
||||
puts '/*'
|
||||
out.puts '/*'
|
||||
when %r</\*%c>
|
||||
puts '*/'
|
||||
out.puts '*/'
|
||||
when %r</\*%>
|
||||
puts '#endif'
|
||||
out.puts '#endif'
|
||||
when %r<%\*/>
|
||||
puts
|
||||
out.puts
|
||||
when /\A%%/
|
||||
puts '%%'
|
||||
out.puts '%%'
|
||||
return
|
||||
else
|
||||
print line
|
||||
out.print line
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def usercode
|
||||
while line = ARGF.gets
|
||||
print line
|
||||
def usercode(f, out)
|
||||
while line = f.gets
|
||||
out.print line
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue