// 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. import {language} from './language.js'; import {TreeCursor} from '@lezer/common'; // Helper function to pretty-print the CST function printCST(cursor: TreeCursor, source: string, indent = 0) { const nodeName = cursor.name; const nodeText = source.substring(cursor.from, cursor.to); console.log(`${' '.repeat(indent)}${nodeName}: "${nodeText}"`); if (cursor.firstChild()) { do { printCST(cursor, source, indent + 1); } while (cursor.nextSibling()); cursor.parent(); // Important: Move back up to the parent } } describe('perfettoSqlLang', () => { test('simple', () => { const code = 'select * from slice limit 100'; const tree = language.parser.parse(code); const cursor = tree.cursor(); const spec = ['Keyword', 'identifier', 'Keyword', 'identifier']; console.log(printCST(cursor, code), spec); }); });