match lezer API

This commit is contained in:
Chris Wanstrath 2025-11-25 16:57:18 -08:00 committed by Chris Wanstrath
parent 1ea130f8e0
commit f160093c4d
2 changed files with 15 additions and 2 deletions

View File

@ -100,7 +100,7 @@ export function parseFile(path: string, globals?: Record<string, any>): SyntaxNo
return parseCode(code, globals) return parseCode(code, globals)
} }
export function parseCode(code: string, globals?: Record<string, any>): SyntaxNode { export function parseCode(code: string, globals?: Record<string, any>): Tree {
const oldGlobals = [...parserGlobals] const oldGlobals = [...parserGlobals]
const globalNames = [...Object.keys(prelude), ...(globals ? Object.keys(globals) : [])] const globalNames = [...Object.keys(prelude), ...(globals ? Object.keys(globals) : [])]
@ -108,5 +108,5 @@ export function parseCode(code: string, globals?: Record<string, any>): SyntaxNo
const result = parse(code) const result = parse(code)
setParserGlobals(oldGlobals) setParserGlobals(oldGlobals)
return result return new Tree(result)
} }

View File

@ -114,6 +114,19 @@ export const operators: Record<string, any> = {
export class Tree { export class Tree {
constructor(public topNode: SyntaxNode) { } constructor(public topNode: SyntaxNode) { }
get length(): number {
return this.topNode.to
}
cursor() {
return {
type: this.topNode.type,
from: this.topNode.from,
to: this.topNode.to,
node: this.topNode,
}
}
} }
// TODO: TEMPORARY SHIM // TODO: TEMPORARY SHIM