Type 0 以下の句構造規則を与えられるとひたすらその言語に含まれる文を生成していくプログラムを Scala で書いてみました。 キューを用意して幅優先探索の要領で、 - キューには最初はスタートシンボルだけ入っている - キューから1つとって句構造規則で置き換えたものをまたキューに突っ込む - キューから取ったものが文の形をしていれば(終端記号だけで構成されていれば)それを結果とする というのを繰り返していきます。 import scala.collection.mutable._ import java.util.NoSuchElementException abstract class V case class NonTerminal(sym: Symbol) extends V { override def toString = sym.name} case class Term