* 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
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue