hdl-js
Version:
Hardware definition language (HDL) and Hardware simulator
95 lines (76 loc) • 1.89 kB
JavaScript
/**
* The MIT License (MIT)
* Copyright (c) 2017-present Dmitry Soshnikov <dmitry.soshnikov@gmail.com>
*/
'use strict';
var parser = require('./parser');
var emulator = require('./emulator/hardware');
var generator = require('./generator');
var HDLClassFactory = emulator.HDLClassFactory;
/**
* An API object for HDL processing.
*/
var hdl = {
/**
* Parser module exposed.
*/
parser: parser,
/**
* Emulator module exposed.
*/
emulator: emulator,
/**
* Code generator module exposed.
*/
generator: generator,
/**
* Parses an HDL string, producing an AST.
*
* @param string hdlCode
*
* an HDL string.
*
* @param Object options
*
* parsing options for this parse call. Default are:
*
* - captureLocations: boolean
* - any other custom options
*
* @return Object AST
*/
parse: function parse(hdlCode, options) {
return parser.parse('' + hdlCode, options);
},
/**
* Facade method; similar to `parse`, but reads a file first.
*/
parseFile: function parseFile(fileName, options) {
return parser.parseFile(fileName, options);
},
/**
* Loads a custom composite gate class from HDL file.
*/
fromHDLFile: function fromHDLFile(fileName) {
return HDLClassFactory.fromHDLFile(fileName);
},
/**
* Loads a custom composite gate class from HDL file.
*/
fromHDL: function fromHDL(hdl) {
return HDLClassFactory.fromHDL(hdl);
},
/**
* Generates an HDL code from an AST.
*/
generateFromAST: function generateFromAST(ast, options) {
return generator.generateFromAST(ast, options);
},
/**
* Generates an HDL from a CompositeGate instance.
*/
generateFromCompositeGate: function generateFromCompositeGate(compositeGate, options) {
return generator.fromCompositeGate(compositeGate, options);
}
};
module.exports = hdl;