* ext/ripper/eventids2.c (ripper_init_eventids2): ripper support for
  new literals, tRATIONAL and tIMAGINARY.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2013-08-02 14:13:20 +00:00
Родитель ba95b9787d
Коммит 856a9afb98
3 изменённых файлов: 36 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Fri Aug 2 23:13:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/ripper/eventids2.c (ripper_init_eventids2): ripper support for
new literals, tRATIONAL and tIMAGINARY.
Fri Aug 2 18:33:28 2013 Tanaka Akira <akr@fsij.org>
* bignum.c (big2str_karatsuba): Reduce power_level more than one at

Просмотреть файл

@ -19,6 +19,7 @@ static ID ripper_id_embvar;
static ID ripper_id_float;
static ID ripper_id_gvar;
static ID ripper_id_ident;
static ID ripper_id_imaginary;
static ID ripper_id_int;
static ID ripper_id_ivar;
static ID ripper_id_kw;
@ -41,6 +42,7 @@ static ID ripper_id_qwords_beg;
static ID ripper_id_qsymbols_beg;
static ID ripper_id_symbols_beg;
static ID ripper_id_words_sep;
static ID ripper_id_rational;
static ID ripper_id_regexp_beg;
static ID ripper_id_regexp_end;
static ID ripper_id_label;
@ -74,6 +76,7 @@ ripper_init_eventids2(void)
ripper_id_float = rb_intern_const("on_float");
ripper_id_gvar = rb_intern_const("on_gvar");
ripper_id_ident = rb_intern_const("on_ident");
ripper_id_imaginary = rb_intern_const("on_imaginary");
ripper_id_int = rb_intern_const("on_int");
ripper_id_ivar = rb_intern_const("on_ivar");
ripper_id_kw = rb_intern_const("on_kw");
@ -96,6 +99,7 @@ ripper_init_eventids2(void)
ripper_id_qsymbols_beg = rb_intern_const("on_qsymbols_beg");
ripper_id_symbols_beg = rb_intern_const("on_symbols_beg");
ripper_id_words_sep = rb_intern_const("on_words_sep");
ripper_id_rational = rb_intern_const("on_rational");
ripper_id_regexp_beg = rb_intern_const("on_regexp_beg");
ripper_id_regexp_end = rb_intern_const("on_regexp_end");
ripper_id_label = rb_intern_const("on_label");
@ -209,6 +213,7 @@ static const struct token_assoc {
{tGEQ, &ripper_id_op},
{tGVAR, &ripper_id_gvar},
{tIDENTIFIER, &ripper_id_ident},
{tIMAGINARY, &ripper_id_imaginary},
{tINTEGER, &ripper_id_int},
{tIVAR, &ripper_id_ivar},
{tLBRACE, &ripper_id_lbrace},
@ -234,6 +239,7 @@ static const struct token_assoc {
{tQWORDS_BEG, &ripper_id_qwords_beg},
{tQSYMBOLS_BEG, &ripper_id_qsymbols_beg},
{tSYMBOLS_BEG, &ripper_id_symbols_beg},
{tRATIONAL, &ripper_id_rational},
{tREGEXP_BEG, &ripper_id_regexp_beg},
{tREGEXP_END, &ripper_id_regexp_end},
{tRPAREN, &ripper_id_rparen},

Просмотреть файл

@ -87,6 +87,17 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase
[[1, 1], :on_tstring_content, "\u3042\n\u3044"],
[[2, 3], :on_tstring_end, "'"]],
Ripper.lex("'\u3042\n\u3044'")
assert_equal [[[1, 0], :on_rational, "1r"],
[[1, 2], :on_nl, "\n"],
[[2, 0], :on_imaginary, "2i"],
[[2, 2], :on_nl, "\n"],
[[3, 0], :on_imaginary, "3ri"],
[[3, 3], :on_nl, "\n"],
[[4, 0], :on_rational, "4.2r"],
[[4, 4], :on_nl, "\n"],
[[5, 0], :on_imaginary, "5.6ri"],
],
Ripper.lex("1r\n2i\n3ri\n4.2r\n5.6ri")
end
def test_location
@ -264,6 +275,13 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase
scan('float', 'm(a,b,1.0,c,d)')
end
def test_rational
assert_equal [],
scan('rational', '')
assert_equal ['1r', '10r', '10.1r'],
scan('rational', 'm(1r,10r,10.1r)')
end
def test_gvar
assert_equal [],
scan('gvar', '')
@ -286,6 +304,13 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase
scan('ident', 'm(lvar, @ivar, @@cvar, $gvar)')
end
def test_imaginary
assert_equal [],
scan('imaginary', '')
assert_equal ['1i', '10ri', '10.0i', '10.1ri'],
scan('imaginary', 'm(1i,10ri,10.0i,10.1ri)')
end
def test_int
assert_equal [],
scan('int', '')