types = literal / sentence literal = boolean / integer / string / array boolean = "true" { return true; } / "false" { return false; } integer "integer" = digits:[0-9]+ { return parseInt(digits.join(""), 10);} string = '"' chars:conteudoString* '"' {return chars.join("");} conteudoString = chars:(!'"' .) {return text();} array = "[" "]" / "[" first:types rest:("," types)* "]" { return (first + ",").concat( rest.map( function(e){ return e[1]; }))} sentence = st:(word sp?)* {return text()} word = lett:lett+ {return lett.join("")} lett = [a-zA-Z] sp = " "