// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers // // SPDX-License-Identifier: MPL-2.0 import Foundation enum ImportName: Grammar { static let kind = SyntaxTreeKind(name: "import.name") static let kinds = [kind] static func before(_ parser: inout Parser) -> Bool { parser.isAt(kind: .identifier) } static func inside(_ parser: inout Parser) -> ParseResult { parser.expect(kind: .identifier, metadata: TokenMetadata(semanticTokenType: .namespace)) return ParseResult(kind: Self.kind) } } enum Import: Grammar { static let kind = SyntaxTreeKind(name: "import") static let kinds = [kind] static func before(_ parser: inout Parser) -> Bool { parser.isAt(kind: .keyword(.import)) } static func inside(_ parser: inout Parser) -> ParseResult { parser.expect(kind: .keyword(.import), metadata: TokenMetadata(semanticTokenType: .keyword)) parser.eatTrivia() ImportName.parse(&parser) return ParseResult(kind: Self.kind) } } extension SyntaxView { var text: String { cursor.node.text } } extension SyntaxView { var name: SyntaxView? { matchingSubview() } }