1// 2// Copyright (c) 2023 Huawei Device Co., Ltd. 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14program 15 = code:code+ { return code.join(""); } 16 17code 18 = s:( skipProfiler ) { return s; } 19 / c:. { return c; } 20 21profilerCall 22 = f:("begin" / "end") { return f; } 23 24profiler 25 = head:"stateMgmtProfiler" dot:(_ "." _) func:profilerCall _ { return head + '.' + func } 26 27skipProfiler 28 = profiler:profiler "(" c:(!")" c:logChar { return c; })* ")" ";"? { return ``} 29 30logChar 31 = "(" c:logChar* ")" { return `(${c.join("")})`; } 32 / "/*" c:logChar* "*/" { return `**${c.join("")}**`; } 33 / !")"!"*/" c:. { return c; } 34 35_ "whitespace" 36 = [ ' '\t\n\r]*