// Copyright (C) 2025 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. @top Program { expression* } expression { String | Number | Boolean | Keyword | Function | MacroVariable | Identifier } Keyword { @specialize } Function { @specialize } Boolean { @specialize } @tokens { String { "'" (![\'\\] | "\\" _)* "'" } Number { $[0-9]+ } MacroVariable { "$" $[$0-9a-zA-Z_]* } LineComment { "--" ![\n]* } Identifier { $[a-zA-Z_] $[$0-9a-zA-Z_.]* } space { $[ \t\n\r]+ } "(" ")" } @skip { space | LineComment } @detectDelim //! To build, run: //! lezer-generator ui/src/base/perfetto_sql_lang/perfetto_sql.grammar -o ui/src/base/perfetto_sql_lang/perfetto_sql.grammar.js