q-sharp-ts
Version:
A parser for Q# language features, implemented in TypeScript.
40 lines (39 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var lexer_js_1 = require("./lexer.js");
var parser_js_1 = require("./parser.js");
var fs = require("fs");
var total = 0;
// Replace me!
var baseDir = '..';
// Try a few scripts!
// const q_sharp = fs.readFileSync(baseDir + '/spec/q-sharp/demo.qs', 'utf8'); // Fully parses and compiles...
// const q_sharp = fs.readFileSync(baseDir + '/spec/q-sharp/bell-states.qs', 'utf8'); // Fully parses and partially compiles...
var q_sharp = fs.readFileSync(baseDir + '/spec/q-sharp/grover.qs', 'utf8'); // Fully parses and partially compiles...
console.log(q_sharp);
var startTime = performance.now();
var lexer = new lexer_js_1.default(q_sharp, 0);
var tokens = lexer.lex();
var endTime = performance.now();
total += endTime - startTime;
console.log("Lexing took ".concat(endTime - startTime, " milliseconds."));
for (var i = 0; i < tokens.length; i++) {
console.log(tokens[i]);
}
startTime = performance.now();
var parser = new parser_js_1.default(tokens, false, baseDir + '/spec/q-sharp/');
var ast = parser.parse();
endTime = performance.now();
total += endTime - startTime;
console.log("Parsing took ".concat(endTime - startTime, " milliseconds."));
for (var i = 0; i < ast.length; i++) {
console.log(ast[i]);
if (ast[i]['val'] && ast[i]['val']['elements']) {
for (var j = 0; j < ast[i]['val']['elements'].length; j++) {
console.log(ast[i]['val']['elements'][j]);
}
}
console.log(JSON.stringify(ast[i]));
console.log('\n');
}
console.log("Total time: ".concat(total, " milliseconds."));