Skip to content

Commit d5506b3

Browse files
author
keiju
committed
* lib/irb/{init.rb,ruby-lex.rb,slex.rb}: can't input '\c' for
[ruby-core: 7122]. and support for ruby1.8.X git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent cad6250 commit d5506b3

File tree

3 files changed

+38
-24
lines changed

3 files changed

+38
-24
lines changed

lib/irb/init.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ def IRB.rc_file(ext = IRBRC_EXT)
233233
# enumerate possible rc-file base name generators
234234
def IRB.rc_file_generators
235235
if irbrc = ENV["IRBRC"]
236-
yield proc{|rc| irbrc}
236+
yield proc{|rc| rc == "rc" ? irbrc : irbrc+rc}
237237
end
238238
if home = ENV["HOME"]
239239
yield proc{|rc| home+"/.irb#{rc}"}

lib/irb/ruby-lex.rb

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -338,23 +338,23 @@ def token
338338

339339
def lex_init()
340340
@OP = IRB::SLex.new
341-
@OP.def_rules("\0", "\004", "\032") do
341+
@OP.def_rules("\0", "\004", "\032") do |op, io|
342342
Token(TkEND_OF_SCRIPT)
343343
end
344344

345-
@OP.def_rules(" ", "\t", "\f", "\r", "\13") do
345+
@OP.def_rules(" ", "\t", "\f", "\r", "\13") do |op, io|
346346
@space_seen = true
347347
while getc =~ /[ \t\f\r\13]/; end
348348
ungetc
349349
Token(TkSPACE)
350350
end
351351

352-
@OP.def_rule("#") do
353-
|op, io|
352+
@OP.def_rule("#") do |op, io|
354353
identify_comment
355354
end
356355

357-
@OP.def_rule("=begin", proc{@prev_char_no == 0 && peek(0) =~ /\s/}) do
356+
@OP.def_rule("=begin",
357+
proc{|op, io| @prev_char_no == 0 && peek(0) =~ /\s/}) do
358358
|op, io|
359359
@ltype = "="
360360
until getc == "\n"; end
@@ -366,7 +366,7 @@ def lex_init()
366366
Token(TkRD_COMMENT)
367367
end
368368

369-
@OP.def_rule("\n") do
369+
@OP.def_rule("\n") do |op, io|
370370
print "\\n\n" if RubyLex.debug?
371371
case @lex_state
372372
when EXPR_BEG, EXPR_FNAME, EXPR_DOT
@@ -478,13 +478,13 @@ def lex_init()
478478
Token(TkOPASGN, $1)
479479
end
480480

481-
@OP.def_rule("+@", proc{@lex_state == EXPR_FNAME}) do
481+
@OP.def_rule("+@", proc{|op, io| @lex_state == EXPR_FNAME}) do
482482
|op, io|
483483
@lex_state = EXPR_ARG
484484
Token(op)
485485
end
486486

487-
@OP.def_rule("-@", proc{@lex_state == EXPR_FNAME}) do
487+
@OP.def_rule("-@", proc{|op, io| @lex_state == EXPR_FNAME}) do
488488
|op, io|
489489
@lex_state = EXPR_ARG
490490
Token(op)
@@ -509,6 +509,7 @@ def lex_init()
509509
end
510510

511511
@OP.def_rule(".") do
512+
|op, io|
512513
@lex_state = EXPR_BEG
513514
if peek(0) =~ /[0-9]/
514515
ungetc
@@ -539,6 +540,7 @@ def lex_int2
539540
end
540541

541542
@OP.def_rule(":") do
543+
|op, io|
542544
if @lex_state == EXPR_END || peek(0) =~ /\s/
543545
@lex_state = EXPR_BEG
544546
Token(TkCOLON)
@@ -549,6 +551,7 @@ def lex_int2
549551
end
550552

551553
@OP.def_rule("::") do
554+
|op, io|
552555
# p @lex_state.id2name, @space_seen
553556
if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
554557
@lex_state = EXPR_BEG
@@ -576,6 +579,7 @@ def lex_int2
576579
end
577580

578581
@OP.def_rules("^") do
582+
|op, io|
579583
@lex_state = EXPR_BEG
580584
Token("^")
581585
end
@@ -603,16 +607,19 @@ def lex_int2
603607
end
604608

605609
@OP.def_rule("~") do
610+
|op, io|
606611
@lex_state = EXPR_BEG
607612
Token("~")
608613
end
609614

610-
@OP.def_rule("~@", proc{@lex_state == EXPR_FNAME}) do
615+
@OP.def_rule("~@", proc{|op, io| @lex_state == EXPR_FNAME}) do
616+
|op, io|
611617
@lex_state = EXPR_BEG
612618
Token("~")
613619
end
614620

