読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

BF->Scalaのトランスレータを実行したけど失敗してる

Brainf*ck Scala

こんな感じで、BF->Scalaのトランスレータを作成した。

とりあえずHello, worldを出力するBFファイルのトランスレートには成功してるが、 ↓のようなAAを出力するBFをScalaでトランスレートすると、エラーが出た。

              $$                                                $$    $$    .d$$$$$$$b.
              $b        d$P                                     $$   $$    .d$       Y$b
.$$$$$$b.     $$        d$P                                     $$  $$                Y$$
dY$P"         $$                                                $$ $$                d$$
Y$$b          $$ d$b    $$$  .d$$$b.    .d$$$$$b.   .d d$b d$b  $$$$               d$$
 ".$$$$$$.    $$d"  $b  $$$ d$$P""$$b  d$$"    $$   $$"  $$  $b $$ $$            d$$
       Y$$b   $$    $$  $$$ $$$   $$$  $$$     $$   $$   $$  $$ $$  $$         d$$
        $$$   $$    $$  $$$ Y$$b .$$$  $$$$$$$$$"   $$   $$  $$ $$   $$      d$$
Y$b    d$$P   $$    $$  $$$  "Y$$$$$$  q$$"         $$   $$  $$ $$    $$   d$$
"$$$$$$$$"    $$    $$  $$$       $$$   "$$$$$$$"   $$   $$  $$ $$     $$  $$$$$$$$$$$$$$$
                             Y$b d$$P
                              "Y$$P"

13万行のメッセージの最後に以下のようなエラーを確認した。

uncaught exception during compilation: java.lang.RuntimeException
error: java.lang.RuntimeException: Method code too large!
    at scala.tools.asm.MethodWriter.getSize(MethodWriter.java:1856)
    at scala.tools.asm.ClassWriter.toByteArray(ClassWriter.java:792)
    at scala.tools.nsc.backend.jvm.GenASM$JBuilder.writeIfNotTooBig(GenASM.scala:457)
    at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genClass(GenASM.scala:1402)
    at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.run(GenASM.scala:119)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.RuntimeException: Method code too large!
    at scala.tools.asm.MethodWriter.getSize(MethodWriter.java:1856)
    at scala.tools.asm.ClassWriter.toByteArray(ClassWriter.java:792)
    at scala.tools.nsc.backend.jvm.GenASM$JBuilder.writeIfNotTooBig(GenASM.scala:457)
    at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genClass(GenASM.scala:1402)
    at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.run(GenASM.scala:119)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

メソッドの中身が長すぎるのは良くないらしい。