{"url":"https://gfx.hatenadiary.org/entry/20130901/1378020614","title":" Ruby\u306f\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306bRuby lexer/parser\u304c\u3042\u308b\u306e\u304c\u3044\u3044","provider_url":"https://hatena.blog","width":"100%","height":"190","version":"1.0","published":"2013-09-01 16:30:14","type":"rich","image_url":null,"author_name":"gfx","blog_title":"Islands in the byte stream (legacy)","description":"\u3053\u308c\u306f\u7279\u7b46\u3059\u3079\u304d\u7279\u5fb4\u3060\u3068\u601d\u3046\u3002\u30d2\u30a2\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3082\u3061\u3083\u3093\u3068\u51e6\u7406\u3067\u304d\u308b\u3002 require \"ripper\" require \"pp\" src = <<'END' def foo p [<<-\"A\", <<-\"B\"] Hello, %{\"Ruby\"} world! A one, two three B end END pp Ripper.lex(src) \u7d50\u679c: [[[1, 0], :on_kw, \"def\"], [[1, 3], :on_sp, \" \"], [[1, 4], :on_ident, \"foo\"], [[1, 7], :on_nl, \"\\n\"], [[2, 0], :on_sp, \" \u2026","blog_url":"https://gfx.hatenadiary.org/","author_url":"https://blog.hatena.ne.jp/gfx/","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgfx.hatenadiary.org%2Fentry%2F20130901%2F1378020614\" title=\" Ruby\u306f\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306bRuby lexer/parser\u304c\u3042\u308b\u306e\u304c\u3044\u3044 - Islands in the byte stream (legacy)\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","provider_name":"Hatena Blog","categories":[]}