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 before(_ parser: inout Parser) -> Bool {
12 parser.isAt(kind: .keyword(.where))
13 }
14
15 static func inside(_ parser: inout Parser) -> ParseResult {
16 parser.expect(kind: .keyword(.where), metadata: TokenMetadata(semanticTokenType: .keyword))
17
18 parser.eatTrivia()
19 if parser.eat(kind: .blockBegin, metadata: nil) {
20 parser.eatTrivia()
21
22 while Declaration.tryParse(&parser) {
23 parser.eatTrivia()
24 if parser.eat(kind: .blockSep, metadata: nil) {
25 parser.eatTrivia()
26 continue
27 } else {
28 break
29 }
30 }
31
32 _ = parser.eat(kind: .blockEnd, metadata: nil)
33 }
34
35 var metadata = SyntaxTreeMetadata()
36 metadata.delimitedFoldingRangeKind = .region
37
38 return ParseResult(kind: kind, metadata: metadata)
39 }
40}
41
42extension SyntaxView<TheoryBlock> {
43 var declarations: [SyntaxView<Declaration>] {
44 matchingSubviews()
45 }
46}