import scala.collection.mutable.ArrayBuffer import scala.util.matching.Regex import scala.io.Source class Parse() { def parsing(grammar:Array[String]) = grammar foreach { gram => pattern findAllMatchIn gram foreach { iterator => iterator.subgroups foreach splt } } private def splt(str:String) = { if (Character.isUpperCase(str.charAt(0))) str.split("") foreach { letter => result.append("<1, " + letter + ">" ) } else result.append("<0, " + str + ">") } val result = new ArrayBuffer[String]() private val pattern = new Regex("([0-9a-z]+)([A-Z]+)([0-9a-z]+)$") } object Main extends App { val parser = new Parse Source.fromFile("./src/input.txt").getLines() foreach { line => parser.parsing(line.split("\\::=")) } parser.result foreach println }