ruby_parser 3.8.2 → 3.8.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -91,7 +91,7 @@ class RPStringScanner < StringScanner
91
91
  end
92
92
 
93
93
  module RubyParserStuff
94
- VERSION = "3.8.2" unless constants.include? "VERSION" # SIGH
94
+ VERSION = "3.8.3" unless constants.include? "VERSION" # SIGH
95
95
 
96
96
  attr_accessor :lexer, :in_def, :in_single, :file
97
97
  attr_reader :env, :comments
@@ -875,11 +875,73 @@ module RubyParserStuff
875
875
  str = val[0]
876
876
  str.force_encoding("ASCII-8BIT") unless str.valid_encoding? unless RUBY_VERSION < "1.9"
877
877
  result = s(:str, str)
878
- self.lexer.lineno += str.count("\n") + self.lexer.extra_lineno
879
- self.lexer.extra_lineno = 0
878
+ self.lexer.fixup_lineno str.count("\n")
880
879
  result
881
880
  end
882
881
 
882
+ def new_qword_list_entry val
883
+ str = val[1]
884
+ str.force_encoding("ASCII-8BIT") unless str.valid_encoding? unless RUBY_VERSION < "1.9"
885
+ result = s(:str, str)
886
+ self.lexer.fixup_lineno
887
+ result
888
+ end
889
+
890
+ def new_qword_list
891
+ result = s(:array)
892
+ self.lexer.fixup_lineno
893
+ result
894
+ end
895
+
896
+ def new_word_list
897
+ result = s(:array)
898
+ self.lexer.fixup_lineno
899
+ result
900
+ end
901
+
902
+ def new_word_list_entry val
903
+ result = val[1][0] == :evstr ? s(:dstr, "", val[1]) : val[1]
904
+ self.lexer.fixup_lineno
905
+ result
906
+ end
907
+
908
+ def new_qsym_list
909
+ result = s(:array)
910
+ self.lexer.fixup_lineno
911
+ result
912
+ end
913
+
914
+ def new_qsym_list_entry val
915
+ result = s(:lit, val[1].to_sym)
916
+ self.lexer.fixup_lineno
917
+ result
918
+ end
919
+
920
+ def new_symbol_list
921
+ result = s(:array)
922
+ self.lexer.fixup_lineno
923
+ result
924
+ end
925
+
926
+ def new_symbol_list_entry val
927
+ _list, sym, _nil = val # TODO: use _list
928
+ result = val[1]
929
+
930
+ result ||= s(:str, "")
931
+
932
+ case sym[0]
933
+ when :dstr then
934
+ sym[0] = :dsym
935
+ when :str then
936
+ sym = s(:lit, sym.last.to_sym)
937
+ else
938
+ debug20 24
939
+ sym = s(:dsym, "", sym || s(:str, ""))
940
+ end
941
+ self.lexer.fixup_lineno
942
+ sym
943
+ end
944
+
883
945
  def new_super args
884
946
  if args && args.node_type == :block_pass then
885
947
  s(:super, args)
@@ -89,6 +89,8 @@ class TestRubyLexer < Minitest::Test
89
89
  case value
90
90
  when Float then
91
91
  assert_in_epsilon value, act_value, 0.001, msg
92
+ when NilClass then
93
+ assert_nil act_value, msg
92
94
  else
93
95
  assert_equal value, act_value, msg
94
96
  end
@@ -967,7 +969,17 @@ class TestRubyLexer < Minitest::Test
967
969
  end
968
970
 
969
971
  def test_yylex_float_e_bad_double_e
970
- refute_lex "1e2e3"
972
+ assert_lex3("1e2e3",
973
+ nil,
974
+ :tFLOAT, 100, :expr_end,
975
+ :tIDENTIFIER, "e3", :expr_end)
976
+ end
977
+
978
+ def test_yylex_float_if_modifier
979
+ assert_lex3("1e2if",
980
+ nil,
981
+ :tFLOAT, 100, :expr_end,
982
+ :kIF_MOD, "if", :expr_beg)
971
983
  end
972
984
 
973
985
  def test_yylex_float_e_bad_trailing_underscore
