bradengroom/scala-automata-library

implement CFG.union(CFG)

Closed this issue · 1 comments

implement CFG.union(CFG)
def union(cfg: CFG): CFG = {
    new CFG("S",
        this.rules.map(rule => {
            (rule._1 + "X", rule._2.map(result => {
                result match {
                    case string: String => string + "X"
                    case char: Char => char
                }
        }))
    }) ++
    cfg.rules.map(rule => {
        (rule._1 + "Y", rule._2.map(result => {
            result match {
                case string: String => string + "Y"
                case char: Char => char
            }
        }))
    }) +
    (("S", List(this.startVariable + "X"))) +
    (("S", List(cfg.startVariable + "Y"))))
}

def |(cfg: CFG) = this.union(cfg)