Factor Tree-Sitter Extensions
Don't build. Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
This commit is contained in:
+8
-2
@@ -39,11 +39,17 @@ let package = Package(
|
|||||||
.product(name: "SwiftTreeSitter", package: "swift-tree-sitter"),
|
.product(name: "SwiftTreeSitter", package: "swift-tree-sitter"),
|
||||||
.product(name: "SwiftTreeSitterLayer", package: "swift-tree-sitter"),
|
.product(name: "SwiftTreeSitterLayer", package: "swift-tree-sitter"),
|
||||||
.product(name: "TreeSitterP4", package: "tree-sitter-p4"),
|
.product(name: "TreeSitterP4", package: "tree-sitter-p4"),
|
||||||
|
.target(name: "TreeSitterExtensions"),
|
||||||
.target(name: "P4"),
|
.target(name: "P4"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
// Targets are the basic building blocks of a package, defining a module or a test suite.
|
.target(
|
||||||
// Targets can depend on other targets in this package and products from dependencies.
|
name: "TreeSitterExtensions",
|
||||||
|
dependencies: [
|
||||||
|
.product(name: "SwiftTreeSitter", package: "swift-tree-sitter"),
|
||||||
|
.product(name: "SwiftTreeSitterLayer", package: "swift-tree-sitter"),
|
||||||
|
],
|
||||||
|
),
|
||||||
.target(
|
.target(
|
||||||
name: "P4",
|
name: "P4",
|
||||||
dependencies: ["P4Macros"]
|
dependencies: ["P4Macros"]
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
// p4rse, Copyright 2026, Will Hawkins
|
||||||
|
//
|
||||||
|
// This file is part of p4rse.
|
||||||
|
|
||||||
|
// This file is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import SwiftTreeSitter
|
||||||
|
|
||||||
|
extension MutableTree {
|
||||||
|
public func isError(lang: Language) -> Bool {
|
||||||
|
guard
|
||||||
|
let parser_error_query = try? SwiftTreeSitter.Query(
|
||||||
|
language: lang,
|
||||||
|
data: String(
|
||||||
|
"(ERROR)"
|
||||||
|
).data(using: String.Encoding.utf8)!)
|
||||||
|
else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
let error_qr = parser_error_query.execute(in: self)
|
||||||
|
for _ in error_qr {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user