-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.js
More file actions
38 lines (25 loc) · 851 Bytes
/
example.js
File metadata and controls
38 lines (25 loc) · 851 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const { Tokenizer} = require('./src/tokenizer');
const { Parser } = require('./src/parser');
const { Generator } = require('./gen');
const tokenizer = new Tokenizer();
const parser = new Parser();
const generator = new Generator();
const program = `x[y];
`;
console.log('Program: \n\n', program);
console.log('__________________\n');
console.log('Tokens: \n');
tokenizer.init(program);
let token = tokenizer.getNextToken();
while(token != null) {
console.log(token);
token = tokenizer.getNextToken();
}
console.log('__________________\n');
let ast = parser.parse(program);
console.log('AST: \n\n', JSON.stringify(ast, null, 2));
console.log('__________________\n');
let code = generator.generate(ast);
console.log('Generated Code: \n\n', code);
console.log('__________________\n');
console.log('Result: \n\n' + eval(code) + '\n');