26 lines
621 B
TypeScript
26 lines
621 B
TypeScript
![]() |
import { recast } from "./recast";
|
||
|
import { Program } from "./abstractSyntaxTree";
|
||
|
import { abstractSyntaxTree } from "./abstractSyntaxTree";
|
||
|
import { lexer } from "./tokeniser";
|
||
|
import { Token } from "./tokeniser";
|
||
|
|
||
|
describe("recast", () => {
|
||
|
it("recasts a simple program", () => {
|
||
|
const code = "1 + 2";
|
||
|
const {ast, tokens } = code2ast(code);
|
||
|
const recasted = recast(ast);
|
||
|
expect(recasted).toBe(code);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// helpers
|
||
|
|
||
|
function code2ast(code: string): { ast: Program; tokens: Token[]} {
|
||
|
const tokens = lexer(code);
|
||
|
const ast = abstractSyntaxTree(tokens);
|
||
|
return {
|
||
|
ast,
|
||
|
tokens
|
||
|
}
|
||
|
}
|