@@ -1409,6 +1421,13 @@ class TestRubyLexer < Minitest::Test
1409
1421
  refute_lex "0d42__24"
1410
1422
  end
1411
1423
 
1424
+ def test_yylex_integer_if_modifier
1425
+ assert_lex3("123if",
1426
+ nil,
1427
+ :tINTEGER, 123, :expr_end,
1428
+ :kIF_MOD, "if", :expr_beg)
1429
+ end
1430
+
1412
1431
  def test_yylex_question_eh_a__18
1413
1432
  setup_lexer_class Ruby18Parser
1414
1433
 
@@ -2698,25 +2717,80 @@ class TestRubyLexer < Minitest::Test
2698
2717
  :tRCURLY, "}", :expr_endarg, 0, 0)
2699
2718
  end
2700
2719
 
2701
- def test_ruby21_new_numbers
2702
- skip "Don't have imaginary and rational literal lexing yet"
2720
+ def test_ruby21_rational_literal
2721
+ setup_lexer_class Ruby21Parser
2703
2722
 
2723
+ assert_lex3("10r", nil, :tRATIONAL, Rational(10), :expr_end)
2724
+ assert_lex3("0x10r", nil, :tRATIONAL, Rational(16), :expr_end)
2725
+ assert_lex3("0o10r", nil, :tRATIONAL, Rational(8), :expr_end)
2726
+ assert_lex3("0or", nil, :tRATIONAL, Rational(0), :expr_end)
2727
+ assert_lex3("0b10r", nil, :tRATIONAL, Rational(2), :expr_end)
2728
+ assert_lex3("1.5r", nil, :tRATIONAL, Rational(15, 10), :expr_end)
2729
+ assert_lex3("15e3r", nil, :tRATIONAL, Rational(15000), :expr_end)
2730
+ assert_lex3("15e-3r", nil, :tRATIONAL, Rational(15, 1000), :expr_end)
2731
+ assert_lex3("1.5e3r", nil, :tRATIONAL, Rational(1500), :expr_end)
2732
+ assert_lex3("1.5e-3r", nil, :tRATIONAL, Rational(15, 10000), :expr_end)
2733
+
2734
+ assert_lex3("-10r", nil,
2735
+ :tUMINUS_NUM, "-", :expr_beg,
2736
+ :tRATIONAL, Rational(10), :expr_end)
2737
+ end
2738
+
2739
+ def test_ruby21_imaginary_literal
2704
2740
  setup_lexer_class Ruby21Parser
2705
2741
 
2706
- assert_lex3("10r", nil, :tRATIONAL, "10r", :expr_end)
2707
- assert_lex3("1.5r", nil, :tRATIONAL, "1.5r", :expr_end)
2742
+ assert_lex3("1i", nil, :tIMAGINARY, Complex(0, 1), :expr_end)
2743
+ assert_lex3("0x10i", nil, :tIMAGINARY, Complex(0, 16), :expr_end)
2744
+ assert_lex3("0o10i", nil, :tIMAGINARY, Complex(0, 8), :expr_end)
2745
+ assert_lex3("0oi", nil, :tIMAGINARY, Complex(0, 0), :expr_end)
2746
+ assert_lex3("0b10i", nil, :tIMAGINARY, Complex(0, 2), :expr_end)
2747
+ assert_lex3("1.5i", nil, :tIMAGINARY, Complex(0, 1.5), :expr_end)
2748
+ assert_lex3("15e3i", nil, :tIMAGINARY, Complex(0, 15000), :expr_end)
2749
+ assert_lex3("15e-3i", nil, :tIMAGINARY, Complex(0, 0.015), :expr_end)
2750
+ assert_lex3("1.5e3i", nil, :tIMAGINARY, Complex(0, 1500), :expr_end)
2751
+ assert_lex3("1.5e-3i", nil, :tIMAGINARY, Complex(0, 0.0015), :expr_end)
2752
+
2753
+ assert_lex3("-10i", nil,
2754
+ :tUMINUS_NUM, "-", :expr_beg,
2755
+ :tIMAGINARY, Complex(0, 10), :expr_end)
2756
+ end
2708
2757
 