615621
@OP.def_rule("(") do
622+
|op, io|
616623
@indent += 1
617624
if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
618625
@lex_state = EXPR_BEG
@@ -625,17 +632,20 @@ def lex_int2
625632
tk = Token(tk_c)
626633
end
627634

628-
@OP.def_rule("[]", proc{@lex_state == EXPR_FNAME}) do
635+
@OP.def_rule("[]", proc{|op, io| @lex_state == EXPR_FNAME}) do
636+
|op, io|
629637
@lex_state = EXPR_ARG
630638
Token("[]")
631639
end
632640

633-
@OP.def_rule("[]=", proc{@lex_state == EXPR_FNAME}) do
641+
@OP.def_rule("[]=", proc{|op, io| @lex_state == EXPR_FNAME}) do
642+
|op, io|
634643
@lex_state = EXPR_ARG
635644
Token("[]=")
636645
end
637646

638647
@OP.def_rule("[") do
648+
|op, io|
639649
@indent += 1
640650
if @lex_state == EXPR_FNAME
641651
tk_c = TkfLBRACK
@@ -654,6 +664,7 @@ def lex_int2
654664
end
655665

656666
@OP.def_rule("{") do
667+
|op, io|
657668
@indent += 1
658669
if @lex_state != EXPR_END && @lex_state != EXPR_ARG
659670
tk_c = TkLBRACE
@@ -666,6 +677,7 @@ def lex_int2
666677
end
667678

668679
@OP.def_rule('\\') do
680+
|op, io|
669681
if getc == "\n"
670682
@space_seen = true
671683
@continue = true
@@ -692,10 +704,12 @@ def lex_int2
692704
end
693705

694706
@OP.def_rule('$') do
707+
|op, io|
695708
identify_gvar
696709
end
697710

698711
@OP.def_rule('@') do
712+
|op, io|
699713
if peek(0) =~ /[\w_@]/
700714
ungetc
701715
identify_identifier

lib/irb/slex.rb

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,9 @@ def create_subnode(chrs, preproc = nil, postproc = nil)
167167
def match(chrs, op = "")
168168
D_DETAIL.print "match>: ", chrs, "op:", op, "\n"
169169
if chrs.empty?
170-
if @preproc.nil? || @preproc.yield(op, chrs)
170+
if @preproc.nil? || @preproc.call(op, chrs)
171171
DOUT.printf(D_DETAIL, "op1: %s\n", op)
172-
@postproc.yield(op, chrs)
172+
@postproc.call(op, chrs)
173173
else
174174
nil
175175
end
@@ -180,19 +180,19 @@ def match(chrs, op = "")
180180
return ret
181181
else
182182
chrs.unshift ch
183-
if @postproc and @preproc.nil? || @preproc.yield(op, chrs)
183+
if @postproc and @preproc.nil? || @preproc.call(op, chrs)
184184
DOUT.printf(D_DETAIL, "op2: %s\n", op.inspect)
185-
ret = @postproc.yield(op, chrs)
185+
ret = @postproc.call(op, chrs)
186186
return ret
187187
else
188188
return nil
189189
end
190190
end
191191
else
192192
chrs.unshift ch
193-
if @postproc and @preproc.nil? || @preproc.yield(op, chrs)
193+
if @postproc and @preproc.nil? || @preproc.call(op, chrs)
194194
DOUT.printf(D_DETAIL, "op3: %s\n", op)
195-
@postproc.yield(op, chrs)
195+
@postproc.call(op, chrs)
196196
return ""
197197
else
198198
return nil
@@ -211,9 +211,9 @@ def match_io(io, op = "")
211211
ch = io.getc_of_rests
212212
end
213213
if ch.nil?
214-
if @preproc.nil? || @preproc.yield(op, io)
214+
if @preproc.nil? || @preproc.call(op, io)
215215
D_DETAIL.printf("op1: %s\n", op)
216-
@postproc.yield(op, io)
216+
@postproc.call(op, io)
217217
else
218218
nil
219219
end
@@ -223,18 +223,18 @@ def match_io(io, op = "")
223223
ret
224224
else
225225
io.ungetc ch
226-
if @postproc and @preproc.nil? || @preproc.yield(op, io)
226+
if @postproc and @preproc.nil? || @preproc.call(op, io)
227227
DOUT.exec_if{D_DETAIL.printf "op2: %s\n", op.inspect}
228-
@postproc.yield(op, io)
228+
@postproc.call(op, io)
229229
else
230230
nil
231231
end
232232
end
233233
else
234234
io.ungetc ch
235-
if @postproc and @preproc.nil? || @preproc.yield(op, io)
235+
if @postproc and @preproc.nil? || @preproc.call(op, io)
236236
D_DETAIL.printf("op3: %s\n", op)
237-
@postproc.yield(op, io)
237+
@postproc.call(op, io)
238238
else
239239
nil
240240
end

0 commit comments

Comments
 (0)