前回のあらすじ Ruby Parser開発日誌 (6) - parse.yのMaintainabilityの話 - かねこにっき Rubyのparserの複雑さを分析し、parserとlexerの密結合を解消に挑戦しました。Practical LR Parser Generationという論文を参考に条件付き生成規則をLramaに実装し、Rubyのparserに適用してみましたが一部でconflictが発生してしまいました。 今回は引き続きdoを中心に密結合を解消できないか考えていきましょう。 問題を整理する doについて理解を深める doの何が問題なのかもう一度考えてみましょう。Rubyにおいてdoは複数の箇所で使われます。 # lambdaのdo (keyword_do_LAMBDA) -> do e1 end # whileのdo (keyword_do_cond) while tr