2709
- assert_lex3("1i", nil, :tIMAGINARY, "1i", :expr_end)
2710
- assert_lex3("1+2i", nil, :tIMAGINARY, "1+2i", :expr_end)
2711
- assert_lex3("1.2+3.4i", nil, :tIMAGINARY, "1.2+3.4i", :expr_end)
2712
- assert_lex3("4r+3i", nil, :tIMAGINARY, "4r+3i", :expr_end)
2713
- assert_lex3("4r+3ri", nil, :tIMAGINARY, "4r+3i", :expr_end)
2758
+ def test_ruby21_rational_imaginary_literal
2759
+ setup_lexer_class Ruby21Parser
2714
2760
 
2715
- assert_lex3("4i+3r", nil, :tIMAGINARY, "4r+3i", :expr_end) # HACK
2716
- assert_lex3("1i+2ri", nil, :tIMAGINARY, "4r+3i", :expr_end) # HACK
2761
+ assert_lex3("1ri", nil, :tIMAGINARY, Complex(0, Rational(1)), :expr_end)
2762
+ assert_lex3("0x10ri", nil, :tIMAGINARY, Complex(0, Rational(16)), :expr_end)
2763
+ assert_lex3("0o10ri", nil, :tIMAGINARY, Complex(0, Rational(8)), :expr_end)
2764
+ assert_lex3("0ori", nil, :tIMAGINARY, Complex(0, Rational(0)), :expr_end)
2765
+ assert_lex3("0b10ri", nil, :tIMAGINARY, Complex(0, Rational(2)), :expr_end)
2766
+ assert_lex3("1.5ri", nil, :tIMAGINARY, Complex(0, Rational("1.5")), :expr_end)
2767
+ assert_lex3("15e3ri", nil, :tIMAGINARY, Complex(0, Rational("15e3")), :expr_end)
2768
+ assert_lex3("15e-3ri", nil, :tIMAGINARY, Complex(0, Rational("15e-3")), :expr_end)
2769
+ assert_lex3("1.5e3ri", nil, :tIMAGINARY, Complex(0, Rational("1.5e3")), :expr_end)
2770
+ assert_lex3("1.5e-3ri", nil, :tIMAGINARY, Complex(0, Rational("1.5e-3")), :expr_end)
2771
+
2772
+ assert_lex3("-10ri", nil,
2773
+ :tUMINUS_NUM, "-", :expr_beg,
2774
+ :tIMAGINARY, Complex(0, Rational(10)), :expr_end)
2775
+ end
2776
+
2777
+ def test_ruby21_imaginary_literal_with_succeeding_keyword
2778
+ skip "Currently does not tokenize correctly"
2779
+
2780
+ setup_lexer_class Ruby21Parser
2717
2781
 
2718
- assert_lex3("1+2ri", nil, :tIMAGINARY, "1+3ri", :expr_end)
2719
- refute_lex("1+2ir", :tINTEGER, 1)
2782
+ assert_lex3("1if", nil,
2783
+ :tINTEGER, 1, :expr_end,
2784
+ :kIF_MOD, "if", :expr_beg)
2785
+ assert_lex3("1rif", nil,
2786
+ :tRATIONAL, Rational(1), :expr_end,
2787
+ :kIF_MOD, "if", :expr_beg)
2788
+ assert_lex3("1.0if", nil,
2789
+ :tFLOAT, 1.0, :expr_end,
2790
+ :kIF_MOD, "if", :expr_beg)
2791
+ assert_lex3("1.0rif", nil,
2792
+ :tRATIONAL, Rational("1.0"), :expr_end,
2793
+ :kIF_MOD, "if", :expr_beg)
2720
2794
 
2721
2795
  flunk
2722
2796
  end
@@ -45,6 +45,11 @@ class RubyParserTestCase < ParseTreeTestCase
45
45
  assert_equal pt, result
46
46
  end
47
47
 
48
+ def refute_parse rb
49
+ self.result = processor.parse rb
50
+ assert_nil result
51
+ end
52
+
48
53
  def assert_syntax_error rb, emsg
49
54
  e = nil
50
55
  assert_silent do
