@bitloops/bl-transpiler
Version:
The one and only Bitloops Language transpiler
41 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExecuteNode = void 0;
const mappings_js_1 = require("../../../../helpers/mappings.js");
const SymbolTableManager_js_1 = require("../../../../semantic-analysis/type-inference/SymbolTableManager.js");
const IntermediateASTNode_js_1 = require("./IntermediateASTNode.js");
class ExecuteNode extends IntermediateASTNode_js_1.IntermediateASTNode {
static classNodeName = 'execute';
constructor(metadata) {
super(mappings_js_1.BitloopsTypesMapping.TExecute, metadata, ExecuteNode.classNodeName);
}
getStatements() {
const statementList = this.getChildNodeByType(mappings_js_1.BitloopsTypesMapping.TStatements);
return statementList.statements;
}
getStatementList() {
return this.getChildNodeByType(mappings_js_1.BitloopsTypesMapping.TStatements);
}
getParameter() {
const parameterNode = this.getChildNodeByType(mappings_js_1.BitloopsTypesMapping.TParameter);
return parameterNode;
}
getReturnOkErrorTypeNodes() {
const returnOkErrorTypeNode = this.getChildNodeByType(mappings_js_1.BitloopsTypesMapping.TOkErrorReturnType);
return [returnOkErrorTypeNode];
}
addToSymbolTable(symbolTableManager) {
const initialSymbolTable = symbolTableManager.getSymbolTable();
symbolTableManager.createSymbolTableChildScope(SymbolTableManager_js_1.SymbolTableManager.SCOPE_NAMES.EXECUTE, this);
const executeParameter = this.getParameter();
if (executeParameter) {
symbolTableManager.addMetadataContext(executeParameter.getIdentifier());
executeParameter.addToSymbolTable(symbolTableManager);
}
const statementList = this.getStatementList();
statementList.addToSymbolTable(symbolTableManager);
symbolTableManager.setCurrentSymbolTable(initialSymbolTable);
}
}
exports.ExecuteNode = ExecuteNode;
//# sourceMappingURL=ExecuteNode.js.map