UNPKG

@specs-feup/clava

Version:

A C/C++ source-to-source compiler written in Typescript

28 lines (21 loc) 758 B
import AbstractDumper from "./AbstractDumper.js"; import { spawn } from "child_process"; export default class ClangJSONDumper implements AbstractDumper { async dump(): Promise<Record<string, unknown>> { const child = spawn( "clang -Xclang -ast-dump=json CxxTestSources/test1/main.cpp", { stdio: ["ignore", "pipe", "inherit"], windowsHide: true, shell: true } ); child.on("error", (error) => { console.error(`Error: ${error.message}`); }); child.on("close", (code) => { console.log(`Parsing complete. Process exited with code ${String(code)}`); }); let data = ""; for await (const chunk of child.stdout) { data += chunk; } return JSON.parse(data) as Record<string, unknown>; } }