タグ

2022年6月19日のブックマーク (1件)

  • 32bit/64bit環境を判別するRubyコード + 解説

    注意事項 おそらくCRuby (いわゆるMRI) 限定です。3.1.2で確認しています。 環境構築が面倒だったため、実際には32bit環境でテストしていません。意図通りに動かなかったらすみません…… 以下解説 doキーワードの多重性 RubyではLRパーサージェネレーターであるBisonを使いながらも、LR(1)とは思えない高度な構文をパースさせるために、字句解析器が非常に複雑な状態管理を行っています。見た目が同じトークンでも、Bisonに渡すときには状態に応じて異なるトークンとして認識させることがあります。 doキーワードもそのような多重性をもつトークンの例で、構文解析器からは以下の5種類のトークンとしてあらわれます: 通常の識別子 foo.do ラムダ式のdo-endブロック -> do end 真のdo-endブロック f g do end 偽のdo-endブロック f do end

    32bit/64bit環境を判別するRubyコード + 解説
    katsyoshi
    katsyoshi 2022/06/19
    おもしろい