UNPKG

q-sharp-ts

Version:

A parser for Q# language features, implemented in TypeScript.

40 lines (39 loc) 1.61 kB
"use strict"; 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."));