@bitloops/bl-transpiler
Version:
The one and only Bitloops Language transpiler
37 lines • 1.74 kB
JavaScript
import { BitloopsTypesMapping } from '../../../../helpers/mappings.js';
import { SymbolTableManager } from '../../../../semantic-analysis/type-inference/SymbolTableManager.js';
import { IntermediateASTNode } from './IntermediateASTNode.js';
export class ExecuteNode extends IntermediateASTNode {
static classNodeName = 'execute';
constructor(metadata) {
super(BitloopsTypesMapping.TExecute, metadata, ExecuteNode.classNodeName);
}
getStatements() {
const statementList = this.getChildNodeByType(BitloopsTypesMapping.TStatements);
return statementList.statements;
}
getStatementList() {
return this.getChildNodeByType(BitloopsTypesMapping.TStatements);
}
getParameter() {
const parameterNode = this.getChildNodeByType(BitloopsTypesMapping.TParameter);
return parameterNode;
}
getReturnOkErrorTypeNodes() {
const returnOkErrorTypeNode = this.getChildNodeByType(BitloopsTypesMapping.TOkErrorReturnType);
return [returnOkErrorTypeNode];
}
addToSymbolTable(symbolTableManager) {
const initialSymbolTable = symbolTableManager.getSymbolTable();
symbolTableManager.createSymbolTableChildScope(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);
}
}
//# sourceMappingURL=ExecuteNode.js.map