UNPKG

python2igcse

Version:

Convert Python code to IGCSE Pseudocode format

114 lines 2.53 kB
"use strict"; // IGCSE Pseudocode specific type definitions Object.defineProperty(exports, "__esModule", { value: true }); exports.PYTHON_TO_IGCSE_TYPES = exports.PYTHON_TO_IGCSE_OPERATORS = void 0; exports.isIGCSEKeyword = isIGCSEKeyword; exports.convertOperator = convertOperator; exports.convertDataType = convertDataType; exports.inferDataType = inferDataType; /** * Mapping from Python operators to IGCSE operators */ exports.PYTHON_TO_IGCSE_OPERATORS = { '=': '←', '==': '=', '!=': '≠', '<': '<', '>': '>', '<=': '≤', '>=': '≥', and: 'AND', or: 'OR', not: 'NOT', '+': '+', '-': '-', '*': '*', '/': '/', '%': 'MOD', '//': 'DIV', }; /** * Mapping from Python types to IGCSE types */ exports.PYTHON_TO_IGCSE_TYPES = { int: 'INTEGER', float: 'REAL', str: 'STRING', bool: 'BOOLEAN', list: 'ARRAY', dict: 'RECORD', }; /** * Check IGCSE Pseudocode reserved words */ function isIGCSEKeyword(word) { const keywords = [ 'IF', 'THEN', 'ELSE', 'ENDIF', 'FOR', 'TO', 'STEP', 'NEXT', 'WHILE', 'ENDWHILE', 'REPEAT', 'UNTIL', 'PROCEDURE', 'ENDPROCEDURE', 'FUNCTION', 'RETURNS', 'ENDFUNCTION', 'RETURN', 'INPUT', 'OUTPUT', 'CASE', 'OF', 'OTHERWISE', 'ENDCASE', 'TYPE', 'ENDTYPE', 'CLASS', 'ENDCLASS', 'DECLARE', 'CONSTANT', 'ARRAY', 'RECORD', ]; return keywords.includes(word.toUpperCase()); } /** * Convert Python operator to IGCSE operator */ function convertOperator(pythonOp) { return exports.PYTHON_TO_IGCSE_OPERATORS[pythonOp] || pythonOp; } /** * Convert Python type to IGCSE type */ function convertDataType(pythonType) { return exports.PYTHON_TO_IGCSE_TYPES[pythonType] || 'STRING'; } /** * Helper function for type inference */ function inferDataType(value) { if (typeof value === 'number') { return Number.isInteger(value) ? 'INTEGER' : 'REAL'; } if (typeof value === 'string') { return value.length === 1 ? 'CHAR' : 'STRING'; } if (typeof value === 'boolean') { return 'BOOLEAN'; } if (Array.isArray(value)) { return 'ARRAY'; } if (typeof value === 'object' && value !== null) { return 'RECORD'; } return 'STRING'; // Default } //# sourceMappingURL=igcse.js.map