this repo has no description
www.jonmsterling.com/01HC/
1// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers
2//
3// SPDX-License-Identifier: MPL-2.0
4
5import Foundation
6
7enum TheoryBlock: Grammar {
8 static let kind = SyntaxTreeKind(name: "theory.block")
9 static let kinds = [kind]
10
11 static func precondition(_ parser: inout Parser) -> Bool {
12 parser.isAt(kind: .keyword(.where))
13 }
14
15 static func inside(_ parser: inout Parser, recovery: Set<TokenKind>) -> ParseResult {
16 parser.expect(kind: .keyword(.where), metadata: TokenMetadata(semanticTokenType: .keyword), recovery: recovery.union([.keyword(.theory), .blockComment(terminated: true), .lineComment]))
17
18 if parser.eat(kind: .blockBegin, metadata: nil) {
19 parser.eatTrivia()
20 while parser.eat(kind: .blockSep, metadata: nil) {
21 Declaration.parse(&parser, recovery: recovery.union([.blockSep, .blockEnd]))
22 parser.eatTrivia()
23 }
24 _ = parser.eat(kind: .blockEnd, metadata: nil)
25 }
26
27 var metadata = SyntaxTreeMetadata()
28 metadata.delimitedFoldingRangeKind = .region
29
30 return ParseResult(kind: kind, metadata: metadata)
31 }
32}
33
34extension SyntaxView<TheoryBlock> {
35 var declarations: [SyntaxView<Declaration>] {
36 matchingSubviews()
37 }
38}