@@ -302,10 +307,9 @@ module TestRubyParserShared
302
307
 
303
308
  def test_bug_comment_eq_begin
304
309
  rb = "\n\n#\n=begin\nblah\n=end\n\n"
305
- pt = nil
306
310
  exp = rb.strip + "\n"
307
311
 
308
- assert_parse rb, pt
312
+ refute_parse rb
309
313
  assert_equal exp, processor.lexer.comments
310
314
  end
311
315
 
@@ -366,10 +370,7 @@ module TestRubyParserShared
366
370
  end
367
371
 
368
372
  def test_empty
369
- rb = ""
370
- pt = nil
371
-
372
- assert_parse rb, pt
373
+ refute_parse ""
373
374
  end
374
375
 
375
376
  def test_evstr_evstr
@@ -1401,8 +1402,29 @@ module TestRubyParserShared
1401
1402
  assert_parse rb, pt
1402
1403
  end
1403
1404
 
1404
- def test_qwords_line_breaks
1405
- skip "not yet"
1405
+ def test_array_line_breaks
1406
+ # It seems like arrays are roughly created when a certain element is created
1407
+ # In ruby > 1.9 it seems like that is after the last element, so the array
1408
+ # itself is assigned line 3 (since the last element is on line 3) and for
1409
+ # ruby <= 1.9 it seems to get created after the first element, so the array
1410
+ # itself is assigned line 2 (since the first element is on line 2).
1411
+ # This seems to happen since arrays like this are created with a line in
1412
+ # ruby_parser.yy like `result = s(:array, val[0])`. So, the array is not
1413
+ # created by itself. The creation of the array itself is deferred until there
1414
+ # is an element to create it with. That seems to mess up line numbers
1415
+ # for the array. Luckily, the arary elements all seemt to get the correct
1416
+ # line number.
1417
+ start_line = self.class.to_s =~ /1[89]/ ? 2 : 3
1418
+ rb = "[\n'a',\n'b']\n1"
1419
+ pt = s(:block,
1420
+ s(:array,
1421
+ s(:str, "a").line(2),
1422
+ s(:str, "b").line(3)).line(start_line),
1423
+ s(:lit, 1).line(4))
1424
+ assert_parse rb, pt
1425
+ end
1426
+
1427
+ def test_non_interpolated_word_array_line_breaks
1406
1428
 
1407
1429
  rb = "%w(\na\nb\n)\n1"
1408
1430
  pt = s(:block,
@@ -1410,7 +1432,17 @@ module TestRubyParserShared
1410
1432
  s(:str, "a").line(2),
1411
1433
  s(:str, "b").line(3)).line(1),
1412
1434
  s(:lit, 1).line(5))
1435
+ assert_parse rb, pt
1436
+ end
1437
+
1438
+ def test_interpolated_word_array_line_breaks
1413
1439
 
1440
+ rb = "%W(\na\nb\n)\n1"
1441
+ pt = s(:block,
1442
+ s(:array,
1443
+ s(:str, "a").line(2),
1444
+ s(:str, "b").line(3)).line(1),
1445
+ s(:lit, 1).line(5))
1414
1446
  assert_parse rb, pt
1415
1447
  end
1416
1448
 
@@ -2187,6 +2219,28 @@ module TestRubyParserShared19to22
2187
2219
  end
2188
2220
 
2189
2221
  module TestRubyParserShared20to22
2222
+ def test_non_interpolated_symbol_array_line_breaks
2223
+
2224
+ rb = "%i(\na\nb\n)\n1"
2225
+ pt = s(:block,
2226
+ s(:array,
2227
+ s(:lit, :a).line(2),
2228
+ s(:lit, :b).line(3)).line(1),
2229
+ s(:lit, 1).line(5))
2230
+ assert_parse rb, pt
2231
+ end
2232
+
2233
+ def test_interpolated_symbol_array_line_breaks
2234
+
2235
+ rb = "%I(\na\nb\n)\n1"
2236
+ pt = s(:block,
2237
+ s(:array,
2238
+ s(:lit, :a).line(2),
2239
+ s(:lit, :b).line(3)).line(1),
2240
+ s(:lit, 1).line(5))
2241
+ assert_parse rb, pt
2242
+ end
2243
+
2190
2244
  def test_defs_kwarg
