UNPKG

axtionscript

Version:

A simple programming language for AXPU

54 lines (49 loc) 2.19 kB
import chalk from 'chalk'; class Compiler { constructor(code) { this.code = code } compile() { let functions = this.code.split('/') let result = [] functions = functions.filter(function(e) { return String(e).trim(); }); functions.forEach((func, index)=> { let args = func.split(' ') if(args[0] == 'null'||args[0] == 'nullset'||args[0] == 'Noop'){ result.push('No-Op') }else if(args[0] == 'End'|| args[0] == 'Return'){ result.push('Halt') }else if(args[0] == 'Jump'){ result.push(`JMP ${args[1]}`) }else if(args[0] == 'If'){ result.push(`BRANCH ${args[1]} ${args[2]}`) }else if(args[0] == 'Input'){ result.push(`INPUT ${args[1]} ${args[2]}`) }else if(args[0] == 'Output'){ result.push(`OUTPUT ${args[1]} ${args[2]}`) }else if(args[0] == 'Load'){ result.push(`LOAD_IMDT ${args[1]} ${args[2]}`) }else if(args[0] == 'Save'){ result.push(`STORE ${args[1]} ${args[2]}`) }else if(args[0] == 'Fetch'){ result.push(`LOAD ${args[1]} ${args[2]}`) }else if(args[0] == 'Add'){ result.push(`ADD ${args[1]} ${args[2]} ${args[3]}`) }else if(args[0] == 'Sub'){ result.push(`SUB ${args[1]} ${args[2]} ${args[3]}`) }else if(args[0] == 'BIT'){ result.push(`BITWISE ${args[1]} ${args[2]} ${args[3]} ${args[4]}`) }else if(args[0] == 'BTN'){ result.push(`-BITWISE ${args[1]} ${args[2]} ${args[3]} ${args[4]}`) }else if(args[0] == '#'){ console.log(chalk.bold.green(func)) return } }); // console.log(functions) return result.join('\n') } } export default Compiler