// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers // // SPDX-License-Identifier: MPL-2.0 import Foundation enum TheoryBlock: Grammar { static let kind = SyntaxTreeKind(name: "theory.block") static let kinds = [kind] static func before(_ parser: inout Parser) -> Bool { parser.isAt(kind: .keyword(.where)) } static func inside(_ parser: inout Parser) -> ParseResult { parser.expect(kind: .keyword(.where), metadata: TokenMetadata(semanticTokenType: .keyword)) parser.eatTrivia() if parser.eat(kind: .blockBegin, metadata: nil) { parser.eatTrivia() while Declaration.tryParse(&parser) { parser.eatTrivia() if parser.eat(kind: .blockSep, metadata: nil) { parser.eatTrivia() continue } else { break } } _ = parser.eat(kind: .blockEnd, metadata: nil) } var metadata = SyntaxTreeMetadata() metadata.delimitedFoldingRangeKind = .region return ParseResult(kind: kind, metadata: metadata) } } extension SyntaxView { var declarations: [SyntaxView] { matchingSubviews() } }