2191
2245
  rb = "def self.a b: 1\nend"
2192
2246
  pt = s(:defs, s(:self), :a, s(:args, s(:kwarg, :b, s(:lit, 1))), s(:nil))
@@ -3504,8 +3558,47 @@ class TestRuby23Parser < RubyParserTestCase
3504
3558
 
3505
3559
  assert_parse rb, pt
3506
3560
  end
3507
- end
3508
3561
 
3562
+ def test_ruby21_numbers
3563
+ rb = "[1i, 2r, 3ri]"
3564
+ pt = s(:array, s(:lit, Complex(0, 1)), s(:lit, Rational(2)), s(:lit, Complex(0, Rational(3))))
3565
+
3566
+ assert_parse rb, pt
3567
+ end
3568
+
3569
+ def test_float_with_if_modifier
3570
+ rb = "1.0if true"
3571
+ pt = s(:if, s(:true), s(:lit, 1.0), nil)
3572
+
3573
+ assert_parse rb, pt
3574
+ end
3575
+
3576
+ def test_integer_with_if_modifier
3577
+ rb = "1_234if true"
3578
+ pt = s(:if, s(:true), s(:lit, 1234), nil)
3579
+
3580
+ assert_parse rb, pt
3581
+ end
3582
+
3583
+ def test_slashy_newlines_within_string
3584
+ rb = %(puts "hello\\
3585
+ my\\
3586
+ dear\\
3587
+ friend"
3588
+
3589
+ a + b
3590
+ )
3591
+
3592
+ pt = s(:block,
3593
+ s(:call, nil, :puts, s(:str, "hello my dear friend").line(1)).line(1),
3594
+ s(:call, s(:call, nil, :a).line(6),
3595
+ :+,
3596
+ s(:call, nil, :b).line(6)).line(6)
3597
+ ).line(1)
3598
+
3599
+ assert_parse rb, pt
3600
+ end
3601
+ end
3509
3602
 
3510
3603
  [18, 19, 20, 21, 22, 23].each do |v|
3511
3604
  describe "block args arity #{v}" do
@@ -182,7 +182,7 @@ class TestEnvironment < Minitest::Test
182
182
 
183
183
  def test_var_scope_static
184
184
  @env.extend
185
- assert_equal nil, @env[:blah]
185
+ assert_nil @env[:blah]
186
186
  @env.unextend
187
187
  assert_equal 42, @env[:blah]
188
188
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.2
4
+ version: 3.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -10,9 +10,9 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPjCCAiagAwIBAgIBAzANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE1MDkxOTIwNTEyMloXDTE2MDkxODIwNTEyMlowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTE2MDkyNjAxNTczNVoXDTE3MDkyNjAxNTczNVowRTETMBEGA1UE
16
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -20,16 +20,17 @@ cert_chain:
20
20
  oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
21
21
  GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
