こんな感じで、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)
メソッドの中身が長すぎるのは良くないらしい。