@bitloops/bl-transpiler
Version:
The one and only Bitloops Language transpiler
34 lines • 1.6 kB
JavaScript
import { BitloopsTypesMapping } from '../../../../helpers/mappings.js';
import { SymbolTableManager } from '../../../../semantic-analysis/type-inference/SymbolTableManager.js';
import { IntermediateASTNode } from './IntermediateASTNode.js';
export class EventHandleNode extends IntermediateASTNode {
static NAME = 'handle';
constructor(metadata) {
super(BitloopsTypesMapping.TEventHandlerHandleMethod, metadata, EventHandleNode.NAME);
}
getStatements() {
const statementList = this.getChildNodeByType(BitloopsTypesMapping.TStatements);
return statementList.statements;
}
getParameters() {
const parameterNode = this.getChildrenNodesByType(BitloopsTypesMapping.TParameter);
return parameterNode;
}
getParameter() {
return this.getChildNodeByType(BitloopsTypesMapping.TParameter);
}
getStatementList() {
return this.getChildNodeByType(BitloopsTypesMapping.TStatements);
}
addToSymbolTable(symbolTableManager) {
const initialSymbolTable = symbolTableManager.getSymbolTable();
symbolTableManager.createSymbolTableChildScope(SymbolTableManager.SCOPE_NAMES.HANDLE, this);
const parameter = this.getParameter();
symbolTableManager.addMetadataContext(parameter.getIdentifier());
parameter.addToSymbolTable(symbolTableManager);
const statementList = this.getStatementList();
statementList.addToSymbolTable(symbolTableManager);
symbolTableManager.setCurrentSymbolTable(initialSymbolTable);
}
}
//# sourceMappingURL=EventHandleNode.js.map