program = code:code+ { return code.join(""); } code = s:skipConsole { return s; } / c:. { return c; } // Add "error" and/or "warn" if needed func = f:("log" / "info" / "debug" / "propertyAccess" ) { return f; } console = head:"stateMgmtConsole" dot:(_ "." _) func:func _ { return head + '.' + func } skipConsole = console:console "(" c:(!")" c:logChar { return c; })* ")" ";"? { return ``} logChar = "(" c:logChar* ")" { return `(${c.join("")})`; } / "/*" c:logChar* "*/" { return `**${c.join("")}**`; } / !")"!"*/" c:. { return c; } _ "whitespace" = [ ' '\t\n\r]*