* fmt Signed-off-by: Jess Frazelle <github@jessfraz.com> * some fixups for errors Signed-off-by: Jess Frazelle <github@jessfraz.com> * some fixups for errors Signed-off-by: Jess Frazelle <github@jessfraz.com> * bump version Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix tsc Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { Program } from './abstractSyntaxTreeTypes'
|
|
import { parse_js } from '../wasm-lib/pkg/wasm_lib'
|
|
import { initPromise } from './rust'
|
|
import { Token } from './tokeniser'
|
|
import { KCLError } from './errors'
|
|
import { KclError as RustKclError } from '../wasm-lib/kcl/bindings/KclError'
|
|
|
|
export const rangeTypeFix = (ranges: number[][]): [number, number][] =>
|
|
ranges.map(([start, end]) => [start, end])
|
|
|
|
export const parser_wasm = (code: string): Program => {
|
|
try {
|
|
const program: Program = parse_js(code)
|
|
return program
|
|
} catch (e: any) {
|
|
const parsed: RustKclError = JSON.parse(e.toString())
|
|
const kclError = new KCLError(
|
|
parsed.kind,
|
|
parsed.msg,
|
|
rangeTypeFix(parsed.sourceRanges)
|
|
)
|
|
|
|
console.log(kclError)
|
|
throw kclError
|
|
}
|
|
}
|
|
|
|
export async function asyncParser(code: string): Promise<Program> {
|
|
await initPromise
|
|
try {
|
|
const program: Program = parse_js(code)
|
|
return program
|
|
} catch (e: any) {
|
|
const parsed: RustKclError = JSON.parse(e.toString())
|
|
const kclError = new KCLError(
|
|
parsed.kind,
|
|
parsed.msg,
|
|
rangeTypeFix(parsed.sourceRanges)
|
|
)
|
|
|
|
console.log(kclError)
|
|
throw kclError
|
|
}
|
|
}
|
|
|
|
export function rangeOfToken(token: Token | undefined): [number, number][] {
|
|
return token === undefined ? [] : [[token.start, token.end]]
|
|
}
|