// comprime ou descomprime uma cadeia binária // exemplo c1111001110 é codificada como di4o2i210 // ou di4o2i210 é decodificada como c1111001110 funcao = "c" im:image {return im} / "d" cd:code {return cd} // Compressao de cadeia image = p:pixel* { return "d"+p.join("");} pixel = o8 / o4 / o2/ "0" / i8 / i4 / i2 / "1" i2 = "11" {return "i2"} i4 = i2 i2 {return "i4"} i8 = i4 i4 {return "i8"} o2 = "00" {return "o2"} o4 = o2 o2 {return "o4"} o8 = o4 o4 {return "o8"} // Descompressao code = d:dict* { return "c"+d.join("");} dict = "o8" {return "00000000"} / "o4" {return "0000"} / "o2" {return "00"} / "0" / "i8" {return "11111111"} / "i4" {return "1111"} / "i2" {return "11"} / "1"