22
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
- gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
- HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
25
- AQB+Hx8xUgrpZa4P8H8gR8zme5kISwQrG80MbpqJV6/G3/ZicRFhN5sjwu0uHGue
26
- bd9Cymf6oIRwHVarJux2M32T6bL07Hmi07w2QaPc3MnMKB/D46SRZ2JSSGPFRBTc
27
- SilobMRoGs/7B15uGFUEnNrCB/ltMqhwwSx1r++UQPfeySHEV9uqu03E5Vb7J37O
28
- 2Er6PLXHRiYsIycD1LkMi6YnixdITRHmrqJYE2rsjaIfpIehiusVAPHkNf7qbpHq
29
- qx3h45R1CAsObX0SQDIT+rRbQrtKz1GHIZTOFYvEJjUY1XmRTZupD3CJ8Q7sDqSy
30
- NLq5jm1fq6Y9Uolu3RJbmycf
23
+ gBEfoTEGr7Zii72cx+sCAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
+ sDAdBgNVHQ4EFgQUR8V72Z3+v+2P9abCnL4wjx32T+EwIwYDVR0RBBwwGoEYcnlh
25
+ bmQtcnVieUB6ZW5zcGlkZXIuY29tMCMGA1UdEgQcMBqBGHJ5YW5kLXJ1YnlAemVu
26
+ c3BpZGVyLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAIGzgp0aZ2W9+v96ujmBcQHoC
27
+ buy0iU68MVj2VlxMyfr1KPZIh1OyhU4UO4zrkREcH8ML70v9cYHNvOd9oynRHnvC
28
+ l2tj/fD3YJ0AEkJxGrYwRWQmvMfC4bJ02bC1+rVOUIXXKp3+cUmiN4sTniof8VFo
29
+ bo/YYP4c7erpERa+9hrqygg6WQbJlk2YRlH3JXPFjmu869i2dcbR5ZLOAeEy+axH
30
+ E4oJcnPkJAr0rw504JGtlZtONZQblwmRJOIdXzolaE3NRGUzGVOUSptZppAKiavY
31
+ fO6tdKQc/5RfA8oQEkg8hrxA5PQSz4TOFJGLpFvIapEk6tMruQ0bHgkhr9auXg==
31
32
  -----END CERTIFICATE-----
32
- date: 2016-05-05 00:00:00.000000000 Z
33
+ date: 2016-10-09 00:00:00.000000000 Z
33
34
  dependencies:
34
35
  - !ruby/object:Gem::Dependency
35
36
  name: sexp_processor
@@ -46,61 +47,61 @@ dependencies:
46
47
  - !ruby/object:Gem::Version
47
48
  version: '4.1'
48
49
  - !ruby/object:Gem::Dependency
49
- name: rdoc
50
+ name: rake
50
51
  requirement: !ruby/object:Gem::Requirement
51
52
  requirements:
52
- - - ~>
53
+ - - <
53
54
  - !ruby/object:Gem::Version
54
- version: '4.0'
55
+ version: '11'
55
56
  type: :development
56
57
  prerelease: false
57
58
  version_requirements: !ruby/object:Gem::Requirement
58
59
  requirements:
59
- - - ~>
60
+ - - <
60
61
  - !ruby/object:Gem::Version
61
- version: '4.0'
62
+ version: '11'
62
63
  - !ruby/object:Gem::Dependency
63
- name: racc
64
+ name: oedipus_lex
64
65
  requirement: !ruby/object:Gem::Requirement
65
66
  requirements:
66
67
  - - ~>
67
68
  - !ruby/object:Gem::Version
68
- version: 1.4.6
69
+ version: '2.1'
69
70
  type: :development
70
71
  prerelease: false
71
72
  version_requirements: !ruby/object:Gem::Requirement
72
73
  requirements:
73
74
  - - ~>
74
75
  - !ruby/object:Gem::Version
75
- version: 1.4.6
76
+ version: '2.1'
76
77
  - !ruby/object:Gem::Dependency
77
- name: rake
78
+ name: rdoc
78
79
  requirement: !ruby/object:Gem::Requirement
79
80
  requirements:
80
- - - <
81
+ - - ~>
81
82
  - !ruby/object:Gem::Version
82
- version: '11'
83
+ version: '4.0'
83
84
  type: :development
84
85
  prerelease: false
85
86
  version_requirements: !ruby/object:Gem::Requirement
86
87
  requirements:
87
- - - <
88
+ - - ~>
88
89
  - !ruby/object:Gem::Version
89
- version: '11'
90
+ version: '4.0'
90
91
  - !ruby/object:Gem::Dependency
91
- name: oedipus_lex
92
+ name: racc
92
93
  requirement: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - ~>
95
96
  - !ruby/object:Gem::Version
96
- version: '2.1'
97
+ version: 1.4.6
97
98
  type: :development
98
99
  prerelease: false
99
100
  version_requirements: !ruby/object:Gem::Requirement
100
101
  requirements:
101
102
  - - ~>
102
103
  - !ruby/object:Gem::Version
103
- version: '2.1'
104
+ version: 1.4.6
104
105
  - !ruby/object:Gem::Dependency
105
106
  name: hoe
106
107
  requirement: !ruby/object:Gem::Requirement